merged
authorhuffman
Sat, 30 Oct 2010 12:25:18 -0700
changeset 40328 ae8d187600e7
parent 40327 1dfdbd66093a (current diff)
parent 40291 012ed4426fda (diff)
child 40329 73f2b99b549d
merged
src/FOL/ex/Iff_Oracle.thy
--- a/Admin/churn	Fri Oct 29 17:15:28 2010 -0700
+++ b/Admin/churn	Sat Oct 30 12:25:18 2010 -0700
@@ -2,4 +2,4 @@
 
 ADMIN="$(cd "$(dirname "$0")"; cd "$(pwd -P)"; pwd)"
 cd "$ADMIN"
-hg churn --aliases user-aliases --progress
+hg churn --aliases user-aliases
--- a/Admin/user-aliases	Fri Oct 29 17:15:28 2010 -0700
+++ b/Admin/user-aliases	Sat Oct 30 12:25:18 2010 -0700
@@ -7,3 +7,8 @@
 immler@in.tum.de immler
 tsewell@rubicon.NSW.bigpond.net.au tsewell
 tsewell@nicta.com.au tsewell
+kaliszyk@in.tum.de kaliszyk
+Philipp\ Meyer meyerp
+Timothy\ Bourke tbourke
+noschinl@in.tum.de noschinl
+brianh@cs.pdx.edu huffman
--- a/CONTRIBUTORS	Fri Oct 29 17:15:28 2010 -0700
+++ b/CONTRIBUTORS	Sat Oct 30 12:25:18 2010 -0700
@@ -6,6 +6,9 @@
 Contributions to this Isabelle version
 --------------------------------------
 
+* October 2010: Dmitriy Traytel, TUM
+  Coercive subtyping via subtype constraints.
+
 * September 2010: Florian Haftmann, TUM
   Refined concepts for evaluation, i.e. normalisation of terms using different techniques.
 
--- a/NEWS	Fri Oct 29 17:15:28 2010 -0700
+++ b/NEWS	Sat Oct 30 12:25:18 2010 -0700
@@ -56,6 +56,10 @@
 
 *** Pure ***
 
+* Support for real valued configuration options, using simplistic
+floating-point notation that coincides with the inner syntax for
+float_token.
+
 * Interpretation command 'interpret' accepts a list of equations like
 'interpretation' does.
 
@@ -76,6 +80,11 @@
 
 *** HOL ***
 
+* Quickcheck now has a configurable time limit which is set to 30 seconds
+by default. This can be changed by adding [timeout = n] to the quickcheck
+command. The time limit for auto quickcheck is still set independently,
+by default to 5 seconds.
+
 * New command 'partial_function' provides basic support for recursive
 function definitions over complete partial orders. Concrete instances
 are provided for i) the option type, ii) tail recursion on arbitrary
@@ -339,6 +348,10 @@
 Fail if the argument is false.  Due to inlining the source position of
 failed assertions is included in the error output.
 
+* Discontinued antiquotation @{theory_ref}, which is obsolete since ML
+text is in practice always evaluated with a stable theory checkpoint.
+Minor INCOMPATIBILITY, use (Theory.check_thy @{theory}) instead.
+
 * Renamed setmp_noncritical to Unsynchronized.setmp to emphasize its
 meaning.
 
--- a/doc-src/IsarImplementation/Thy/Logic.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarImplementation/Thy/Logic.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -201,7 +201,7 @@
   ;
   'sort' sort
   ;
-  ('type\_name' | 'type\_abbrev' | 'nonterminal') nameref
+  ('type_name' | 'type_abbrev' | 'nonterminal') nameref
   ;
   'typ' type
   ;
@@ -437,7 +437,7 @@
   \end{matharray}
 
   \begin{rail}
-  ('const\_name' | 'const\_abbrev') nameref
+  ('const_name' | 'const_abbrev') nameref
   ;
   'const' ('(' (type + ',') ')')?
   ;
--- a/doc-src/IsarImplementation/Thy/ML.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarImplementation/Thy/ML.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -463,7 +463,7 @@
   \end{enumerate}
 
   Such weakly structured layout should be use with great care.  Here
-  is a counter-example involving @{ML_text let} expressions:
+  are some counter-examples involving @{ML_text let} expressions:
 
   \begin{verbatim}
   (* WRONG *)
@@ -472,6 +472,10 @@
       val y = ...
     in ... end
 
+  fun foo x = let
+    val y = ...
+  in ... end
+
   fun foo x =
   let
     val y = ...
@@ -746,7 +750,7 @@
 
   This can be avoided by \emph{canonical argument order}, which
   observes certain standard patterns and minimizes adhoc permutations
-  in their application.  In Isabelle/ML, large portions text can be
+  in their application.  In Isabelle/ML, large portions of text can be
   written without ever using @{text "swap: \<alpha> \<times> \<beta> \<rightarrow> \<beta> \<times> \<alpha>"}, or the
   combinator @{text "C: (\<alpha> \<rightarrow> \<beta> \<rightarrow> \<gamma>) \<rightarrow> (\<beta> \<rightarrow> \<alpha> \<rightarrow> \<gamma>)"} that is not even
   defined in our library.
@@ -783,7 +787,7 @@
   to the right: @{text "insert a"} is a function @{text "\<beta> \<rightarrow> \<beta>"} to
   insert a value @{text "a"}.  These can be composed naturally as
   @{text "insert c \<circ> insert b \<circ> insert a"}.  The slightly awkward
-  inversion if the composition order is due to conventional
+  inversion of the composition order is due to conventional
   mathematical notation, which can be easily amended as explained
   below.
 *}
@@ -1134,9 +1138,9 @@
   language definition.  It was excluded from the SML97 version to
   avoid its malign impact on ML program semantics, but without
   providing a viable alternative.  Isabelle/ML recovers physical
-  interruptibility (which an indispensable tool to implement managed
-  evaluation of command transactions), but requires user code to be
-  strictly transparent wrt.\ interrupts.
+  interruptibility (which is an indispensable tool to implement
+  managed evaluation of command transactions), but requires user code
+  to be strictly transparent wrt.\ interrupts.
 
   \begin{warn}
   Isabelle/ML user code needs to terminate promptly on interruption,
--- a/doc-src/IsarImplementation/Thy/Prelim.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarImplementation/Thy/Prelim.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -226,11 +226,10 @@
 text %mlantiq {*
   \begin{matharray}{rcl}
   @{ML_antiquotation_def "theory"} & : & @{text ML_antiquotation} \\
-  @{ML_antiquotation_def "theory_ref"} & : & @{text ML_antiquotation} \\
   \end{matharray}
 
   \begin{rail}
-  ('theory' | 'theory\_ref') nameref?
+  'theory' nameref?
   ;
   \end{rail}
 
@@ -243,10 +242,6 @@
   theory @{text "A"} of the background theory of the current context
   --- as abstract value.
 
-  \item @{text "@{theory_ref}"} is similar to @{text "@{theory}"}, but
-  produces a @{ML_type theory_ref} via @{ML "Theory.check_thy"} as
-  explained above.
-
   \end{description}
 *}
 
@@ -519,7 +514,7 @@
   of this module do not care about the declaration order, since that
   data structure forces its own arrangement of elements.
 
-  Observe how the @{verbatim merge} operation joins the data slots of
+  Observe how the @{ML_text merge} operation joins the data slots of
   the two constituents: @{ML Ord_List.union} prevents duplication of
   common data from different branches, thus avoiding the danger of
   exponential blowup.  Plain list append etc.\ must never be used for
@@ -602,6 +597,8 @@
   bool Config.T * (theory -> theory)"} \\
   @{index_ML Attrib.config_int: "string -> (Context.generic -> int) ->
   int Config.T * (theory -> theory)"} \\
+  @{index_ML Attrib.config_real: "string -> (Context.generic -> real) ->
+  real Config.T * (theory -> theory)"} \\
   @{index_ML Attrib.config_string: "string -> (Context.generic -> string) ->
   string Config.T * (theory -> theory)"} \\
   \end{mldecls}
@@ -622,9 +619,9 @@
   needs to be applied to the theory initially, in order to make
   concrete declaration syntax available to the user.
 
-  \item @{ML Attrib.config_int} and @{ML Attrib.config_string} work
-  like @{ML Attrib.config_bool}, but for types @{ML_type int} and
-  @{ML_type string}, respectively.
+  \item @{ML Attrib.config_int}, @{ML Attrib.config_real}, and @{ML
+  Attrib.config_string} work like @{ML Attrib.config_bool}, but for
+  types @{ML_type int} and @{ML_type string}, respectively.
 
   \end{description}
 *}
@@ -657,6 +654,17 @@
   ML_val {* @{assert} (Config.get @{context} my_flag = true) *}
 qed
 
+text {* Here is another example involving ML type @{ML_type real}
+  (floating-point numbers). *}
+
+ML {*
+  val (airspeed_velocity, airspeed_velocity_setup) =
+    Attrib.config_real "airspeed_velocity" (K 0.0)
+*}
+setup airspeed_velocity_setup
+
+declare [[airspeed_velocity = 9.9]]
+
 
 section {* Names \label{sec:names} *}
 
--- a/doc-src/IsarImplementation/Thy/Proof.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarImplementation/Thy/Proof.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -182,7 +182,7 @@
 
 text {* In the above example, the starting context is derived from the
   toplevel theory, which means that fixed variables are internalized
-  literally: @{verbatim "x"} is mapped again to @{verbatim "x"}, and
+  literally: @{text "x"} is mapped again to @{text "x"}, and
   attempting to fix it again in the subsequent context is an error.
   Alternatively, fixed parameters can be renamed explicitly as
   follows: *}
@@ -194,7 +194,7 @@
 *}
 
 text {* The following ML code can now work with the invented names of
-  @{verbatim x1}, @{verbatim x2}, @{verbatim x3}, without depending on
+  @{text x1}, @{text x2}, @{text x3}, without depending on
   the details on the system policy for introducing these variants.
   Recall that within a proof body the system always invents fresh
   ``skolem constants'', e.g.\ as follows: *}
--- a/doc-src/IsarImplementation/Thy/document/Logic.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarImplementation/Thy/document/Logic.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -218,7 +218,7 @@
   ;
   'sort' sort
   ;
-  ('type\_name' | 'type\_abbrev' | 'nonterminal') nameref
+  ('type_name' | 'type_abbrev' | 'nonterminal') nameref
   ;
   'typ' type
   ;
@@ -464,7 +464,7 @@
   \end{matharray}
 
   \begin{rail}
-  ('const\_name' | 'const\_abbrev') nameref
+  ('const_name' | 'const_abbrev') nameref
   ;
   'const' ('(' (type + ',') ')')?
   ;
--- a/doc-src/IsarImplementation/Thy/document/ML.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarImplementation/Thy/document/ML.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -484,7 +484,7 @@
   \end{enumerate}
 
   Such weakly structured layout should be use with great care.  Here
-  is a counter-example involving \verb|let| expressions:
+  are some counter-examples involving \verb|let| expressions:
 
   \begin{verbatim}
   (* WRONG *)
@@ -493,6 +493,10 @@
       val y = ...
     in ... end
 
+  fun foo x = let
+    val y = ...
+  in ... end
+
   fun foo x =
   let
     val y = ...
@@ -944,7 +948,7 @@
 
   This can be avoided by \emph{canonical argument order}, which
   observes certain standard patterns and minimizes adhoc permutations
-  in their application.  In Isabelle/ML, large portions text can be
+  in their application.  In Isabelle/ML, large portions of text can be
   written without ever using \isa{swap{\isacharcolon}\ {\isasymalpha}\ {\isasymtimes}\ {\isasymbeta}\ {\isasymrightarrow}\ {\isasymbeta}\ {\isasymtimes}\ {\isasymalpha}}, or the
   combinator \isa{C{\isacharcolon}\ {\isacharparenleft}{\isasymalpha}\ {\isasymrightarrow}\ {\isasymbeta}\ {\isasymrightarrow}\ {\isasymgamma}{\isacharparenright}\ {\isasymrightarrow}\ {\isacharparenleft}{\isasymbeta}\ {\isasymrightarrow}\ {\isasymalpha}\ {\isasymrightarrow}\ {\isasymgamma}{\isacharparenright}} that is not even
   defined in our library.
@@ -979,7 +983,7 @@
   to the right: \isa{insert\ a} is a function \isa{{\isasymbeta}\ {\isasymrightarrow}\ {\isasymbeta}} to
   insert a value \isa{a}.  These can be composed naturally as
   \isa{insert\ c\ {\isasymcirc}\ insert\ b\ {\isasymcirc}\ insert\ a}.  The slightly awkward
-  inversion if the composition order is due to conventional
+  inversion of the composition order is due to conventional
   mathematical notation, which can be easily amended as explained
   below.%
 \end{isamarkuptext}%
@@ -1446,9 +1450,9 @@
   language definition.  It was excluded from the SML97 version to
   avoid its malign impact on ML program semantics, but without
   providing a viable alternative.  Isabelle/ML recovers physical
-  interruptibility (which an indispensable tool to implement managed
-  evaluation of command transactions), but requires user code to be
-  strictly transparent wrt.\ interrupts.
+  interruptibility (which is an indispensable tool to implement
+  managed evaluation of command transactions), but requires user code
+  to be strictly transparent wrt.\ interrupts.
 
   \begin{warn}
   Isabelle/ML user code needs to terminate promptly on interruption,
--- a/doc-src/IsarImplementation/Thy/document/Prelim.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarImplementation/Thy/document/Prelim.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -262,11 +262,10 @@
 \begin{isamarkuptext}%
 \begin{matharray}{rcl}
   \indexdef{}{ML antiquotation}{theory}\hypertarget{ML antiquotation.theory}{\hyperlink{ML antiquotation.theory}{\mbox{\isa{theory}}}} & : & \isa{ML{\isacharunderscore}antiquotation} \\
-  \indexdef{}{ML antiquotation}{theory\_ref}\hypertarget{ML antiquotation.theory-ref}{\hyperlink{ML antiquotation.theory-ref}{\mbox{\isa{theory{\isacharunderscore}ref}}}} & : & \isa{ML{\isacharunderscore}antiquotation} \\
   \end{matharray}
 
   \begin{rail}
-  ('theory' | 'theory\_ref') nameref?
+  'theory' nameref?
   ;
   \end{rail}
 
@@ -279,10 +278,6 @@
   theory \isa{A} of the background theory of the current context
   --- as abstract value.
 
-  \item \isa{{\isacharat}{\isacharbraceleft}theory{\isacharunderscore}ref{\isacharbraceright}} is similar to \isa{{\isacharat}{\isacharbraceleft}theory{\isacharbraceright}}, but
-  produces a \verb|theory_ref| via \verb|Theory.check_thy| as
-  explained above.
-
   \end{description}%
 \end{isamarkuptext}%
 \isamarkuptrue%
@@ -799,6 +794,8 @@
 \verb|  bool Config.T * (theory -> theory)| \\
   \indexdef{}{ML}{Attrib.config\_int}\verb|Attrib.config_int: string -> (Context.generic -> int) ->|\isasep\isanewline%
 \verb|  int Config.T * (theory -> theory)| \\
+  \indexdef{}{ML}{Attrib.config\_real}\verb|Attrib.config_real: string -> (Context.generic -> real) ->|\isasep\isanewline%
+\verb|  real Config.T * (theory -> theory)| \\
   \indexdef{}{ML}{Attrib.config\_string}\verb|Attrib.config_string: string -> (Context.generic -> string) ->|\isasep\isanewline%
 \verb|  string Config.T * (theory -> theory)| \\
   \end{mldecls}
@@ -818,9 +815,8 @@
   needs to be applied to the theory initially, in order to make
   concrete declaration syntax available to the user.
 
-  \item \verb|Attrib.config_int| and \verb|Attrib.config_string| work
-  like \verb|Attrib.config_bool|, but for types \verb|int| and
-  \verb|string|, respectively.
+  \item \verb|Attrib.config_int|, \verb|Attrib.config_real|, and \verb|Attrib.config_string| work like \verb|Attrib.config_bool|, but for
+  types \verb|int| and \verb|string|, respectively.
 
   \end{description}%
 \end{isamarkuptext}%
@@ -1024,6 +1020,34 @@
 %
 \endisadelimproof
 %
+\begin{isamarkuptext}%
+Here is another example involving ML type \verb|real|
+  (floating-point numbers).%
+\end{isamarkuptext}%
+\isamarkuptrue%
+%
+\isadelimML
+%
+\endisadelimML
+%
+\isatagML
+\isacommand{ML}\isamarkupfalse%
+\ {\isacharverbatimopen}\isanewline
+\ \ val\ {\isacharparenleft}airspeed{\isacharunderscore}velocity{\isacharcomma}\ airspeed{\isacharunderscore}velocity{\isacharunderscore}setup{\isacharparenright}\ {\isacharequal}\isanewline
+\ \ \ \ Attrib{\isachardot}config{\isacharunderscore}real\ {\isachardoublequote}airspeed{\isacharunderscore}velocity{\isachardoublequote}\ {\isacharparenleft}K\ {\isadigit{0}}{\isachardot}{\isadigit{0}}{\isacharparenright}\isanewline
+{\isacharverbatimclose}\isanewline
+\isacommand{setup}\isamarkupfalse%
+\ airspeed{\isacharunderscore}velocity{\isacharunderscore}setup%
+\endisatagML
+{\isafoldML}%
+%
+\isadelimML
+%
+\endisadelimML
+\isanewline
+\isanewline
+\isacommand{declare}\isamarkupfalse%
+\ {\isacharbrackleft}{\isacharbrackleft}airspeed{\isacharunderscore}velocity\ {\isacharequal}\ {\isadigit{9}}{\isachardot}{\isadigit{9}}{\isacharbrackright}{\isacharbrackright}%
 \isamarkupsection{Names \label{sec:names}%
 }
 \isamarkuptrue%
--- a/doc-src/IsarImplementation/Thy/document/Proof.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarImplementation/Thy/document/Proof.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -301,7 +301,7 @@
 \begin{isamarkuptext}%
 In the above example, the starting context is derived from the
   toplevel theory, which means that fixed variables are internalized
-  literally: \verb|x| is mapped again to \verb|x|, and
+  literally: \isa{x} is mapped again to \isa{x}, and
   attempting to fix it again in the subsequent context is an error.
   Alternatively, fixed parameters can be renamed explicitly as
   follows:%
@@ -332,7 +332,7 @@
 %
 \begin{isamarkuptext}%
 The following ML code can now work with the invented names of
-  \verb|x1|, \verb|x2|, \verb|x3|, without depending on
+  \isa{x{\isadigit{1}}}, \isa{x{\isadigit{2}}}, \isa{x{\isadigit{3}}}, without depending on
   the details on the system policy for introducing these variants.
   Recall that within a proof body the system always invents fresh
   ``skolem constants'', e.g.\ as follows:%
--- a/doc-src/IsarRef/Thy/Document_Preparation.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/Document_Preparation.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -84,7 +84,7 @@
   \begin{rail}
     ('chapter' | 'section' | 'subsection' | 'subsubsection' | 'text') target? text
     ;
-    ('header' | 'text\_raw' | 'sect' | 'subsect' | 'subsubsect' | 'txt' | 'txt\_raw') text
+    ('header' | 'text_raw' | 'sect' | 'subsect' | 'subsubsect' | 'txt' | 'txt_raw') text
     ;
   \end{rail}
 
@@ -198,10 +198,10 @@
       'goals' options |
       'subgoals' options |
       'prf' options thmrefs |
-      'full\_prf' options thmrefs |
+      'full_prf' options thmrefs |
       'ML' options name |
-      'ML\_type' options name |
-      'ML\_struct' options name
+      'ML_type' options name |
+      'ML_struct' options name
     ;
     options: '[' (option * ',') ']'
     ;
@@ -468,7 +468,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('display\_drafts' | 'print\_drafts') (name +)
+    ('display_drafts' | 'print_drafts') (name +)
     ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/Generic.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/Generic.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -6,16 +6,15 @@
 
 section {* Configuration options *}
 
-text {*
-  Isabelle/Pure maintains a record of named configuration options
-  within the theory or proof context, with values of type @{ML_type
-  bool}, @{ML_type int}, or @{ML_type string}.  Tools may declare
-  options in ML, and then refer to these values (relative to the
-  context).  Thus global reference variables are easily avoided.  The
-  user may change the value of a configuration option by means of an
-  associated attribute of the same name.  This form of context
-  declaration works particularly well with commands such as @{command
-  "declare"} or @{command "using"}.
+text {* Isabelle/Pure maintains a record of named configuration
+  options within the theory or proof context, with values of type
+  @{ML_type bool}, @{ML_type int}, @{ML_type real}, or @{ML_type
+  string}.  Tools may declare options in ML, and then refer to these
+  values (relative to the context).  Thus global reference variables
+  are easily avoided.  The user may change the value of a
+  configuration option by means of an associated attribute of the same
+  name.  This form of context declaration works particularly well with
+  commands such as @{command "declare"} or @{command "using"}.
 
   For historical reasons, some tools cannot take the full proof
   context into account and merely refer to the background theory.
@@ -27,7 +26,7 @@
   \end{matharray}
 
   \begin{rail}
-    name ('=' ('true' | 'false' | int | name))?
+    name ('=' ('true' | 'false' | int | float | name))?
   \end{rail}
 
   \begin{description}
@@ -284,14 +283,14 @@
   \end{matharray}
 
   \begin{rail}
-    ( 'rule\_tac' | 'erule\_tac' | 'drule\_tac' | 'frule\_tac' | 'cut\_tac' | 'thin\_tac' ) goalspec?
+    ( 'rule_tac' | 'erule_tac' | 'drule_tac' | 'frule_tac' | 'cut_tac' | 'thin_tac' ) goalspec?
     ( insts thmref | thmrefs )
     ;
-    'subgoal\_tac' goalspec? (prop +)
+    'subgoal_tac' goalspec? (prop +)
     ;
-    'rename\_tac' goalspec? (name +)
+    'rename_tac' goalspec? (name +)
     ;
-    'rotate\_tac' goalspec? int?
+    'rotate_tac' goalspec? int?
     ;
     ('tactic' | 'raw_tactic') text
     ;
@@ -364,10 +363,10 @@
 
   \indexouternonterm{simpmod}
   \begin{rail}
-    ('simp' | 'simp\_all') opt? (simpmod *)
+    ('simp' | 'simp_all') opt? (simpmod *)
     ;
 
-    opt: '(' ('no\_asm' | 'no\_asm\_simp' | 'no\_asm\_use' | 'asm\_lr' ) ')'
+    opt: '(' ('no_asm' | 'no_asm_simp' | 'no_asm_use' | 'asm_lr' ) ')'
     ;
     simpmod: ('add' | 'del' | 'only' | 'cong' (() | 'add' | 'del') |
       'split' (() | 'add' | 'del')) ':' thmrefs
@@ -471,7 +470,7 @@
   \end{matharray}
 
   \begin{rail}
-    'simproc\_setup' name '(' (term + '|') ')' '=' text \\ ('identifier' (nameref+))?
+    'simproc_setup' name '(' (term + '|') ')' '=' text \\ ('identifier' (nameref+))?
     ;
 
     'simproc' (('add' ':')? | 'del' ':') (name+)
@@ -519,7 +518,7 @@
     'simplified' opt? thmrefs?
     ;
 
-    opt: '(' ('no\_asm' | 'no\_asm\_simp' | 'no\_asm\_use') ')'
+    opt: '(' ('no_asm' | 'no_asm_simp' | 'no_asm_use') ')'
     ;
   \end{rail}
 
@@ -785,7 +784,7 @@
     ;
     'atomize' ('(' 'full' ')')?
     ;
-    'rule\_format' ('(' 'noasm' ')')?
+    'rule_format' ('(' 'noasm' ')')?
     ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/HOL_Specific.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/HOL_Specific.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -72,7 +72,7 @@
   \end{matharray}
 
   \begin{rail}
-    'split\_format' ((( name * ) + 'and') | ('(' 'complete' ')'))
+    'split_format' ((( name * ) + 'and') | ('(' 'complete' ')'))
     ;
   \end{rail}
 
@@ -355,7 +355,7 @@
   \begin{rail}
     'datatype' (dtspec + 'and')
     ;
-    'rep\_datatype' ('(' (name +) ')')? (term +)
+    'rep_datatype' ('(' (name +) ')')? (term +)
     ;
 
     dtspec: parname? typespec mixfix? '=' (cons + '|')
@@ -501,9 +501,9 @@
   \begin{rail}
     'relation' term
     ;
-    'lexicographic\_order' ( clasimpmod * )
+    'lexicographic_order' ( clasimpmod * )
     ;
-    'size\_change' ( orders ( clasimpmod * ) )
+    'size_change' ( orders ( clasimpmod * ) )
     ;
     orders: ( 'max' | 'min' | 'ms' ) *
   \end{rail}
@@ -633,7 +633,7 @@
     ;
     hints: '(' 'hints' ( recdefmod * ) ')'
     ;
-    recdefmod: (('recdef\_simp' | 'recdef\_cong' | 'recdef\_wf') (() | 'add' | 'del') ':' thmrefs) | clasimpmod
+    recdefmod: (('recdef_simp' | 'recdef_cong' | 'recdef_wf') (() | 'add' | 'del') ':' thmrefs) | clasimpmod
     ;
     tc: nameref ('(' nat ')')?
     ;
@@ -672,7 +672,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('recdef\_simp' | 'recdef\_cong' | 'recdef\_wf') (() | 'add' | 'del')
+    ('recdef_simp' | 'recdef_cong' | 'recdef_wf') (() | 'add' | 'del')
     ;
   \end{rail}
 *}
@@ -712,7 +712,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('inductive' | 'inductive\_set' | 'coinductive' | 'coinductive\_set') target? fixes ('for' fixes)? \\
+    ('inductive' | 'inductive_set' | 'coinductive' | 'coinductive_set') target? fixes ('for' fixes)? \\
     ('where' clauses)? ('monos' thmrefs)?
     ;
     clauses: (thmdecl? prop + '|')
@@ -941,14 +941,29 @@
 
     \begin{description}
 
-      \item[size] specifies the maximum size of the search space for
-        assignment values.
+    \item[@{text size}] specifies the maximum size of the search space
+    for assignment values.
+
+    \item[@{text iterations}] sets how many sets of assignments are
+    generated for each particular size.
+
+    \item[@{text no_assms}] specifies whether assumptions in
+    structured proofs should be ignored.
+
+    \item[@{text timeout}] sets the time limit in seconds.
 
-      \item[iterations] sets how many sets of assignments are
-        generated for each particular size.
+    \item[@{text default_type}] sets the type(s) generally used to
+    instantiate type variables.
+
+    \item[@{text report}] if set quickcheck reports how many tests
+    fulfilled the preconditions.
 
-      \item[no\_assms] specifies whether assumptions in
-        structured proofs should be ignored.
+    \item[@{text quiet}] if not set quickcheck informs about the
+    current size for assignment values.
+
+    \item[@{text expect}] can be used to check if the user's
+    expectation was met (@{text no_expectation}, @{text
+    no_counterexample}, or @{text counterexample}).
 
     \end{description}
 
@@ -976,13 +991,13 @@
   \end{matharray}
 
   \begin{rail}
-    'case\_tac' goalspec? term rule?
+    'case_tac' goalspec? term rule?
     ;
-    'induct\_tac' goalspec? (insts * 'and') rule?
+    'induct_tac' goalspec? (insts * 'and') rule?
     ;
-    'ind\_cases' (prop +) ('for' (name +)) ?
+    'ind_cases' (prop +) ('for' (name +)) ?
     ;
-    'inductive\_cases' (thmdecl? (prop +) + 'and')
+    'inductive_cases' (thmdecl? (prop +) + 'and')
     ;
 
     rule: ('rule' ':' thmref)
@@ -1063,8 +1078,8 @@
   \end{matharray}
 
   \begin{rail}
-     'export\_code' ( constexpr + ) \\
-       ( ( 'in' target ( 'module\_name' string ) ? \\
+     'export_code' ( constexpr + ) \\
+       ( ( 'in' target ( 'module_name' string ) ? \\
         ( 'file' ( string | '-' ) ) ? ( '(' args ')' ) ?) + ) ?
     ;
 
@@ -1086,10 +1101,10 @@
     'code' ( 'del' | 'abstype' | 'abstract' ) ?
     ;
 
-    'code\_abort' ( const + )
+    'code_abort' ( const + )
     ;
 
-    'code\_datatype' ( const + )
+    'code_datatype' ( const + )
     ;
 
     'code_inline' ( 'del' ) ?
@@ -1098,41 +1113,41 @@
     'code_post' ( 'del' ) ?
     ;
 
-    'code\_thms' ( constexpr + ) ?
+    'code_thms' ( constexpr + ) ?
     ;
 
-    'code\_deps' ( constexpr + ) ?
+    'code_deps' ( constexpr + ) ?
     ;
 
-    'code\_const' (const + 'and') \\
+    'code_const' (const + 'and') \\
       ( ( '(' target ( syntax ? + 'and' ) ')' ) + )
     ;
 
-    'code\_type' (typeconstructor + 'and') \\
+    'code_type' (typeconstructor + 'and') \\
       ( ( '(' target ( syntax ? + 'and' ) ')' ) + )
     ;
 
-    'code\_class' (class + 'and') \\
+    'code_class' (class + 'and') \\
       ( ( '(' target \\ ( string ? + 'and' ) ')' ) + )
     ;
 
-    'code\_instance' (( typeconstructor '::' class ) + 'and') \\
+    'code_instance' (( typeconstructor '::' class ) + 'and') \\
       ( ( '(' target ( '-' ? + 'and' ) ')' ) + )
     ;
 
-    'code\_reserved' target ( string + )
+    'code_reserved' target ( string + )
     ;
 
-    'code\_monad' const const target
+    'code_monad' const const target
     ;
 
-    'code\_include' target ( string ( string | '-') )
+    'code_include' target ( string ( string | '-') )
     ;
 
-    'code\_modulename' target ( ( string string ) + )
+    'code_modulename' target ( ( string string ) + )
     ;
 
-    'code\_reflect' string ( 'datatypes' ( string '=' ( string + '|' ) + 'and' ) ) ? \\
+    'code_reflect' string ( 'datatypes' ( string '=' ( string + '|' ) + 'and' ) ) ? \\
       ( 'functions' ( string + ) ) ? ( 'file' string ) ?
     ;
 
@@ -1266,7 +1281,7 @@
   \end{matharray}
 
   \begin{rail}
-  ( 'code\_module' | 'code\_library' ) modespec ? name ? \\
+  ( 'code_module' | 'code_library' ) modespec ? name ? \\
     ( 'file' name ) ? ( 'imports' ( name + ) ) ? \\
     'contains' ( ( name '=' term ) + | term + )
   ;
@@ -1274,13 +1289,13 @@
   modespec: '(' ( name * ) ')'
   ;
 
-  'consts\_code' (codespec +)
+  'consts_code' (codespec +)
   ;
 
   codespec: const template attachment ?
   ;
 
-  'types\_code' (tycodespec +)
+  'types_code' (tycodespec +)
   ;
 
   tycodespec: name template attachment ?
@@ -1311,7 +1326,7 @@
   \end{matharray}
 
   \begin{rail}
-  ('specification' | 'ax\_specification') '(' (decl +) ')' \\ (thmdecl? prop +)
+  ('specification' | 'ax_specification') '(' (decl +) ')' \\ (thmdecl? prop +)
   ;
   decl: ((name ':')? term '(' 'overloaded' ')'?)
   \end{rail}
--- a/doc-src/IsarRef/Thy/Inner_Syntax.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/Inner_Syntax.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -31,7 +31,7 @@
     ;
     'thm' modes? thmrefs
     ;
-    ( 'prf' | 'full\_prf' ) modes? thmrefs?
+    ( 'prf' | 'full_prf' ) modes? thmrefs?
     ;
     'pr' modes? nat?
     ;
@@ -364,9 +364,9 @@
   \end{matharray}
 
   \begin{rail}
-    ('type\_notation' | 'no\_type\_notation') target? mode? \\ (nameref mixfix + 'and')
+    ('type_notation' | 'no_type_notation') target? mode? \\ (nameref mixfix + 'and')
     ;
-    ('notation' | 'no\_notation') target? mode? \\ (nameref structmixfix + 'and')
+    ('notation' | 'no_notation') target? mode? \\ (nameref structmixfix + 'and')
     ;
     'write' mode? (nameref structmixfix + 'and')
     ;
@@ -730,9 +730,9 @@
   \begin{rail}
     'nonterminals' (name +)
     ;
-    ('syntax' | 'no\_syntax') mode? (constdecl +)
+    ('syntax' | 'no_syntax') mode? (constdecl +)
     ;
-    ('translations' | 'no\_translations') (transpat ('==' | '=>' | '<=' | rightleftharpoons | rightharpoonup | leftharpoondown) transpat +)
+    ('translations' | 'no_translations') (transpat ('==' | '=>' | '<=' | rightleftharpoons | rightharpoonup | leftharpoondown) transpat +)
     ;
 
     mode: ('(' ( name | 'output' | name 'output' ) ')')
@@ -786,8 +786,8 @@
   \end{matharray}
 
   \begin{rail}
-  ( 'parse\_ast\_translation' | 'parse\_translation' | 'print\_translation' |
-    'typed\_print\_translation' | 'print\_ast\_translation' ) ('(advanced)')? text
+  ( 'parse_ast_translation' | 'parse_translation' | 'print_translation' |
+    'typed_print_translation' | 'print_ast_translation' ) ('(advanced)')? text
   ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/Misc.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/Misc.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -21,19 +21,19 @@
   \end{matharray}
 
   \begin{rail}
-    ('print\_theory' | 'print\_theorems') ('!'?)
+    ('print_theory' | 'print_theorems') ('!'?)
     ;
 
-    'find\_theorems' (('(' (nat)? ('with\_dups')? ')')?) (thmcriterion *)
+    'find_theorems' (('(' (nat)? ('with_dups')? ')')?) (thmcriterion *)
     ;
     thmcriterion: ('-'?) ('name' ':' nameref | 'intro' | 'elim' | 'dest' |
       'solves' | 'simp' ':' term | term)
     ;
-    'find\_consts' (constcriterion *)
+    'find_consts' (constcriterion *)
     ;
     constcriterion: ('-'?) ('name' ':' nameref | 'strict' ':' type | type)
     ;
-    'thm\_deps' thmrefs
+    'thm_deps' thmrefs
     ;
   \end{rail}
 
@@ -143,7 +143,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('cd' | 'use\_thy') name
+    ('cd' | 'use_thy') name
     ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/Outer_Syntax.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/Outer_Syntax.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -108,6 +108,7 @@
     @{syntax_def longident} & = & @{text "ident("}@{verbatim "."}@{text "ident)\<^sup>+"} \\
     @{syntax_def symident} & = & @{text "sym\<^sup>+  |  "}@{verbatim "\\"}@{verbatim "<"}@{text ident}@{verbatim ">"} \\
     @{syntax_def nat} & = & @{text "digit\<^sup>+"} \\
+    @{syntax_def float} & = & @{syntax_ref nat}@{verbatim "."}@{syntax_ref nat}@{text "  |  "}@{verbatim "-"}@{syntax_ref nat}@{verbatim "."}@{syntax_ref nat} \\
     @{syntax_def var} & = & @{verbatim "?"}@{text "ident  |  "}@{verbatim "?"}@{text ident}@{verbatim "."}@{text nat} \\
     @{syntax_def typefree} & = & @{verbatim "'"}@{text ident} \\
     @{syntax_def typevar} & = & @{verbatim "?"}@{text "typefree  |  "}@{verbatim "?"}@{text typefree}@{verbatim "."}@{text nat} \\
@@ -365,7 +366,7 @@
 
   \indexoutertoken{atom}\indexouternonterm{args}\indexouternonterm{attributes}
   \begin{rail}
-    atom: nameref | typefree | typevar | var | nat | keyword
+    atom: nameref | typefree | typevar | var | nat | float | keyword
     ;
     arg: atom | '(' args ')' | '[' args ']'
     ;
--- a/doc-src/IsarRef/Thy/Proof.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/Proof.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -432,11 +432,11 @@
 
   \begin{rail}
     ('lemma' | 'theorem' | 'corollary' |
-     'schematic\_lemma' | 'schematic\_theorem' | 'schematic\_corollary') target? (goal | longgoal)
+     'schematic_lemma' | 'schematic_theorem' | 'schematic_corollary') target? (goal | longgoal)
     ;
     ('have' | 'show' | 'hence' | 'thus') goal
     ;
-    'print\_statement' modes? thmrefs
+    'print_statement' modes? thmrefs
     ;
   
     goal: (props + 'and')
@@ -834,7 +834,7 @@
   \end{matharray}
 
   \begin{rail}
-    ( 'apply' | 'apply\_end' ) method
+    ( 'apply' | 'apply_end' ) method
     ;
     'defer' nat?
     ;
@@ -896,7 +896,7 @@
   \end{matharray}
 
   \begin{rail}
-    'method\_setup' name '=' text text
+    'method_setup' name '=' text text
     ;
   \end{rail}
 
@@ -1190,9 +1190,9 @@
     caseref: nameref attributes?
     ;
 
-    'case\_names' (name +)
+    'case_names' (name +)
     ;
-    'case\_conclusion' name (name *)
+    'case_conclusion' name (name *)
     ;
     'params' ((name *) + 'and')
     ;
--- a/doc-src/IsarRef/Thy/Spec.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/Spec.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -159,7 +159,7 @@
 
 text {*
   \begin{matharray}{rcll}
-    @{command_def "axiomatization"} & : & @{text "theory \<rightarrow> theory"} & (axiomatic!)\\
+    @{command_def "axiomatization"} & : & @{text "theory \<rightarrow> theory"} & (axiomatic!) \\
     @{command_def "definition"} & : & @{text "local_theory \<rightarrow> local_theory"} \\
     @{attribute_def "defn"} & : & @{text attribute} \\
     @{command_def "abbreviation"} & : & @{text "local_theory \<rightarrow> local_theory"} \\
@@ -322,8 +322,8 @@
   A locale instance consists of a reference to a locale and either
   positional or named parameter instantiations.  Identical
   instantiations (that is, those that instante a parameter by itself)
-  may be omitted.  The notation `\_' enables to omit the instantiation
-  for a parameter inside a positional instantiation.
+  may be omitted.  The notation `@{text "_"}' enables to omit the
+  instantiation for a parameter inside a positional instantiation.
 
   Terms in instantiations are from the context the locale expressions
   is declared in.  Local names may be added to this context with the
@@ -360,7 +360,7 @@
   \begin{rail}
     'locale' name ('=' locale)? 'begin'?
     ;
-    'print\_locale' '!'? nameref
+    'print_locale' '!'? nameref
     ;
     locale: contextelem+ | localeexpr ('+' (contextelem+))?
     ;
@@ -503,7 +503,7 @@
     ;
     'interpret' localeexpr equations?
     ;
-    'print\_interps' nameref
+    'print_interps' nameref
     ;
     equations: 'where' (thmdecl? prop + 'and')
     ;
@@ -630,9 +630,9 @@
     ;
     'instance' nameref ('<' | subseteq) nameref
     ;
-    'print\_classes'
+    'print_classes'
     ;
-    'class\_deps'
+    'class_deps'
     ;
 
     superclassexpr: nameref | (nameref '+' superclassexpr)
@@ -840,9 +840,9 @@
   \begin{rail}
     'use' name
     ;
-    ('ML' | 'ML\_prf' | 'ML\_val' | 'ML\_command' | 'setup' | 'local\_setup') text
+    ('ML' | 'ML_prf' | 'ML_val' | 'ML_command' | 'setup' | 'local_setup') text
     ;
-    'attribute\_setup' name '=' text text
+    'attribute_setup' name '=' text text
     ;
   \end{rail}
 
@@ -930,7 +930,7 @@
     ;
     'classrel' (nameref ('<' | subseteq) nameref + 'and')
     ;
-    'default\_sort' sort
+    'default_sort' sort
     ;
   \end{rail}
 
@@ -1139,8 +1139,8 @@
   asserted, and records within the internal derivation object how
   presumed theorems depend on unproven suppositions.
 
-  \begin{matharray}{rcl}
-    @{command_def "oracle"} & : & @{text "theory \<rightarrow> theory"} \\
+  \begin{matharray}{rcll}
+    @{command_def "oracle"} & : & @{text "theory \<rightarrow> theory"} & (axiomatic!) \\
   \end{matharray}
 
   \begin{rail}
@@ -1159,7 +1159,7 @@
 
   \end{description}
 
-  See @{"file" "~~/src/FOL/ex/Iff_Oracle.thy"} for a worked example of
+  See @{"file" "~~/src/HOL/ex/Iff_Oracle.thy"} for a worked example of
   defining a new primitive rule as oracle, and turning it into a proof
   method.
 *}
@@ -1176,7 +1176,7 @@
   \end{matharray}
 
   \begin{rail}
-    ( 'hide\_class' | 'hide\_type' | 'hide\_const' | 'hide\_fact' ) ('(open)')? (nameref + )
+    ( 'hide_class' | 'hide_type' | 'hide_const' | 'hide_fact' ) ('(open)')? (nameref + )
     ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/ZF_Specific.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/ZF_Specific.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -67,11 +67,11 @@
     ;
     monos: ('monos' thmrefs)?
     ;
-    condefs: ('con\_defs' thmrefs)?
+    condefs: ('con_defs' thmrefs)?
     ;
-    typeintros: ('type\_intros' thmrefs)?
+    typeintros: ('type_intros' thmrefs)?
     ;
-    typeelims: ('type\_elims' thmrefs)?
+    typeelims: ('type_elims' thmrefs)?
     ;
   \end{rail}
 
@@ -126,7 +126,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('case\_tac' | 'induct\_tac') goalspec? name
+    ('case_tac' | 'induct_tac') goalspec? name
     ;
     indcases (prop +)
     ;
--- a/doc-src/IsarRef/Thy/document/Document_Preparation.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/document/Document_Preparation.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -105,7 +105,7 @@
   \begin{rail}
     ('chapter' | 'section' | 'subsection' | 'subsubsection' | 'text') target? text
     ;
-    ('header' | 'text\_raw' | 'sect' | 'subsect' | 'subsubsect' | 'txt' | 'txt\_raw') text
+    ('header' | 'text_raw' | 'sect' | 'subsect' | 'subsubsect' | 'txt' | 'txt_raw') text
     ;
   \end{rail}
 
@@ -216,10 +216,10 @@
       'goals' options |
       'subgoals' options |
       'prf' options thmrefs |
-      'full\_prf' options thmrefs |
+      'full_prf' options thmrefs |
       'ML' options name |
-      'ML\_type' options name |
-      'ML\_struct' options name
+      'ML_type' options name |
+      'ML_struct' options name
     ;
     options: '[' (option * ',') ']'
     ;
@@ -487,7 +487,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('display\_drafts' | 'print\_drafts') (name +)
+    ('display_drafts' | 'print_drafts') (name +)
     ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/document/Generic.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/document/Generic.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -27,13 +27,14 @@
 \isamarkuptrue%
 %
 \begin{isamarkuptext}%
-Isabelle/Pure maintains a record of named configuration options
-  within the theory or proof context, with values of type \verb|bool|, \verb|int|, or \verb|string|.  Tools may declare
-  options in ML, and then refer to these values (relative to the
-  context).  Thus global reference variables are easily avoided.  The
-  user may change the value of a configuration option by means of an
-  associated attribute of the same name.  This form of context
-  declaration works particularly well with commands such as \hyperlink{command.declare}{\mbox{\isa{\isacommand{declare}}}} or \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}.
+Isabelle/Pure maintains a record of named configuration
+  options within the theory or proof context, with values of type
+  \verb|bool|, \verb|int|, \verb|real|, or \verb|string|.  Tools may declare options in ML, and then refer to these
+  values (relative to the context).  Thus global reference variables
+  are easily avoided.  The user may change the value of a
+  configuration option by means of an associated attribute of the same
+  name.  This form of context declaration works particularly well with
+  commands such as \hyperlink{command.declare}{\mbox{\isa{\isacommand{declare}}}} or \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}.
 
   For historical reasons, some tools cannot take the full proof
   context into account and merely refer to the background theory.
@@ -45,7 +46,7 @@
   \end{matharray}
 
   \begin{rail}
-    name ('=' ('true' | 'false' | int | name))?
+    name ('=' ('true' | 'false' | int | float | name))?
   \end{rail}
 
   \begin{description}
@@ -302,14 +303,14 @@
   \end{matharray}
 
   \begin{rail}
-    ( 'rule\_tac' | 'erule\_tac' | 'drule\_tac' | 'frule\_tac' | 'cut\_tac' | 'thin\_tac' ) goalspec?
+    ( 'rule_tac' | 'erule_tac' | 'drule_tac' | 'frule_tac' | 'cut_tac' | 'thin_tac' ) goalspec?
     ( insts thmref | thmrefs )
     ;
-    'subgoal\_tac' goalspec? (prop +)
+    'subgoal_tac' goalspec? (prop +)
     ;
-    'rename\_tac' goalspec? (name +)
+    'rename_tac' goalspec? (name +)
     ;
-    'rotate\_tac' goalspec? int?
+    'rotate_tac' goalspec? int?
     ;
     ('tactic' | 'raw_tactic') text
     ;
@@ -384,10 +385,10 @@
 
   \indexouternonterm{simpmod}
   \begin{rail}
-    ('simp' | 'simp\_all') opt? (simpmod *)
+    ('simp' | 'simp_all') opt? (simpmod *)
     ;
 
-    opt: '(' ('no\_asm' | 'no\_asm\_simp' | 'no\_asm\_use' | 'asm\_lr' ) ')'
+    opt: '(' ('no_asm' | 'no_asm_simp' | 'no_asm_use' | 'asm_lr' ) ')'
     ;
     simpmod: ('add' | 'del' | 'only' | 'cong' (() | 'add' | 'del') |
       'split' (() | 'add' | 'del')) ':' thmrefs
@@ -490,7 +491,7 @@
   \end{matharray}
 
   \begin{rail}
-    'simproc\_setup' name '(' (term + '|') ')' '=' text \\ ('identifier' (nameref+))?
+    'simproc_setup' name '(' (term + '|') ')' '=' text \\ ('identifier' (nameref+))?
     ;
 
     'simproc' (('add' ':')? | 'del' ':') (name+)
@@ -538,7 +539,7 @@
     'simplified' opt? thmrefs?
     ;
 
-    opt: '(' ('no\_asm' | 'no\_asm\_simp' | 'no\_asm\_use') ')'
+    opt: '(' ('no_asm' | 'no_asm_simp' | 'no_asm_use') ')'
     ;
   \end{rail}
 
@@ -809,7 +810,7 @@
     ;
     'atomize' ('(' 'full' ')')?
     ;
-    'rule\_format' ('(' 'noasm' ')')?
+    'rule_format' ('(' 'noasm' ')')?
     ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/document/HOL_Specific.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/document/HOL_Specific.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -93,7 +93,7 @@
   \end{matharray}
 
   \begin{rail}
-    'split\_format' ((( name * ) + 'and') | ('(' 'complete' ')'))
+    'split_format' ((( name * ) + 'and') | ('(' 'complete' ')'))
     ;
   \end{rail}
 
@@ -364,7 +364,7 @@
   \begin{rail}
     'datatype' (dtspec + 'and')
     ;
-    'rep\_datatype' ('(' (name +) ')')? (term +)
+    'rep_datatype' ('(' (name +) ')')? (term +)
     ;
 
     dtspec: parname? typespec mixfix? '=' (cons + '|')
@@ -511,9 +511,9 @@
   \begin{rail}
     'relation' term
     ;
-    'lexicographic\_order' ( clasimpmod * )
+    'lexicographic_order' ( clasimpmod * )
     ;
-    'size\_change' ( orders ( clasimpmod * ) )
+    'size_change' ( orders ( clasimpmod * ) )
     ;
     orders: ( 'max' | 'min' | 'ms' ) *
   \end{rail}
@@ -642,7 +642,7 @@
     ;
     hints: '(' 'hints' ( recdefmod * ) ')'
     ;
-    recdefmod: (('recdef\_simp' | 'recdef\_cong' | 'recdef\_wf') (() | 'add' | 'del') ':' thmrefs) | clasimpmod
+    recdefmod: (('recdef_simp' | 'recdef_cong' | 'recdef_wf') (() | 'add' | 'del') ':' thmrefs) | clasimpmod
     ;
     tc: nameref ('(' nat ')')?
     ;
@@ -680,7 +680,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('recdef\_simp' | 'recdef\_cong' | 'recdef\_wf') (() | 'add' | 'del')
+    ('recdef_simp' | 'recdef_cong' | 'recdef_wf') (() | 'add' | 'del')
     ;
   \end{rail}%
 \end{isamarkuptext}%
@@ -722,7 +722,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('inductive' | 'inductive\_set' | 'coinductive' | 'coinductive\_set') target? fixes ('for' fixes)? \\
+    ('inductive' | 'inductive_set' | 'coinductive' | 'coinductive_set') target? fixes ('for' fixes)? \\
     ('where' clauses)? ('monos' thmrefs)?
     ;
     clauses: (thmdecl? prop + '|')
@@ -959,14 +959,28 @@
 
     \begin{description}
 
-      \item[size] specifies the maximum size of the search space for
-        assignment values.
+    \item[\isa{size}] specifies the maximum size of the search space
+    for assignment values.
+
+    \item[\isa{iterations}] sets how many sets of assignments are
+    generated for each particular size.
+
+    \item[\isa{no{\isacharunderscore}assms}] specifies whether assumptions in
+    structured proofs should be ignored.
+
+    \item[\isa{timeout}] sets the time limit in seconds.
 
-      \item[iterations] sets how many sets of assignments are
-        generated for each particular size.
+    \item[\isa{default{\isacharunderscore}type}] sets the type(s) generally used to
+    instantiate type variables.
+
+    \item[\isa{report}] if set quickcheck reports how many tests
+    fulfilled the preconditions.
 
-      \item[no\_assms] specifies whether assumptions in
-        structured proofs should be ignored.
+    \item[\isa{quiet}] if not set quickcheck informs about the
+    current size for assignment values.
+
+    \item[\isa{expect}] can be used to check if the user's
+    expectation was met (\isa{no{\isacharunderscore}expectation}, \isa{no{\isacharunderscore}counterexample}, or \isa{counterexample}).
 
     \end{description}
 
@@ -996,13 +1010,13 @@
   \end{matharray}
 
   \begin{rail}
-    'case\_tac' goalspec? term rule?
+    'case_tac' goalspec? term rule?
     ;
-    'induct\_tac' goalspec? (insts * 'and') rule?
+    'induct_tac' goalspec? (insts * 'and') rule?
     ;
-    'ind\_cases' (prop +) ('for' (name +)) ?
+    'ind_cases' (prop +) ('for' (name +)) ?
     ;
-    'inductive\_cases' (thmdecl? (prop +) + 'and')
+    'inductive_cases' (thmdecl? (prop +) + 'and')
     ;
 
     rule: ('rule' ':' thmref)
@@ -1079,8 +1093,8 @@
   \end{matharray}
 
   \begin{rail}
-     'export\_code' ( constexpr + ) \\
-       ( ( 'in' target ( 'module\_name' string ) ? \\
+     'export_code' ( constexpr + ) \\
+       ( ( 'in' target ( 'module_name' string ) ? \\
         ( 'file' ( string | '-' ) ) ? ( '(' args ')' ) ?) + ) ?
     ;
 
@@ -1102,10 +1116,10 @@
     'code' ( 'del' | 'abstype' | 'abstract' ) ?
     ;
 
-    'code\_abort' ( const + )
+    'code_abort' ( const + )
     ;
 
-    'code\_datatype' ( const + )
+    'code_datatype' ( const + )
     ;
 
     'code_inline' ( 'del' ) ?
@@ -1114,41 +1128,41 @@
     'code_post' ( 'del' ) ?
     ;
 
-    'code\_thms' ( constexpr + ) ?
+    'code_thms' ( constexpr + ) ?
     ;
 
-    'code\_deps' ( constexpr + ) ?
+    'code_deps' ( constexpr + ) ?
     ;
 
-    'code\_const' (const + 'and') \\
+    'code_const' (const + 'and') \\
       ( ( '(' target ( syntax ? + 'and' ) ')' ) + )
     ;
 
-    'code\_type' (typeconstructor + 'and') \\
+    'code_type' (typeconstructor + 'and') \\
       ( ( '(' target ( syntax ? + 'and' ) ')' ) + )
     ;
 
-    'code\_class' (class + 'and') \\
+    'code_class' (class + 'and') \\
       ( ( '(' target \\ ( string ? + 'and' ) ')' ) + )
     ;
 
-    'code\_instance' (( typeconstructor '::' class ) + 'and') \\
+    'code_instance' (( typeconstructor '::' class ) + 'and') \\
       ( ( '(' target ( '-' ? + 'and' ) ')' ) + )
     ;
 
-    'code\_reserved' target ( string + )
+    'code_reserved' target ( string + )
     ;
 
-    'code\_monad' const const target
+    'code_monad' const const target
     ;
 
-    'code\_include' target ( string ( string | '-') )
+    'code_include' target ( string ( string | '-') )
     ;
 
-    'code\_modulename' target ( ( string string ) + )
+    'code_modulename' target ( ( string string ) + )
     ;
 
-    'code\_reflect' string ( 'datatypes' ( string '=' ( string + '|' ) + 'and' ) ) ? \\
+    'code_reflect' string ( 'datatypes' ( string '=' ( string + '|' ) + 'and' ) ) ? \\
       ( 'functions' ( string + ) ) ? ( 'file' string ) ?
     ;
 
@@ -1279,7 +1293,7 @@
   \end{matharray}
 
   \begin{rail}
-  ( 'code\_module' | 'code\_library' ) modespec ? name ? \\
+  ( 'code_module' | 'code_library' ) modespec ? name ? \\
     ( 'file' name ) ? ( 'imports' ( name + ) ) ? \\
     'contains' ( ( name '=' term ) + | term + )
   ;
@@ -1287,13 +1301,13 @@
   modespec: '(' ( name * ) ')'
   ;
 
-  'consts\_code' (codespec +)
+  'consts_code' (codespec +)
   ;
 
   codespec: const template attachment ?
   ;
 
-  'types\_code' (tycodespec +)
+  'types_code' (tycodespec +)
   ;
 
   tycodespec: name template attachment ?
@@ -1325,7 +1339,7 @@
   \end{matharray}
 
   \begin{rail}
-  ('specification' | 'ax\_specification') '(' (decl +) ')' \\ (thmdecl? prop +)
+  ('specification' | 'ax_specification') '(' (decl +) ')' \\ (thmdecl? prop +)
   ;
   decl: ((name ':')? term '(' 'overloaded' ')'?)
   \end{rail}
--- a/doc-src/IsarRef/Thy/document/Inner_Syntax.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/document/Inner_Syntax.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -53,7 +53,7 @@
     ;
     'thm' modes? thmrefs
     ;
-    ( 'prf' | 'full\_prf' ) modes? thmrefs?
+    ( 'prf' | 'full_prf' ) modes? thmrefs?
     ;
     'pr' modes? nat?
     ;
@@ -387,9 +387,9 @@
   \end{matharray}
 
   \begin{rail}
-    ('type\_notation' | 'no\_type\_notation') target? mode? \\ (nameref mixfix + 'and')
+    ('type_notation' | 'no_type_notation') target? mode? \\ (nameref mixfix + 'and')
     ;
-    ('notation' | 'no\_notation') target? mode? \\ (nameref structmixfix + 'and')
+    ('notation' | 'no_notation') target? mode? \\ (nameref structmixfix + 'and')
     ;
     'write' mode? (nameref structmixfix + 'and')
     ;
@@ -749,9 +749,9 @@
   \begin{rail}
     'nonterminals' (name +)
     ;
-    ('syntax' | 'no\_syntax') mode? (constdecl +)
+    ('syntax' | 'no_syntax') mode? (constdecl +)
     ;
-    ('translations' | 'no\_translations') (transpat ('==' | '=>' | '<=' | rightleftharpoons | rightharpoonup | leftharpoondown) transpat +)
+    ('translations' | 'no_translations') (transpat ('==' | '=>' | '<=' | rightleftharpoons | rightharpoonup | leftharpoondown) transpat +)
     ;
 
     mode: ('(' ( name | 'output' | name 'output' ) ')')
@@ -806,8 +806,8 @@
   \end{matharray}
 
   \begin{rail}
-  ( 'parse\_ast\_translation' | 'parse\_translation' | 'print\_translation' |
-    'typed\_print\_translation' | 'print\_ast\_translation' ) ('(advanced)')? text
+  ( 'parse_ast_translation' | 'parse_translation' | 'print_translation' |
+    'typed_print_translation' | 'print_ast_translation' ) ('(advanced)')? text
   ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/document/Misc.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/document/Misc.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -41,19 +41,19 @@
   \end{matharray}
 
   \begin{rail}
-    ('print\_theory' | 'print\_theorems') ('!'?)
+    ('print_theory' | 'print_theorems') ('!'?)
     ;
 
-    'find\_theorems' (('(' (nat)? ('with\_dups')? ')')?) (thmcriterion *)
+    'find_theorems' (('(' (nat)? ('with_dups')? ')')?) (thmcriterion *)
     ;
     thmcriterion: ('-'?) ('name' ':' nameref | 'intro' | 'elim' | 'dest' |
       'solves' | 'simp' ':' term | term)
     ;
-    'find\_consts' (constcriterion *)
+    'find_consts' (constcriterion *)
     ;
     constcriterion: ('-'?) ('name' ':' nameref | 'strict' ':' type | type)
     ;
-    'thm\_deps' thmrefs
+    'thm_deps' thmrefs
     ;
   \end{rail}
 
@@ -164,7 +164,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('cd' | 'use\_thy') name
+    ('cd' | 'use_thy') name
     ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/document/Outer_Syntax.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/document/Outer_Syntax.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -127,6 +127,7 @@
     \indexdef{}{syntax}{longident}\hypertarget{syntax.longident}{\hyperlink{syntax.longident}{\mbox{\isa{longident}}}} & = & \isa{{\isachardoublequote}ident{\isacharparenleft}{\isachardoublequote}}\verb|.|\isa{{\isachardoublequote}ident{\isacharparenright}\isactrlsup {\isacharplus}{\isachardoublequote}} \\
     \indexdef{}{syntax}{symident}\hypertarget{syntax.symident}{\hyperlink{syntax.symident}{\mbox{\isa{symident}}}} & = & \isa{{\isachardoublequote}sym\isactrlsup {\isacharplus}\ \ {\isacharbar}\ \ {\isachardoublequote}}\verb|\|\verb|<|\isa{ident}\verb|>| \\
     \indexdef{}{syntax}{nat}\hypertarget{syntax.nat}{\hyperlink{syntax.nat}{\mbox{\isa{nat}}}} & = & \isa{{\isachardoublequote}digit\isactrlsup {\isacharplus}{\isachardoublequote}} \\
+    \indexdef{}{syntax}{float}\hypertarget{syntax.float}{\hyperlink{syntax.float}{\mbox{\isa{float}}}} & = & \indexref{}{syntax}{nat}\hyperlink{syntax.nat}{\mbox{\isa{nat}}}\verb|.|\indexref{}{syntax}{nat}\hyperlink{syntax.nat}{\mbox{\isa{nat}}}\isa{{\isachardoublequote}\ \ {\isacharbar}\ \ {\isachardoublequote}}\verb|-|\indexref{}{syntax}{nat}\hyperlink{syntax.nat}{\mbox{\isa{nat}}}\verb|.|\indexref{}{syntax}{nat}\hyperlink{syntax.nat}{\mbox{\isa{nat}}} \\
     \indexdef{}{syntax}{var}\hypertarget{syntax.var}{\hyperlink{syntax.var}{\mbox{\isa{var}}}} & = & \verb|?|\isa{{\isachardoublequote}ident\ \ {\isacharbar}\ \ {\isachardoublequote}}\verb|?|\isa{ident}\verb|.|\isa{nat} \\
     \indexdef{}{syntax}{typefree}\hypertarget{syntax.typefree}{\hyperlink{syntax.typefree}{\mbox{\isa{typefree}}}} & = & \verb|'|\isa{ident} \\
     \indexdef{}{syntax}{typevar}\hypertarget{syntax.typevar}{\hyperlink{syntax.typevar}{\mbox{\isa{typevar}}}} & = & \verb|?|\isa{{\isachardoublequote}typefree\ \ {\isacharbar}\ \ {\isachardoublequote}}\verb|?|\isa{typefree}\verb|.|\isa{nat} \\
@@ -391,7 +392,7 @@
 
   \indexoutertoken{atom}\indexouternonterm{args}\indexouternonterm{attributes}
   \begin{rail}
-    atom: nameref | typefree | typevar | var | nat | keyword
+    atom: nameref | typefree | typevar | var | nat | float | keyword
     ;
     arg: atom | '(' args ')' | '[' args ']'
     ;
--- a/doc-src/IsarRef/Thy/document/Proof.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/document/Proof.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -453,11 +453,11 @@
 
   \begin{rail}
     ('lemma' | 'theorem' | 'corollary' |
-     'schematic\_lemma' | 'schematic\_theorem' | 'schematic\_corollary') target? (goal | longgoal)
+     'schematic_lemma' | 'schematic_theorem' | 'schematic_corollary') target? (goal | longgoal)
     ;
     ('have' | 'show' | 'hence' | 'thus') goal
     ;
-    'print\_statement' modes? thmrefs
+    'print_statement' modes? thmrefs
     ;
   
     goal: (props + 'and')
@@ -843,7 +843,7 @@
   \end{matharray}
 
   \begin{rail}
-    ( 'apply' | 'apply\_end' ) method
+    ( 'apply' | 'apply_end' ) method
     ;
     'defer' nat?
     ;
@@ -903,7 +903,7 @@
   \end{matharray}
 
   \begin{rail}
-    'method\_setup' name '=' text text
+    'method_setup' name '=' text text
     ;
   \end{rail}
 
@@ -1192,9 +1192,9 @@
     caseref: nameref attributes?
     ;
 
-    'case\_names' (name +)
+    'case_names' (name +)
     ;
-    'case\_conclusion' name (name *)
+    'case_conclusion' name (name *)
     ;
     'params' ((name *) + 'and')
     ;
--- a/doc-src/IsarRef/Thy/document/Spec.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/document/Spec.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -179,7 +179,7 @@
 %
 \begin{isamarkuptext}%
 \begin{matharray}{rcll}
-    \indexdef{}{command}{axiomatization}\hypertarget{command.axiomatization}{\hyperlink{command.axiomatization}{\mbox{\isa{\isacommand{axiomatization}}}}} & : & \isa{{\isachardoublequote}theory\ {\isasymrightarrow}\ theory{\isachardoublequote}} & (axiomatic!)\\
+    \indexdef{}{command}{axiomatization}\hypertarget{command.axiomatization}{\hyperlink{command.axiomatization}{\mbox{\isa{\isacommand{axiomatization}}}}} & : & \isa{{\isachardoublequote}theory\ {\isasymrightarrow}\ theory{\isachardoublequote}} & (axiomatic!) \\
     \indexdef{}{command}{definition}\hypertarget{command.definition}{\hyperlink{command.definition}{\mbox{\isa{\isacommand{definition}}}}} & : & \isa{{\isachardoublequote}local{\isacharunderscore}theory\ {\isasymrightarrow}\ local{\isacharunderscore}theory{\isachardoublequote}} \\
     \indexdef{}{attribute}{defn}\hypertarget{attribute.defn}{\hyperlink{attribute.defn}{\mbox{\isa{defn}}}} & : & \isa{attribute} \\
     \indexdef{}{command}{abbreviation}\hypertarget{command.abbreviation}{\hyperlink{command.abbreviation}{\mbox{\isa{\isacommand{abbreviation}}}}} & : & \isa{{\isachardoublequote}local{\isacharunderscore}theory\ {\isasymrightarrow}\ local{\isacharunderscore}theory{\isachardoublequote}} \\
@@ -346,8 +346,8 @@
   A locale instance consists of a reference to a locale and either
   positional or named parameter instantiations.  Identical
   instantiations (that is, those that instante a parameter by itself)
-  may be omitted.  The notation `\_' enables to omit the instantiation
-  for a parameter inside a positional instantiation.
+  may be omitted.  The notation `\isa{{\isachardoublequote}{\isacharunderscore}{\isachardoublequote}}' enables to omit the
+  instantiation for a parameter inside a positional instantiation.
 
   Terms in instantiations are from the context the locale expressions
   is declared in.  Local names may be added to this context with the
@@ -385,7 +385,7 @@
   \begin{rail}
     'locale' name ('=' locale)? 'begin'?
     ;
-    'print\_locale' '!'? nameref
+    'print_locale' '!'? nameref
     ;
     locale: contextelem+ | localeexpr ('+' (contextelem+))?
     ;
@@ -525,7 +525,7 @@
     ;
     'interpret' localeexpr equations?
     ;
-    'print\_interps' nameref
+    'print_interps' nameref
     ;
     equations: 'where' (thmdecl? prop + 'and')
     ;
@@ -653,9 +653,9 @@
     ;
     'instance' nameref ('<' | subseteq) nameref
     ;
-    'print\_classes'
+    'print_classes'
     ;
-    'class\_deps'
+    'class_deps'
     ;
 
     superclassexpr: nameref | (nameref '+' superclassexpr)
@@ -862,9 +862,9 @@
   \begin{rail}
     'use' name
     ;
-    ('ML' | 'ML\_prf' | 'ML\_val' | 'ML\_command' | 'setup' | 'local\_setup') text
+    ('ML' | 'ML_prf' | 'ML_val' | 'ML_command' | 'setup' | 'local_setup') text
     ;
-    'attribute\_setup' name '=' text text
+    'attribute_setup' name '=' text text
     ;
   \end{rail}
 
@@ -966,7 +966,7 @@
     ;
     'classrel' (nameref ('<' | subseteq) nameref + 'and')
     ;
-    'default\_sort' sort
+    'default_sort' sort
     ;
   \end{rail}
 
@@ -1179,8 +1179,8 @@
   asserted, and records within the internal derivation object how
   presumed theorems depend on unproven suppositions.
 
-  \begin{matharray}{rcl}
-    \indexdef{}{command}{oracle}\hypertarget{command.oracle}{\hyperlink{command.oracle}{\mbox{\isa{\isacommand{oracle}}}}} & : & \isa{{\isachardoublequote}theory\ {\isasymrightarrow}\ theory{\isachardoublequote}} \\
+  \begin{matharray}{rcll}
+    \indexdef{}{command}{oracle}\hypertarget{command.oracle}{\hyperlink{command.oracle}{\mbox{\isa{\isacommand{oracle}}}}} & : & \isa{{\isachardoublequote}theory\ {\isasymrightarrow}\ theory{\isachardoublequote}} & (axiomatic!) \\
   \end{matharray}
 
   \begin{rail}
@@ -1199,7 +1199,7 @@
 
   \end{description}
 
-  See \hyperlink{file.~~/src/FOL/ex/Iff-Oracle.thy}{\mbox{\isa{\isatt{{\isachartilde}{\isachartilde}{\isacharslash}src{\isacharslash}FOL{\isacharslash}ex{\isacharslash}Iff{\isacharunderscore}Oracle{\isachardot}thy}}}} for a worked example of
+  See \hyperlink{file.~~/src/HOL/ex/Iff-Oracle.thy}{\mbox{\isa{\isatt{{\isachartilde}{\isachartilde}{\isacharslash}src{\isacharslash}HOL{\isacharslash}ex{\isacharslash}Iff{\isacharunderscore}Oracle{\isachardot}thy}}}} for a worked example of
   defining a new primitive rule as oracle, and turning it into a proof
   method.%
 \end{isamarkuptext}%
@@ -1218,7 +1218,7 @@
   \end{matharray}
 
   \begin{rail}
-    ( 'hide\_class' | 'hide\_type' | 'hide\_const' | 'hide\_fact' ) ('(open)')? (nameref + )
+    ( 'hide_class' | 'hide_type' | 'hide_const' | 'hide_fact' ) ('(open)')? (nameref + )
     ;
   \end{rail}
 
--- a/doc-src/IsarRef/Thy/document/ZF_Specific.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/IsarRef/Thy/document/ZF_Specific.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -91,11 +91,11 @@
     ;
     monos: ('monos' thmrefs)?
     ;
-    condefs: ('con\_defs' thmrefs)?
+    condefs: ('con_defs' thmrefs)?
     ;
-    typeintros: ('type\_intros' thmrefs)?
+    typeintros: ('type_intros' thmrefs)?
     ;
-    typeelims: ('type\_elims' thmrefs)?
+    typeelims: ('type_elims' thmrefs)?
     ;
   \end{rail}
 
@@ -153,7 +153,7 @@
   \end{matharray}
 
   \begin{rail}
-    ('case\_tac' | 'induct\_tac') goalspec? name
+    ('case_tac' | 'induct_tac') goalspec? name
     ;
     indcases (prop +)
     ;
--- a/doc-src/Main/Docs/Main_Doc.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/Main/Docs/Main_Doc.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -501,6 +501,7 @@
 @{const List.lexn} & @{term_type_only List.lexn "('a*'a)set\<Rightarrow>nat\<Rightarrow>('a list * 'a list)set"}\\
 @{const List.lexord} & @{term_type_only List.lexord "('a*'a)set\<Rightarrow>('a list * 'a list)set"}\\
 @{const List.listrel} & @{term_type_only List.listrel "('a*'a)set\<Rightarrow>('a list * 'a list)set"}\\
+@{const List.listrel1} & @{term_type_only List.listrel1 "('a*'a)set\<Rightarrow>('a list * 'a list)set"}\\
 @{const List.lists} & @{term_type_only List.lists "'a set\<Rightarrow>'a list set"}\\
 @{const List.listset} & @{term_type_only List.listset "'a set list \<Rightarrow> 'a list set"}\\
 @{const List.listsum} & @{typeof List.listsum}\\
--- a/doc-src/Main/Docs/document/Main_Doc.tex	Fri Oct 29 17:15:28 2010 -0700
+++ b/doc-src/Main/Docs/document/Main_Doc.tex	Sat Oct 30 12:25:18 2010 -0700
@@ -511,6 +511,7 @@
 \isa{lexn} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymtimes}\ {\isacharprime}a{\isacharparenright}\ set\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}a\ list\ {\isasymtimes}\ {\isacharprime}a\ list{\isacharparenright}\ set}\\
 \isa{lexord} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymtimes}\ {\isacharprime}a{\isacharparenright}\ set\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}a\ list\ {\isasymtimes}\ {\isacharprime}a\ list{\isacharparenright}\ set}\\
 \isa{listrel} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymtimes}\ {\isacharprime}a{\isacharparenright}\ set\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}a\ list\ {\isasymtimes}\ {\isacharprime}a\ list{\isacharparenright}\ set}\\
+\isa{listrel{\isadigit{1}}} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymtimes}\ {\isacharprime}a{\isacharparenright}\ set\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}a\ list\ {\isasymtimes}\ {\isacharprime}a\ list{\isacharparenright}\ set}\\
 \isa{lists} & \isa{{\isacharprime}a\ set\ {\isasymRightarrow}\ {\isacharprime}a\ list\ set}\\
 \isa{listset} & \isa{{\isacharprime}a\ set\ list\ {\isasymRightarrow}\ {\isacharprime}a\ list\ set}\\
 \isa{listsum} & \isa{{\isacharprime}a\ list\ {\isasymRightarrow}\ {\isacharprime}a}\\
@@ -565,15 +566,15 @@
 \bigskip
 
 \begin{supertabular}{@ {} l @ {~::~} l @ {}}
-\isa{Map{\isachardot}empty} & \isa{{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b}\\
-\isa{op\ {\isacharplus}{\isacharplus}} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b}\\
-\isa{op\ {\isasymcirc}\isactrlsub m} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}c\ {\isasymrightharpoonup}\ {\isacharprime}a{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}c\ {\isasymrightharpoonup}\ {\isacharprime}b}\\
-\isa{op\ {\isacharbar}{\isacharbackquote}} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}a\ set\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b}\\
-\isa{dom} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}a\ set}\\
-\isa{ran} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}b\ set}\\
-\isa{op\ {\isasymsubseteq}\isactrlsub m} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ bool}\\
-\isa{map{\isacharunderscore}of} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymtimes}\ {\isacharprime}b{\isacharparenright}\ list\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b}\\
-\isa{map{\isacharunderscore}upds} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}a\ list\ {\isasymRightarrow}\ {\isacharprime}b\ list\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymrightharpoonup}\ {\isacharprime}b}\\
+\isa{Map{\isachardot}empty} & \isa{{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option}\\
+\isa{op\ {\isacharplus}{\isacharplus}} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option{\isacharparenright}\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option}\\
+\isa{op\ {\isasymcirc}\isactrlsub m} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option{\isacharparenright}\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}c\ {\isasymRightarrow}\ {\isacharprime}a\ option{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}c\ {\isasymRightarrow}\ {\isacharprime}b\ option}\\
+\isa{op\ {\isacharbar}{\isacharbackquote}} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}a\ set\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option}\\
+\isa{dom} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}a\ set}\\
+\isa{ran} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}b\ set}\\
+\isa{op\ {\isasymsubseteq}\isactrlsub m} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option{\isacharparenright}\ {\isasymRightarrow}\ {\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option{\isacharparenright}\ {\isasymRightarrow}\ bool}\\
+\isa{map{\isacharunderscore}of} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymtimes}\ {\isacharprime}b{\isacharparenright}\ list\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option}\\
+\isa{map{\isacharunderscore}upds} & \isa{{\isacharparenleft}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option{\isacharparenright}\ {\isasymRightarrow}\ {\isacharprime}a\ list\ {\isasymRightarrow}\ {\isacharprime}b\ list\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b\ option}\\
 \end{supertabular}
 
 \subsubsection*{Syntax}
--- a/src/FOL/IsaMakefile	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/FOL/IsaMakefile	Sat Oct 30 12:25:18 2010 -0700
@@ -45,14 +45,13 @@
 FOL-ex: FOL $(LOG)/FOL-ex.gz
 
 $(LOG)/FOL-ex.gz: $(OUT)/FOL ex/First_Order_Logic.thy ex/If.thy		\
-  ex/Iff_Oracle.thy ex/Nat.thy ex/Nat_Class.thy ex/Natural_Numbers.thy	\
+  ex/Nat.thy ex/Nat_Class.thy ex/Natural_Numbers.thy			\
   ex/Locale_Test/Locale_Test.thy ex/Locale_Test/Locale_Test1.thy	\
   ex/Locale_Test/Locale_Test2.thy ex/Locale_Test/Locale_Test3.thy	\
-  ex/Miniscope.thy ex/Prolog.thy ex/ROOT.ML				\
-  ex/Classical.thy ex/document/root.tex ex/Foundation.thy		\
-  ex/Intuitionistic.thy ex/Intro.thy ex/Propositional_Int.thy		\
-  ex/Propositional_Cla.thy ex/Quantifiers_Int.thy			\
-  ex/Quantifiers_Cla.thy
+  ex/Miniscope.thy ex/Prolog.thy ex/ROOT.ML ex/Classical.thy		\
+  ex/document/root.tex ex/Foundation.thy ex/Intuitionistic.thy		\
+  ex/Intro.thy ex/Propositional_Int.thy ex/Propositional_Cla.thy	\
+  ex/Quantifiers_Int.thy ex/Quantifiers_Cla.thy
 	@$(ISABELLE_TOOL) usedir $(OUT)/FOL ex
 
 
--- a/src/FOL/ex/Iff_Oracle.thy	Fri Oct 29 17:15:28 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-(*  Title:      FOL/ex/Iff_Oracle.thy
-    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
-    Copyright   1996  University of Cambridge
-*)
-
-header {* Example of Declaring an Oracle *}
-
-theory Iff_Oracle
-imports FOL
-begin
-
-subsection {* Oracle declaration *}
-
-text {*
-  This oracle makes tautologies of the form @{text "P <-> P <-> P <-> P"}.
-  The length is specified by an integer, which is checked to be even
-  and positive.
-*}
-
-oracle iff_oracle = {*
-  let
-    fun mk_iff 1 = Var (("P", 0), @{typ o})
-      | mk_iff n = FOLogic.iff $ Var (("P", 0), @{typ o}) $ mk_iff (n - 1);
-  in
-    fn (thy, n) =>
-      if n > 0 andalso n mod 2 = 0
-      then Thm.cterm_of thy (FOLogic.mk_Trueprop (mk_iff n))
-      else raise Fail ("iff_oracle: " ^ string_of_int n)
-  end
-*}
-
-
-subsection {* Oracle as low-level rule *}
-
-ML {* iff_oracle (@{theory}, 2) *}
-ML {* iff_oracle (@{theory}, 10) *}
-ML {* Thm.proof_body_of (iff_oracle (@{theory}, 10)) *}
-
-text {* These oracle calls had better fail. *}
-
-ML {*
-  (iff_oracle (@{theory}, 5); error "?")
-    handle Fail _ => warning "Oracle failed, as expected"
-*}
-
-ML {*
-  (iff_oracle (@{theory}, 1); error "?")
-    handle Fail _ => warning "Oracle failed, as expected"
-*}
-
-
-subsection {* Oracle as proof method *}
-
-method_setup iff = {*
-  Scan.lift Parse.nat >> (fn n => fn ctxt =>
-    SIMPLE_METHOD
-      (HEADGOAL (Tactic.rtac (iff_oracle (ProofContext.theory_of ctxt, n)))
-        handle Fail _ => no_tac))
-*} "iff oracle"
-
-
-lemma "A <-> A"
-  by (iff 2)
-
-lemma "A <-> A <-> A <-> A <-> A <-> A <-> A <-> A <-> A <-> A"
-  by (iff 10)
-
-lemma "A <-> A <-> A <-> A <-> A"
-  apply (iff 5)?
-  oops
-
-lemma A
-  apply (iff 1)?
-  oops
-
-end
--- a/src/FOL/ex/ROOT.ML	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/FOL/ex/ROOT.ML	Sat Oct 30 12:25:18 2010 -0700
@@ -18,8 +18,7 @@
   "Propositional_Cla",
   "Quantifiers_Cla",
   "Miniscope",
-  "If",
-  "Iff_Oracle"
+  "If"
 ];
 
 (*regression test for locales -- sets several global flags!*)
--- a/src/HOL/Algebra/AbelCoset.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Algebra/AbelCoset.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -13,7 +13,7 @@
 text {* Hiding @{text "<+>"} from @{theory Sum_Type} until I come
   up with better syntax here *}
 
-no_notation Plus (infixr "<+>" 65)
+no_notation Sum_Type.Plus (infixr "<+>" 65)
 
 definition
   a_r_coset    :: "[_, 'a set, 'a] \<Rightarrow> 'a set"    (infixl "+>\<index>" 60)
--- a/src/HOL/Boogie/Tools/boogie_loader.ML	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Boogie/Tools/boogie_loader.ML	Sat Oct 30 12:25:18 2010 -0700
@@ -191,7 +191,7 @@
             | NONE => NONE)
         | is_unique _ = NONE
       fun mk_unique_axiom T ts =
-        Const (@{const_name distinct}, HOLogic.listT T --> @{typ bool}) $
+        Const (@{const_name SMT.distinct}, HOLogic.listT T --> @{typ bool}) $
           HOLogic.mk_list T ts
     in
       map_filter is_unique fns
@@ -383,7 +383,7 @@
   fun mk_list T = HOLogic.mk_list T
 
   fun mk_distinct T ts =
-    Const (@{const_name distinct}, HOLogic.listT T --> @{typ bool}) $
+    Const (@{const_name SMT.distinct}, HOLogic.listT T --> @{typ bool}) $
       mk_list T ts
 
   fun quant name f = scan_line name (num -- num -- num) >> pair f
--- a/src/HOL/Complete_Partial_Order.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Complete_Partial_Order.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -258,6 +258,6 @@
 
 end
 
-
+hide_const (open) lub iterates fixp admissible
 
 end
--- a/src/HOL/HOL.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/HOL.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -1978,11 +1978,9 @@
 *} "solve goal by normalization"
 
 
-(*
 subsection {* Try *}
 
 setup {* Try.setup *}
-*)
 
 subsection {* Counterexample Search Units *}
 
--- a/src/HOL/Imperative_HOL/Heap_Monad.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Imperative_HOL/Heap_Monad.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -16,6 +16,10 @@
   and transform the heap, or fail *}
 datatype 'a Heap = Heap "heap \<Rightarrow> ('a \<times> heap) option"
 
+lemma [code, code del]:
+  "(Code_Evaluation.term_of :: 'a::typerep Heap \<Rightarrow> Code_Evaluation.term) = Code_Evaluation.term_of"
+  ..
+
 primrec execute :: "'a Heap \<Rightarrow> heap \<Rightarrow> ('a \<times> heap) option" where
   [code del]: "execute (Heap f) = f"
 
@@ -398,6 +402,82 @@
   ultimately show ?case by (simp, simp only: execute_bind(1), simp add: execute_simps)
 qed
 
+
+subsection {* Partial function definition setup *}
+
+definition Heap_ord :: "'a Heap \<Rightarrow> 'a Heap \<Rightarrow> bool" where
+  "Heap_ord = img_ord execute (fun_ord option_ord)"
+
+definition Heap_lub :: "('a Heap \<Rightarrow> bool) \<Rightarrow> 'a Heap" where
+  "Heap_lub = img_lub execute Heap (fun_lub (flat_lub None))"
+
+interpretation heap!: partial_function_definitions Heap_ord Heap_lub
+proof -
+  have "partial_function_definitions (fun_ord option_ord) (fun_lub (flat_lub None))"
+    by (rule partial_function_lift) (rule flat_interpretation)
+  then have "partial_function_definitions (img_ord execute (fun_ord option_ord))
+      (img_lub execute Heap (fun_lub (flat_lub None)))"
+    by (rule partial_function_image) (auto intro: Heap_eqI)
+  then show "partial_function_definitions Heap_ord Heap_lub"
+    by (simp only: Heap_ord_def Heap_lub_def)
+qed
+
+abbreviation "mono_Heap \<equiv> monotone (fun_ord Heap_ord) Heap_ord"
+
+lemma Heap_ordI:
+  assumes "\<And>h. execute x h = None \<or> execute x h = execute y h"
+  shows "Heap_ord x y"
+  using assms unfolding Heap_ord_def img_ord_def fun_ord_def flat_ord_def
+  by blast
+
+lemma Heap_ordE:
+  assumes "Heap_ord x y"
+  obtains "execute x h = None" | "execute x h = execute y h"
+  using assms unfolding Heap_ord_def img_ord_def fun_ord_def flat_ord_def
+  by atomize_elim blast
+
+lemma bind_mono[partial_function_mono]:
+  assumes mf: "mono_Heap B" and mg: "\<And>y. mono_Heap (\<lambda>f. C y f)"
+  shows "mono_Heap (\<lambda>f. B f \<guillemotright>= (\<lambda>y. C y f))"
+proof (rule monotoneI)
+  fix f g :: "'a \<Rightarrow> 'b Heap" assume fg: "fun_ord Heap_ord f g"
+  from mf
+  have 1: "Heap_ord (B f) (B g)" by (rule monotoneD) (rule fg)
+  from mg
+  have 2: "\<And>y'. Heap_ord (C y' f) (C y' g)" by (rule monotoneD) (rule fg)
+
+  have "Heap_ord (B f \<guillemotright>= (\<lambda>y. C y f)) (B g \<guillemotright>= (\<lambda>y. C y f))"
+    (is "Heap_ord ?L ?R")
+  proof (rule Heap_ordI)
+    fix h
+    from 1 show "execute ?L h = None \<or> execute ?L h = execute ?R h"
+      by (rule Heap_ordE[where h = h]) (auto simp: execute_bind_case)
+  qed
+  also
+  have "Heap_ord (B g \<guillemotright>= (\<lambda>y'. C y' f)) (B g \<guillemotright>= (\<lambda>y'. C y' g))"
+    (is "Heap_ord ?L ?R")
+  proof (rule Heap_ordI)
+    fix h
+    show "execute ?L h = None \<or> execute ?L h = execute ?R h"
+    proof (cases "execute (B g) h")
+      case None
+      then have "execute ?L h = None" by (auto simp: execute_bind_case)
+      thus ?thesis ..
+    next
+      case Some
+      then obtain r h' where "execute (B g) h = Some (r, h')"
+        by (metis surjective_pairing)
+      then have "execute ?L h = execute (C r f) h'"
+        "execute ?R h = execute (C r g) h'"
+        by (auto simp: execute_bind_case)
+      with 2[of r] show ?thesis by (auto elim: Heap_ordE)
+    qed
+  qed
+  finally (heap.leq_trans)
+  show "Heap_ord (B f \<guillemotright>= (\<lambda>y. C y f)) (B g \<guillemotright>= (\<lambda>y'. C y' g))" .
+qed
+
+
 subsection {* Code generator setup *}
 
 subsubsection {* Logical intermediate layer *}
@@ -593,76 +673,6 @@
 
 *}
 
-
-section {* Partial function definition setup *}
-
-definition "Heap_ord = img_ord execute (fun_ord option_ord)"
-definition "Heap_lub = img_lub execute Heap (fun_lub (flat_lub None))"
-
-interpretation heap!:
-  partial_function_definitions Heap_ord Heap_lub
-unfolding Heap_ord_def Heap_lub_def
-apply (rule partial_function_image)
-apply (rule partial_function_lift)
-apply (rule flat_interpretation)
-by (auto intro: Heap_eqI)
-
-abbreviation "mono_Heap \<equiv> monotone (fun_ord Heap_ord) Heap_ord"
-
-lemma Heap_ordI:
-  assumes "\<And>h. execute x h = None \<or> execute x h = execute y h"
-  shows "Heap_ord x y"
-using assms unfolding Heap_ord_def img_ord_def fun_ord_def flat_ord_def
-by blast
-
-lemma Heap_ordE:
-  assumes "Heap_ord x y"
-  obtains "execute x h = None" | "execute x h = execute y h"
-using assms unfolding Heap_ord_def img_ord_def fun_ord_def flat_ord_def
-by atomize_elim blast
-
-
-lemma bind_mono[partial_function_mono]:
-assumes mf: "mono_Heap B" and mg: "\<And>y. mono_Heap (\<lambda>f. C y f)"
-shows "mono_Heap (\<lambda>f. B f \<guillemotright>= (\<lambda>y. C y f))"
-proof (rule monotoneI)
-  fix f g :: "'a \<Rightarrow> 'b Heap" assume fg: "fun_ord Heap_ord f g"
-  from mf
-  have 1: "Heap_ord (B f) (B g)" by (rule monotoneD) (rule fg)
-  from mg
-  have 2: "\<And>y'. Heap_ord (C y' f) (C y' g)" by (rule monotoneD) (rule fg)
-
-  have "Heap_ord (B f \<guillemotright>= (\<lambda>y. C y f)) (B g \<guillemotright>= (\<lambda>y. C y f))"
-    (is "Heap_ord ?L ?R")
-  proof (rule Heap_ordI)
-    fix h
-    from 1 show "execute ?L h = None \<or> execute ?L h = execute ?R h"
-      by (rule Heap_ordE[where h = h]) (auto simp: execute_bind_case)
-  qed
-  also
-  have "Heap_ord (B g \<guillemotright>= (\<lambda>y'. C y' f)) (B g \<guillemotright>= (\<lambda>y'. C y' g))"
-    (is "Heap_ord ?L ?R")
-  proof (rule Heap_ordI)
-    fix h
-    show "execute ?L h = None \<or> execute ?L h = execute ?R h"
-    proof (cases "execute (B g) h")
-      case None
-      then have "execute ?L h = None" by (auto simp: execute_bind_case)
-      thus ?thesis ..
-    next
-      case Some
-      then obtain r h' where "execute (B g) h = Some (r, h')"
-        by (metis surjective_pairing)
-      then have "execute ?L h = execute (C r f) h'"
-        "execute ?R h = execute (C r g) h'"
-        by (auto simp: execute_bind_case)
-      with 2[of r] show ?thesis by (auto elim: Heap_ordE)
-    qed
-  qed
-  finally (heap.leq_trans)
-  show "Heap_ord (B f \<guillemotright>= (\<lambda>y. C y f)) (B g \<guillemotright>= (\<lambda>y'. C y' g))" .
-qed
-
 hide_const (open) Heap heap guard raise' fold_map
 
 end
--- a/src/HOL/IsaMakefile	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/IsaMakefile	Sat Oct 30 12:25:18 2010 -0700
@@ -337,6 +337,7 @@
   Tools/Sledgehammer/sledgehammer_atp_translate.ML \
   Tools/Sledgehammer/sledgehammer_util.ML \
   Tools/SMT/smtlib_interface.ML \
+  Tools/SMT/smt_builtin.ML \
   Tools/SMT/smt_monomorph.ML \
   Tools/SMT/smt_normalize.ML \
   Tools/SMT/smt_setup_solvers.ML \
@@ -1011,25 +1012,24 @@
   Number_Theory/Primes.thy ex/Abstract_NAT.thy ex/Antiquote.thy		\
   ex/Arith_Examples.thy ex/Arithmetic_Series_Complex.thy ex/BT.thy	\
   ex/BinEx.thy ex/Binary.thy ex/CTL.thy ex/Chinese.thy			\
-  ex/Classical.thy ex/CodegenSML_Test.thy ex/Coherent.thy		\
-  ex/Dedekind_Real.thy ex/Efficient_Nat_examples.thy			\
+  ex/Classical.thy ex/CodegenSML_Test.thy ex/Coercion_Examples.thy	\
+  ex/Coherent.thy ex/Dedekind_Real.thy ex/Efficient_Nat_examples.thy	\
   ex/Eval_Examples.thy ex/Fundefs.thy ex/Gauge_Integration.thy		\
   ex/Groebner_Examples.thy ex/Guess.thy ex/HarmonicSeries.thy		\
   ex/Hebrew.thy ex/Hex_Bin_Examples.thy ex/Higher_Order_Logic.thy	\
-  ex/Induction_Schema.thy ex/InductiveInvariant.thy			\
+  ex/Iff_Oracle.thy ex/Induction_Schema.thy ex/InductiveInvariant.thy	\
   ex/InductiveInvariant_examples.thy ex/Intuitionistic.thy		\
   ex/Lagrange.thy ex/LocaleTest2.thy ex/MT.thy ex/MergeSort.thy		\
   ex/Meson_Test.thy ex/MonoidGroup.thy ex/Multiquote.thy ex/NatSum.thy	\
-  ex/Normalization_by_Evaluation.thy					\
-  ex/Numeral.thy ex/PER.thy ex/PresburgerEx.thy ex/Primrec.thy		\
-  ex/Quickcheck_Examples.thy ex/Quickcheck_Lattice_Examples.thy		\
-  ex/ROOT.ML ex/Recdefs.thy ex/Records.thy ex/ReflectionEx.thy		\
-  ex/Refute_Examples.thy ex/SAT_Examples.thy ex/SVC_Oracle.thy		\
-  ex/Serbian.thy ex/Sqrt.thy ex/Sqrt_Script.thy ex/Sudoku.thy		\
-  ex/Tarski.thy ex/Termination.thy ex/Transfer_Ex.thy ex/Tree23.thy	\
-  ex/Unification.thy ex/While_Combinator_Example.thy			\
-  ex/document/root.bib ex/document/root.tex ex/set.thy ex/svc_funcs.ML	\
-  ex/svc_test.thy
+  ex/Normalization_by_Evaluation.thy ex/Numeral.thy ex/PER.thy		\
+  ex/PresburgerEx.thy ex/Primrec.thy ex/Quickcheck_Examples.thy		\
+  ex/Quickcheck_Lattice_Examples.thy ex/ROOT.ML ex/Recdefs.thy		\
+  ex/Records.thy ex/ReflectionEx.thy ex/Refute_Examples.thy		\
+  ex/SAT_Examples.thy ex/SVC_Oracle.thy ex/Serbian.thy ex/Sqrt.thy	\
+  ex/Sqrt_Script.thy ex/Sudoku.thy ex/Tarski.thy ex/Termination.thy	\
+  ex/Transfer_Ex.thy ex/Tree23.thy ex/Unification.thy			\
+  ex/While_Combinator_Example.thy ex/document/root.bib			\
+  ex/document/root.tex ex/set.thy ex/svc_funcs.ML ex/svc_test.thy
 	@$(ISABELLE_TOOL) usedir $(OUT)/HOL ex
 
 
--- a/src/HOL/Library/Multiset.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Library/Multiset.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -1279,7 +1279,7 @@
 subsubsection {* Monotonicity of multiset union *}
 
 lemma mult1_union:
-  "(B, D) \<in> mult1 r ==> trans r ==> (C + B, C + D) \<in> mult1 r"
+  "(B, D) \<in> mult1 r ==> (C + B, C + D) \<in> mult1 r"
 apply (unfold mult1_def)
 apply auto
 apply (rule_tac x = a in exI)
@@ -1290,8 +1290,8 @@
 lemma union_less_mono2: "B \<subset># D ==> C + B \<subset># C + (D::'a::order multiset)"
 apply (unfold less_multiset_def mult_def)
 apply (erule trancl_induct)
- apply (blast intro: mult1_union transI order_less_trans r_into_trancl)
-apply (blast intro: mult1_union transI order_less_trans r_into_trancl trancl_trans)
+ apply (blast intro: mult1_union)
+apply (blast intro: mult1_union trancl_trans)
 done
 
 lemma union_less_mono1: "B \<subset># D ==> B + C \<subset># D + (C::'a::order multiset)"
--- a/src/HOL/List.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/List.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -1576,6 +1576,10 @@
   "map f (butlast xs) = butlast (map f xs)"
   by (induct xs) simp_all
 
+lemma snoc_eq_iff_butlast:
+  "xs @ [x] = ys \<longleftrightarrow> (ys \<noteq> [] & butlast ys = xs & last ys = x)"
+by (metis append_butlast_last_id append_is_Nil_conv butlast_snoc last_snoc not_Cons_self)
+
 
 subsubsection {* @{text take} and @{text drop} *}
 
@@ -2288,6 +2292,10 @@
   "xs = ys \<longleftrightarrow> list_all2 (op =) xs ys"
 by (induct xs ys rule: list_induct2') auto
 
+lemma list_eq_iff_zip_eq:
+  "xs = ys \<longleftrightarrow> length xs = length ys \<and> (\<forall>(x,y) \<in> set (zip xs ys). x = y)"
+by(auto simp add: set_zip list_all2_eq list_all2_conv_all_nth cong: conj_cong)
+
 
 subsubsection {* @{text foldl} and @{text foldr} *}
 
@@ -4457,7 +4465,7 @@
   by blast
 
 
-subsection {* Lexicographic combination of measure functions *}
+subsubsection {* Lexicographic combination of measure functions *}
 
 text {* These are useful for termination proofs *}
 
@@ -4482,7 +4490,133 @@
 by auto
 
 
-subsubsection {* Lifting a Relation on List Elements to the Lists *}
+subsubsection {* Lifting Relations to Lists: one element *}
+
+definition listrel1 :: "('a \<times> 'a) set \<Rightarrow> ('a list \<times> 'a list) set" where
+"listrel1 r = {(xs,ys).
+   \<exists>us z z' vs. xs = us @ z # vs \<and> (z,z') \<in> r \<and> ys = us @ z' # vs}"
+
+lemma listrel1I:
+  "\<lbrakk> (x, y) \<in> r;  xs = us @ x # vs;  ys = us @ y # vs \<rbrakk> \<Longrightarrow>
+  (xs, ys) \<in> listrel1 r"
+unfolding listrel1_def by auto
+
+lemma listrel1E:
+  "\<lbrakk> (xs, ys) \<in> listrel1 r;
+     !!x y us vs. \<lbrakk> (x, y) \<in> r;  xs = us @ x # vs;  ys = us @ y # vs \<rbrakk> \<Longrightarrow> P
+   \<rbrakk> \<Longrightarrow> P"
+unfolding listrel1_def by auto
+
+lemma not_Nil_listrel1 [iff]: "([], xs) \<notin> listrel1 r"
+unfolding listrel1_def by blast
+
+lemma not_listrel1_Nil [iff]: "(xs, []) \<notin> listrel1 r"
+unfolding listrel1_def by blast
+
+lemma Cons_listrel1_Cons [iff]:
+  "(x # xs, y # ys) \<in> listrel1 r \<longleftrightarrow>
+   (x,y) \<in> r \<and> xs = ys \<or> x = y \<and> (xs, ys) \<in> listrel1 r"
+by (simp add: listrel1_def Cons_eq_append_conv) (blast)
+
+lemma listrel1I1: "(x,y) \<in> r \<Longrightarrow> (x # xs, y # xs) \<in> listrel1 r"
+by (metis Cons_listrel1_Cons)
+
+lemma listrel1I2: "(xs, ys) \<in> listrel1 r \<Longrightarrow> (x # xs, x # ys) \<in> listrel1 r"
+by (metis Cons_listrel1_Cons)
+
+lemma append_listrel1I:
+  "(xs, ys) \<in> listrel1 r \<and> us = vs \<or> xs = ys \<and> (us, vs) \<in> listrel1 r
+    \<Longrightarrow> (xs @ us, ys @ vs) \<in> listrel1 r"
+unfolding listrel1_def
+by auto (blast intro: append_eq_appendI)+
+
+lemma Cons_listrel1E1[elim!]:
+  assumes "(x # xs, ys) \<in> listrel1 r"
+    and "\<And>y. ys = y # xs \<Longrightarrow> (x, y) \<in> r \<Longrightarrow> R"
+    and "\<And>zs. ys = x # zs \<Longrightarrow> (xs, zs) \<in> listrel1 r \<Longrightarrow> R"
+  shows R
+using assms by (cases ys) blast+
+
+lemma Cons_listrel1E2[elim!]:
+  assumes "(xs, y # ys) \<in> listrel1 r"
+    and "\<And>x. xs = x # ys \<Longrightarrow> (x, y) \<in> r \<Longrightarrow> R"
+    and "\<And>zs. xs = y # zs \<Longrightarrow> (zs, ys) \<in> listrel1 r \<Longrightarrow> R"
+  shows R
+using assms by (cases xs) blast+
+
+lemma snoc_listrel1_snoc_iff:
+  "(xs @ [x], ys @ [y]) \<in> listrel1 r
+    \<longleftrightarrow> (xs, ys) \<in> listrel1 r \<and> x = y \<or> xs = ys \<and> (x,y) \<in> r" (is "?L \<longleftrightarrow> ?R")
+proof
+  assume ?L thus ?R
+    by (fastsimp simp: listrel1_def snoc_eq_iff_butlast butlast_append)
+next
+  assume ?R then show ?L unfolding listrel1_def by force
+qed
+
+lemma listrel1_eq_len: "(xs,ys) \<in> listrel1 r \<Longrightarrow> length xs = length ys"
+unfolding listrel1_def by auto
+
+lemma listrel1_mono:
+  "r \<subseteq> s \<Longrightarrow> listrel1 r \<subseteq> listrel1 s"
+unfolding listrel1_def by blast
+
+
+lemma listrel1_converse: "listrel1 (r^-1) = (listrel1 r)^-1"
+unfolding listrel1_def by blast
+
+lemma in_listrel1_converse:
+  "(x,y) : listrel1 (r^-1) \<longleftrightarrow> (x,y) : (listrel1 r)^-1"
+unfolding listrel1_def by blast
+
+lemma listrel1_iff_update:
+  "(xs,ys) \<in> (listrel1 r)
+   \<longleftrightarrow> (\<exists>y n. (xs ! n, y) \<in> r \<and> n < length xs \<and> ys = xs[n:=y])" (is "?L \<longleftrightarrow> ?R")
+proof
+  assume "?L"
+  then obtain x y u v where "xs = u @ x # v"  "ys = u @ y # v"  "(x,y) \<in> r"
+    unfolding listrel1_def by auto
+  then have "ys = xs[length u := y]" and "length u < length xs"
+    and "(xs ! length u, y) \<in> r" by auto
+  then show "?R" by auto
+next
+  assume "?R"
+  then obtain x y n where "(xs!n, y) \<in> r" "n < size xs" "ys = xs[n:=y]" "x = xs!n"
+    by auto
+  then obtain u v where "xs = u @ x # v" and "ys = u @ y # v" and "(x, y) \<in> r"
+    by (auto intro: upd_conv_take_nth_drop id_take_nth_drop)
+  then show "?L" by (auto simp: listrel1_def)
+qed
+
+
+text{* Accessible part of @{term listrel1} relations: *}
+
+lemma Cons_acc_listrel1I [intro!]:
+  "x \<in> acc r \<Longrightarrow> xs \<in> acc (listrel1 r) \<Longrightarrow> (x # xs) \<in> acc (listrel1 r)"
+apply (induct arbitrary: xs set: acc)
+apply (erule thin_rl)
+apply (erule acc_induct)
+apply (rule accI)
+apply (blast)
+done
+
+lemma lists_accD: "xs \<in> lists (acc r) \<Longrightarrow> xs \<in> acc (listrel1 r)"
+apply (induct set: lists)
+ apply (rule accI)
+ apply simp
+apply (rule accI)
+apply (fast dest: acc_downward)
+done
+
+lemma lists_accI: "xs \<in> acc (listrel1 r) \<Longrightarrow> xs \<in> lists (acc r)"
+apply (induct set: acc)
+apply clarify
+apply (rule accI)
+apply (fastsimp dest!: in_set_conv_decomp[THEN iffD1] simp: listrel1_def)
+done
+
+
+subsubsection {* Lifting Relations to Lists: all elements *}
 
 inductive_set
   listrel :: "('a * 'a)set => ('a list * 'a list)set"
@@ -4497,6 +4631,24 @@
 inductive_cases listrel_Cons2 [elim!]: "(xs,y#ys) \<in> listrel r"
 
 
+lemma listrel_eq_len:  "(xs, ys) \<in> listrel r \<Longrightarrow> length xs = length ys"
+by(induct rule: listrel.induct) auto
+
+lemma listrel_iff_zip: "(xs,ys) : listrel r \<longleftrightarrow>
+  length xs = length ys & (\<forall>(x,y) \<in> set(zip xs ys). (x,y) \<in> r)" (is "?L \<longleftrightarrow> ?R")
+proof
+  assume ?L thus ?R by induct (auto intro: listrel_eq_len)
+next
+  assume ?R thus ?L
+    apply (clarify)
+    by (induct rule: list_induct2) (auto intro: listrel.intros)
+qed
+
+lemma listrel_iff_nth: "(xs,ys) : listrel r \<longleftrightarrow>
+  length xs = length ys & (\<forall>n < length xs. (xs!n, ys!n) \<in> r)" (is "?L \<longleftrightarrow> ?R")
+by (auto simp add: all_set_conv_all_nth listrel_iff_zip)
+
+
 lemma listrel_mono: "r \<subseteq> s \<Longrightarrow> listrel r \<subseteq> listrel s"
 apply clarify  
 apply (erule listrel.induct)
@@ -4532,6 +4684,16 @@
 theorem equiv_listrel: "equiv A r \<Longrightarrow> equiv (lists A) (listrel r)"
 by (simp add: equiv_def listrel_refl_on listrel_sym listrel_trans) 
 
+lemma listrel_rtrancl_refl[iff]: "(xs,xs) : listrel(r^*)"
+using listrel_refl_on[of UNIV, OF refl_rtrancl]
+by(auto simp: refl_on_def)
+
+lemma listrel_rtrancl_trans:
+  "\<lbrakk> (xs,ys) : listrel(r^*);  (ys,zs) : listrel(r^*) \<rbrakk>
+  \<Longrightarrow> (xs,zs) : listrel(r^*)"
+by (metis listrel_trans trans_def trans_rtrancl)
+
+
 lemma listrel_Nil [simp]: "listrel r `` {[]} = {[]}"
 by (blast intro: listrel.intros)
 
@@ -4539,6 +4701,74 @@
      "listrel r `` {x#xs} = set_Cons (r``{x}) (listrel r `` {xs})"
 by (auto simp add: set_Cons_def intro: listrel.intros)
 
+text {* Relating @{term listrel1}, @{term listrel} and closures: *}
+
+lemma listrel1_rtrancl_subset_rtrancl_listrel1:
+  "listrel1 (r^*) \<subseteq> (listrel1 r)^*"
+proof (rule subrelI)
+  fix xs ys assume 1: "(xs,ys) \<in> listrel1 (r^*)"
+  { fix x y us vs
+    have "(x,y) : r^* \<Longrightarrow> (us @ x # vs, us @ y # vs) : (listrel1 r)^*"
+    proof(induct rule: rtrancl.induct)
+      case rtrancl_refl show ?case by simp
+    next
+      case rtrancl_into_rtrancl thus ?case
+        by (metis listrel1I rtrancl.rtrancl_into_rtrancl)
+    qed }
+  thus "(xs,ys) \<in> (listrel1 r)^*" using 1 by(blast elim: listrel1E)
+qed
+
+lemma rtrancl_listrel1_eq_len: "(x,y) \<in> (listrel1 r)^* \<Longrightarrow> length x = length y"
+by (induct rule: rtrancl.induct) (auto intro: listrel1_eq_len)
+
+lemma rtrancl_listrel1_ConsI1:
+  "(xs,ys) : (listrel1 r)^* \<Longrightarrow> (x#xs,x#ys) : (listrel1 r)^*"
+apply(induct rule: rtrancl.induct)
+ apply simp
+by (metis listrel1I2 rtrancl.rtrancl_into_rtrancl)
+
+lemma rtrancl_listrel1_ConsI2:
+  "(x,y) \<in> r^* \<Longrightarrow> (xs, ys) \<in> (listrel1 r)^*
+  \<Longrightarrow> (x # xs, y # ys) \<in> (listrel1 r)^*"
+  by (blast intro: rtrancl_trans rtrancl_listrel1_ConsI1 
+    subsetD[OF listrel1_rtrancl_subset_rtrancl_listrel1 listrel1I1])
+
+lemma listrel1_subset_listrel:
+  "r \<subseteq> r' \<Longrightarrow> refl r' \<Longrightarrow> listrel1 r \<subseteq> listrel(r')"
+by(auto elim!: listrel1E simp add: listrel_iff_zip set_zip refl_on_def)
+
+lemma listrel_reflcl_if_listrel1:
+  "(xs,ys) : listrel1 r \<Longrightarrow> (xs,ys) : listrel(r^*)"
+by(erule listrel1E)(auto simp add: listrel_iff_zip set_zip)
+
+lemma listrel_rtrancl_eq_rtrancl_listrel1: "listrel (r^*) = (listrel1 r)^*"
+proof
+  { fix x y assume "(x,y) \<in> listrel (r^*)"
+    then have "(x,y) \<in> (listrel1 r)^*"
+    by induct (auto intro: rtrancl_listrel1_ConsI2) }
+  then show "listrel (r^*) \<subseteq> (listrel1 r)^*"
+    by (rule subrelI)
+next
+  show "listrel (r^*) \<supseteq> (listrel1 r)^*"
+  proof(rule subrelI)
+    fix xs ys assume "(xs,ys) \<in> (listrel1 r)^*"
+    then show "(xs,ys) \<in> listrel (r^*)"
+    proof induct
+      case base show ?case by(auto simp add: listrel_iff_zip set_zip)
+    next
+      case (step ys zs)
+      thus ?case  by (metis listrel_reflcl_if_listrel1 listrel_rtrancl_trans)
+    qed
+  qed
+qed
+
+lemma rtrancl_listrel1_if_listrel:
+  "(xs,ys) : listrel r \<Longrightarrow> (xs,ys) : (listrel1 r)^*"
+by(metis listrel_rtrancl_eq_rtrancl_listrel1 subsetD[OF listrel_mono] r_into_rtrancl subsetI)
+
+lemma listrel_subset_rtrancl_listrel1: "listrel r \<subseteq> (listrel1 r)^*"
+by(fast intro:rtrancl_listrel1_if_listrel)
+
 
 subsection {* Size function *}
 
--- a/src/HOL/Mirabelle/Tools/mirabelle_sledgehammer_filter.ML	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Mirabelle/Tools/mirabelle_sledgehammer_filter.ML	Sat Oct 30 12:25:18 2010 -0700
@@ -95,8 +95,7 @@
   else
     ()
 
-val default_max_relevant = 300
-val prover_name = ATP_Systems.eN (* arbitrary ATP *)
+val default_prover = ATP_Systems.eN (* arbitrary ATP *)
 
 fun with_index (i, s) = s ^ "@" ^ string_of_int i
 
@@ -107,11 +106,16 @@
        SOME proofs =>
        let
          val {context = ctxt, facts, goal} = Proof.goal pre
+         val thy = ProofContext.theory_of ctxt
+         val prover = AList.lookup (op =) args "prover"
+                      |> the_default default_prover
+         val default_max_relevant =
+           Sledgehammer.default_max_relevant_for_prover thy prover
          val irrelevant_consts =
-           Sledgehammer.irrelevant_consts_for_prover prover_name
+           Sledgehammer.irrelevant_consts_for_prover prover
          val relevance_fudge =
            extract_relevance_fudge args
-               (Sledgehammer.relevance_fudge_for_prover prover_name)
+               (Sledgehammer.relevance_fudge_for_prover prover)
          val relevance_override = {add = [], del = [], only = false}
          val {relevance_thresholds, full_types, max_relevant, ...} =
            Sledgehammer_Isar.default_params ctxt args
--- a/src/HOL/Mutabelle/mutabelle.ML	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Mutabelle/mutabelle.ML	Sat Oct 30 12:25:18 2010 -0700
@@ -497,15 +497,19 @@
  (map_types (inst_type insts) (freeze t));
 
 fun is_executable thy insts th =
- (Quickcheck.test_term
-    (ProofContext.init_global thy) false (SOME (!testgen_name)) 1 1 (preprocess thy insts (prop_of th));
-  Output.urgent_message "executable"; true) handle ERROR s =>
-    (Output.urgent_message ("not executable: " ^ s); false);
+  ((Quickcheck.test_term
+      (Context.proof_map (Quickcheck.map_test_params (apfst (K (1, 1)))) (ProofContext.init_global thy))
+      (SOME (!testgen_name)) (preprocess thy insts (prop_of th));
+    Output.urgent_message "executable"; true) handle ERROR s =>
+    (Output.urgent_message ("not executable: " ^ s); false));
 
 fun qc_recursive usedthy [] insts sz qciter acc = rev acc
  | qc_recursive usedthy (x::xs) insts sz qciter acc = qc_recursive usedthy xs insts sz qciter 
-     (Output.urgent_message ("qc_recursive: " ^ string_of_int (length xs)); ((x, pretty (the_default [] (Quickcheck.test_term
-       (ProofContext.init_global usedthy) false (SOME (!testgen_name)) sz qciter (preprocess usedthy insts x)))) :: acc))
+     (Output.urgent_message ("qc_recursive: " ^ string_of_int (length xs));
+     ((x, pretty (the_default [] (fst (Quickcheck.test_term
+       (Context.proof_map (Quickcheck.map_test_params (apfst (K (sz, qciter))))
+         (ProofContext.init_global usedthy))
+       (SOME (!testgen_name)) (preprocess usedthy insts x))))) :: acc))
           handle ERROR msg => (Output.urgent_message msg; qc_recursive usedthy xs insts sz qciter acc);
 
 
--- a/src/HOL/Mutabelle/mutabelle_extra.ML	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Mutabelle/mutabelle_extra.ML	Sat Oct 30 12:25:18 2010 -0700
@@ -53,8 +53,6 @@
 
 (* quickcheck options *)
 (*val quickcheck_generator = "SML"*)
-val iterations = 10
-val size = 5
 
 exception RANDOM;
 
@@ -96,8 +94,8 @@
 fun invoke_quickcheck quickcheck_generator thy t =
   TimeLimit.timeLimit (Time.fromSeconds (!Auto_Tools.time_limit))
       (fn _ =>
-          case Quickcheck.gen_test_term (ProofContext.init_global thy) true (SOME quickcheck_generator)
-                                    size iterations (preprocess thy [] t) of
+          case Quickcheck.test_term (ProofContext.init_global thy)
+              (SOME quickcheck_generator) (preprocess thy [] t) of
             (NONE, (time_report, report)) => (NoCex, (time_report, report))
           | (SOME _, (time_report, report)) => (GenuineCex, (time_report, report))) ()
   handle TimeLimit.TimeOut => (Timeout, ([("timelimit", !Auto_Tools.time_limit)], NONE))
@@ -249,8 +247,12 @@
     exists (member (op =) forbidden_mutant_constnames) consts
   end
 
-fun is_executable_term thy t = can (TimeLimit.timeLimit (Time.fromMilliseconds 2000) (Quickcheck.test_term
- (ProofContext.init_global thy) false (SOME "SML") 1 0)) (preprocess thy [] t)
+fun is_executable_term thy t =
+  can (TimeLimit.timeLimit (Time.fromMilliseconds 2000)
+    (Quickcheck.test_term
+      (Context.proof_map (Quickcheck.map_test_params (apfst (K (1, 0)))) (ProofContext.init_global thy))
+      (SOME "SML"))) (preprocess thy [] t)
+
 fun is_executable_thm thy th = is_executable_term thy (prop_of th)
 
 val freezeT =
@@ -422,6 +424,7 @@
 fun mutate_theorems_and_write_report thy mtds thms file_name =
   let
     val _ = Output.urgent_message "Starting Mutabelle..."
+    val Quickcheck.Test_Params test_params = Quickcheck.test_params_of (ProofContext.init_global thy)
     val path = Path.explode file_name
     (* for normal report: *)
     (*val (gen_create_entry, gen_string_for_entry) = (create_entry, string_for_entry)*)
@@ -437,8 +440,8 @@
       "; num_mutations: " ^ string_of_int num_mutations ^ "\n" ^
     "QC options = " ^
       (*"quickcheck_generator: " ^ quickcheck_generator ^ ";*)
-      "size: " ^ string_of_int size ^
-      "; iterations: " ^ string_of_int iterations ^ "\n");
+      "size: " ^ string_of_int (#size test_params) ^
+      "; iterations: " ^ string_of_int (#iterations test_params) ^ "\n");
     map (File.append path o gen_string_for_entry o mutate_theorem gen_create_entry thy mtds) thms;
     ()
   end
--- a/src/HOL/Partial_Function.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Partial_Function.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -26,6 +26,11 @@
 lemma call_mono[partial_function_mono]: "monotone (fun_ord ord) ord (\<lambda>f. f t)"
 by (rule monotoneI) (auto simp: fun_ord_def)
 
+lemma let_mono[partial_function_mono]:
+  "(\<And>x. monotone orda ordb (\<lambda>f. b f x))
+  \<Longrightarrow> monotone orda ordb (\<lambda>f. Let t (b f))"
+by (simp add: Let_def)
+
 lemma if_mono[partial_function_mono]: "monotone orda ordb F 
 \<Longrightarrow> monotone orda ordb G
 \<Longrightarrow> monotone orda ordb (\<lambda>f. if c then F f else G f)"
@@ -242,6 +247,7 @@
   show "option_ord (Option.bind (B f) (\<lambda>y. C y f)) (Option.bind (B g) (\<lambda>y'. C y' g))" .
 qed
 
+hide_const (open) chain
 
 end
 
--- a/src/HOL/Predicate_Compile_Examples/Code_Prolog_Examples.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Predicate_Compile_Examples/Code_Prolog_Examples.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -105,7 +105,7 @@
 
 section {* Example symbolic derivation *}
 
-hide_const Plus Pow
+hide_const Pow
 
 datatype expr = Log expr | Mult expr expr | Div expr expr | x | Num int | Plus expr expr
   | Minus expr expr | Uminus expr | Pow expr int | Exp expr
--- a/src/HOL/Predicate_Compile_Examples/ROOT.ML	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/Predicate_Compile_Examples/ROOT.ML	Sat Oct 30 12:25:18 2010 -0700
@@ -12,11 +12,12 @@
 if getenv "EXEC_SWIPL" = "" andalso getenv "EXEC_YAP" = "" then
   (warning "No prolog system found - skipping some example theories"; ())
 else
-  (use_thys [
-    "Code_Prolog_Examples",
-    "Context_Free_Grammar_Example",
-    "Hotel_Example_Prolog",
-    "Lambda_Example",
-    "List_Examples"];
-   Unsynchronized.setmp quick_and_dirty true use_thys ["Reg_Exp_Example"]);
-
+  if not (getenv "EXEC_SWIPL" = "") orelse (getenv "SWIPL_VERSION" = "5.10.1") then
+     (use_thys [
+        "Code_Prolog_Examples",
+        "Context_Free_Grammar_Example",
+        "Hotel_Example_Prolog",
+        "Lambda_Example",
+        "List_Examples"];
+      Unsynchronized.setmp quick_and_dirty true use_thys ["Reg_Exp_Example"])
+    else (warning "Unsupported SWI-Prolog version - skipping some example theories"; ());
--- a/src/HOL/SMT.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/SMT.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -9,6 +9,7 @@
 uses
   "Tools/Datatype/datatype_selectors.ML"
   ("Tools/SMT/smt_monomorph.ML")
+  ("Tools/SMT/smt_builtin.ML")
   ("Tools/SMT/smt_normalize.ML")
   ("Tools/SMT/smt_translate.ML")
   ("Tools/SMT/smt_solver.ML")
@@ -49,6 +50,20 @@
 
 
 
+subsection {* Distinctness *}
+
+text {*
+As an abbreviation for a quadratic number of inequalities, SMT solvers
+provide a built-in @{text distinct}.  To avoid confusion with the
+already defined (and more general) @{term List.distinct}, a separate
+constant is defined.
+*}
+
+definition distinct :: "'a list \<Rightarrow> bool"
+where "distinct xs = List.distinct xs"
+
+
+
 subsection {* Higher-order encoding *}
 
 text {*
@@ -112,6 +127,7 @@
 subsection {* Setup *}
 
 use "Tools/SMT/smt_monomorph.ML"
+use "Tools/SMT/smt_builtin.ML"
 use "Tools/SMT/smt_normalize.ML"
 use "Tools/SMT/smt_translate.ML"
 use "Tools/SMT/smt_solver.ML"
@@ -314,7 +330,7 @@
 
 hide_type (open) pattern
 hide_const Pattern term_eq
-hide_const (open) trigger pat nopat fun_app z3div z3mod
+hide_const (open) trigger pat nopat distinct fun_app z3div z3mod
 
 
 
--- a/src/HOL/SMT_Examples/SMT_Examples.thy	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/SMT_Examples/SMT_Examples.thy	Sat Oct 30 12:25:18 2010 -0700
@@ -293,11 +293,11 @@
 
 lemma "(0 \<le> y + -1 * x \<or> \<not> 0 \<le> x \<or> 0 \<le> (x::int)) = (\<not> False)" by smt
 
-lemma "distinct [x < (3::int), 3 \<le> x]" by smt
+lemma "SMT.distinct [x < (3::int), 3 \<le> x]" by smt
 
 lemma
   assumes "a > (0::int)"
-  shows "distinct [a, a * 2, a - a]"
+  shows "SMT.distinct [a, a * 2, a - a]"
   using assms by smt
 
 lemma "
@@ -430,7 +430,7 @@
    False \<or> P = (x - 1 = y) \<or> (\<not>P \<longrightarrow> False)"
   by smt
 
-lemma "distinct [a + (1::nat), a * 2 + 3, a - a]" by smt
+lemma "SMT.distinct [a + (1::nat), a * 2 + 3, a - a]" by smt
 
 lemma "int (nat \<bar>x::int\<bar>) = \<bar>x\<bar>" by smt
 
--- a/src/HOL/SMT_Examples/SMT_Tests.certs	Fri Oct 29 17:15:28 2010 -0700
+++ b/src/HOL/SMT_Examples/SMT_Tests.certs	Sat Oct 30 12:25:18 2010 -0700
@@ -7,96 +7,6 @@
 #25 := [asserted]: #8
 [mp #25 #27]: false
 unsat
-ac5b1925e47f9c59b180fdccd321c68a4a01a710 16 0
-#2 := false
-#8 := (not false)
-#9 := (not #8)
-#34 := (iff #9 false)
-#1 := true
-#29 := (not true)
-#32 := (iff #29 false)
-#33 := [rewrite]: #32
-#30 := (iff #9 #29)
-#27 := (iff #8 true)
-#28 := [rewrite]: #27
-#31 := [monotonicity #28]: #30
-#35 := [trans #31 #33]: #34
-#26 := [asserted]: #9
-[mp #26 #35]: false
-unsat
-b13645ce0b47b432b924b38e0bebde6cbcb236f9 21 0
-#2 := false
-#1 := true
-#8 := (not true)
-#9 := (not #8)
-#10 := (not #9)
-#39 := (iff #10 false)
-#28 := (iff #8 false)
-#29 := [rewrite]: #28
-#37 := (iff #10 #8)
-#35 := (iff #9 true)
-#30 := (not false)
-#33 := (iff #30 true)
-#34 := [rewrite]: #33
-#31 := (iff #9 #30)
-#32 := [monotonicity #29]: #31
-#36 := [trans #32 #34]: #35
-#38 := [monotonicity #36]: #37
-#40 := [trans #38 #29]: #39
-#27 := [asserted]: #10
-[mp #27 #40]: false
-unsat
-8ec60d0baade8bddd39b6e00ec153f6bd8949184 16 0
-#2 := false
-#1 := true
-#8 := (and true true)
-#9 := (not #8)
-#34 := (iff #9 false)
-#29 := (not true)
-#32 := (iff #29 false)
-#33 := [rewrite]: #32
-#30 := (iff #9 #29)
-#27 := (iff #8 true)
-#28 := [rewrite]: #27
-#31 := [monotonicity #28]: #30
-#35 := [trans #31 #33]: #34
-#26 := [asserted]: #9
-[mp #26 #35]: false
-unsat
-b448617db1567a507fc596f5b21ade645ca6e0f9 16 0
-#2 := false
-#1 := true
-#8 := (or true false)
-#9 := (not #8)
-#34 := (iff #9 false)
-#29 := (not true)
-#32 := (iff #29 false)
-#33 := [rewrite]: #32
-#30 := (iff #9 #29)
-#27 := (iff #8 true)
-#28 := [rewrite]: #27
-#31 := [monotonicity #28]: #30
-#35 := [trans #31 #33]: #34
-#26 := [asserted]: #9
-[mp #26 #35]: false
-unsat
-bf545ecaa58049cbf454eac70ee3077f64564cca 16 0
-#2 := false
-#1 := true
-#8 := (implies false true)
-#9 := (not #8)
-#34 := (iff #9 false)
-#29 := (not true)
-#32 := (iff #29 false)
-#33 := [rewrite]: #32
-#30 := (iff #9 #29)
-#27 := (iff #8 true)
-#28 := [rewrite]: #27
-#31 := [monotonicity #28]: #30
-#35 := [trans #31 #33]: #34
-#26 := [asserted]: #9
-[mp #26 #35]: false
-unsat
 a38979487be0aafcf2d387180e92dfd3bd43e483 33 0
 #2 := false
 decl f1 :: S1
@@ -131,6 +41,23 @@
 #29 := [asserted]: #12
 [mp #29 #49]: false
 unsat
+ac5b1925e47f9c59b180fdccd321c68a4a01a710 16 0
+#2 := false
+#8 := (not false)
+#9 := (not #8)
+#34 := (iff #9 false)
+#1 := true
+#29 := (not true)
+#32 := (iff #29 false)
+#33 := [rewrite]: #32
+#30 := (iff #9 #29)
+#27 := (iff #8 true)
+#28 := [rewrite]: #27
+#31 := [monotonicity #28]: #30
+#35 := [trans #31 #33]: #34
+#26 := [asserted]: #9
+[mp #26 #35]: false
+unsat
 b2faf72eaa234b8ac1acedfef5768f99ca3da86b 41 0
 #2 := false
 decl f1 :: S1
@@ -173,6 +100,28 @@
 #30 := [asserted]: #13
 [mp #30 #57]: false
 unsat
+b13645ce0b47b432b924b38e0bebde6cbcb236f9 21 0
+#2 := false
+#1 := true
+#8 := (not true)
+#9 := (not #8)
+#10 := (not #9)
+#39 := (iff #10 false)
+#28 := (iff #8 false)
+#29 := [rewrite]: #28
+#37 := (iff #10 #8)
+#35 := (iff #9 true)
+#30 := (not false)
+#33 := (iff #30 true)
+#34 := [rewrite]: #33
+#31 := (iff #9 #30)
+#32 := [monotonicity #29]: #31
+#36 := [trans #32 #34]: #35
+#38 := [monotonicity #36]: #37
+#40 := [trans #38 #29]: #39
+#27 := [asserted]: #10
+[mp #27 #40]: false
+unsat
 fa3a2c67c2833da196c4009cb283e94a9f22829b 65 0
 #2 := false
 decl f1 :: S1
@@ -239,6 +188,23 @@
 #33 := [asserted]: #16
 [mp #33 #81]: false
 unsat
+8ec60d0baade8bddd39b6e00ec153f6bd8949184 16 0
+#2 := false
+#1 := true
+#8 := (and true true)
+#9 := (not #8)
+#34 := (iff #9 false)
+#29 := (not true)
+#32 := (iff #29 false)
+#33 := [rewrite]: #32
+#30 := (iff #9 #29)
+#27 := (iff #8 true)
+#28 := [rewrite]: #27
+#31 := [monotonicity #28]: #30
+#35 := [trans #31 #33]: #34
+#26 := [asserted]: #9
+[mp #26 #35]: false
+unsat
 85a9b542a9c6d64e778f2449f892d6d55e153689 29 0
 #2 := false
 decl f1 :: S1
@@ -269,6 +235,23 @@
 #28 := [asserted]: #11
 [mp #28 #45]: false
 unsat
+b448617db1567a507fc596f5b21ade645ca6e0f9 16 0
+#2 := false
+#1 := true
+#8 := (or true false)
+#9 := (not #8)
+#34 := (iff #9 false)
+#29 := (not true)
+#32 := (iff #29 false)
+#33 := [rewrite]: #32
+#30 := (iff #9 #29)
+#27 := (iff #8 true)
+#28 := [rewrite]: #27
+#31 := [monotonicity #28]: #30
+#35 := [trans #31 #33]: #34
+#26 := [asserted]: #9
+[mp #26 #35]: false
+unsat
 a21434fdffa6243cc7410eb0aff669b84c5be474 41 0
 #2 := false
 decl f1 :: S1
@@ -311,6 +294,23 @@
 #30 := [asserted]: #13
 [mp #30 #57]: false
 unsat
+bf545ecaa58049cbf454eac70ee3077f64564cca 16 0
+#2 := false
+#1 := true
+#8 := (implies false true)
+#9 := (not #8)
+#34 := (iff #9 false)
+#29 := (not true)
+#32 := (iff #29 false)
+#33 := [rewrite]: #32
+#30 := (iff #9 #29)
+#27 := (iff #8 true)
+#28 := [rewrite]: #27
+#31 := [monotonicity #28]: #30
+#35 := [trans #31 #33]: #34
+#26 := [asserted]: #9
+[mp #26 #35]: false
+unsat
 a6a664cc4c3ff45fb3211b72c0f520208b902c9b 47 0
 #2 := false
 decl f1 :: S1
@@ -359,6 +359,156 @@
 #32 := [asserted]: #15
 [mp #32 #62]: false
 unsat
+9a169ba4d23a9080465edad5616230c8b4e1ef98 149 0
+#2 := false
+decl f5 :: S1
+#12 := f5
+decl f1 :: S1
+#4 := f1
+#44 := (= f1 f5)
+decl f4 :: S1
+#10 := f4
+#41 := (= f1 f4)
+decl f3 :: S1
+#8 := f3
+#38 := (= f1 f3)
+#47 := (ite #38 #41 #44)
+#53 := (not #38)
+#54 := (or #53 #41)
+#64 := (or #38 #44)
+#91 := (not #64)
+#90 := (not #54)
+#92 := (or #90 #91)
+#143 := [hypothesis]: #90
+#128 := (or #92 #54)
+#129 := [def-axiom]: #128
+#144 := [unit-resolution #129 #143]: #92
+#78 := (not #47)
+#116 := (or #54 #38)
+#117 := [def-axiom]: #116
+#145 := [unit-resolution #117 #143]: #38
+#110 := (not #41)
+#118 := (or #54 #110)
+#119 := [def-axiom]: #118
+#146 := [unit-resolution #119 #143]: #110
+#106 := (or #78 #53 #41)
+#107 := [def-axiom]: #106
+#147 := [unit-resolution #107 #146 #145]: #78
+#93 := (not #92)
+#137 := (or #47 #93)
+#100 := (iff #47 #92)
+#69 := (and #54 #64)
+#79 := (iff #69 #78)
+#103 := (iff #79 #100)
+#95 := (iff #92 #47)
+#101 := (iff #95 #100)
+#102 := [rewrite]: #101
+#98 := (iff #79 #95)
+#87 := (iff #93 #78)
+#96 := (iff #87 #95)
+#97 := [rewrite]: #96
+#84 := (iff #79 #87)
+#88 := (iff #69 #93)
+#89 := [rewrite]: #88
+#94 := [monotonicity #89]: #84
+#99 := [trans #94 #97]: #98
+#104 := [trans #99 #102]: #103
+#13 := (= f5 f1)
+#9 := (= f3 f1)
+#16 := (not #9)
+#17 := (implies #16 #13)
+#11 := (= f4 f1)
+#15 := (implies #9 #11)
+#18 := (and #15 #17)
+#14 := (ite #9 #11 #13)
+#19 := (iff #14 #18)
+#20 := (not #19)
+#82 := (iff #20 #79)
+#72 := (iff #47 #69)
+#75 := (not #72)
+#80 := (iff #75 #79)
+#81 := [rewrite]: #80
+#76 := (iff #20 #75)
+#73 := (iff #19 #72)
+#70 := (iff #18 #69)
+#67 := (iff #17 #64)
+#61 := (implies #53 #44)
+#65 := (iff #61 #64)
+#66 := [rewrite]: #65
+#62 := (iff #17 #61)
+#45 := (iff #13 #44)
+#46 := [rewrite]: #45
+#59 := (iff #16 #53)
+#39 := (iff #9 #38)
+#40 := [rewrite]: #39
+#60 := [monotonicity #40]: #59
+#63 := [monotonicity #60 #46]: #62
+#68 := [trans #63 #66]: #67
+#57 := (iff #15 #54)
+#50 := (implies #38 #41)
+#55 := (iff #50 #54)
+#56 := [rewrite]: #55
+#51 := (iff #15 #50)
+#42 := (iff #11 #41)
+#43 := [rewrite]: #42
+#52 := [monotonicity #40 #43]: #51
+#58 := [trans #52 #56]: #57
+#71 := [monotonicity #58 #68]: #70
+#48 := (iff #14 #47)
+#49 := [monotonicity #40 #43 #46]: #48
+#74 := [monotonicity #49 #71]: #73
+#77 := [monotonicity #74]: #76
+#83 := [trans #77 #81]: #82
+#37 := [asserted]: #20
+#86 := [mp #37 #83]: #79
+#105 := [mp #86 #104]: #100
+#134 := (not #100)
+#135 := (or #47 #93 #134)
+#136 := [def-axiom]: #135
+#138 := [unit-resolution #136 #105]: #137
+#148 := [unit-resolution #138 #147 #144]: false
+#149 := [lemma #148]: #54
+#150 := [hypothesis]: #78
+#156 := (or #38 #47)
+#151 := [unit-resolution #138 #150]: #93
+#130 := (or #92 #64)
+#131 := [def-axiom]: #130
+#152 := [unit-resolution #131 #151]: #64
+#153 := [hypothesis]: #53
+#113 := (not #44)
+#114 := (or #47 #38 #113)
+#115 := [def-axiom]: #114
+#154 := [unit-resolution #115 #153 #150]: #113
+#126 := (or #91 #38 #44)
+#127 := [def-axiom]: #126
+#155 := [unit-resolution #127 #154 #153 #152]: false
+#157 := [lemma #155]: #156
+#158 := [unit-resolution #157 #150]: #38
+#111 := (or #47 #53 #110)
+#112 := [def-axiom]: #111
+#159 := [unit-resolution #112 #158 #150]: #110
+#120 := (or #90 #53 #41)
+#121 := [def-axiom]: #120
+#160 := [unit-resolution #121 #159 #158 #149]: false
+#161 := [lemma #160]: #47
+#141 := (or #78 #92)
+#139 := (or #78 #92 #134)
+#140 := [def-axiom]: #139
+#142 := [unit-resolution #140 #105]: #141
+#162 := [unit-resolution #142 #161]: #92
+#132 := (or #93 #90 #91)
+#133 := [def-axiom]: #132
+#163 := [unit-resolution #133 #162 #149]: #91
+#122 := (or #64 #53)
+#123 := [def-axiom]: #122
+#164 := [unit-resolution #123 #163]: #53
+#124 := (or #64 #113)
+#125 := [def-axiom]: #124
+#165 := [unit-resolution #125 #163]: #113
+#108 := (or #78 #38 #44)
+#109 := [def-axiom]: #108
+[unit-resolution #109 #165 #164 #161]: false
+unsat
 d99e41f56c960ba88eb8ca95c5a49bd2181a7626 47 0
 #2 := false
 decl f1 :: S1
@@ -407,6 +557,73 @@
 #32 := [asserted]: #15
 [mp #32 #62]: false
 unsat
+8d07b6d671ef5c9eedcaa35c22d5f1c7124504cb 66 0
+#2 := false
+decl f3 :: S1
+#8 := f3
+decl f1 :: S1
+#4 := f1
+#33 := (= f1 f3)
+#51 := (not #33)
+#87 := [hypothesis]: #33
+decl f4 :: S1
+#10 := f4
+#36 := (= f1 f4)
+#42 := (not #36)
+#43 := (or #33 #42)
+#69 := (or #43 #51)
+#70 := [def-axiom]: #69
+#88 := [unit-resolution #70 #87]: #43
+#67 := (not #43)
+#89 := (or #51 #67)
+#52 := (or #51 #36)
+#57 := (ite #33 #43 #52)
+#60 := (not #57)
+#11 := (= f4 f1)
+#9 := (= f3 f1)
+#13 := (implies #9 #11)
+#12 := (implies #11 #9)
+#14 := (ite #9 #12 #13)
+#15 := (not #14)
+#61 := (iff #15 #60)
+#58 := (iff #14 #57)
+#55 := (iff #13 #52)
+#48 := (implies #33 #36)
+#53 := (iff #48 #52)
+#54 := [rewrite]: #53
+#49 := (iff #13 #48)
+#37 := (iff #11 #36)
+#38 := [rewrite]: #37
+#34 := (iff #9 #33)
+#35 := [rewrite]: #34
+#50 := [monotonicity #35 #38]: #49
+#56 := [trans #50 #54]: #55
+#46 := (iff #12 #43)
+#39 := (implies #36 #33)
+#44 := (iff #39 #43)
+#45 := [rewrite]: #44
+#40 := (iff #12 #39)
+#41 := [monotonicity #38 #35]: #40
+#47 := [trans #41 #45]: #46
+#59 := [monotonicity #35 #47 #56]: #58
+#62 := [monotonicity #59]: #61
+#32 := [asserted]: #15
+#65 := [mp #32 #62]: #60
+#83 := (or #57 #51 #67)
+#84 := [def-axiom]: #83
+#90 := [unit-resolution #84 #65]: #89
+#91 := [unit-resolution #90 #88 #87]: false
+#92 := [lemma #91]: #51
+#63 := (or #52 #33)
+#73 := [def-axiom]: #63
+#93 := [unit-resolution #73 #92]: #52
+#76 := (not #52)
+#94 := (or #33 #76)
+#85 := (or #57 #33 #76)
+#86 := [def-axiom]: #85
+#95 := [unit-resolution #86 #65]: #94
+[unit-resolution #95 #93 #92]: false
+unsat
 a8e5086b6e21c7bf961a22426cb7ae14847089d7 55 0
 #2 := false
 decl f3 :: S1
@@ -463,6 +680,74 @@
 #71 := [and-elim #70]: #33
 [mp #71 #77]: false
 unsat
+415ad6a91bb75e131bb05d34f1965ab914825b25 67 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f6 :: S1
+#15 := f6
+#16 := (= f6 f1)
+decl f5 :: S1
+#13 := f5
+#14 := (= f5 f1)
+decl f4 :: S1
+#10 := f4
+#11 := (= f4 f1)
+#18 := (ite #11 #14 #16)
+decl f3 :: S1
+#8 := f3
+#9 := (= f3 f1)
+#19 := (ite #9 #14 #18)
+#12 := (or #9 #11)
+#17 := (ite #12 #14 #16)
+#20 := (iff #17 #19)
+#21 := (not #20)
+#79 := (iff #21 false)
+#1 := true
+#74 := (not true)
+#77 := (iff #74 false)
+#78 := [rewrite]: #77
+#75 := (iff #21 #74)
+#72 := (iff #20 true)
+#51 := (= f1 f6)
+#48 := (= f1 f5)
+#42 := (= f1 f4)
+#39 := (= f1 f3)
+#45 := (or #39 #42)
+#54 := (ite #45 #48 #51)
+#67 := (iff #54 #54)
+#70 := (iff #67 true)
+#71 := [rewrite]: #70
+#68 := (iff #20 #67)
+#65 := (iff #19 #54)
+#57 := (ite #42 #48 #51)
+#60 := (ite #39 #48 #57)
+#63 := (iff #60 #54)
+#64 := [rewrite]: #63
+#61 := (iff #19 #60)
+#58 := (iff #18 #57)
+#52 := (iff #16 #51)
+#53 := [rewrite]: #52
+#49 := (iff #14 #48)
+#50 := [rewrite]: #49
+#43 := (iff #11 #42)
+#44 := [rewrite]: #43
+#59 := [monotonicity #44 #50 #53]: #58
+#40 := (iff #9 #39)
+#41 := [rewrite]: #40
+#62 := [monotonicity #41 #50 #59]: #61
+#66 := [trans #62 #64]: #65
+#55 := (iff #17 #54)
+#46 := (iff #12 #45)
+#47 := [monotonicity #41 #44]: #46
+#56 := [monotonicity #47 #50 #53]: #55
+#69 := [monotonicity #56 #66]: #68
+#73 := [trans #69 #71]: #72
+#76 := [monotonicity #73]: #75
+#80 := [trans #76 #78]: #79
+#38 := [asserted]: #21
+[mp #38 #80]: false
+unsat
 e2d0843914ae918fb9bd06a2d6949232327217fa 55 0
 #2 := false
 decl f1 :: S1
@@ -519,6 +804,74 @@
 #33 := [asserted]: #16
 [mp #33 #70]: false
 unsat
+8b8741030ee2ece2c8d6b3906a1951bc56d9b885 67 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f6 :: S1
+#15 := f6
+#16 := (= f6 f1)
+decl f5 :: S1
+#13 := f5
+#14 := (= f5 f1)
+decl f4 :: S1
+#10 := f4
+#11 := (= f4 f1)
+#18 := (ite #11 #14 #16)
+decl f3 :: S1
+#8 := f3
+#9 := (= f3 f1)
+#19 := (ite #9 #18 #16)
+#12 := (and #9 #11)
+#17 := (ite #12 #14 #16)
+#20 := (iff #17 #19)
+#21 := (not #20)
+#79 := (iff #21 false)
+#1 := true
+#74 := (not true)
+#77 := (iff #74 false)
+#78 := [rewrite]: #77
+#75 := (iff #21 #74)
+#72 := (iff #20 true)
+#51 := (= f1 f6)
+#48 := (= f1 f5)
+#42 := (= f1 f4)
+#39 := (= f1 f3)
+#45 := (and #39 #42)
+#54 := (ite #45 #48 #51)
+#67 := (iff #54 #54)
+#70 := (iff #67 true)
+#71 := [rewrite]: #70
+#68 := (iff #20 #67)
+#65 := (iff #19 #54)
+#57 := (ite #42 #48 #51)
+#60 := (ite #39 #57 #51)
+#63 := (iff #60 #54)
+#64 := [rewrite]: #63
+#61 := (iff #19 #60)
+#52 := (iff #16 #51)
+#53 := [rewrite]: #52
+#58 := (iff #18 #57)
+#49 := (iff #14 #48)
+#50 := [rewrite]: #49
+#43 := (iff #11 #42)
+#44 := [rewrite]: #43
+#59 := [monotonicity #44 #50 #53]: #58
+#40 := (iff #9 #39)
+#41 := [rewrite]: #40
+#62 := [monotonicity #41 #59 #53]: #61
+#66 := [trans #62 #64]: #65
+#55 := (iff #17 #54)
+#46 := (iff #12 #45)
+#47 := [monotonicity #41 #44]: #46
+#56 := [monotonicity #47 #50 #53]: #55
+#69 := [monotonicity #56 #66]: #68
+#73 := [trans #69 #71]: #72
+#76 := [monotonicity #73]: #75
+#80 := [trans #76 #78]: #79
+#38 := [asserted]: #21
+[mp #38 #80]: false
+unsat
 00d9c16458cf2825e776c32505a513a412ede70f 55 0
 #2 := false
 decl f1 :: S1
@@ -575,6 +928,193 @@
 #33 := [asserted]: #16
 [mp #33 #70]: false
 unsat
+a0ca672c65c25c024851f833f39bfb2c705ec387 186 0
+#2 := false
+decl f5 :: S1
+#12 := f5
+decl f1 :: S1
+#4 := f1
+#47 := (= f1 f5)
+decl f3 :: S1
+#8 := f3
+#41 := (= f1 f3)
+#59 := (not #41)
+#76 := (or #59 #47)
+#119 := (not #76)
+decl f4 :: S1
+#10 := f4
+#44 := (= f1 f4)
+#68 := (or #59 #44)
+decl f6 :: S1
+#14 := f6
+#50 := (= f1 f6)
+#84 := (or #59 #50)
+#89 := (ite #68 #76 #84)
+#130 := (not #89)
+#53 := (ite #44 #47 #50)
+#60 := (or #59 #53)
+#112 := (not #44)
+#165 := [hypothesis]: #112
+#172 := (or #60 #44)
+#98 := (not #60)
+#163 := [hypothesis]: #98
+#148 := (or #60 #41)
+#149 := [def-axiom]: #148
+#164 := [unit-resolution #149 #163]: #41
+#124 := (not #50)
+#139 := (not #53)
+#150 := (or #60 #139)
+#151 := [def-axiom]: #150
+#166 := [unit-resolution #151 #163]: #139
+#146 := (or #53 #44 #124)
+#147 := [def-axiom]: #146
+#167 := [unit-resolution #147 #166 #165]: #124
+#157 := (or #89 #60)
+#99 := (iff #89 #98)
+#15 := (= f6 f1)
+#9 := (= f3 f1)
+#20 := (implies #9 #15)
+#13 := (= f5 f1)
+#19 := (implies #9 #13)
+#11 := (= f4 f1)
+#18 := (implies #9 #11)
+#21 := (ite #18 #19 #20)
+#16 := (ite #11 #13 #15)
+#17 := (implies #9 #16)
+#22 := (iff #17 #21)
+#23 := (not #22)
+#102 := (iff #23 #99)
+#92 := (iff #60 #89)
+#95 := (not #92)
+#100 := (iff #95 #99)
+#101 := [rewrite]: #100
+#96 := (iff #23 #95)
+#93 := (iff #22 #92)
+#90 := (iff #21 #89)
+#87 := (iff #20 #84)
+#81 := (implies #41 #50)
+#85 := (iff #81 #84)
+#86 := [rewrite]: #85
+#82 := (iff #20 #81)
+#51 := (iff #15 #50)
+#52 := [rewrite]: #51
+#42 := (iff #9 #41)
+#43 := [rewrite]: #42
+#83 := [monotonicity #43 #52]: #82
+#88 := [trans #83 #86]: #87
+#79 := (iff #19 #76)
+#73 := (implies #41 #47)
+#77 := (iff #73 #76)
+#78 := [rewrite]: #77
+#74 := (iff #19 #73)
+#48 := (iff #13 #47)
+#49 := [rewrite]: #48
+#75 := [monotonicity #43 #49]: #74
+#80 := [trans #75 #78]: #79
+#71 := (iff #18 #68)
+#65 := (implies #41 #44)
+#69 := (iff #65 #68)
+#70 := [rewrite]: #69
+#66 := (iff #18 #65)
+#45 := (iff #11 #44)
+#46 := [rewrite]: #45
+#67 := [monotonicity #43 #46]: #66
+#72 := [trans #67 #70]: #71
+#91 := [monotonicity #72 #80 #88]: #90
+#63 := (iff #17 #60)
+#56 := (implies #41 #53)
+#61 := (iff #56 #60)
+#62 := [rewrite]: #61
+#57 := (iff #17 #56)
+#54 := (iff #16 #53)
+#55 := [monotonicity #46 #49 #52]: #54
+#58 := [monotonicity #43 #55]: #57
+#64 := [trans #58 #62]: #63
+#94 := [monotonicity #64 #91]: #93
+#97 := [monotonicity #94]: #96
+#103 := [trans #97 #101]: #102
+#40 := [asserted]: #23
+#106 := [mp #40 #103]: #99
+#154 := (not #99)
+#155 := (or #89 #60 #154)
+#156 := [def-axiom]: #155
+#158 := [unit-resolution #156 #106]: #157
+#168 := [unit-resolution #158 #163]: #89
+#109 := (not #68)
+#107 := (or #109 #59 #44)
+#104 := [def-axiom]: #107
+#169 := [unit-resolution #104 #164 #165]: #109
+#133 := (or #130 #68 #84)
+#134 := [def-axiom]: #133
+#170 := [unit-resolution #134 #169 #168]: #84
+#127 := (not #84)
+#128 := (or #127 #59 #50)
+#129 := [def-axiom]: #128
+#171 := [unit-resolution #129 #170 #167 #164]: false
+#173 := [lemma #171]: #172
+#176 := [unit-resolution #173 #165]: #60
+#161 := (or #130 #98)
+#159 := (or #130 #98 #154)
+#160 := [def-axiom]: #159
+#162 := [unit-resolution #160 #106]: #161
+#182 := [unit-resolution #162 #176]: #130
+#180 := (or #84 #44)
+#174 := [hypothesis]: #127
+#125 := (or #84 #124)
+#126 := [def-axiom]: #125
+#175 := [unit-resolution #126 #174]: #124
+#122 := (or #84 #41)
+#123 := [def-axiom]: #122
+#177 := [unit-resolution #123 #174]: #41
+#152 := (or #98 #59 #53)
+#153 := [def-axiom]: #152
+#178 := [unit-resolution #153 #177 #176]: #53
+#142 := (or #139 #44 #50)
+#143 := [def-axiom]: #142
+#179 := [unit-resolution #143 #178 #175 #165]: false
+#181 := [lemma #179]: #180
+#183 := [unit-resolution #181 #165]: #84
+#137 := (or #89 #68 #127)
+#138 := [def-axiom]: #137
+#184 := [unit-resolution #138 #183 #182]: #68
+#135 := (or #89 #109 #119)
+#136 := [def-axiom]: #135
+#185 := [unit-resolution #136 #184 #182]: #119
+#186 := [unit-resolution #104 #184 #165]: #59
+#114 := (or #76 #41)
+#115 := [def-axiom]: #114
+#187 := [unit-resolution #115 #186 #185]: false
+#188 := [lemma #187]: #44
+#113 := (or #68 #112)
+#108 := [def-axiom]: #113
+#191 := [unit-resolution #108 #188]: #68
+#189 := [hypothesis]: #59
+#190 := [unit-resolution #149 #189]: #60
+#192 := [unit-resolution #115 #189]: #76
+#193 := [unit-resolution #136 #192 #191]: #89
+#194 := [unit-resolution #162 #193 #190]: false
+#195 := [lemma #194]: #41
+#116 := (not #47)
+#144 := (or #53 #112 #116)
+#145 := [def-axiom]: #144
+#196 := [unit-resolution #145 #166 #188]: #116
+#131 := (or #130 #109 #76)
+#132 := [def-axiom]: #131
+#197 := [unit-resolution #132 #168 #191]: #76
+#120 := (or #119 #59 #47)
+#121 := [def-axiom]: #120
+#198 := [unit-resolution #121 #197 #196 #195]: false
+#199 := [lemma #198]: #60
+#200 := [unit-resolution #162 #199]: #130
+#201 := [unit-resolution #136 #200 #191]: #119
+#202 := [unit-resolution #153 #199 #195]: #53
+#140 := (or #139 #112 #47)
+#141 := [def-axiom]: #140
+#203 := [unit-resolution #141 #202 #188]: #47
+#117 := (or #76 #116)
+#118 := [def-axiom]: #117
+[unit-resolution #118 #203 #201]: false
+unsat
 bca31cbd8bb6114896c32a11dfae7025f2fc07b1 49 0
 #2 := false
 decl f3 :: S1
@@ -680,6 +1220,40 @@
 #68 := [and-elim #66]: #34
 [mp #68 #74]: false
 unsat
+6bcac7ed9b4a6f3af0933f64ee0cb316b51a44ed 33 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f3 :: S1
+#8 := f3
+#9 := (= f3 f1)
+#10 := (not #9)
+#11 := (ite #9 #9 #10)
+#12 := (not #11)
+#48 := (iff #12 false)
+#1 := true
+#43 := (not true)
+#46 := (iff #43 false)
+#47 := [rewrite]: #46
+#44 := (iff #12 #43)
+#41 := (iff #11 true)
+#30 := (= f1 f3)
+#33 := (not #30)
+#36 := (ite #30 #30 #33)
+#39 := (iff #36 true)
+#40 := [rewrite]: #39
+#37 := (iff #11 #36)
+#34 := (iff #10 #33)
+#31 := (iff #9 #30)
+#32 := [rewrite]: #31
+#35 := [monotonicity #32]: #34
+#38 := [monotonicity #32 #32 #35]: #37
+#42 := [trans #38 #40]: #41
+#45 := [monotonicity #42]: #44
+#49 := [trans #45 #47]: #48
+#29 := [asserted]: #12
+[mp #29 #49]: false
+unsat
 38d7d5f12a8c933e456bba4a04c7645f4c87ea49 60 0
 #2 := false
 decl f4 :: S1
@@ -741,6 +1315,40 @@
 #70 := [mp #35 #67]: #64
 [mp #70 #68]: false
 unsat
+be3ab8b5e09f8f942728ba1af0512891f56e0c5b 33 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f3 :: S1
+#8 := f3
+#9 := (= f3 f1)
+#10 := (not #9)
+#11 := (ite #10 #10 #9)
+#12 := (not #11)
+#48 := (iff #12 false)
+#1 := true
+#43 := (not true)
+#46 := (iff #43 false)
+#47 := [rewrite]: #46
+#44 := (iff #12 #43)
+#41 := (iff #11 true)
+#30 := (= f1 f3)
+#33 := (not #30)
+#36 := (ite #33 #33 #30)
+#39 := (iff #36 true)
+#40 := [rewrite]: #39
+#37 := (iff #11 #36)
+#31 := (iff #9 #30)
+#32 := [rewrite]: #31
+#34 := (iff #10 #33)
+#35 := [monotonicity #32]: #34
+#38 := [monotonicity #35 #35 #32]: #37
+#42 := [trans #38 #40]: #41
+#45 := [monotonicity #42]: #44
+#49 := [trans #45 #47]: #48
+#29 := [asserted]: #12
+[mp #29 #49]: false
+unsat
 27121de8ceb5985c14cca2c4563e9cad4d2ebd3c 79 0
 #2 := false
 decl f1 :: S1
@@ -821,6 +1429,25 @@
 #36 := [asserted]: #19
 [mp #36 #93]: false
 unsat
+aa78c56be2c8312419ab25323cf112e3e8809e9f 18 0
+#2 := false
+decl f3 :: S2
+#8 := f3
+#9 := (= f3 f3)
+#10 := (not #9)
+#35 := (iff #10 false)
+#1 := true
+#30 := (not true)
+#33 := (iff #30 false)
+#34 := [rewrite]: #33
+#31 := (iff #10 #30)
+#28 := (iff #9 true)
+#29 := [rewrite]: #28
+#32 := [monotonicity #29]: #31
+#36 := [trans #32 #34]: #35
+#27 := [asserted]: #10
+[mp #27 #36]: false
+unsat
 dc14c19019afcaa63507e4b503184496ed6bfd2f 94 0
 #2 := false
 decl f5 :: S1
@@ -916,6 +1543,36 @@
 #96 := [not-or-elim #89]: #70
 [mp #96 #112]: false
 unsat
+8d3a435e96c2d773a90e94525d09aa8a352d27d6 29 0
+#2 := false
+decl f3 :: S2
+#8 := f3
+decl f4 :: S2
+#9 := f4
+#11 := (= f4 f3)
+#10 := (= f3 f4)
+#12 := (implies #10 #11)
+#13 := (not #12)
+#45 := (iff #13 false)
+#1 := true
+#40 := (not true)
+#43 := (iff #40 false)
+#44 := [rewrite]: #43
+#41 := (iff #13 #40)
+#38 := (iff #12 true)
+#33 := (implies #10 #10)
+#36 := (iff #33 true)
+#37 := [rewrite]: #36
+#34 := (iff #12 #33)
+#31 := (iff #11 #10)
+#32 := [rewrite]: #31
+#35 := [monotonicity #32]: #34
+#39 := [trans #35 #37]: #38
+#42 := [monotonicity #39]: #41
+#46 := [trans #42 #44]: #45
+#30 := [asserted]: #13
+[mp #30 #46]: false
+unsat
 682b764e75beeea86518e9d265c22d014c6c1f1d 114 0
 #2 := false
 decl f5 :: S1
@@ -1031,6 +1688,41 @@
 #136 := [unit-resolution #109 #135]: #87
 [unit-resolution #93 #136 #134]: false
 unsat
+7d6e447cf6e1145f4f9a866bcc3cde4710e17c79 34 0
+#2 := false
+decl f5 :: S2
+#11 := f5
+decl f3 :: S2
+#8 := f3
+#14 := (= f3 f5)
+decl f4 :: S2
+#9 := f4
+#12 := (= f4 f5)
+#58 := (iff #12 #14)
+#56 := (iff #14 #12)
+#10 := (= f3 f4)
+#13 := (and #10 #12)
+#34 := (not #13)
+#35 := (or #34 #14)
+#38 := (not #35)
+#15 := (implies #13 #14)
+#16 := (not #15)
+#39 := (iff #16 #38)
+#36 := (iff #15 #35)
+#37 := [rewrite]: #36
+#40 := [monotonicity #37]: #39
+#33 := [asserted]: #16
+#43 := [mp #33 #40]: #38
+#41 := [not-or-elim #43]: #13
+#42 := [and-elim #41]: #10
+#57 := [monotonicity #42]: #56
+#59 := [symm #57]: #58
+#44 := [and-elim #41]: #12
+#54 := [mp #44 #59]: #14
+#45 := (not #14)
+#46 := [not-or-elim #43]: #45
+[unit-resolution #46 #54]: false
+unsat
 c134dad603b5004748b4c36796dfbdf41bc232cc 121 0
 #2 := false
 decl f5 :: S1
@@ -1153,6 +1845,34 @@
 #99 := [not-or-elim #92]: #98
 [mp #99 #138]: false
 unsat
+810792c4ea80c0bc3287d99f969f1a65dc039da5 27 0
+#2 := false
+decl f5 :: (-> S2 S2)
+decl f4 :: S2
+#9 := f4
+#12 := (f5 f4)
+decl f3 :: S2
+#8 := f3
+#11 := (f5 f3)
+#13 := (= #11 #12)
+#10 := (= f3 f4)
+#33 := (not #10)
+#34 := (or #33 #13)
+#37 := (not #34)
+#14 := (implies #10 #13)
+#15 := (not #14)
+#38 := (iff #15 #37)
+#35 := (iff #14 #34)
+#36 := [rewrite]: #35
+#39 := [monotonicity #36]: #38
+#32 := [asserted]: #15
+#42 := [mp #32 #39]: #37
+#40 := [not-or-elim #42]: #10
+#51 := [monotonicity #40]: #13
+#41 := (not #13)
+#43 := [not-or-elim #42]: #41
+[unit-resolution #43 #51]: false
+unsat
 7afff0259006c1c4b6a802d510f1b96695b3e9ad 110 0
 #2 := false
 decl f4 :: S1
@@ -1264,6 +1984,38 @@
 #84 := [and-elim #83]: #44
 [mp #84 #129]: false
 unsat
+09e564f98c53b63bab667092b7072fa2b674fa08 31 0
+#2 := false
+decl f5 :: (-> S2 S2 S3)
+decl f3 :: S2
+#8 := f3
+decl f4 :: S2
+#9 := f4
+#12 := (f5 f4 f3)
+#11 := (f5 f3 f4)
+#13 := (= #11 #12)
+#53 := (= #12 #11)
+#10 := (= f3 f4)
+#33 := (not #10)
+#34 := (or #33 #13)
+#37 := (not #34)
+#14 := (implies #10 #13)
+#15 := (not #14)
+#38 := (iff #15 #37)
+#35 := (iff #14 #34)
+#36 := [rewrite]: #35
+#39 := [monotonicity #36]: #38
+#32 := [asserted]: #15
+#42 := [mp #32 #39]: #37
+#40 := [not-or-elim #42]: #10
+#51 := (= f4 f3)
+#52 := [symm #40]: #51
+#54 := [monotonicity #52 #40]: #53
+#49 := [symm #54]: #13
+#41 := (not #13)
+#43 := [not-or-elim #42]: #41
+[unit-resolution #43 #49]: false
+unsat
 83b90287eef3783de4d8fa4aad70d03dd0abddbf 127 0
 #2 := false
 decl f5 :: S1
@@ -1392,6 +2144,70 @@
 #149 := [unit-resolution #131 #147]: #97
 [unit-resolution #108 #149 #148]: false
 unsat
+f97c055cc3b87ad54efe59b6c22e3e3633409f7e 63 0
+#2 := false
+decl f3 :: (-> S2 S2)
+decl f4 :: S2
+#8 := f4
+#9 := (f3 f4)
+#46 := (= f4 #9)
+#10 := (f3 #9)
+#12 := (f3 #10)
+#78 := (= #12 #9)
+#76 := (= #9 #12)
+#37 := (= f4 #10)
+#13 := (f3 #12)
+#14 := (f3 #13)
+#40 := (= f4 #14)
+#43 := (and #37 #40)
+#52 := (not #43)
+#53 := (or #52 #46)
+#58 := (not #53)
+#17 := (= #9 f4)
+#15 := (= #14 f4)
+#11 := (= #10 f4)
+#16 := (and #11 #15)
+#18 := (implies #16 #17)
+#19 := (not #18)
+#59 := (iff #19 #58)
+#56 := (iff #18 #53)
+#49 := (implies #43 #46)
+#54 := (iff #49 #53)
+#55 := [rewrite]: #54
+#50 := (iff #18 #49)
+#47 := (iff #17 #46)
+#48 := [rewrite]: #47
+#44 := (iff #16 #43)
+#41 := (iff #15 #40)
+#42 := [rewrite]: #41
+#38 := (iff #11 #37)
+#39 := [rewrite]: #38
+#45 := [monotonicity #39 #42]: #44
+#51 := [monotonicity #45 #48]: #50
+#57 := [trans #51 #55]: #56
+#60 := [monotonicity #57]: #59
+#36 := [asserted]: #19
+#63 := [mp #36 #60]: #58
+#61 := [not-or-elim #63]: #43
+#62 := [and-elim #61]: #37
+#77 := [monotonicity #62]: #76
+#79 := [symm #77]: #78
+#81 := (= f4 #12)
+#67 := (= #14 #12)
+#70 := (= #12 #14)
+#72 := (= #10 #13)
+#74 := (= #13 #10)
+#75 := [monotonicity #79]: #74
+#73 := [symm #75]: #72
+#71 := [monotonicity #73]: #70
+#80 := [symm #71]: #67
+#64 := [and-elim #61]: #40
+#82 := [trans #64 #80]: #81
+#83 := [trans #82 #79]: #46
+#65 := (not #46)
+#66 := [not-or-elim #63]: #65
+[unit-resolution #66 #83]: false
+unsat
 a7f2c916e2192b153aaac29ea6f75d0842fd84d2 66 0
 #2 := false
 decl f3 :: S1
@@ -1459,6 +2275,202 @@
 #74 := [not-or-elim #84]: #33
 [unit-resolution #69 #74]: false
 unsat
+0b20a1cbaefe018fa6502d17013ec89dc657717b 195 0
+#2 := false
+decl f6 :: S2
+#13 := f6
+decl f4 :: S2
+#10 := f4
+#15 := (= f4 f6)
+decl f5 :: S2
+#11 := f5
+decl f3 :: S1
+#8 := f3
+decl f1 :: S1
+#4 := f1
+#40 := (= f1 f3)
+#43 := (ite #40 f4 f5)
+#49 := (= f6 #43)
+#200 := (iff #49 #15)
+#198 := (iff #15 #49)
+#46 := (= #43 f6)
+#50 := (iff #46 #49)
+#197 := [commutativity]: #50
+#195 := (iff #15 #46)
+#110 := (= f4 #43)
+#111 := (= f5 #43)
+#57 := (not #40)
+#180 := [hypothesis]: #57
+#114 := (or #40 #111)
+#115 := [def-axiom]: #114
+#184 := [unit-resolution #115 #180]: #111
+#185 := (= f6 f5)
+#18 := (= f5 f6)
+#174 := (iff #110 #15)
+#172 := (iff #15 #110)
+#68 := (or #18 #40)
+#95 := (not #68)
+#58 := (or #15 #57)
+#94 := (not #58)
+#96 := (or #94 #95)
+#123 := (not #18)
+#147 := [hypothesis]: #123
+#157 := (or #96 #18)
+#97 := (not #96)
+#145 := [hypothesis]: #97
+#132 := (or #96 #68)
+#133 := [def-axiom]: #132
+#148 := [unit-resolution #133 #145]: #68
+#128 := (or #95 #18 #40)
+#129 := [def-axiom]: #128
+#149 := [unit-resolution #129 #148 #147]: #40
+#112 := (or #57 #110)
+#113 := [def-axiom]: #112
+#150 := [unit-resolution #113 #149]: #110
+#153 := (= f6 f4)
+#130 := (or #96 #58)
+#131 := [def-axiom]: #130
+#151 := [unit-resolution #131 #145]: #58
+#121 := (or #94 #15 #57)
+#122 := [def-axiom]: #121
+#152 := [unit-resolution #122 #149 #151]: #15
+#154 := [symm #152]: #153
+#155 := [trans #154 #150]: #49
+#82 := (not #49)
+#143 := (or #82 #96)
+#104 := (iff #49 #96)
+#73 := (and #58 #68)
+#83 := (iff #73 #82)
+#107 := (iff #83 #104)
+#99 := (iff #96 #49)
+#105 := (iff #99 #104)
+#106 := [rewrite]: #105
+#102 := (iff #83 #99)
+#91 := (iff #97 #82)
+#100 := (iff #91 #99)
+#101 := [rewrite]: #100
+#88 := (iff #83 #91)
+#92 := (iff #73 #97)
+#93 := [rewrite]: #92
+#98 := [monotonicity #93]: #88
+#103 := [trans #98 #101]: #102
+#108 := [trans #103 #106]: #107
+#9 := (= f3 f1)
+#17 := (not #9)
+#19 := (implies #17 #18)
+#16 := (implies #9 #15)
+#20 := (and #16 #19)
+#12 := (ite #9 f4 f5)
+#14 := (= #12 f6)
+#21 := (iff #14 #20)
+#22 := (not #21)
+#86 := (iff #22 #83)
+#76 := (iff #49 #73)
+#79 := (not #76)
+#84 := (iff #79 #83)
+#85 := [rewrite]: #84
+#80 := (iff #22 #79)
+#77 := (iff #21 #76)
+#74 := (iff #20 #73)
+#71 := (iff #19 #68)
+#65 := (implies #57 #18)
+#69 := (iff #65 #68)
+#70 := [rewrite]: #69
+#66 := (iff #19 #65)
+#63 := (iff #17 #57)
+#41 := (iff #9 #40)
+#42 := [rewrite]: #41
+#64 := [monotonicity #42]: #63
+#67 := [monotonicity #64]: #66
+#72 := [trans #67 #70]: #71
+#61 := (iff #16 #58)
+#54 := (implies #40 #15)
+#59 := (iff #54 #58)
+#60 := [rewrite]: #59
+#55 := (iff #16 #54)
+#56 := [monotonicity #42]: #55
+#62 := [trans #56 #60]: #61
+#75 := [monotonicity #62 #72]: #74
+#52 := (iff #14 #49)
+#51 := [rewrite]: #50
+#47 := (iff #14 #46)
+#44 := (= #12 #43)
+#45 := [monotonicity #42]: #44
+#48 := [monotonicity #45]: #47
+#53 := [trans #48 #51]: #52
+#78 := [monotonicity #53 #75]: #77
+#81 := [monotonicity #78]: #80
+#87 := [trans #81 #85]: #86
+#39 := [asserted]: #22
+#90 := [mp #39 #87]: #83
+#109 := [mp #90 #108]: #104
+#136 := (not #104)
+#141 := (or #82 #96 #136)
+#142 := [def-axiom]: #141
+#144 := [unit-resolution #142 #109]: #143
+#146 := [unit-resolution #144 #145]: #82
+#156 := [unit-resolution #146 #155]: false
+#158 := [lemma #156]: #157
+#159 := [unit-resolution #158 #147]: #96
+#139 := (or #49 #97)
+#137 := (or #49 #97 #136)
+#138 := [def-axiom]: #137
+#140 := [unit-resolution #138 #109]: #139
+#160 := [unit-resolution #140 #159]: #49
+#173 := [monotonicity #160]: #172
+#175 := [symm #173]: #174
+#163 := (not #111)
+#164 := (iff #123 #163)
+#161 := (iff #18 #111)
+#162 := [monotonicity #160]: #161
+#165 := [monotonicity #162]: #164
+#166 := [mp #147 #165]: #163
+#167 := [unit-resolution #115 #166]: #40
+#171 := [unit-resolution #113 #167]: #110
+#176 := [mp #171 #175]: #15
+#116 := (not #15)
+#126 := (or #68 #57)
+#127 := [def-axiom]: #126
+#168 := [unit-resolution #127 #167]: #68
+#134 := (or #97 #94 #95)
+#135 := [def-axiom]: #134
+#169 := [unit-resolution #135 #168 #159]: #94
+#117 := (or #58 #116)
+#118 := [def-axiom]: #117
+#170 := [unit-resolution #118 #169]: #116
+#177 := [unit-resolution #170 #176]: false
+#178 := [lemma #177]: #18
+#186 := [symm #178]: #185
+#187 := [trans #186 #184]: #49
+#124 := (or #68 #123)
+#125 := [def-axiom]: #124
+#179 := [unit-resolution #125 #178]: #68
+#119 := (or #58 #40)
+#120 := [def-axiom]: #119
+#181 := [unit-resolution #120 #180]: #58
+#182 := [unit-resolution #135 #181 #179]: #97
+#183 := [unit-resolution #144 #182]: #82
+#188 := [unit-resolution #183 #187]: false
+#189 := [lemma #188]: #40
+#194 := [unit-resolution #113 #189]: #110
+#196 := [monotonicity #194]: #195
+#199 := [trans #196 #197]: #198
+#201 := [symm #199]: #200
+#202 := (iff #82 #116)
+#203 := [monotonicity #201]: #202
+#190 := [hypothesis]: #82
+#204 := [mp #190 #203]: #116
+#191 := [unit-resolution #140 #190]: #97
+#192 := [unit-resolution #131 #191]: #58
+#193 := [unit-resolution #122 #192 #189]: #15
+#205 := [unit-resolution #193 #204]: false
+#206 := [lemma #205]: #49
+#210 := [mp #206 #201]: #15
+#207 := [unit-resolution #144 #206]: #96
+#208 := [unit-resolution #135 #207 #179]: #94
+#209 := [unit-resolution #118 #208]: #116
+[unit-resolution #209 #210]: false
+unsat
 d398c106ccd0941d46bab8e5feda32347dd02740 156 0
 #2 := false
 decl f5 :: S1
@@ -1616,6 +2628,43 @@
 #114 := [def-axiom]: #113
 [unit-resolution #114 #172 #170]: false
 unsat
+ba53dbe39a10406601e0a359b3a1de14129ef1a1 36 0
+#2 := false
+decl f5 :: S2
+#10 := f5
+decl f3 :: S2
+#8 := f3
+#12 := (= f3 f5)
+#13 := (not #12)
+decl f4 :: S2
+#9 := f4
+#11 := (distinct f3 f4 f5)
+#33 := (not #11)
+#34 := (or #33 #13)
+#37 := (not #34)
+#14 := (implies #11 #13)
+#15 := (not #14)
+#38 := (iff #15 #37)
+#35 := (iff #14 #34)
+#36 := [rewrite]: #35
+#39 := [monotonicity #36]: #38
+#32 := [asserted]: #15
+#42 := [mp #32 #39]: #37
+#41 := [not-or-elim #42]: #12
+#52 := (= f4 f5)
+#53 := (not #52)
+#50 := (= f3 f4)
+#51 := (not #50)
+#48 := (and #51 #13 #53)
+#40 := [not-or-elim #42]: #11
+#58 := (or #33 #48)
+#59 := [def-axiom]: #58
+#62 := [unit-resolution #59 #40]: #48
+#49 := (not #48)
+#45 := (or #49 #13)
+#43 := [def-axiom]: #45
+[unit-resolution #43 #62 #41]: false
+unsat
 78ae843b278e5f0cc65999ee60776dec7c9f683f 114 0
 #2 := false
 decl f5 :: S1
@@ -1731,6 +2780,84 @@
 #101 := [mp #36 #100]: #94
 [mp #101 #130]: false
 unsat
+08e0778705271e8f33e9bdf3c26b749a4c39eda2 77 0
+#2 := false
+decl f4 :: S2
+#9 := f4
+decl f3 :: S2
+#8 := f3
+#81 := (= f3 f4)
+decl f6 :: S2
+#12 := f6
+#36 := (= f4 f6)
+#100 := (iff #36 #81)
+#98 := (iff #81 #36)
+#13 := (= f6 f4)
+#37 := (iff #13 #36)
+#97 := [commutativity]: #37
+#95 := (iff #81 #13)
+#14 := (= f3 f6)
+#42 := (not #36)
+#15 := (not #14)
+decl f5 :: S2
+#10 := f5
+#11 := (distinct f3 f4 f5)
+#51 := (not #11)
+#60 := (or #51 #15 #42)
+#63 := (not #60)
+#16 := (implies #13 #15)
+#17 := (implies #11 #16)
+#18 := (not #17)
+#66 := (iff #18 #63)
+#43 := (or #15 #42)
+#52 := (or #51 #43)
+#57 := (not #52)
+#64 := (iff #57 #63)
+#61 := (iff #52 #60)
+#62 := [rewrite]: #61
+#65 := [monotonicity #62]: #64
+#58 := (iff #18 #57)
+#55 := (iff #17 #52)
+#48 := (implies #11 #43)
+#53 := (iff #48 #52)
+#54 := [rewrite]: #53
+#49 := (iff #17 #48)
+#46 := (iff #16 #43)
+#39 := (implies #36 #15)
+#44 := (iff #39 #43)
+#45 := [rewrite]: #44
+#40 := (iff #16 #39)
+#38 := [rewrite]: #37
+#41 := [monotonicity #38]: #40
+#47 := [trans #41 #45]: #46
+#50 := [monotonicity #47]: #49
+#56 := [trans #50 #54]: #55
+#59 := [monotonicity #56]: #58
+#67 := [trans #59 #65]: #66
+#35 := [asserted]: #18
+#68 := [mp #35 #67]: #63
+#70 := [not-or-elim #68]: #14
+#96 := [monotonicity #70]: #95
+#99 := [trans #96 #97]: #98
+#101 := [symm #99]: #100
+#71 := [not-or-elim #68]: #36
+#102 := [mp #71 #101]: #81
+#82 := (not #81)
+#79 := (= f4 f5)
+#80 := (not #79)
+#83 := (= f3 f5)
+#84 := (not #83)
+#77 := (and #82 #84 #80)
+#69 := [not-or-elim #68]: #11
+#89 := (or #51 #77)
+#90 := [def-axiom]: #89
+#93 := [unit-resolution #90 #69]: #77
+#78 := (not #77)
+#75 := (or #78 #82)
+#76 := [def-axiom]: #75
+#94 := [unit-resolution #76 #93]: #82
+[unit-resolution #94 #102]: false
+unsat
 016fee2f7f490b7727a4579bedbeaa0a03271f5c 198 0
 #2 := false
 decl f5 :: S1
@@ -1930,6 +3057,35 @@
 #141 := [not-or-elim #136]: #93
 [mp #141 #215]: false
 unsat
+32fbe7827173348f5f83cc50b7e41574fd04dba5 28 0
+#2 := false
+decl f4 :: S2
+#9 := f4
+decl f3 :: S2
+#8 := f3
+#10 := (distinct f3 f4 f3 f4)
+#11 := (not #10)
+#12 := (not #11)
+#44 := (iff #12 false)
+#1 := true
+#39 := (not true)
+#42 := (iff #39 false)
+#43 := [rewrite]: #42
+#40 := (iff #12 #39)
+#37 := (iff #11 true)
+#32 := (not false)
+#35 := (iff #32 true)
+#36 := [rewrite]: #35
+#33 := (iff #11 #32)
+#30 := (iff #10 false)
+#31 := [rewrite]: #30
+#34 := [monotonicity #31]: #33
+#38 := [trans #34 #36]: #37
+#41 := [monotonicity #38]: #40
+#45 := [trans #41 #43]: #44
+#29 := [asserted]: #12
+[mp #29 #45]: false
+unsat
 3e0305075f83d65498b4a11b8ca72526b8e2d46d 134 0
 #2 := false
 decl f5 :: S1
@@ -2065,6 +3221,37 @@
 #121 := [not-or-elim #116]: #81
 [mp #121 #151]: false
 unsat
+00d94d0af0e9abf6798a28ecb39a441c7c299833 30 0
+#2 := false
+decl f4 :: S2
+#9 := f4
+decl f3 :: S2
+#8 := f3
+#10 := (= f3 f4)
+#11 := (not #10)
+#12 := (not #11)
+#13 := (implies #10 #12)
+#14 := (not #13)
+#46 := (iff #14 false)
+#1 := true
+#41 := (not true)
+#44 := (iff #41 false)
+#45 := [rewrite]: #44
+#42 := (iff #14 #41)
+#39 := (iff #13 true)
+#34 := (implies #10 #10)
+#37 := (iff #34 true)
+#38 := [rewrite]: #37
+#35 := (iff #13 #34)
+#32 := (iff #12 #10)
+#33 := [rewrite]: #32
+#36 := [monotonicity #33]: #35
+#40 := [trans #36 #38]: #39
+#43 := [monotonicity #40]: #42
+#47 := [trans #43 #45]: #46
+#31 := [asserted]: #14
+[mp #31 #47]: false
+unsat
 78ecef8a6265ee63380698aee66f7437c6eb9791 162 0
 #2 := false
 decl f5 :: S1
@@ -2228,6 +3415,47 @@
 #178 := [unit-resolution #128 #177]: #70
 [unit-resolution #136 #178 #176 #168]: false
 unsat
+11d1529c7a7d7cf3014e0031300d5be1524ea6df 40 0
+#2 := false
+decl f5 :: S2
+#11 := f5
+decl f4 :: S2
+#9 := f4
+decl f3 :: S2
+#8 := f3
+#14 := (distinct f3 f4 f5)
+#15 := (not #14)
+#12 := (= f3 f5)
+#10 := (= f3 f4)
+#13 := (and #10 #12)
+#35 := (not #13)
+#36 := (or #35 #15)
+#39 := (not #36)
+#16 := (implies #13 #15)
+#17 := (not #16)
+#40 := (iff #17 #39)
+#37 := (iff #16 #36)
+#38 := [rewrite]: #37
+#41 := [monotonicity #38]: #40
+#34 := [asserted]: #17
+#44 := [mp #34 #41]: #39
+#46 := [not-or-elim #44]: #14
+#58 := (= f4 f5)
+#59 := (not #58)
+#57 := (not #12)
+#56 := (not #10)
+#54 := (and #56 #57 #59)
+#55 := (not #54)
+#42 := [not-or-elim #44]: #13
+#43 := [and-elim #42]: #10
+#52 := (or #55 #56)
+#53 := [def-axiom]: #52
+#66 := [unit-resolution #53 #43]: #55
+#62 := (or #15 #54)
+#63 := [def-axiom]: #62
+#67 := [unit-resolution #63 #66]: #15
+[unit-resolution #67 #46]: false
+unsat
 cbabdc011b8a302b61906c6191f0d7af27e25599 54 0
 #2 := false
 decl f1 :: S1
@@ -2283,6 +3511,40 @@
 #31 := [asserted]: #14
 [mp #31 #69]: false
 unsat
+8585364a9de57f2c76854513f54ec42d9a599f64 33 0
+#2 := false
+decl f3 :: S2
+#8 := f3
+decl f5 :: S2
+#10 := f5
+decl f4 :: S2
+#9 := f4
+decl f6 :: S2
+#11 := f6
+#13 := (distinct f6 f4 f5 f3)
+#12 := (distinct f3 f4 f5 f6)
+#14 := (implies #12 #13)
+#15 := (not #14)
+#47 := (iff #15 false)
+#1 := true
+#42 := (not true)
+#45 := (iff #42 false)
+#46 := [rewrite]: #45
+#43 := (iff #15 #42)
+#40 := (iff #14 true)
+#35 := (implies #12 #12)
+#38 := (iff #35 true)
+#39 := [rewrite]: #38
+#36 := (iff #14 #35)
+#33 := (iff #13 #12)
+#34 := [rewrite]: #33
+#37 := [monotonicity #34]: #36
+#41 := [trans #37 #39]: #40
+#44 := [monotonicity #41]: #43
+#48 := [trans #44 #46]: #47
+#32 := [asserted]: #15
+[mp #32 #48]: false
+unsat
 ae8651ca265765f3bb029935ca54bf350a439257 144 0
 #2 := false
 decl f5 :: S1
@@ -2428,6 +3690,98 @@
 #126 := [not-or-elim #121]: #102
 [mp #126 #161]: false
 unsat
+a785d8d462362aedcc845e3ec87cbb8d13b87ae7 91 0
+#2 := false
+decl f5 :: S2
+#10 := f5
+decl f4 :: S2
+#9 := f4
+decl f3 :: S2
+#8 := f3
+#13 := (distinct f3 f4 f5)
+#67 := (= f4 f5)
+#68 := (not #67)
+#63 := (= f3 f5)
+#64 := (not #63)
+#61 := (= f3 f4)
+#62 := (not #61)
+#93 := (and #62 #64 #68)
+decl f6 :: S2
+#11 := f6
+#71 := (= f5 f6)
+#72 := (not #71)
+#69 := (= f4 f6)
+#70 := (not #69)
+#65 := (= f3 f6)
+#66 := (not #65)
+#73 := (and #62 #64 #66 #68 #70 #72)
+#12 := (distinct f3 f4 f5 f6)
+#14 := (distinct f4 f5 f6)
+#15 := (and #13 #14)
+#35 := (not #12)
+#36 := (or #35 #15)
+#39 := (not #36)
+#16 := (implies #12 #15)
+#17 := (not #16)
+#40 := (iff #17 #39)
+#37 := (iff #16 #36)
+#38 := [rewrite]: #37
+#41 := [monotonicity #38]: #40
+#34 := [asserted]: #17
+#44 := [mp #34 #41]: #39
+#42 := [not-or-elim #44]: #12
+#89 := (or #35 #73)
+#90 := [def-axiom]: #89
+#121 := [unit-resolution #90 #42]: #73
+#74 := (not #73)
+#75 := (or #74 #62)
+#76 := [def-axiom]: #75
+#122 := [unit-resolution #76 #121]: #62
+#81 := (or #74 #68)
+#82 := [def-axiom]: #81
+#123 := [unit-resolution #82 #121]: #68
+#77 := (or #74 #64)
+#78 := [def-axiom]: #77
+#124 := [unit-resolution #78 #121]: #64
+#101 := (or #93 #61 #63 #67)
+#102 := [def-axiom]: #101
+#125 := [unit-resolution #102 #124 #123 #122]: #93
+#94 := (not #93)
+#105 := (or #13 #94)
+#106 := [def-axiom]: #105
+#126 := [unit-resolution #106 #125]: #13
+#107 := (and #68 #70 #72)
+#85 := (or #74 #72)
+#86 := [def-axiom]: #85
+#127 := [unit-resolution #86 #121]: #72
+#83 := (or #74 #70)
+#84 := [def-axiom]: #83
+#128 := [unit-resolution #84 #121]: #70
+#115 := (or #107 #67 #69 #71)
+#116 := [def-axiom]: #115
+#129 := [unit-resolution #116 #128 #127 #123]: #107
+#108 := (not #107)
+#119 := (or #14 #108)
+#120 := [def-axiom]: #119
+#130 := [unit-resolution #120 #129]: #14
+#54 := (not #14)
+#53 := (not #13)
+#55 := (or #53 #54)
+#43 := (not #15)
+#58 := (iff #43 #55)
+#56 := (not #55)
+#49 := (not #56)
+#46 := (iff #49 #55)
+#57 := [rewrite]: #46
+#50 := (iff #43 #49)
+#51 := (iff #15 #56)
+#52 := [rewrite]: #51
+#48 := [monotonicity #52]: #50
+#59 := [trans #48 #57]: #58
+#45 := [not-or-elim #44]: #43
+#60 := [mp #45 #59]: #55
+[unit-resolution #60 #130 #126]: false
+unsat
 f037e85f433fe4b6db0edebe38d7599d0d5f9a56 121 0
 #2 := false
 decl f5 :: S1
@@ -2735,6 +4089,32 @@
 #34 := [asserted]: #17
 [mp #34 #75]: false
 unsat
+273a6dc6f10616be4347838d6cbb54a0b0ad5636 25 0
+#2 := false
+#8 := (:var 0 S2)
+#9 := (= #8 #8)
+#10 := (forall (vars (?v0 S2)) #9)
+#11 := (not #10)
+#43 := (iff #11 false)
+#1 := true
+#38 := (not true)
+#41 := (iff #38 false)
+#42 := [rewrite]: #41
+#39 := (iff #11 #38)
+#36 := (iff #10 true)
+#31 := (forall (vars (?v0 S2)) true)
+#34 := (iff #31 true)
+#35 := [elim-unused]: #34
+#32 := (iff #10 #31)
+#29 := (iff #9 true)
+#30 := [rewrite]: #29
+#33 := [quant-intro #30]: #32
+#37 := [trans #33 #35]: #36
+#40 := [monotonicity #37]: #39
+#44 := [trans #40 #42]: #43
+#28 := [asserted]: #11
+[mp #28 #44]: false
+unsat
 cb74096d43b27b6df4bed4b142ce429518455d83 121 0
 #2 := false
 decl f5 :: S1
@@ -2857,6 +4237,41 @@
 #115 := [not-or-elim #109]: #90
 [mp #115 #138]: false
 unsat
+2b9ce0054ea55ee81c55715bd6d24aa6896b491c 34 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f3 :: (-> S2 S1)
+#8 := (:var 0 S2)
+#9 := (f3 #8)
+#10 := (= #9 f1)
+#11 := (forall (vars (?v0 S2)) #10)
+#12 := (iff #11 #11)
+#13 := (not #12)
+#49 := (iff #13 false)
+#1 := true
+#44 := (not true)
+#47 := (iff #44 false)
+#48 := [rewrite]: #47
+#45 := (iff #13 #44)
+#42 := (iff #12 true)
+#31 := (= f1 #9)
+#34 := (forall (vars (?v0 S2)) #31)
+#37 := (iff #34 #34)
+#40 := (iff #37 true)
+#41 := [rewrite]: #40
+#38 := (iff #12 #37)
+#35 := (iff #11 #34)
+#32 := (iff #10 #31)
+#33 := [rewrite]: #32
+#36 := [quant-intro #33]: #35
+#39 := [monotonicity #36 #36]: #38
+#43 := [trans #39 #41]: #42
+#46 := [monotonicity #43]: #45
+#50 := [trans #46 #48]: #49
+#30 := [asserted]: #13
+[mp #30 #50]: false
+unsat
 f67715569c1aa586d3c8e9a94e103b17f1f34614 84 0
 #2 := false
 decl f4 :: S1
@@ -2942,1645 +4357,6 @@
 #96 := [unit-resolution #85 #93]: #83
 [unit-resolution #96 #101 #100]: false
 unsat
-8abc924327822787c2f5c4e6e7680303fbae57f8 47 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f3 :: S1
-#8 := f3
-#9 := (= f3 f1)
-decl f4 :: S1
-#10 := f4
-#11 := (= f4 f1)
-#13 := (iff #11 #9)
-#12 := (iff #9 #11)
-#14 := (iff #12 #13)
-#15 := (not #14)
-#61 := (iff #15 false)
-#1 := true
-#56 := (not true)
-#59 := (iff #56 false)
-#60 := [rewrite]: #59
-#57 := (iff #15 #56)
-#54 := (iff #14 true)
-#36 := (= f1 f4)
-#33 := (= f1 f3)
-#39 := (iff #33 #36)
-#49 := (iff #39 #39)
-#52 := (iff #49 true)
-#53 := [rewrite]: #52
-#50 := (iff #14 #49)
-#47 := (iff #13 #39)
-#42 := (iff #36 #33)
-#45 := (iff #42 #39)
-#46 := [rewrite]: #45
-#43 := (iff #13 #42)
-#34 := (iff #9 #33)
-#35 := [rewrite]: #34
-#37 := (iff #11 #36)
-#38 := [rewrite]: #37
-#44 := [monotonicity #38 #35]: #43
-#48 := [trans #44 #46]: #47
-#40 := (iff #12 #39)
-#41 := [monotonicity #35 #38]: #40
-#51 := [monotonicity #41 #48]: #50
-#55 := [trans #51 #53]: #54
-#58 := [monotonicity #55]: #57
-#62 := [trans #58 #60]: #61
-#32 := [asserted]: #15
-[mp #32 #62]: false
-unsat
-3731fdf00230f94750072246058d6aec5d30ad57 41 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f3 :: S1
-#8 := f3
-#9 := (= f3 f1)
-#10 := (not #9)
-#11 := (iff #9 #10)
-#12 := (not #11)
-#13 := (not #12)
-#56 := (iff #13 false)
-#1 := true
-#51 := (not true)
-#54 := (iff #51 false)
-#55 := [rewrite]: #54
-#52 := (iff #13 #51)
-#49 := (iff #12 true)
-#44 := (not false)
-#47 := (iff #44 true)
-#48 := [rewrite]: #47
-#45 := (iff #12 #44)
-#42 := (iff #11 false)
-#31 := (= f1 f3)
-#34 := (not #31)
-#37 := (iff #31 #34)
-#40 := (iff #37 false)
-#41 := [rewrite]: #40
-#38 := (iff #11 #37)
-#35 := (iff #10 #34)
-#32 := (iff #9 #31)
-#33 := [rewrite]: #32
-#36 := [monotonicity #33]: #35
-#39 := [monotonicity #33 #36]: #38
-#43 := [trans #39 #41]: #42
-#46 := [monotonicity #43]: #45
-#50 := [trans #46 #48]: #49
-#53 := [monotonicity #50]: #52
-#57 := [trans #53 #55]: #56
-#30 := [asserted]: #13
-[mp #30 #57]: false
-unsat
-c4682bd721e64af9e51bd86d6d03d59662baa782 60 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f3 :: S1
-#8 := f3
-#9 := (= f3 f1)
-#14 := (not #9)
-decl f4 :: S1
-#10 := f4
-#11 := (= f4 f1)
-#13 := (not #11)
-#15 := (implies #13 #14)
-#12 := (implies #9 #11)
-#16 := (iff #12 #15)
-#17 := (not #16)
-#74 := (iff #17 false)
-#1 := true
-#69 := (not true)
-#72 := (iff #69 false)
-#73 := [rewrite]: #72
-#70 := (iff #17 #69)
-#67 := (iff #16 true)
-#38 := (= f1 f4)
-#35 := (= f1 f3)
-#44 := (not #35)
-#45 := (or #44 #38)
-#62 := (iff #45 #45)
-#65 := (iff #62 true)
-#66 := [rewrite]: #65
-#63 := (iff #16 #62)
-#60 := (iff #15 #45)
-#50 := (not #38)
-#55 := (implies #50 #44)
-#58 := (iff #55 #45)
-#59 := [rewrite]: #58
-#56 := (iff #15 #55)
-#53 := (iff #14 #44)
-#36 := (iff #9 #35)
-#37 := [rewrite]: #36
-#54 := [monotonicity #37]: #53
-#51 := (iff #13 #50)
-#39 := (iff #11 #38)
-#40 := [rewrite]: #39
-#52 := [monotonicity #40]: #51
-#57 := [monotonicity #52 #54]: #56
-#61 := [trans #57 #59]: #60
-#48 := (iff #12 #45)
-#41 := (implies #35 #38)
-#46 := (iff #41 #45)
-#47 := [rewrite]: #46
-#42 := (iff #12 #41)
-#43 := [monotonicity #37 #40]: #42
-#49 := [trans #43 #47]: #48
-#64 := [monotonicity #49 #61]: #63
-#68 := [trans #64 #66]: #67
-#71 := [monotonicity #68]: #70
-#75 := [trans #71 #73]: #74
-#34 := [asserted]: #17
-[mp #34 #75]: false
-unsat
-36d1352b395221a431006c238d124165e2b745a3 72 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f3 :: S1
-#8 := f3
-#9 := (= f3 f1)
-#10 := (iff #9 #9)
-#11 := (iff #9 #10)
-#12 := (iff #9 #11)
-#13 := (iff #9 #12)
-#14 := (iff #9 #13)
-#15 := (iff #9 #14)
-#16 := (iff #9 #15)
-#17 := (iff #9 #16)
-#18 := (iff #9 #17)
-#19 := (not #18)
-#87 := (iff #19 false)
-#1 := true
-#82 := (not true)
-#85 := (iff #82 false)
-#86 := [rewrite]: #85
-#83 := (iff #19 #82)
-#80 := (iff #18 true)
-#37 := (= f1 f3)
-#40 := (iff #37 #37)
-#43 := (iff #40 true)
-#44 := [rewrite]: #43
-#78 := (iff #18 #40)
-#76 := (iff #17 #37)
-#47 := (iff #37 true)
-#50 := (iff #47 #37)
-#51 := [rewrite]: #50
-#74 := (iff #17 #47)
-#72 := (iff #16 true)
-#70 := (iff #16 #40)
-#68 := (iff #15 #37)
-#66 := (iff #15 #47)
-#64 := (iff #14 true)
-#62 := (iff #14 #40)
-#60 := (iff #13 #37)
-#58 := (iff #13 #47)
-#56 := (iff #12 true)
-#54 := (iff #12 #40)
-#52 := (iff #11 #37)
-#48 := (iff #11 #47)
-#45 := (iff #10 true)
-#41 := (iff #10 #40)
-#38 := (iff #9 #37)
-#39 := [rewrite]: #38
-#42 := [monotonicity #39 #39]: #41
-#46 := [trans #42 #44]: #45
-#49 := [monotonicity #39 #46]: #48
-#53 := [trans #49 #51]: #52
-#55 := [monotonicity #39 #53]: #54
-#57 := [trans #55 #44]: #56
-#59 := [monotonicity #39 #57]: #58
-#61 := [trans #59 #51]: #60
-#63 := [monotonicity #39 #61]: #62
-#65 := [trans #63 #44]: #64
-#67 := [monotonicity #39 #65]: #66
-#69 := [trans #67 #51]: #68
-#71 := [monotonicity #39 #69]: #70
-#73 := [trans #71 #44]: #72
-#75 := [monotonicity #39 #73]: #74
-#77 := [trans #75 #51]: #76
-#79 := [monotonicity #39 #77]: #78
-#81 := [trans #79 #44]: #80
-#84 := [monotonicity #81]: #83
-#88 := [trans #84 #86]: #87
-#36 := [asserted]: #19
-[mp #36 #88]: false
-unsat
-9a169ba4d23a9080465edad5616230c8b4e1ef98 149 0
-#2 := false
-decl f5 :: S1
-#12 := f5
-decl f1 :: S1
-#4 := f1
-#44 := (= f1 f5)
-decl f4 :: S1
-#10 := f4
-#41 := (= f1 f4)
-decl f3 :: S1
-#8 := f3
-#38 := (= f1 f3)
-#47 := (ite #38 #41 #44)
-#53 := (not #38)
-#54 := (or #53 #41)
-#64 := (or #38 #44)
-#91 := (not #64)
-#90 := (not #54)
-#92 := (or #90 #91)
-#143 := [hypothesis]: #90
-#128 := (or #92 #54)
-#129 := [def-axiom]: #128
-#144 := [unit-resolution #129 #143]: #92
-#78 := (not #47)
-#116 := (or #54 #38)
-#117 := [def-axiom]: #116
-#145 := [unit-resolution #117 #143]: #38
-#110 := (not #41)
-#118 := (or #54 #110)
-#119 := [def-axiom]: #118
-#146 := [unit-resolution #119 #143]: #110
-#106 := (or #78 #53 #41)
-#107 := [def-axiom]: #106
-#147 := [unit-resolution #107 #146 #145]: #78
-#93 := (not #92)
-#137 := (or #47 #93)
-#100 := (iff #47 #92)
-#69 := (and #54 #64)
-#79 := (iff #69 #78)
-#103 := (iff #79 #100)
-#95 := (iff #92 #47)
-#101 := (iff #95 #100)
-#102 := [rewrite]: #101
-#98 := (iff #79 #95)
-#87 := (iff #93 #78)
-#96 := (iff #87 #95)
-#97 := [rewrite]: #96
-#84 := (iff #79 #87)
-#88 := (iff #69 #93)
-#89 := [rewrite]: #88
-#94 := [monotonicity #89]: #84
-#99 := [trans #94 #97]: #98
-#104 := [trans #99 #102]: #103
-#13 := (= f5 f1)
-#9 := (= f3 f1)
-#16 := (not #9)
-#17 := (implies #16 #13)
-#11 := (= f4 f1)
-#15 := (implies #9 #11)
-#18 := (and #15 #17)
-#14 := (ite #9 #11 #13)
-#19 := (iff #14 #18)
-#20 := (not #19)
-#82 := (iff #20 #79)
-#72 := (iff #47 #69)
-#75 := (not #72)
-#80 := (iff #75 #79)
-#81 := [rewrite]: #80
-#76 := (iff #20 #75)
-#73 := (iff #19 #72)
-#70 := (iff #18 #69)
-#67 := (iff #17 #64)
-#61 := (implies #53 #44)
-#65 := (iff #61 #64)
-#66 := [rewrite]: #65
-#62 := (iff #17 #61)
-#45 := (iff #13 #44)
-#46 := [rewrite]: #45
-#59 := (iff #16 #53)
-#39 := (iff #9 #38)
-#40 := [rewrite]: #39
-#60 := [monotonicity #40]: #59
-#63 := [monotonicity #60 #46]: #62
-#68 := [trans #63 #66]: #67
-#57 := (iff #15 #54)
-#50 := (implies #38 #41)
-#55 := (iff #50 #54)
-#56 := [rewrite]: #55
-#51 := (iff #15 #50)
-#42 := (iff #11 #41)
-#43 := [rewrite]: #42
-#52 := [monotonicity #40 #43]: #51
-#58 := [trans #52 #56]: #57
-#71 := [monotonicity #58 #68]: #70
-#48 := (iff #14 #47)
-#49 := [monotonicity #40 #43 #46]: #48
-#74 := [monotonicity #49 #71]: #73
-#77 := [monotonicity #74]: #76
-#83 := [trans #77 #81]: #82
-#37 := [asserted]: #20
-#86 := [mp #37 #83]: #79
-#105 := [mp #86 #104]: #100
-#134 := (not #100)
-#135 := (or #47 #93 #134)
-#136 := [def-axiom]: #135
-#138 := [unit-resolution #136 #105]: #137
-#148 := [unit-resolution #138 #147 #144]: false
-#149 := [lemma #148]: #54
-#150 := [hypothesis]: #78
-#156 := (or #38 #47)
-#151 := [unit-resolution #138 #150]: #93
-#130 := (or #92 #64)
-#131 := [def-axiom]: #130
-#152 := [unit-resolution #131 #151]: #64
-#153 := [hypothesis]: #53
-#113 := (not #44)
-#114 := (or #47 #38 #113)
-#115 := [def-axiom]: #114
-#154 := [unit-resolution #115 #153 #150]: #113
-#126 := (or #91 #38 #44)
-#127 := [def-axiom]: #126
-#155 := [unit-resolution #127 #154 #153 #152]: false
-#157 := [lemma #155]: #156
-#158 := [unit-resolution #157 #150]: #38
-#111 := (or #47 #53 #110)
-#112 := [def-axiom]: #111
-#159 := [unit-resolution #112 #158 #150]: #110
-#120 := (or #90 #53 #41)
-#121 := [def-axiom]: #120
-#160 := [unit-resolution #121 #159 #158 #149]: false
-#161 := [lemma #160]: #47
-#141 := (or #78 #92)
-#139 := (or #78 #92 #134)
-#140 := [def-axiom]: #139
-#142 := [unit-resolution #140 #105]: #141
-#162 := [unit-resolution #142 #161]: #92
-#132 := (or #93 #90 #91)
-#133 := [def-axiom]: #132
-#163 := [unit-resolution #133 #162 #149]: #91
-#122 := (or #64 #53)
-#123 := [def-axiom]: #122
-#164 := [unit-resolution #123 #163]: #53
-#124 := (or #64 #113)
-#125 := [def-axiom]: #124
-#165 := [unit-resolution #125 #163]: #113
-#108 := (or #78 #38 #44)
-#109 := [def-axiom]: #108
-[unit-resolution #109 #165 #164 #161]: false
-unsat
-8d07b6d671ef5c9eedcaa35c22d5f1c7124504cb 66 0
-#2 := false
-decl f3 :: S1
-#8 := f3
-decl f1 :: S1
-#4 := f1
-#33 := (= f1 f3)
-#51 := (not #33)
-#87 := [hypothesis]: #33
-decl f4 :: S1
-#10 := f4
-#36 := (= f1 f4)
-#42 := (not #36)
-#43 := (or #33 #42)
-#69 := (or #43 #51)
-#70 := [def-axiom]: #69
-#88 := [unit-resolution #70 #87]: #43
-#67 := (not #43)
-#89 := (or #51 #67)
-#52 := (or #51 #36)
-#57 := (ite #33 #43 #52)
-#60 := (not #57)
-#11 := (= f4 f1)
-#9 := (= f3 f1)
-#13 := (implies #9 #11)
-#12 := (implies #11 #9)
-#14 := (ite #9 #12 #13)
-#15 := (not #14)
-#61 := (iff #15 #60)
-#58 := (iff #14 #57)
-#55 := (iff #13 #52)
-#48 := (implies #33 #36)
-#53 := (iff #48 #52)
-#54 := [rewrite]: #53
-#49 := (iff #13 #48)
-#37 := (iff #11 #36)
-#38 := [rewrite]: #37
-#34 := (iff #9 #33)
-#35 := [rewrite]: #34
-#50 := [monotonicity #35 #38]: #49
-#56 := [trans #50 #54]: #55
-#46 := (iff #12 #43)
-#39 := (implies #36 #33)
-#44 := (iff #39 #43)
-#45 := [rewrite]: #44
-#40 := (iff #12 #39)
-#41 := [monotonicity #38 #35]: #40
-#47 := [trans #41 #45]: #46
-#59 := [monotonicity #35 #47 #56]: #58
-#62 := [monotonicity #59]: #61
-#32 := [asserted]: #15
-#65 := [mp #32 #62]: #60
-#83 := (or #57 #51 #67)
-#84 := [def-axiom]: #83
-#90 := [unit-resolution #84 #65]: #89
-#91 := [unit-resolution #90 #88 #87]: false
-#92 := [lemma #91]: #51
-#63 := (or #52 #33)
-#73 := [def-axiom]: #63
-#93 := [unit-resolution #73 #92]: #52
-#76 := (not #52)
-#94 := (or #33 #76)
-#85 := (or #57 #33 #76)
-#86 := [def-axiom]: #85
-#95 := [unit-resolution #86 #65]: #94
-[unit-resolution #95 #93 #92]: false
-unsat
-415ad6a91bb75e131bb05d34f1965ab914825b25 67 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f6 :: S1
-#15 := f6
-#16 := (= f6 f1)
-decl f5 :: S1
-#13 := f5
-#14 := (= f5 f1)
-decl f4 :: S1
-#10 := f4
-#11 := (= f4 f1)
-#18 := (ite #11 #14 #16)
-decl f3 :: S1
-#8 := f3
-#9 := (= f3 f1)
-#19 := (ite #9 #14 #18)
-#12 := (or #9 #11)
-#17 := (ite #12 #14 #16)
-#20 := (iff #17 #19)
-#21 := (not #20)
-#79 := (iff #21 false)
-#1 := true
-#74 := (not true)
-#77 := (iff #74 false)
-#78 := [rewrite]: #77
-#75 := (iff #21 #74)
-#72 := (iff #20 true)
-#51 := (= f1 f6)
-#48 := (= f1 f5)
-#42 := (= f1 f4)
-#39 := (= f1 f3)
-#45 := (or #39 #42)
-#54 := (ite #45 #48 #51)
-#67 := (iff #54 #54)
-#70 := (iff #67 true)
-#71 := [rewrite]: #70
-#68 := (iff #20 #67)
-#65 := (iff #19 #54)
-#57 := (ite #42 #48 #51)
-#60 := (ite #39 #48 #57)
-#63 := (iff #60 #54)
-#64 := [rewrite]: #63
-#61 := (iff #19 #60)
-#58 := (iff #18 #57)
-#52 := (iff #16 #51)
-#53 := [rewrite]: #52
-#49 := (iff #14 #48)
-#50 := [rewrite]: #49
-#43 := (iff #11 #42)
-#44 := [rewrite]: #43
-#59 := [monotonicity #44 #50 #53]: #58
-#40 := (iff #9 #39)
-#41 := [rewrite]: #40
-#62 := [monotonicity #41 #50 #59]: #61
-#66 := [trans #62 #64]: #65
-#55 := (iff #17 #54)
-#46 := (iff #12 #45)
-#47 := [monotonicity #41 #44]: #46
-#56 := [monotonicity #47 #50 #53]: #55
-#69 := [monotonicity #56 #66]: #68
-#73 := [trans #69 #71]: #72
-#76 := [monotonicity #73]: #75
-#80 := [trans #76 #78]: #79
-#38 := [asserted]: #21
-[mp #38 #80]: false
-unsat
-8b8741030ee2ece2c8d6b3906a1951bc56d9b885 67 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f6 :: S1
-#15 := f6
-#16 := (= f6 f1)
-decl f5 :: S1
-#13 := f5
-#14 := (= f5 f1)
-decl f4 :: S1
-#10 := f4
-#11 := (= f4 f1)
-#18 := (ite #11 #14 #16)
-decl f3 :: S1
-#8 := f3
-#9 := (= f3 f1)
-#19 := (ite #9 #18 #16)
-#12 := (and #9 #11)
-#17 := (ite #12 #14 #16)
-#20 := (iff #17 #19)
-#21 := (not #20)
-#79 := (iff #21 false)
-#1 := true
-#74 := (not true)
-#77 := (iff #74 false)
-#78 := [rewrite]: #77
-#75 := (iff #21 #74)
-#72 := (iff #20 true)
-#51 := (= f1 f6)
-#48 := (= f1 f5)
-#42 := (= f1 f4)
-#39 := (= f1 f3)
-#45 := (and #39 #42)
-#54 := (ite #45 #48 #51)
-#67 := (iff #54 #54)
-#70 := (iff #67 true)
-#71 := [rewrite]: #70
-#68 := (iff #20 #67)
-#65 := (iff #19 #54)
-#57 := (ite #42 #48 #51)
-#60 := (ite #39 #57 #51)
-#63 := (iff #60 #54)
-#64 := [rewrite]: #63
-#61 := (iff #19 #60)
-#52 := (iff #16 #51)
-#53 := [rewrite]: #52
-#58 := (iff #18 #57)
-#49 := (iff #14 #48)
-#50 := [rewrite]: #49
-#43 := (iff #11 #42)
-#44 := [rewrite]: #43
-#59 := [monotonicity #44 #50 #53]: #58
-#40 := (iff #9 #39)
-#41 := [rewrite]: #40
-#62 := [monotonicity #41 #59 #53]: #61
-#66 := [trans #62 #64]: #65
-#55 := (iff #17 #54)
-#46 := (iff #12 #45)
-#47 := [monotonicity #41 #44]: #46
-#56 := [monotonicity #47 #50 #53]: #55
-#69 := [monotonicity #56 #66]: #68
-#73 := [trans #69 #71]: #72
-#76 := [monotonicity #73]: #75
-#80 := [trans #76 #78]: #79
-#38 := [asserted]: #21
-[mp #38 #80]: false
-unsat
-a0ca672c65c25c024851f833f39bfb2c705ec387 186 0
-#2 := false
-decl f5 :: S1
-#12 := f5
-decl f1 :: S1
-#4 := f1
-#47 := (= f1 f5)
-decl f3 :: S1
-#8 := f3
-#41 := (= f1 f3)
-#59 := (not #41)
-#76 := (or #59 #47)
-#119 := (not #76)
-decl f4 :: S1
-#10 := f4
-#44 := (= f1 f4)
-#68 := (or #59 #44)
-decl f6 :: S1
-#14 := f6
-#50 := (= f1 f6)
-#84 := (or #59 #50)
-#89 := (ite #68 #76 #84)
-#130 := (not #89)
-#53 := (ite #44 #47 #50)
-#60 := (or #59 #53)
-#112 := (not #44)
-#165 := [hypothesis]: #112
-#172 := (or #60 #44)
-#98 := (not #60)
-#163 := [hypothesis]: #98
-#148 := (or #60 #41)
-#149 := [def-axiom]: #148
-#164 := [unit-resolution #149 #163]: #41
-#124 := (not #50)
-#139 := (not #53)
-#150 := (or #60 #139)
-#151 := [def-axiom]: #150
-#166 := [unit-resolution #151 #163]: #139
-#146 := (or #53 #44 #124)
-#147 := [def-axiom]: #146
-#167 := [unit-resolution #147 #166 #165]: #124
-#157 := (or #89 #60)
-#99 := (iff #89 #98)
-#15 := (= f6 f1)
-#9 := (= f3 f1)
-#20 := (implies #9 #15)
-#13 := (= f5 f1)
-#19 := (implies #9 #13)
-#11 := (= f4 f1)
-#18 := (implies #9 #11)
-#21 := (ite #18 #19 #20)
-#16 := (ite #11 #13 #15)
-#17 := (implies #9 #16)
-#22 := (iff #17 #21)
-#23 := (not #22)
-#102 := (iff #23 #99)
-#92 := (iff #60 #89)
-#95 := (not #92)
-#100 := (iff #95 #99)
-#101 := [rewrite]: #100
-#96 := (iff #23 #95)
-#93 := (iff #22 #92)
-#90 := (iff #21 #89)
-#87 := (iff #20 #84)
-#81 := (implies #41 #50)
-#85 := (iff #81 #84)
-#86 := [rewrite]: #85
-#82 := (iff #20 #81)
-#51 := (iff #15 #50)
-#52 := [rewrite]: #51
-#42 := (iff #9 #41)
-#43 := [rewrite]: #42
-#83 := [monotonicity #43 #52]: #82
-#88 := [trans #83 #86]: #87
-#79 := (iff #19 #76)
-#73 := (implies #41 #47)
-#77 := (iff #73 #76)
-#78 := [rewrite]: #77
-#74 := (iff #19 #73)
-#48 := (iff #13 #47)
-#49 := [rewrite]: #48
-#75 := [monotonicity #43 #49]: #74
-#80 := [trans #75 #78]: #79
-#71 := (iff #18 #68)
-#65 := (implies #41 #44)
-#69 := (iff #65 #68)
-#70 := [rewrite]: #69
-#66 := (iff #18 #65)
-#45 := (iff #11 #44)
-#46 := [rewrite]: #45
-#67 := [monotonicity #43 #46]: #66
-#72 := [trans #67 #70]: #71
-#91 := [monotonicity #72 #80 #88]: #90
-#63 := (iff #17 #60)
-#56 := (implies #41 #53)
-#61 := (iff #56 #60)
-#62 := [rewrite]: #61
-#57 := (iff #17 #56)
-#54 := (iff #16 #53)
-#55 := [monotonicity #46 #49 #52]: #54
-#58 := [monotonicity #43 #55]: #57
-#64 := [trans #58 #62]: #63
-#94 := [monotonicity #64 #91]: #93
-#97 := [monotonicity #94]: #96
-#103 := [trans #97 #101]: #102
-#40 := [asserted]: #23
-#106 := [mp #40 #103]: #99
-#154 := (not #99)
-#155 := (or #89 #60 #154)
-#156 := [def-axiom]: #155
-#158 := [unit-resolution #156 #106]: #157
-#168 := [unit-resolution #158 #163]: #89
-#109 := (not #68)
-#107 := (or #109 #59 #44)
-#104 := [def-axiom]: #107
-#169 := [unit-resolution #104 #164 #165]: #109
-#133 := (or #130 #68 #84)
-#134 := [def-axiom]: #133
-#170 := [unit-resolution #134 #169 #168]: #84
-#127 := (not #84)
-#128 := (or #127 #59 #50)
-#129 := [def-axiom]: #128
-#171 := [unit-resolution #129 #170 #167 #164]: false
-#173 := [lemma #171]: #172
-#176 := [unit-resolution #173 #165]: #60
-#161 := (or #130 #98)
-#159 := (or #130 #98 #154)
-#160 := [def-axiom]: #159
-#162 := [unit-resolution #160 #106]: #161
-#182 := [unit-resolution #162 #176]: #130
-#180 := (or #84 #44)
-#174 := [hypothesis]: #127
-#125 := (or #84 #124)
-#126 := [def-axiom]: #125
-#175 := [unit-resolution #126 #174]: #124
-#122 := (or #84 #41)
-#123 := [def-axiom]: #122
-#177 := [unit-resolution #123 #174]: #41
-#152 := (or #98 #59 #53)
-#153 := [def-axiom]: #152
-#178 := [unit-resolution #153 #177 #176]: #53
-#142 := (or #139 #44 #50)
-#143 := [def-axiom]: #142
-#179 := [unit-resolution #143 #178 #175 #165]: false
-#181 := [lemma #179]: #180
-#183 := [unit-resolution #181 #165]: #84
-#137 := (or #89 #68 #127)
-#138 := [def-axiom]: #137
-#184 := [unit-resolution #138 #183 #182]: #68
-#135 := (or #89 #109 #119)
-#136 := [def-axiom]: #135
-#185 := [unit-resolution #136 #184 #182]: #119
-#186 := [unit-resolution #104 #184 #165]: #59
-#114 := (or #76 #41)
-#115 := [def-axiom]: #114
-#187 := [unit-resolution #115 #186 #185]: false
-#188 := [lemma #187]: #44
-#113 := (or #68 #112)
-#108 := [def-axiom]: #113
-#191 := [unit-resolution #108 #188]: #68
-#189 := [hypothesis]: #59
-#190 := [unit-resolution #149 #189]: #60
-#192 := [unit-resolution #115 #189]: #76
-#193 := [unit-resolution #136 #192 #191]: #89
-#194 := [unit-resolution #162 #193 #190]: false
-#195 := [lemma #194]: #41
-#116 := (not #47)
-#144 := (or #53 #112 #116)
-#145 := [def-axiom]: #144
-#196 := [unit-resolution #145 #166 #188]: #116
-#131 := (or #130 #109 #76)
-#132 := [def-axiom]: #131
-#197 := [unit-resolution #132 #168 #191]: #76
-#120 := (or #119 #59 #47)
-#121 := [def-axiom]: #120
-#198 := [unit-resolution #121 #197 #196 #195]: false
-#199 := [lemma #198]: #60
-#200 := [unit-resolution #162 #199]: #130
-#201 := [unit-resolution #136 #200 #191]: #119
-#202 := [unit-resolution #153 #199 #195]: #53
-#140 := (or #139 #112 #47)
-#141 := [def-axiom]: #140
-#203 := [unit-resolution #141 #202 #188]: #47
-#117 := (or #76 #116)
-#118 := [def-axiom]: #117
-[unit-resolution #118 #203 #201]: false
-unsat
-6bcac7ed9b4a6f3af0933f64ee0cb316b51a44ed 33 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f3 :: S1
-#8 := f3
-#9 := (= f3 f1)
-#10 := (not #9)
-#11 := (ite #9 #9 #10)
-#12 := (not #11)
-#48 := (iff #12 false)
-#1 := true
-#43 := (not true)
-#46 := (iff #43 false)
-#47 := [rewrite]: #46
-#44 := (iff #12 #43)
-#41 := (iff #11 true)
-#30 := (= f1 f3)
-#33 := (not #30)
-#36 := (ite #30 #30 #33)
-#39 := (iff #36 true)
-#40 := [rewrite]: #39
-#37 := (iff #11 #36)
-#34 := (iff #10 #33)
-#31 := (iff #9 #30)
-#32 := [rewrite]: #31
-#35 := [monotonicity #32]: #34
-#38 := [monotonicity #32 #32 #35]: #37
-#42 := [trans #38 #40]: #41
-#45 := [monotonicity #42]: #44
-#49 := [trans #45 #47]: #48
-#29 := [asserted]: #12
-[mp #29 #49]: false
-unsat
-be3ab8b5e09f8f942728ba1af0512891f56e0c5b 33 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f3 :: S1
-#8 := f3
-#9 := (= f3 f1)
-#10 := (not #9)
-#11 := (ite #10 #10 #9)
-#12 := (not #11)
-#48 := (iff #12 false)
-#1 := true
-#43 := (not true)
-#46 := (iff #43 false)
-#47 := [rewrite]: #46
-#44 := (iff #12 #43)
-#41 := (iff #11 true)
-#30 := (= f1 f3)
-#33 := (not #30)
-#36 := (ite #33 #33 #30)
-#39 := (iff #36 true)
-#40 := [rewrite]: #39
-#37 := (iff #11 #36)
-#31 := (iff #9 #30)
-#32 := [rewrite]: #31
-#34 := (iff #10 #33)
-#35 := [monotonicity #32]: #34
-#38 := [monotonicity #35 #35 #32]: #37
-#42 := [trans #38 #40]: #41
-#45 := [monotonicity #42]: #44
-#49 := [trans #45 #47]: #48
-#29 := [asserted]: #12
-[mp #29 #49]: false
-unsat
-aa78c56be2c8312419ab25323cf112e3e8809e9f 18 0
-#2 := false
-decl f3 :: S2
-#8 := f3
-#9 := (= f3 f3)
-#10 := (not #9)
-#35 := (iff #10 false)
-#1 := true
-#30 := (not true)
-#33 := (iff #30 false)
-#34 := [rewrite]: #33
-#31 := (iff #10 #30)
-#28 := (iff #9 true)
-#29 := [rewrite]: #28
-#32 := [monotonicity #29]: #31
-#36 := [trans #32 #34]: #35
-#27 := [asserted]: #10
-[mp #27 #36]: false
-unsat
-8d3a435e96c2d773a90e94525d09aa8a352d27d6 29 0
-#2 := false
-decl f3 :: S2
-#8 := f3
-decl f4 :: S2
-#9 := f4
-#11 := (= f4 f3)
-#10 := (= f3 f4)
-#12 := (implies #10 #11)
-#13 := (not #12)
-#45 := (iff #13 false)
-#1 := true
-#40 := (not true)
-#43 := (iff #40 false)
-#44 := [rewrite]: #43
-#41 := (iff #13 #40)
-#38 := (iff #12 true)
-#33 := (implies #10 #10)
-#36 := (iff #33 true)
-#37 := [rewrite]: #36
-#34 := (iff #12 #33)
-#31 := (iff #11 #10)
-#32 := [rewrite]: #31
-#35 := [monotonicity #32]: #34
-#39 := [trans #35 #37]: #38
-#42 := [monotonicity #39]: #41
-#46 := [trans #42 #44]: #45
-#30 := [asserted]: #13
-[mp #30 #46]: false
-unsat
-7d6e447cf6e1145f4f9a866bcc3cde4710e17c79 34 0
-#2 := false
-decl f5 :: S2
-#11 := f5
-decl f3 :: S2
-#8 := f3
-#14 := (= f3 f5)
-decl f4 :: S2
-#9 := f4
-#12 := (= f4 f5)
-#58 := (iff #12 #14)
-#56 := (iff #14 #12)
-#10 := (= f3 f4)
-#13 := (and #10 #12)
-#34 := (not #13)
-#35 := (or #34 #14)
-#38 := (not #35)
-#15 := (implies #13 #14)
-#16 := (not #15)
-#39 := (iff #16 #38)
-#36 := (iff #15 #35)
-#37 := [rewrite]: #36
-#40 := [monotonicity #37]: #39
-#33 := [asserted]: #16
-#43 := [mp #33 #40]: #38
-#41 := [not-or-elim #43]: #13
-#42 := [and-elim #41]: #10
-#57 := [monotonicity #42]: #56
-#59 := [symm #57]: #58
-#44 := [and-elim #41]: #12
-#54 := [mp #44 #59]: #14
-#45 := (not #14)
-#46 := [not-or-elim #43]: #45
-[unit-resolution #46 #54]: false
-unsat
-810792c4ea80c0bc3287d99f969f1a65dc039da5 27 0
-#2 := false
-decl f5 :: (-> S2 S2)
-decl f4 :: S2
-#9 := f4
-#12 := (f5 f4)
-decl f3 :: S2
-#8 := f3
-#11 := (f5 f3)
-#13 := (= #11 #12)
-#10 := (= f3 f4)
-#33 := (not #10)
-#34 := (or #33 #13)
-#37 := (not #34)
-#14 := (implies #10 #13)
-#15 := (not #14)
-#38 := (iff #15 #37)
-#35 := (iff #14 #34)
-#36 := [rewrite]: #35
-#39 := [monotonicity #36]: #38
-#32 := [asserted]: #15
-#42 := [mp #32 #39]: #37
-#40 := [not-or-elim #42]: #10
-#51 := [monotonicity #40]: #13
-#41 := (not #13)
-#43 := [not-or-elim #42]: #41
-[unit-resolution #43 #51]: false
-unsat
-09e564f98c53b63bab667092b7072fa2b674fa08 31 0
-#2 := false
-decl f5 :: (-> S2 S2 S3)
-decl f3 :: S2
-#8 := f3
-decl f4 :: S2
-#9 := f4
-#12 := (f5 f4 f3)
-#11 := (f5 f3 f4)
-#13 := (= #11 #12)
-#53 := (= #12 #11)
-#10 := (= f3 f4)
-#33 := (not #10)
-#34 := (or #33 #13)
-#37 := (not #34)
-#14 := (implies #10 #13)
-#15 := (not #14)
-#38 := (iff #15 #37)
-#35 := (iff #14 #34)
-#36 := [rewrite]: #35
-#39 := [monotonicity #36]: #38
-#32 := [asserted]: #15
-#42 := [mp #32 #39]: #37
-#40 := [not-or-elim #42]: #10
-#51 := (= f4 f3)
-#52 := [symm #40]: #51
-#54 := [monotonicity #52 #40]: #53
-#49 := [symm #54]: #13
-#41 := (not #13)
-#43 := [not-or-elim #42]: #41
-[unit-resolution #43 #49]: false
-unsat
-f97c055cc3b87ad54efe59b6c22e3e3633409f7e 63 0
-#2 := false
-decl f3 :: (-> S2 S2)
-decl f4 :: S2
-#8 := f4
-#9 := (f3 f4)
-#46 := (= f4 #9)
-#10 := (f3 #9)
-#12 := (f3 #10)
-#78 := (= #12 #9)
-#76 := (= #9 #12)
-#37 := (= f4 #10)
-#13 := (f3 #12)
-#14 := (f3 #13)
-#40 := (= f4 #14)
-#43 := (and #37 #40)
-#52 := (not #43)
-#53 := (or #52 #46)
-#58 := (not #53)
-#17 := (= #9 f4)
-#15 := (= #14 f4)
-#11 := (= #10 f4)
-#16 := (and #11 #15)
-#18 := (implies #16 #17)
-#19 := (not #18)
-#59 := (iff #19 #58)
-#56 := (iff #18 #53)
-#49 := (implies #43 #46)
-#54 := (iff #49 #53)
-#55 := [rewrite]: #54
-#50 := (iff #18 #49)
-#47 := (iff #17 #46)
-#48 := [rewrite]: #47
-#44 := (iff #16 #43)
-#41 := (iff #15 #40)
-#42 := [rewrite]: #41
-#38 := (iff #11 #37)
-#39 := [rewrite]: #38
-#45 := [monotonicity #39 #42]: #44
-#51 := [monotonicity #45 #48]: #50
-#57 := [trans #51 #55]: #56
-#60 := [monotonicity #57]: #59
-#36 := [asserted]: #19
-#63 := [mp #36 #60]: #58
-#61 := [not-or-elim #63]: #43
-#62 := [and-elim #61]: #37
-#77 := [monotonicity #62]: #76
-#79 := [symm #77]: #78
-#81 := (= f4 #12)
-#67 := (= #14 #12)
-#70 := (= #12 #14)
-#72 := (= #10 #13)
-#74 := (= #13 #10)
-#75 := [monotonicity #79]: #74
-#73 := [symm #75]: #72
-#71 := [monotonicity #73]: #70
-#80 := [symm #71]: #67
-#64 := [and-elim #61]: #40
-#82 := [trans #64 #80]: #81
-#83 := [trans #82 #79]: #46
-#65 := (not #46)
-#66 := [not-or-elim #63]: #65
-[unit-resolution #66 #83]: false
-unsat
-0b20a1cbaefe018fa6502d17013ec89dc657717b 195 0
-#2 := false
-decl f6 :: S2
-#13 := f6
-decl f4 :: S2
-#10 := f4
-#15 := (= f4 f6)
-decl f5 :: S2
-#11 := f5
-decl f3 :: S1
-#8 := f3
-decl f1 :: S1
-#4 := f1
-#40 := (= f1 f3)
-#43 := (ite #40 f4 f5)
-#49 := (= f6 #43)
-#200 := (iff #49 #15)
-#198 := (iff #15 #49)
-#46 := (= #43 f6)
-#50 := (iff #46 #49)
-#197 := [commutativity]: #50
-#195 := (iff #15 #46)
-#110 := (= f4 #43)
-#111 := (= f5 #43)
-#57 := (not #40)
-#180 := [hypothesis]: #57
-#114 := (or #40 #111)
-#115 := [def-axiom]: #114
-#184 := [unit-resolution #115 #180]: #111
-#185 := (= f6 f5)
-#18 := (= f5 f6)
-#174 := (iff #110 #15)
-#172 := (iff #15 #110)
-#68 := (or #18 #40)
-#95 := (not #68)
-#58 := (or #15 #57)
-#94 := (not #58)
-#96 := (or #94 #95)
-#123 := (not #18)
-#147 := [hypothesis]: #123
-#157 := (or #96 #18)
-#97 := (not #96)
-#145 := [hypothesis]: #97
-#132 := (or #96 #68)
-#133 := [def-axiom]: #132
-#148 := [unit-resolution #133 #145]: #68
-#128 := (or #95 #18 #40)
-#129 := [def-axiom]: #128
-#149 := [unit-resolution #129 #148 #147]: #40
-#112 := (or #57 #110)
-#113 := [def-axiom]: #112
-#150 := [unit-resolution #113 #149]: #110
-#153 := (= f6 f4)
-#130 := (or #96 #58)
-#131 := [def-axiom]: #130
-#151 := [unit-resolution #131 #145]: #58
-#121 := (or #94 #15 #57)
-#122 := [def-axiom]: #121
-#152 := [unit-resolution #122 #149 #151]: #15
-#154 := [symm #152]: #153
-#155 := [trans #154 #150]: #49
-#82 := (not #49)
-#143 := (or #82 #96)
-#104 := (iff #49 #96)
-#73 := (and #58 #68)
-#83 := (iff #73 #82)
-#107 := (iff #83 #104)
-#99 := (iff #96 #49)
-#105 := (iff #99 #104)
-#106 := [rewrite]: #105
-#102 := (iff #83 #99)
-#91 := (iff #97 #82)
-#100 := (iff #91 #99)
-#101 := [rewrite]: #100
-#88 := (iff #83 #91)
-#92 := (iff #73 #97)
-#93 := [rewrite]: #92
-#98 := [monotonicity #93]: #88
-#103 := [trans #98 #101]: #102
-#108 := [trans #103 #106]: #107
-#9 := (= f3 f1)
-#17 := (not #9)
-#19 := (implies #17 #18)
-#16 := (implies #9 #15)
-#20 := (and #16 #19)
-#12 := (ite #9 f4 f5)
-#14 := (= #12 f6)
-#21 := (iff #14 #20)
-#22 := (not #21)
-#86 := (iff #22 #83)
-#76 := (iff #49 #73)
-#79 := (not #76)
-#84 := (iff #79 #83)
-#85 := [rewrite]: #84
-#80 := (iff #22 #79)
-#77 := (iff #21 #76)
-#74 := (iff #20 #73)
-#71 := (iff #19 #68)
-#65 := (implies #57 #18)
-#69 := (iff #65 #68)
-#70 := [rewrite]: #69
-#66 := (iff #19 #65)
-#63 := (iff #17 #57)
-#41 := (iff #9 #40)
-#42 := [rewrite]: #41
-#64 := [monotonicity #42]: #63
-#67 := [monotonicity #64]: #66
-#72 := [trans #67 #70]: #71
-#61 := (iff #16 #58)
-#54 := (implies #40 #15)
-#59 := (iff #54 #58)
-#60 := [rewrite]: #59
-#55 := (iff #16 #54)
-#56 := [monotonicity #42]: #55
-#62 := [trans #56 #60]: #61
-#75 := [monotonicity #62 #72]: #74
-#52 := (iff #14 #49)
-#51 := [rewrite]: #50
-#47 := (iff #14 #46)
-#44 := (= #12 #43)
-#45 := [monotonicity #42]: #44
-#48 := [monotonicity #45]: #47
-#53 := [trans #48 #51]: #52
-#78 := [monotonicity #53 #75]: #77
-#81 := [monotonicity #78]: #80
-#87 := [trans #81 #85]: #86
-#39 := [asserted]: #22
-#90 := [mp #39 #87]: #83
-#109 := [mp #90 #108]: #104
-#136 := (not #104)
-#141 := (or #82 #96 #136)
-#142 := [def-axiom]: #141
-#144 := [unit-resolution #142 #109]: #143
-#146 := [unit-resolution #144 #145]: #82
-#156 := [unit-resolution #146 #155]: false
-#158 := [lemma #156]: #157
-#159 := [unit-resolution #158 #147]: #96
-#139 := (or #49 #97)
-#137 := (or #49 #97 #136)
-#138 := [def-axiom]: #137
-#140 := [unit-resolution #138 #109]: #139
-#160 := [unit-resolution #140 #159]: #49
-#173 := [monotonicity #160]: #172
-#175 := [symm #173]: #174
-#163 := (not #111)
-#164 := (iff #123 #163)
-#161 := (iff #18 #111)
-#162 := [monotonicity #160]: #161
-#165 := [monotonicity #162]: #164
-#166 := [mp #147 #165]: #163
-#167 := [unit-resolution #115 #166]: #40
-#171 := [unit-resolution #113 #167]: #110
-#176 := [mp #171 #175]: #15
-#116 := (not #15)
-#126 := (or #68 #57)
-#127 := [def-axiom]: #126
-#168 := [unit-resolution #127 #167]: #68
-#134 := (or #97 #94 #95)
-#135 := [def-axiom]: #134
-#169 := [unit-resolution #135 #168 #159]: #94
-#117 := (or #58 #116)
-#118 := [def-axiom]: #117
-#170 := [unit-resolution #118 #169]: #116
-#177 := [unit-resolution #170 #176]: false
-#178 := [lemma #177]: #18
-#186 := [symm #178]: #185
-#187 := [trans #186 #184]: #49
-#124 := (or #68 #123)
-#125 := [def-axiom]: #124
-#179 := [unit-resolution #125 #178]: #68
-#119 := (or #58 #40)
-#120 := [def-axiom]: #119
-#181 := [unit-resolution #120 #180]: #58
-#182 := [unit-resolution #135 #181 #179]: #97
-#183 := [unit-resolution #144 #182]: #82
-#188 := [unit-resolution #183 #187]: false
-#189 := [lemma #188]: #40
-#194 := [unit-resolution #113 #189]: #110
-#196 := [monotonicity #194]: #195
-#199 := [trans #196 #197]: #198
-#201 := [symm #199]: #200
-#202 := (iff #82 #116)
-#203 := [monotonicity #201]: #202
-#190 := [hypothesis]: #82
-#204 := [mp #190 #203]: #116
-#191 := [unit-resolution #140 #190]: #97
-#192 := [unit-resolution #131 #191]: #58
-#193 := [unit-resolution #122 #192 #189]: #15
-#205 := [unit-resolution #193 #204]: false
-#206 := [lemma #205]: #49
-#210 := [mp #206 #201]: #15
-#207 := [unit-resolution #144 #206]: #96
-#208 := [unit-resolution #135 #207 #179]: #94
-#209 := [unit-resolution #118 #208]: #116
-[unit-resolution #209 #210]: false
-unsat
-ba53dbe39a10406601e0a359b3a1de14129ef1a1 36 0
-#2 := false
-decl f5 :: S2
-#10 := f5
-decl f3 :: S2
-#8 := f3
-#12 := (= f3 f5)
-#13 := (not #12)
-decl f4 :: S2
-#9 := f4
-#11 := (distinct f3 f4 f5)
-#33 := (not #11)
-#34 := (or #33 #13)
-#37 := (not #34)
-#14 := (implies #11 #13)
-#15 := (not #14)
-#38 := (iff #15 #37)
-#35 := (iff #14 #34)
-#36 := [rewrite]: #35
-#39 := [monotonicity #36]: #38
-#32 := [asserted]: #15
-#42 := [mp #32 #39]: #37
-#41 := [not-or-elim #42]: #12
-#52 := (= f4 f5)
-#53 := (not #52)
-#50 := (= f3 f4)
-#51 := (not #50)
-#48 := (and #51 #13 #53)
-#40 := [not-or-elim #42]: #11
-#58 := (or #33 #48)
-#59 := [def-axiom]: #58
-#62 := [unit-resolution #59 #40]: #48
-#49 := (not #48)
-#45 := (or #49 #13)
-#43 := [def-axiom]: #45
-[unit-resolution #43 #62 #41]: false
-unsat
-08e0778705271e8f33e9bdf3c26b749a4c39eda2 77 0
-#2 := false
-decl f4 :: S2
-#9 := f4
-decl f3 :: S2
-#8 := f3
-#81 := (= f3 f4)
-decl f6 :: S2
-#12 := f6
-#36 := (= f4 f6)
-#100 := (iff #36 #81)
-#98 := (iff #81 #36)
-#13 := (= f6 f4)
-#37 := (iff #13 #36)
-#97 := [commutativity]: #37
-#95 := (iff #81 #13)
-#14 := (= f3 f6)
-#42 := (not #36)
-#15 := (not #14)
-decl f5 :: S2
-#10 := f5
-#11 := (distinct f3 f4 f5)
-#51 := (not #11)
-#60 := (or #51 #15 #42)
-#63 := (not #60)
-#16 := (implies #13 #15)
-#17 := (implies #11 #16)
-#18 := (not #17)
-#66 := (iff #18 #63)
-#43 := (or #15 #42)
-#52 := (or #51 #43)
-#57 := (not #52)
-#64 := (iff #57 #63)
-#61 := (iff #52 #60)
-#62 := [rewrite]: #61
-#65 := [monotonicity #62]: #64
-#58 := (iff #18 #57)
-#55 := (iff #17 #52)
-#48 := (implies #11 #43)
-#53 := (iff #48 #52)
-#54 := [rewrite]: #53
-#49 := (iff #17 #48)
-#46 := (iff #16 #43)
-#39 := (implies #36 #15)
-#44 := (iff #39 #43)
-#45 := [rewrite]: #44
-#40 := (iff #16 #39)
-#38 := [rewrite]: #37
-#41 := [monotonicity #38]: #40
-#47 := [trans #41 #45]: #46
-#50 := [monotonicity #47]: #49
-#56 := [trans #50 #54]: #55
-#59 := [monotonicity #56]: #58
-#67 := [trans #59 #65]: #66
-#35 := [asserted]: #18
-#68 := [mp #35 #67]: #63
-#70 := [not-or-elim #68]: #14
-#96 := [monotonicity #70]: #95
-#99 := [trans #96 #97]: #98
-#101 := [symm #99]: #100
-#71 := [not-or-elim #68]: #36
-#102 := [mp #71 #101]: #81
-#82 := (not #81)
-#79 := (= f4 f5)
-#80 := (not #79)
-#83 := (= f3 f5)
-#84 := (not #83)
-#77 := (and #82 #84 #80)
-#69 := [not-or-elim #68]: #11
-#89 := (or #51 #77)
-#90 := [def-axiom]: #89
-#93 := [unit-resolution #90 #69]: #77
-#78 := (not #77)
-#75 := (or #78 #82)
-#76 := [def-axiom]: #75
-#94 := [unit-resolution #76 #93]: #82
-[unit-resolution #94 #102]: false
-unsat
-32fbe7827173348f5f83cc50b7e41574fd04dba5 28 0
-#2 := false
-decl f4 :: S2
-#9 := f4
-decl f3 :: S2
-#8 := f3
-#10 := (distinct f3 f4 f3 f4)
-#11 := (not #10)
-#12 := (not #11)
-#44 := (iff #12 false)
-#1 := true
-#39 := (not true)
-#42 := (iff #39 false)
-#43 := [rewrite]: #42
-#40 := (iff #12 #39)
-#37 := (iff #11 true)
-#32 := (not false)
-#35 := (iff #32 true)
-#36 := [rewrite]: #35
-#33 := (iff #11 #32)
-#30 := (iff #10 false)
-#31 := [rewrite]: #30
-#34 := [monotonicity #31]: #33
-#38 := [trans #34 #36]: #37
-#41 := [monotonicity #38]: #40
-#45 := [trans #41 #43]: #44
-#29 := [asserted]: #12
-[mp #29 #45]: false
-unsat
-00d94d0af0e9abf6798a28ecb39a441c7c299833 30 0
-#2 := false
-decl f4 :: S2
-#9 := f4
-decl f3 :: S2
-#8 := f3
-#10 := (= f3 f4)
-#11 := (not #10)
-#12 := (not #11)
-#13 := (implies #10 #12)
-#14 := (not #13)
-#46 := (iff #14 false)
-#1 := true
-#41 := (not true)
-#44 := (iff #41 false)
-#45 := [rewrite]: #44
-#42 := (iff #14 #41)
-#39 := (iff #13 true)
-#34 := (implies #10 #10)
-#37 := (iff #34 true)
-#38 := [rewrite]: #37
-#35 := (iff #13 #34)
-#32 := (iff #12 #10)
-#33 := [rewrite]: #32
-#36 := [monotonicity #33]: #35
-#40 := [trans #36 #38]: #39
-#43 := [monotonicity #40]: #42
-#47 := [trans #43 #45]: #46
-#31 := [asserted]: #14
-[mp #31 #47]: false
-unsat
-11d1529c7a7d7cf3014e0031300d5be1524ea6df 40 0
-#2 := false
-decl f5 :: S2
-#11 := f5
-decl f4 :: S2
-#9 := f4
-decl f3 :: S2
-#8 := f3
-#14 := (distinct f3 f4 f5)
-#15 := (not #14)
-#12 := (= f3 f5)
-#10 := (= f3 f4)
-#13 := (and #10 #12)
-#35 := (not #13)
-#36 := (or #35 #15)
-#39 := (not #36)
-#16 := (implies #13 #15)
-#17 := (not #16)
-#40 := (iff #17 #39)
-#37 := (iff #16 #36)
-#38 := [rewrite]: #37
-#41 := [monotonicity #38]: #40
-#34 := [asserted]: #17
-#44 := [mp #34 #41]: #39
-#46 := [not-or-elim #44]: #14
-#58 := (= f4 f5)
-#59 := (not #58)
-#57 := (not #12)
-#56 := (not #10)
-#54 := (and #56 #57 #59)
-#55 := (not #54)
-#42 := [not-or-elim #44]: #13
-#43 := [and-elim #42]: #10
-#52 := (or #55 #56)
-#53 := [def-axiom]: #52
-#66 := [unit-resolution #53 #43]: #55
-#62 := (or #15 #54)
-#63 := [def-axiom]: #62
-#67 := [unit-resolution #63 #66]: #15
-[unit-resolution #67 #46]: false
-unsat
-8585364a9de57f2c76854513f54ec42d9a599f64 33 0
-#2 := false
-decl f3 :: S2
-#8 := f3
-decl f5 :: S2
-#10 := f5
-decl f4 :: S2
-#9 := f4
-decl f6 :: S2
-#11 := f6
-#13 := (distinct f6 f4 f5 f3)
-#12 := (distinct f3 f4 f5 f6)
-#14 := (implies #12 #13)
-#15 := (not #14)
-#47 := (iff #15 false)
-#1 := true
-#42 := (not true)
-#45 := (iff #42 false)
-#46 := [rewrite]: #45
-#43 := (iff #15 #42)
-#40 := (iff #14 true)
-#35 := (implies #12 #12)
-#38 := (iff #35 true)
-#39 := [rewrite]: #38
-#36 := (iff #14 #35)
-#33 := (iff #13 #12)
-#34 := [rewrite]: #33
-#37 := [monotonicity #34]: #36
-#41 := [trans #37 #39]: #40
-#44 := [monotonicity #41]: #43
-#48 := [trans #44 #46]: #47
-#32 := [asserted]: #15
-[mp #32 #48]: false
-unsat
-a785d8d462362aedcc845e3ec87cbb8d13b87ae7 91 0
-#2 := false
-decl f5 :: S2
-#10 := f5
-decl f4 :: S2
-#9 := f4
-decl f3 :: S2
-#8 := f3
-#13 := (distinct f3 f4 f5)
-#67 := (= f4 f5)
-#68 := (not #67)
-#63 := (= f3 f5)
-#64 := (not #63)
-#61 := (= f3 f4)
-#62 := (not #61)
-#93 := (and #62 #64 #68)
-decl f6 :: S2
-#11 := f6
-#71 := (= f5 f6)
-#72 := (not #71)
-#69 := (= f4 f6)
-#70 := (not #69)
-#65 := (= f3 f6)
-#66 := (not #65)
-#73 := (and #62 #64 #66 #68 #70 #72)
-#12 := (distinct f3 f4 f5 f6)
-#14 := (distinct f4 f5 f6)
-#15 := (and #13 #14)
-#35 := (not #12)
-#36 := (or #35 #15)
-#39 := (not #36)
-#16 := (implies #12 #15)
-#17 := (not #16)
-#40 := (iff #17 #39)
-#37 := (iff #16 #36)
-#38 := [rewrite]: #37
-#41 := [monotonicity #38]: #40
-#34 := [asserted]: #17
-#44 := [mp #34 #41]: #39
-#42 := [not-or-elim #44]: #12
-#89 := (or #35 #73)
-#90 := [def-axiom]: #89
-#121 := [unit-resolution #90 #42]: #73
-#74 := (not #73)
-#75 := (or #74 #62)
-#76 := [def-axiom]: #75
-#122 := [unit-resolution #76 #121]: #62
-#81 := (or #74 #68)
-#82 := [def-axiom]: #81
-#123 := [unit-resolution #82 #121]: #68
-#77 := (or #74 #64)
-#78 := [def-axiom]: #77
-#124 := [unit-resolution #78 #121]: #64
-#101 := (or #93 #61 #63 #67)
-#102 := [def-axiom]: #101
-#125 := [unit-resolution #102 #124 #123 #122]: #93
-#94 := (not #93)
-#105 := (or #13 #94)
-#106 := [def-axiom]: #105
-#126 := [unit-resolution #106 #125]: #13
-#107 := (and #68 #70 #72)
-#85 := (or #74 #72)
-#86 := [def-axiom]: #85
-#127 := [unit-resolution #86 #121]: #72
-#83 := (or #74 #70)
-#84 := [def-axiom]: #83
-#128 := [unit-resolution #84 #121]: #70
-#115 := (or #107 #67 #69 #71)
-#116 := [def-axiom]: #115
-#129 := [unit-resolution #116 #128 #127 #123]: #107
-#108 := (not #107)
-#119 := (or #14 #108)
-#120 := [def-axiom]: #119
-#130 := [unit-resolution #120 #129]: #14
-#54 := (not #14)
-#53 := (not #13)
-#55 := (or #53 #54)
-#43 := (not #15)
-#58 := (iff #43 #55)
-#56 := (not #55)
-#49 := (not #56)
-#46 := (iff #49 #55)
-#57 := [rewrite]: #46
-#50 := (iff #43 #49)
-#51 := (iff #15 #56)
-#52 := [rewrite]: #51
-#48 := [monotonicity #52]: #50
-#59 := [trans #48 #57]: #58
-#45 := [not-or-elim #44]: #43
-#60 := [mp #45 #59]: #55
-[unit-resolution #60 #130 #126]: false
-unsat
-273a6dc6f10616be4347838d6cbb54a0b0ad5636 25 0
-#2 := false
-#8 := (:var 0 S2)
-#9 := (= #8 #8)
-#10 := (forall (vars (?v0 S2)) #9)
-#11 := (not #10)
-#43 := (iff #11 false)
-#1 := true
-#38 := (not true)
-#41 := (iff #38 false)
-#42 := [rewrite]: #41
-#39 := (iff #11 #38)
-#36 := (iff #10 true)
-#31 := (forall (vars (?v0 S2)) true)
-#34 := (iff #31 true)
-#35 := [elim-unused]: #34
-#32 := (iff #10 #31)
-#29 := (iff #9 true)
-#30 := [rewrite]: #29
-#33 := [quant-intro #30]: #32
-#37 := [trans #33 #35]: #36
-#40 := [monotonicity #37]: #39
-#44 := [trans #40 #42]: #43
-#28 := [asserted]: #11
-[mp #28 #44]: false
-unsat
-2b9ce0054ea55ee81c55715bd6d24aa6896b491c 34 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f3 :: (-> S2 S1)
-#8 := (:var 0 S2)
-#9 := (f3 #8)
-#10 := (= #9 f1)
-#11 := (forall (vars (?v0 S2)) #10)
-#12 := (iff #11 #11)
-#13 := (not #12)
-#49 := (iff #13 false)
-#1 := true
-#44 := (not true)
-#47 := (iff #44 false)
-#48 := [rewrite]: #47
-#45 := (iff #13 #44)
-#42 := (iff #12 true)
-#31 := (= f1 #9)
-#34 := (forall (vars (?v0 S2)) #31)
-#37 := (iff #34 #34)
-#40 := (iff #37 true)
-#41 := [rewrite]: #40
-#38 := (iff #12 #37)
-#35 := (iff #11 #34)
-#32 := (iff #10 #31)
-#33 := [rewrite]: #32
-#36 := [quant-intro #33]: #35
-#39 := [monotonicity #36 #36]: #38
-#43 := [trans #39 #41]: #42
-#46 := [monotonicity #43]: #45
-#50 := [trans #46 #48]: #49
-#30 := [asserted]: #13
-[mp #30 #50]: false
-unsat
 4905f6794c524726db3be755d752d3ea53fc4f9a 95 0
 #2 := false
 decl f3 :: (-> S2 S1)
@@ -4677,6 +4453,54 @@
 #102 := [and-elim #101]: #76
 [unit-resolution #102 #115]: false
 unsat
+8abc924327822787c2f5c4e6e7680303fbae57f8 47 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f3 :: S1
+#8 := f3
+#9 := (= f3 f1)
+decl f4 :: S1
+#10 := f4
+#11 := (= f4 f1)
+#13 := (iff #11 #9)
+#12 := (iff #9 #11)
+#14 := (iff #12 #13)
+#15 := (not #14)
+#61 := (iff #15 false)
+#1 := true
+#56 := (not true)
+#59 := (iff #56 false)
+#60 := [rewrite]: #59
+#57 := (iff #15 #56)
+#54 := (iff #14 true)
+#36 := (= f1 f4)
+#33 := (= f1 f3)
+#39 := (iff #33 #36)
+#49 := (iff #39 #39)
+#52 := (iff #49 true)
+#53 := [rewrite]: #52
+#50 := (iff #14 #49)
+#47 := (iff #13 #39)
+#42 := (iff #36 #33)
+#45 := (iff #42 #39)
+#46 := [rewrite]: #45
+#43 := (iff #13 #42)
+#34 := (iff #9 #33)
+#35 := [rewrite]: #34
+#37 := (iff #11 #36)
+#38 := [rewrite]: #37
+#44 := [monotonicity #38 #35]: #43
+#48 := [trans #44 #46]: #47
+#40 := (iff #12 #39)
+#41 := [monotonicity #35 #38]: #40
+#51 := [monotonicity #41 #48]: #50
+#55 := [trans #51 #53]: #54
+#58 := [monotonicity #55]: #57
+#62 := [trans #58 #60]: #61
+#32 := [asserted]: #15
+[mp #32 #62]: false
+unsat
 48a51f989350a0e584db03a2950a272906be29b0 300 0
 #2 := false
 decl f4 :: (-> S2 S1)
@@ -4978,6 +4802,48 @@
 #609 := [quant-inst]: #615
 [unit-resolution #609 #257 #603]: false
 unsat
+3731fdf00230f94750072246058d6aec5d30ad57 41 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f3 :: S1
+#8 := f3
+#9 := (= f3 f1)
+#10 := (not #9)
+#11 := (iff #9 #10)
+#12 := (not #11)
+#13 := (not #12)
+#56 := (iff #13 false)
+#1 := true
+#51 := (not true)
+#54 := (iff #51 false)
+#55 := [rewrite]: #54
+#52 := (iff #13 #51)
+#49 := (iff #12 true)
+#44 := (not false)
+#47 := (iff #44 true)
+#48 := [rewrite]: #47
+#45 := (iff #12 #44)
+#42 := (iff #11 false)
+#31 := (= f1 f3)
+#34 := (not #31)
+#37 := (iff #31 #34)
+#40 := (iff #37 false)
+#41 := [rewrite]: #40
+#38 := (iff #11 #37)
+#35 := (iff #10 #34)
+#32 := (iff #9 #31)
+#33 := [rewrite]: #32
+#36 := [monotonicity #33]: #35
+#39 := [monotonicity #33 #36]: #38
+#43 := [trans #39 #41]: #42
+#46 := [monotonicity #43]: #45
+#50 := [trans #46 #48]: #49
+#53 := [monotonicity #50]: #52
+#57 := [trans #53 #55]: #56
+#30 := [asserted]: #13
+[mp #30 #57]: false
+unsat
 8d1c135b088bf498c079d2958e8764a8092679cf 201 0
 #2 := false
 decl f3 :: (-> S2 S1)
@@ -5180,6 +5046,67 @@
 #211 := [quant-inst]: #320
 [unit-resolution #211 #595 #319]: false
 unsat
+c4682bd721e64af9e51bd86d6d03d59662baa782 60 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f3 :: S1
+#8 := f3
+#9 := (= f3 f1)
+#14 := (not #9)
+decl f4 :: S1
+#10 := f4
+#11 := (= f4 f1)
+#13 := (not #11)
+#15 := (implies #13 #14)
+#12 := (implies #9 #11)
+#16 := (iff #12 #15)
+#17 := (not #16)
+#74 := (iff #17 false)
+#1 := true
+#69 := (not true)
+#72 := (iff #69 false)
+#73 := [rewrite]: #72
+#70 := (iff #17 #69)
+#67 := (iff #16 true)
+#38 := (= f1 f4)
+#35 := (= f1 f3)
+#44 := (not #35)
+#45 := (or #44 #38)
+#62 := (iff #45 #45)
+#65 := (iff #62 true)
+#66 := [rewrite]: #65
+#63 := (iff #16 #62)
+#60 := (iff #15 #45)
+#50 := (not #38)
+#55 := (implies #50 #44)
+#58 := (iff #55 #45)
+#59 := [rewrite]: #58
+#56 := (iff #15 #55)
+#53 := (iff #14 #44)
+#36 := (iff #9 #35)
+#37 := [rewrite]: #36
+#54 := [monotonicity #37]: #53
+#51 := (iff #13 #50)
+#39 := (iff #11 #38)
+#40 := [rewrite]: #39
+#52 := [monotonicity #40]: #51
+#57 := [monotonicity #52 #54]: #56
+#61 := [trans #57 #59]: #60
+#48 := (iff #12 #45)
+#41 := (implies #35 #38)
+#46 := (iff #41 #45)
+#47 := [rewrite]: #46
+#42 := (iff #12 #41)
+#43 := [monotonicity #37 #40]: #42
+#49 := [trans #43 #47]: #48
+#64 := [monotonicity #49 #61]: #63
+#68 := [trans #64 #66]: #67
+#71 := [monotonicity #68]: #70
+#75 := [trans #71 #73]: #74
+#34 := [asserted]: #17
+[mp #34 #75]: false
+unsat
 c2e19ee7461e4fbfe65c34d98111e3914f852baf 244 0
 #2 := false
 decl f3 :: (-> S2 S1)
@@ -5425,6 +5352,79 @@
 #616 := [mp #343 #237]: #621
 [unit-resolution #616 #629 #330]: false
 unsat
+36d1352b395221a431006c238d124165e2b745a3 72 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f3 :: S1
+#8 := f3
+#9 := (= f3 f1)
+#10 := (iff #9 #9)
+#11 := (iff #9 #10)
+#12 := (iff #9 #11)
+#13 := (iff #9 #12)
+#14 := (iff #9 #13)
+#15 := (iff #9 #14)
+#16 := (iff #9 #15)
+#17 := (iff #9 #16)
+#18 := (iff #9 #17)
+#19 := (not #18)
+#87 := (iff #19 false)
+#1 := true
+#82 := (not true)
+#85 := (iff #82 false)
+#86 := [rewrite]: #85
+#83 := (iff #19 #82)
+#80 := (iff #18 true)
+#37 := (= f1 f3)
+#40 := (iff #37 #37)
+#43 := (iff #40 true)
+#44 := [rewrite]: #43
+#78 := (iff #18 #40)
+#76 := (iff #17 #37)
+#47 := (iff #37 true)
+#50 := (iff #47 #37)
+#51 := [rewrite]: #50
+#74 := (iff #17 #47)
+#72 := (iff #16 true)
+#70 := (iff #16 #40)
+#68 := (iff #15 #37)
+#66 := (iff #15 #47)
+#64 := (iff #14 true)
+#62 := (iff #14 #40)
+#60 := (iff #13 #37)
+#58 := (iff #13 #47)
+#56 := (iff #12 true)
+#54 := (iff #12 #40)
+#52 := (iff #11 #37)
+#48 := (iff #11 #47)
+#45 := (iff #10 true)
+#41 := (iff #10 #40)
+#38 := (iff #9 #37)
+#39 := [rewrite]: #38
+#42 := [monotonicity #39 #39]: #41
+#46 := [trans #42 #44]: #45
+#49 := [monotonicity #39 #46]: #48
+#53 := [trans #49 #51]: #52
+#55 := [monotonicity #39 #53]: #54
+#57 := [trans #55 #44]: #56
+#59 := [monotonicity #39 #57]: #58
+#61 := [trans #59 #51]: #60
+#63 := [monotonicity #39 #61]: #62
+#65 := [trans #63 #44]: #64
+#67 := [monotonicity #39 #65]: #66
+#69 := [trans #67 #51]: #68
+#71 := [monotonicity #39 #69]: #70
+#73 := [trans #71 #44]: #72
+#75 := [monotonicity #39 #73]: #74
+#77 := [trans #75 #51]: #76
+#79 := [monotonicity #39 #77]: #78
+#81 := [trans #79 #44]: #80
+#84 := [monotonicity #81]: #83
+#88 := [trans #84 #86]: #87
+#36 := [asserted]: #19
+[mp #36 #88]: false
+unsat
 35b6826e84c97e2db1e3cd91ad69abb16f131b93 49 0
 #2 := false
 decl f1 :: S1
@@ -5475,6 +5475,32 @@
 #35 := [asserted]: #18
 [mp #35 #65]: false
 unsat
+150a137e969806c6900cabc66bb27970472c7ba1 25 0
+#2 := false
+#8 := (:var 0 S2)
+#9 := (= #8 #8)
+#10 := (exists (vars (?v0 S2)) #9)
+#11 := (not #10)
+#43 := (iff #11 false)
+#1 := true
+#38 := (not true)
+#41 := (iff #38 false)
+#42 := [rewrite]: #41
+#39 := (iff #11 #38)
+#36 := (iff #10 true)
+#31 := (exists (vars (?v0 S2)) true)
+#34 := (iff #31 true)
+#35 := [elim-unused]: #34
+#32 := (iff #10 #31)
+#29 := (iff #9 true)
+#30 := [rewrite]: #29
+#33 := [quant-intro #30]: #32
+#37 := [trans #33 #35]: #36
+#40 := [monotonicity #37]: #39
+#44 := [trans #40 #42]: #43
+#28 := [asserted]: #11
+[mp #28 #44]: false
+unsat
 2e6f238fe51369f58bc6454a136532e4c6f3bd82 136 0
 #2 := false
 decl f3 :: (-> S2 S2 S1)
@@ -5612,6 +5638,41 @@
 #593 := [quant-inst]: #592
 [unit-resolution #593 #610 #258]: false
 unsat
+b28b1c7eb24edf6acf5466ddd1304a6b881a60f9 34 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f3 :: (-> S2 S1)
+#8 := (:var 0 S2)
+#9 := (f3 #8)
+#10 := (= #9 f1)
+#11 := (exists (vars (?v0 S2)) #10)
+#12 := (iff #11 #11)
+#13 := (not #12)
+#49 := (iff #13 false)
+#1 := true
+#44 := (not true)
+#47 := (iff #44 false)
+#48 := [rewrite]: #47
+#45 := (iff #13 #44)
+#42 := (iff #12 true)
+#31 := (= f1 #9)
+#34 := (exists (vars (?v0 S2)) #31)
+#37 := (iff #34 #34)
+#40 := (iff #37 true)
+#41 := [rewrite]: #40
+#38 := (iff #12 #37)
+#35 := (iff #11 #34)
+#32 := (iff #10 #31)
+#33 := [rewrite]: #32
+#36 := [quant-intro #33]: #35
+#39 := [monotonicity #36 #36]: #38
+#43 := [trans #39 #41]: #42
+#46 := [monotonicity #43]: #45
+#50 := [trans #46 #48]: #49
+#30 := [asserted]: #13
+[mp #30 #50]: false
+unsat
 a15d00efdb475e30bdd25ef3ed2227a8ea9c519f 124 0
 #2 := false
 decl f3 :: (-> S2 S1)
@@ -5737,383 +5798,6 @@
 #207 := [mp #217 #206]: #569
 [unit-resolution #207 #576 #88 #209]: false
 unsat
-0e7fa24f774b5d4840baee92f17adcdc6e36469d 64 0
-#2 := false
-decl f3 :: (-> S2 S2 S3)
-decl f4 :: S2
-#14 := f4
-decl f5 :: S2
-#16 := f5
-#18 := (f3 f5 f4)
-#17 := (f3 f4 f5)
-#19 := (= #17 #18)
-#62 := (not #19)
-#8 := (:var 1 S2)
-#9 := (:var 0 S2)
-#11 := (f3 #9 #8)
-#10 := (f3 #8 #9)
-#12 := (= #10 #11)
-#13 := (forall (vars (?v0 S2) (?v1 S2)) #12)
-#52 := (not #13)
-#53 := (or #52 #19)
-#58 := (not #53)
-#15 := (= f4 f4)
-#20 := (and #15 #19)
-#21 := (implies #13 #20)
-#22 := (not #21)
-#59 := (iff #22 #58)
-#56 := (iff #21 #53)
-#49 := (implies #13 #19)
-#54 := (iff #49 #53)
-#55 := [rewrite]: #54
-#50 := (iff #21 #49)
-#47 := (iff #20 #19)
-#1 := true
-#42 := (and true #19)
-#45 := (iff #42 #19)
-#46 := [rewrite]: #45
-#43 := (iff #20 #42)
-#40 := (iff #15 true)
-#41 := [rewrite]: #40
-#44 := [monotonicity #41]: #43
-#48 := [trans #44 #46]: #47
-#51 := [monotonicity #48]: #50
-#57 := [trans #51 #55]: #56
-#60 := [monotonicity #57]: #59
-#39 := [asserted]: #22
-#63 := [mp #39 #60]: #58
-#64 := [not-or-elim #63]: #62
-#547 := (pattern #11)
-#546 := (pattern #10)
-#548 := (forall (vars (?v0 S2) (?v1 S2)) (:pat #546 #547) #12)
-#551 := (iff #13 #548)
-#549 := (iff #12 #12)
-#550 := [refl]: #549
-#552 := [quant-intro #550]: #551
-#74 := (~ #13 #13)
-#72 := (~ #12 #12)
-#73 := [refl]: #72
-#75 := [nnf-pos #73]: #74
-#61 := [not-or-elim #63]: #13
-#67 := [mp~ #61 #75]: #13
-#553 := [mp #67 #552]: #548
-#129 := (not #548)
-#216 := (or #129 #19)
-#130 := [quant-inst]: #216
-[unit-resolution #130 #553 #64]: false
-unsat
-e97ea15e571d05d4542f0baceec935a45a20adf5 250 0
-#2 := false
-decl f3 :: (-> S2 S1)
-decl f7 :: S2
-#22 := f7
-#25 := (f3 f7)
-decl f1 :: S1
-#4 := f1
-#94 := (= f1 #25)
-#283 := (not #94)
-decl f4 :: (-> S2 S1)
-#8 := (:var 0 S2)
-#11 := (f4 #8)
-#702 := (pattern #11)
-#9 := (f3 #8)
-#701 := (pattern #9)
-#57 := (= f1 #11)
-#54 := (= f1 #9)
-#63 := (not #54)
-#64 := (or #63 #57)
-#703 := (forall (vars (?v0 S2)) (:pat #701 #702) #64)
-#69 := (forall (vars (?v0 S2)) #64)
-#706 := (iff #69 #703)
-#704 := (iff #64 #64)
-#705 := [refl]: #704
-#707 := [quant-intro #705]: #706
-#187 := (~ #69 #69)
-#201 := (~ #64 #64)
-#202 := [refl]: #201
-#188 := [nnf-pos #202]: #187
-decl f6 :: (-> S2 S1)
-#23 := (f6 f7)
-#91 := (= f1 #23)
-#78 := (not #57)
-#86 := (and #63 #78)
-#103 := (not #86)
-#136 := (or #103 #91 #94)
-#139 := (forall (vars (?v0 S2)) #136)
-decl f5 :: S2
-#15 := f5
-#16 := (f4 f5)
-#72 := (= f1 #16)
-#75 := (not #72)
-#148 := (and #69 #75 #139)
-#153 := (not #148)
-#32 := (f4 f7)
-#118 := (= f1 #32)
-#159 := (or #91 #118 #153)
-#164 := (not #159)
-#33 := (= #32 f1)
-#24 := (= #23 f1)
-#34 := (or #24 #33)
-#26 := (= #25 f1)
-#27 := (or #24 #26)
-#10 := (= #9 f1)
-#20 := (not #10)
-#12 := (= #11 f1)
-#19 := (not #12)
-#21 := (and #19 #20)
-#28 := (implies #21 #27)
-#29 := (forall (vars (?v0 S2)) #28)
-#17 := (= #16 f1)
-#18 := (not #17)
-#30 := (and #18 #29)
-#13 := (implies #10 #12)
-#14 := (forall (vars (?v0 S2)) #13)
-#31 := (and #14 #30)
-#35 := (implies #31 #34)
-#36 := (not #35)
-#167 := (iff #36 #164)
-#121 := (or #91 #118)
-#97 := (or #91 #94)
-#104 := (or #103 #97)
-#109 := (forall (vars (?v0 S2)) #104)
-#112 := (and #75 #109)
-#115 := (and #69 #112)
-#127 := (not #115)
-#128 := (or #127 #121)
-#133 := (not #128)
-#165 := (iff #133 #164)
-#162 := (iff #128 #159)
-#156 := (or #153 #121)
-#160 := (iff #156 #159)
-#161 := [rewrite]: #160
-#157 := (iff #128 #156)
-#154 := (iff #127 #153)
-#151 := (iff #115 #148)
-#142 := (and #75 #139)
-#145 := (and #69 #142)
-#149 := (iff #145 #148)
-#150 := [rewrite]: #149
-#146 := (iff #115 #145)
-#143 := (iff #112 #142)
-#140 := (iff #109 #139)
-#137 := (iff #104 #136)
-#138 := [rewrite]: #137
-#141 := [quant-intro #138]: #140
-#144 := [monotonicity #141]: #143
-#147 := [monotonicity #144]: #146
-#152 := [trans #147 #150]: #151
-#155 := [monotonicity #152]: #154
-#158 := [monotonicity #155]: #157
-#163 := [trans #158 #161]: #162
-#166 := [monotonicity #163]: #165
-#134 := (iff #36 #133)
-#131 := (iff #35 #128)
-#124 := (implies #115 #121)
-#129 := (iff #124 #128)
-#130 := [rewrite]: #129
-#125 := (iff #35 #124)
-#122 := (iff #34 #121)
-#119 := (iff #33 #118)
-#120 := [rewrite]: #119
-#92 := (iff #24 #91)
-#93 := [rewrite]: #92
-#123 := [monotonicity #93 #120]: #122
-#116 := (iff #31 #115)
-#113 := (iff #30 #112)
-#110 := (iff #29 #109)
-#107 := (iff #28 #104)
-#100 := (implies #86 #97)
-#105 := (iff #100 #104)
-#106 := [rewrite]: #105
-#101 := (iff #28 #100)
-#98 := (iff #27 #97)
-#95 := (iff #26 #94)
-#96 := [rewrite]: #95
-#99 := [monotonicity #93 #96]: #98
-#89 := (iff #21 #86)
-#83 := (and #78 #63)
-#87 := (iff #83 #86)
-#88 := [rewrite]: #87
-#84 := (iff #21 #83)
-#81 := (iff #20 #63)
-#55 := (iff #10 #54)
-#56 := [rewrite]: #55
-#82 := [monotonicity #56]: #81
-#79 := (iff #19 #78)
-#58 := (iff #12 #57)
-#59 := [rewrite]: #58
-#80 := [monotonicity #59]: #79
-#85 := [monotonicity #80 #82]: #84
-#90 := [trans #85 #88]: #89
-#102 := [monotonicity #90 #99]: #101
-#108 := [trans #102 #106]: #107
-#111 := [quant-intro #108]: #110
-#76 := (iff #18 #75)
-#73 := (iff #17 #72)
-#74 := [rewrite]: #73
-#77 := [monotonicity #74]: #76
-#114 := [monotonicity #77 #111]: #113
-#70 := (iff #14 #69)
-#67 := (iff #13 #64)
-#60 := (implies #54 #57)
-#65 := (iff #60 #64)
-#66 := [rewrite]: #65
-#61 := (iff #13 #60)
-#62 := [monotonicity #56 #59]: #61
-#68 := [trans #62 #66]: #67
-#71 := [quant-intro #68]: #70
-#117 := [monotonicity #71 #114]: #116
-#126 := [monotonicity #117 #123]: #125
-#132 := [trans #126 #130]: #131
-#135 := [monotonicity #132]: #134
-#168 := [trans #135 #166]: #167
-#53 := [asserted]: #36
-#169 := [mp #53 #168]: #164
-#174 := [not-or-elim #169]: #148
-#175 := [and-elim #174]: #69
-#185 := [mp~ #175 #188]: #69
-#708 := [mp #185 #707]: #703
-#172 := (not #118)
-#173 := [not-or-elim #169]: #172
-#285 := (not #703)
-#372 := (or #285 #283 #118)
-#370 := (or #283 #118)
-#363 := (or #285 #370)
-#375 := (iff #363 #372)
-#303 := [rewrite]: #375
-#374 := [quant-inst]: #363
-#376 := [mp #374 #303]: #372
-#398 := [unit-resolution #376 #173 #708]: #283
-#217 := (or #54 #57 #94)
-#709 := (forall (vars (?v0 S2)) (:pat #701 #702) #217)
-#222 := (forall (vars (?v0 S2)) #217)
-#712 := (iff #222 #709)
-#710 := (iff #217 #217)
-#711 := [refl]: #710
-#713 := [quant-intro #711]: #712
-#192 := (or #103 #94)
-#197 := (forall (vars (?v0 S2)) #192)
-#223 := (iff #197 #222)
-#220 := (iff #192 #217)
-#203 := (or #54 #57)
-#214 := (or #203 #94)
-#218 := (iff #214 #217)
-#219 := [rewrite]: #218
-#215 := (iff #192 #214)
-#212 := (iff #103 #203)
-#204 := (not #203)
-#207 := (not #204)
-#210 := (iff #207 #203)
-#211 := [rewrite]: #210
-#208 := (iff #103 #207)
-#205 := (iff #86 #204)
-#206 := [rewrite]: #205
-#209 := [monotonicity #206]: #208
-#213 := [trans #209 #211]: #212
-#216 := [monotonicity #213]: #215
-#221 := [trans #216 #219]: #220
-#224 := [quant-intro #221]: #223
-#184 := (~ #197 #197)
-#186 := (~ #192 #192)
-#183 := [refl]: #186
-#180 := [nnf-pos #183]: #184
-#198 := (iff #139 #197)
-#195 := (iff #136 #192)
-#189 := (or #103 false #94)
-#193 := (iff #189 #192)
-#194 := [rewrite]: #193
-#190 := (iff #136 #189)
-#181 := (iff #91 false)
-#170 := (not #91)
-#171 := [not-or-elim #169]: #170
-#182 := [iff-false #171]: #181
-#191 := [monotonicity #182]: #190
-#196 := [trans #191 #194]: #195
-#199 := [quant-intro #196]: #198
-#177 := [and-elim #174]: #139
-#200 := [mp #177 #199]: #197
-#178 := [mp~ #200 #180]: #197
-#225 := [mp #178 #224]: #222
-#714 := [mp #225 #713]: #709
-#356 := (not #709)
-#693 := (or #356 #94 #118)
-#284 := (or #94 #118 #94)
-#695 := (or #356 #284)
-#697 := (iff #695 #693)
-#371 := (or #94 #118)
-#482 := (or #356 #371)
-#362 := (iff #482 #693)
-#696 := [rewrite]: #362
-#689 := (iff #695 #482)
-#373 := (iff #284 #371)
-#377 := [rewrite]: #373
-#361 := [monotonicity #377]: #689
-#698 := [trans #361 #696]: #697
-#350 := [quant-inst]: #695
-#699 := [mp #350 #698]: #693
-[unit-resolution #699 #173 #714 #398]: false
-unsat
-150a137e969806c6900cabc66bb27970472c7ba1 25 0
-#2 := false
-#8 := (:var 0 S2)
-#9 := (= #8 #8)
-#10 := (exists (vars (?v0 S2)) #9)
-#11 := (not #10)
-#43 := (iff #11 false)
-#1 := true
-#38 := (not true)
-#41 := (iff #38 false)
-#42 := [rewrite]: #41
-#39 := (iff #11 #38)
-#36 := (iff #10 true)
-#31 := (exists (vars (?v0 S2)) true)
-#34 := (iff #31 true)
-#35 := [elim-unused]: #34
-#32 := (iff #10 #31)
-#29 := (iff #9 true)
-#30 := [rewrite]: #29
-#33 := [quant-intro #30]: #32
-#37 := [trans #33 #35]: #36
-#40 := [monotonicity #37]: #39
-#44 := [trans #40 #42]: #43
-#28 := [asserted]: #11
-[mp #28 #44]: false
-unsat
-b28b1c7eb24edf6acf5466ddd1304a6b881a60f9 34 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f3 :: (-> S2 S1)
-#8 := (:var 0 S2)
-#9 := (f3 #8)
-#10 := (= #9 f1)
-#11 := (exists (vars (?v0 S2)) #10)
-#12 := (iff #11 #11)
-#13 := (not #12)
-#49 := (iff #13 false)
-#1 := true
-#44 := (not true)
-#47 := (iff #44 false)
-#48 := [rewrite]: #47
-#45 := (iff #13 #44)
-#42 := (iff #12 true)
-#31 := (= f1 #9)
-#34 := (exists (vars (?v0 S2)) #31)
-#37 := (iff #34 #34)
-#40 := (iff #37 true)
-#41 := [rewrite]: #40
-#38 := (iff #12 #37)
-#35 := (iff #11 #34)
-#32 := (iff #10 #31)
-#33 := [rewrite]: #32
-#36 := [quant-intro #33]: #35
-#39 := [monotonicity #36 #36]: #38
-#43 := [trans #39 #41]: #42
-#46 := [monotonicity #43]: #45
-#50 := [trans #46 #48]: #49
-#30 := [asserted]: #13
-[mp #30 #50]: false
-unsat
 043713d1f8d615cef2b57b8a8ae1162f9c51de61 258 0
 #2 := false
 decl f4 :: (-> S2 S1)
@@ -6373,6 +6057,71 @@
 #579 := [quant-inst]: #578
 [unit-resolution #579 #432 #573]: false
 unsat
+0e7fa24f774b5d4840baee92f17adcdc6e36469d 64 0
+#2 := false
+decl f3 :: (-> S2 S2 S3)
+decl f4 :: S2
+#14 := f4
+decl f5 :: S2
+#16 := f5
+#18 := (f3 f5 f4)
+#17 := (f3 f4 f5)
+#19 := (= #17 #18)
+#62 := (not #19)
+#8 := (:var 1 S2)
+#9 := (:var 0 S2)
+#11 := (f3 #9 #8)
+#10 := (f3 #8 #9)
+#12 := (= #10 #11)
+#13 := (forall (vars (?v0 S2) (?v1 S2)) #12)
+#52 := (not #13)
+#53 := (or #52 #19)
+#58 := (not #53)
+#15 := (= f4 f4)
+#20 := (and #15 #19)
+#21 := (implies #13 #20)
+#22 := (not #21)
+#59 := (iff #22 #58)
+#56 := (iff #21 #53)
+#49 := (implies #13 #19)
+#54 := (iff #49 #53)
+#55 := [rewrite]: #54
+#50 := (iff #21 #49)
+#47 := (iff #20 #19)
+#1 := true
+#42 := (and true #19)
+#45 := (iff #42 #19)
+#46 := [rewrite]: #45
+#43 := (iff #20 #42)
+#40 := (iff #15 true)
+#41 := [rewrite]: #40
+#44 := [monotonicity #41]: #43
+#48 := [trans #44 #46]: #47
+#51 := [monotonicity #48]: #50
+#57 := [trans #51 #55]: #56
+#60 := [monotonicity #57]: #59
+#39 := [asserted]: #22
+#63 := [mp #39 #60]: #58
+#64 := [not-or-elim #63]: #62
+#547 := (pattern #11)
+#546 := (pattern #10)
+#548 := (forall (vars (?v0 S2) (?v1 S2)) (:pat #546 #547) #12)
+#551 := (iff #13 #548)
+#549 := (iff #12 #12)
+#550 := [refl]: #549
+#552 := [quant-intro #550]: #551
+#74 := (~ #13 #13)
+#72 := (~ #12 #12)
+#73 := [refl]: #72
+#75 := [nnf-pos #73]: #74
+#61 := [not-or-elim #63]: #13
+#67 := [mp~ #61 #75]: #13
+#553 := [mp #67 #552]: #548
+#129 := (not #548)
+#216 := (or #129 #19)
+#130 := [quant-inst]: #216
+[unit-resolution #130 #553 #64]: false
+unsat
 7fcf7ce1521f6f1599b2fe6f93ba5dee1cbd7b76 222 0
 #2 := false
 decl f3 :: (-> S2 S1)
@@ -6596,6 +6345,257 @@
 #610 := [quant-inst]: #609
 [unit-resolution #610 #339 #320]: false
 unsat
+e97ea15e571d05d4542f0baceec935a45a20adf5 250 0
+#2 := false
+decl f3 :: (-> S2 S1)
+decl f7 :: S2
+#22 := f7
+#25 := (f3 f7)
+decl f1 :: S1
+#4 := f1
+#94 := (= f1 #25)
+#283 := (not #94)
+decl f4 :: (-> S2 S1)
+#8 := (:var 0 S2)
+#11 := (f4 #8)
+#702 := (pattern #11)
+#9 := (f3 #8)
+#701 := (pattern #9)
+#57 := (= f1 #11)
+#54 := (= f1 #9)
+#63 := (not #54)
+#64 := (or #63 #57)
+#703 := (forall (vars (?v0 S2)) (:pat #701 #702) #64)
+#69 := (forall (vars (?v0 S2)) #64)
+#706 := (iff #69 #703)
+#704 := (iff #64 #64)
+#705 := [refl]: #704
+#707 := [quant-intro #705]: #706
+#187 := (~ #69 #69)
+#201 := (~ #64 #64)
+#202 := [refl]: #201
+#188 := [nnf-pos #202]: #187
+decl f6 :: (-> S2 S1)
+#23 := (f6 f7)
+#91 := (= f1 #23)
+#78 := (not #57)
+#86 := (and #63 #78)
+#103 := (not #86)
+#136 := (or #103 #91 #94)
+#139 := (forall (vars (?v0 S2)) #136)
+decl f5 :: S2
+#15 := f5
+#16 := (f4 f5)
+#72 := (= f1 #16)
+#75 := (not #72)
+#148 := (and #69 #75 #139)
+#153 := (not #148)
+#32 := (f4 f7)
+#118 := (= f1 #32)
+#159 := (or #91 #118 #153)
+#164 := (not #159)
+#33 := (= #32 f1)
+#24 := (= #23 f1)
+#34 := (or #24 #33)
+#26 := (= #25 f1)
+#27 := (or #24 #26)
+#10 := (= #9 f1)
+#20 := (not #10)
+#12 := (= #11 f1)
+#19 := (not #12)
+#21 := (and #19 #20)
+#28 := (implies #21 #27)
+#29 := (forall (vars (?v0 S2)) #28)
+#17 := (= #16 f1)
+#18 := (not #17)
+#30 := (and #18 #29)
+#13 := (implies #10 #12)
+#14 := (forall (vars (?v0 S2)) #13)
+#31 := (and #14 #30)
+#35 := (implies #31 #34)
+#36 := (not #35)
+#167 := (iff #36 #164)
+#121 := (or #91 #118)
+#97 := (or #91 #94)
+#104 := (or #103 #97)
+#109 := (forall (vars (?v0 S2)) #104)
+#112 := (and #75 #109)
+#115 := (and #69 #112)
+#127 := (not #115)
+#128 := (or #127 #121)
+#133 := (not #128)
+#165 := (iff #133 #164)
+#162 := (iff #128 #159)
+#156 := (or #153 #121)
+#160 := (iff #156 #159)
+#161 := [rewrite]: #160
+#157 := (iff #128 #156)
+#154 := (iff #127 #153)
+#151 := (iff #115 #148)
+#142 := (and #75 #139)
+#145 := (and #69 #142)
+#149 := (iff #145 #148)
+#150 := [rewrite]: #149
+#146 := (iff #115 #145)
+#143 := (iff #112 #142)
+#140 := (iff #109 #139)
+#137 := (iff #104 #136)
+#138 := [rewrite]: #137
+#141 := [quant-intro #138]: #140
+#144 := [monotonicity #141]: #143
+#147 := [monotonicity #144]: #146
+#152 := [trans #147 #150]: #151
+#155 := [monotonicity #152]: #154
+#158 := [monotonicity #155]: #157
+#163 := [trans #158 #161]: #162
+#166 := [monotonicity #163]: #165
+#134 := (iff #36 #133)
+#131 := (iff #35 #128)
+#124 := (implies #115 #121)
+#129 := (iff #124 #128)
+#130 := [rewrite]: #129
+#125 := (iff #35 #124)
+#122 := (iff #34 #121)
+#119 := (iff #33 #118)
+#120 := [rewrite]: #119
+#92 := (iff #24 #91)
+#93 := [rewrite]: #92
+#123 := [monotonicity #93 #120]: #122
+#116 := (iff #31 #115)
+#113 := (iff #30 #112)
+#110 := (iff #29 #109)
+#107 := (iff #28 #104)
+#100 := (implies #86 #97)
+#105 := (iff #100 #104)
+#106 := [rewrite]: #105
+#101 := (iff #28 #100)
+#98 := (iff #27 #97)
+#95 := (iff #26 #94)
+#96 := [rewrite]: #95
+#99 := [monotonicity #93 #96]: #98
+#89 := (iff #21 #86)
+#83 := (and #78 #63)
+#87 := (iff #83 #86)
+#88 := [rewrite]: #87
+#84 := (iff #21 #83)
+#81 := (iff #20 #63)
+#55 := (iff #10 #54)
+#56 := [rewrite]: #55
+#82 := [monotonicity #56]: #81
+#79 := (iff #19 #78)
+#58 := (iff #12 #57)
+#59 := [rewrite]: #58
+#80 := [monotonicity #59]: #79
+#85 := [monotonicity #80 #82]: #84
+#90 := [trans #85 #88]: #89
+#102 := [monotonicity #90 #99]: #101
+#108 := [trans #102 #106]: #107
+#111 := [quant-intro #108]: #110
+#76 := (iff #18 #75)
+#73 := (iff #17 #72)
+#74 := [rewrite]: #73
+#77 := [monotonicity #74]: #76
+#114 := [monotonicity #77 #111]: #113
+#70 := (iff #14 #69)
+#67 := (iff #13 #64)
+#60 := (implies #54 #57)
+#65 := (iff #60 #64)
+#66 := [rewrite]: #65
+#61 := (iff #13 #60)
+#62 := [monotonicity #56 #59]: #61
+#68 := [trans #62 #66]: #67
+#71 := [quant-intro #68]: #70
+#117 := [monotonicity #71 #114]: #116
+#126 := [monotonicity #117 #123]: #125
+#132 := [trans #126 #130]: #131
+#135 := [monotonicity #132]: #134
+#168 := [trans #135 #166]: #167
+#53 := [asserted]: #36
+#169 := [mp #53 #168]: #164
+#174 := [not-or-elim #169]: #148
+#175 := [and-elim #174]: #69
+#185 := [mp~ #175 #188]: #69
+#708 := [mp #185 #707]: #703
+#172 := (not #118)
+#173 := [not-or-elim #169]: #172
+#285 := (not #703)
+#372 := (or #285 #283 #118)
+#370 := (or #283 #118)
+#363 := (or #285 #370)
+#375 := (iff #363 #372)
+#303 := [rewrite]: #375
+#374 := [quant-inst]: #363
+#376 := [mp #374 #303]: #372
+#398 := [unit-resolution #376 #173 #708]: #283
+#217 := (or #54 #57 #94)
+#709 := (forall (vars (?v0 S2)) (:pat #701 #702) #217)
+#222 := (forall (vars (?v0 S2)) #217)
+#712 := (iff #222 #709)
+#710 := (iff #217 #217)
+#711 := [refl]: #710
+#713 := [quant-intro #711]: #712
+#192 := (or #103 #94)
+#197 := (forall (vars (?v0 S2)) #192)
+#223 := (iff #197 #222)
+#220 := (iff #192 #217)
+#203 := (or #54 #57)
+#214 := (or #203 #94)
+#218 := (iff #214 #217)
+#219 := [rewrite]: #218
+#215 := (iff #192 #214)
+#212 := (iff #103 #203)
+#204 := (not #203)
+#207 := (not #204)
+#210 := (iff #207 #203)
+#211 := [rewrite]: #210
+#208 := (iff #103 #207)
+#205 := (iff #86 #204)
+#206 := [rewrite]: #205
+#209 := [monotonicity #206]: #208
+#213 := [trans #209 #211]: #212
+#216 := [monotonicity #213]: #215
+#221 := [trans #216 #219]: #220
+#224 := [quant-intro #221]: #223
+#184 := (~ #197 #197)
+#186 := (~ #192 #192)
+#183 := [refl]: #186
+#180 := [nnf-pos #183]: #184
+#198 := (iff #139 #197)
+#195 := (iff #136 #192)
+#189 := (or #103 false #94)
+#193 := (iff #189 #192)
+#194 := [rewrite]: #193
+#190 := (iff #136 #189)
+#181 := (iff #91 false)
+#170 := (not #91)
+#171 := [not-or-elim #169]: #170
+#182 := [iff-false #171]: #181
+#191 := [monotonicity #182]: #190
+#196 := [trans #191 #194]: #195
+#199 := [quant-intro #196]: #198
+#177 := [and-elim #174]: #139
+#200 := [mp #177 #199]: #197
+#178 := [mp~ #200 #180]: #197
+#225 := [mp #178 #224]: #222
+#714 := [mp #225 #713]: #709
+#356 := (not #709)
+#693 := (or #356 #94 #118)
+#284 := (or #94 #118 #94)
+#695 := (or #356 #284)
+#697 := (iff #695 #693)
+#371 := (or #94 #118)
+#482 := (or #356 #371)
+#362 := (iff #482 #693)
+#696 := [rewrite]: #362
+#689 := (iff #695 #482)
+#373 := (iff #284 #371)
+#377 := [rewrite]: #373
+#361 := [monotonicity #377]: #689
+#698 := [trans #361 #696]: #697
+#350 := [quant-inst]: #695
+#699 := [mp #350 #698]: #693
+[unit-resolution #699 #173 #714 #398]: false
+unsat
 8031eb3bcd3fb97da7b874e36b0d4d2ae215ec7b 49 0
 #2 := false
 decl f1 :: S1
@@ -6646,6 +6646,10 @@
 #35 := [asserted]: #18
 [mp #35 #65]: false
 unsat
+2317912b27971033dc831a6ce5ef74d0f20fbca2 1 2
+unsat
+WARNING: failed to find a pattern for quantifier (quantifier id: k!9)
+
 301a246cbbd414b8b75c6b801fee2f734cf2af47 122 0
 #2 := false
 decl f3 :: (-> S2 S1)
@@ -6769,20 +6773,8 @@
 #287 := [quant-inst]: #200
 [unit-resolution #287 #620 #138]: false
 unsat
-2317912b27971033dc831a6ce5ef74d0f20fbca2 1 2
-unsat
-WARNING: failed to find a pattern for quantifier (quantifier id: k!9)
-
 ee898f52c96d73444993788b39566855271caaec 1 0
 unsat
-f7daa562701d4999ed8a3f5ec133f08651bf6190 1 0
-unsat
-fdbe39cdd485517d8ec1964f2c4fb7b6646fe608 1 0
-unsat
-779c5fc38fd08b8484ec1da52f6a17e6b849eac4 1 0
-unsat
-b720bb30cc87882c3f660a5bf9c8737dde4c14c4 1 0
-unsat
 2acdf9e468d060988547fd7ad4c93238ed78a5bb 105 0
 #2 := false
 decl f3 :: (-> S1 S1)
@@ -6889,6 +6881,8 @@
 #261 := [quant-inst]: #188
 [unit-resolution #261 #590 #259]: false
 unsat
+f7daa562701d4999ed8a3f5ec133f08651bf6190 1 0
+unsat
 ff2e1b7168f418022909b6d3ec628836562df57d 230 0
 #2 := false
 decl f3 :: (-> S1 S1)
@@ -7120,6 +7114,8 @@
 #309 := [quant-inst]: #308
 [unit-resolution #309 #590 #312]: false
 unsat
+fdbe39cdd485517d8ec1964f2c4fb7b6646fe608 1 0
+unsat
 258fe7f9c05eff8e107778930f55bcfa407e2fde 156 0
 #2 := false
 decl f3 :: (-> S1 S2 S1)
@@ -7277,6 +7273,8 @@
 #269 := [quant-inst]: #264
 [unit-resolution #269 #592 #292]: false
 unsat
+779c5fc38fd08b8484ec1da52f6a17e6b849eac4 1 0
+unsat
 6c0f54222b59d5e628ff948749ac67e96364c6a1 74 0
 #2 := false
 decl f3 :: (-> S2 S3 S4)
@@ -7352,6 +7350,8 @@
 #548 := [mp #55 #547]: #543
 [unit-resolution #548 #537]: false
 unsat
+b720bb30cc87882c3f660a5bf9c8737dde4c14c4 1 0
+unsat
 cba176f179e597e7b48393532028be8634e0c4f7 108 0
 #2 := false
 decl f3 :: (-> S1 S1)
@@ -7661,8 +7661,6 @@
 unsat
 ce6d32e932c7cece567323ec34f7a5540258fa7f 1 0
 unsat
-22c7d1d1136fafc0a09e243a12ede1ee4fee416f 1 0
-unsat
 cfd9d2f647046e282a1080aae51b4b88be291157 107 0
 #2 := false
 decl f3 :: (-> S2 S1)
@@ -7771,6 +7769,8 @@
 #279 := [quant-inst]: #193
 [unit-resolution #279 #102 #618]: false
 unsat
+22c7d1d1136fafc0a09e243a12ede1ee4fee416f 1 0
+unsat
 9ea0d22c6270219f7cef6ee3d8f429562349b2a3 75 0
 #2 := false
 decl f1 :: S1
@@ -8055,6 +8055,100 @@
 #622 := [mp #616 #257]: #277
 [unit-resolution #622 #645 #591 #596]: false
 unsat
+b8d80ad0d8c340491041b0c69d71b3944eaf90e6 93 0
+#2 := false
+decl f5 :: (-> S2 S1)
+decl f6 :: S2
+#16 := f6
+#20 := (f5 f6)
+decl f1 :: S1
+#4 := f1
+#65 := (= f1 #20)
+#84 := (not #65)
+decl f3 :: (-> S2 S3 S1)
+decl f4 :: S3
+#9 := f4
+#17 := (f3 f6 f4)
+#59 := (= f1 #17)
+#8 := (:var 0 S2)
+#12 := (f5 #8)
+#44 := (= f1 #12)
+#10 := (f3 #8 f4)
+#41 := (= f1 #10)
+#50 := (not #41)
+#51 := (or #50 #44)
+#56 := (forall (vars (?v0 S2)) #51)
+#62 := (and #56 #59)
+#71 := (not #62)
+#72 := (or #71 #65)
+#77 := (not #72)
+#21 := (= #20 f1)
+#18 := (= #17 f1)
+#13 := (= #12 f1)
+#11 := (= #10 f1)
+#14 := (implies #11 #13)
+#15 := (forall (vars (?v0 S2)) #14)
+#19 := (and #15 #18)
+#22 := (implies #19 #21)
+#23 := (not #22)
+#78 := (iff #23 #77)
+#75 := (iff #22 #72)
+#68 := (implies #62 #65)
+#73 := (iff #68 #72)
+#74 := [rewrite]: #73
+#69 := (iff #22 #68)
+#66 := (iff #21 #65)
+#67 := [rewrite]: #66
+#63 := (iff #19 #62)
+#60 := (iff #18 #59)
+#61 := [rewrite]: #60
+#57 := (iff #15 #56)
+#54 := (iff #14 #51)
+#47 := (implies #41 #44)
+#52 := (iff #47 #51)
+#53 := [rewrite]: #52
+#48 := (iff #14 #47)
+#45 := (iff #13 #44)
+#46 := [rewrite]: #45
+#42 := (iff #11 #41)
+#43 := [rewrite]: #42
+#49 := [monotonicity #43 #46]: #48
+#55 := [trans #49 #53]: #54
+#58 := [quant-intro #55]: #57
+#64 := [monotonicity #58 #61]: #63
+#70 := [monotonicity #64 #67]: #69
+#76 := [trans #70 #74]: #75
+#79 := [monotonicity #76]: #78
+#40 := [asserted]: #23
+#82 := [mp #40 #79]: #77
+#85 := [not-or-elim #82]: #84
+#80 := [not-or-elim #82]: #62
+#83 := [and-elim #80]: #59
+#572 := (pattern #12)
+#571 := (pattern #10)
+#573 := (forall (vars (?v0 S2)) (:pat #571 #572) #51)
+#576 := (iff #56 #573)
+#574 := (iff #51 #51)
+#575 := [refl]: #574
+#577 := [quant-intro #575]: #576
+#97 := (~ #56 #56)
+#95 := (~ #51 #51)
+#96 := [refl]: #95
+#98 := [nnf-pos #96]: #97
+#81 := [and-elim #80]: #56
+#88 := [mp~ #81 #98]: #56
+#578 := [mp #88 #577]: #573
+#155 := (not #59)
+#157 := (not #573)
+#244 := (or #157 #155 #65)
+#242 := (or #155 #65)
+#235 := (or #157 #242)
+#247 := (iff #235 #244)
+#175 := [rewrite]: #247
+#246 := [quant-inst]: #235
+#248 := [mp #246 #175]: #244
+[unit-resolution #248 #578 #83 #85]: false
+unsat
 628763241ae198f2ea4a54c641ca6e8df6d851ca 250 0
 #2 := false
 decl f3 :: (-> S2 S1)
@@ -8306,6 +8400,120 @@
 #616 := [mp #628 #615]: #622
 [unit-resolution #616 #128 #676 #607 #606]: false
 unsat
+0f8bf9d230b6b97c3b9a64ed4f1bb8757963fbc7 113 0
+#2 := false
+decl f3 :: (-> S2 S3 S1)
+decl f4 :: S3
+#9 := f4
+decl f6 :: S2
+#16 := f6
+#19 := (f3 f6 f4)
+decl f1 :: S1
+#4 := f1
+#57 := (= f1 #19)
+decl f5 :: (-> S2 S1)
+#17 := (f5 f6)
+#54 := (= f1 #17)
+#60 := (and #54 #57)
+#63 := (not #60)
+#8 := (:var 0 S2)
+#12 := (f5 #8)
+#45 := (= f1 #12)
+#10 := (f3 #8 f4)
+#42 := (= f1 #10)
+#48 := (and #42 #45)
+#51 := (exists (vars (?v0 S2)) #48)
+#66 := (or #51 #63)
+#69 := (not #66)
+#20 := (= #19 f1)
+#18 := (= #17 f1)
+#21 := (and #18 #20)
+#22 := (not #21)
+#13 := (= #12 f1)
+#11 := (= #10 f1)
+#14 := (and #11 #13)
+#15 := (exists (vars (?v0 S2)) #14)
+#23 := (or #15 #22)
+#24 := (not #23)
+#70 := (iff #24 #69)
+#67 := (iff #23 #66)
+#64 := (iff #22 #63)
+#61 := (iff #21 #60)
+#58 := (iff #20 #57)
+#59 := [rewrite]: #58
+#55 := (iff #18 #54)
+#56 := [rewrite]: #55
+#62 := [monotonicity #56 #59]: #61
+#65 := [monotonicity #62]: #64
+#52 := (iff #15 #51)
+#49 := (iff #14 #48)
+#46 := (iff #13 #45)
+#47 := [rewrite]: #46
+#43 := (iff #11 #42)
+#44 := [rewrite]: #43
+#50 := [monotonicity #44 #47]: #49
+#53 := [quant-intro #50]: #52
+#68 := [monotonicity #53 #65]: #67
+#71 := [monotonicity #68]: #70
+#41 := [asserted]: #24
+#74 := [mp #41 #71]: #69
+#75 := [not-or-elim #74]: #60
+#77 := [and-elim #75]: #57
+#76 := [and-elim #75]: #54
+#585 := (pattern #12)
+#584 := (pattern #10)
+#93 := (not #45)
+#92 := (not #42)
+#94 := (or #92 #93)
+#586 := (forall (vars (?v0 S2)) (:pat #584 #585) #94)
+#101 := (forall (vars (?v0 S2)) #94)
+#589 := (iff #101 #586)
+#587 := (iff #94 #94)
+#588 := [refl]: #587
+#590 := [quant-intro #588]: #589
+#87 := (not #48)
+#90 := (forall (vars (?v0 S2)) #87)
+#102 := (iff #90 #101)
+#99 := (iff #87 #94)
+#95 := (not #94)
+#83 := (not #95)
+#97 := (iff #83 #94)
+#98 := [rewrite]: #97
+#84 := (iff #87 #83)
+#85 := (iff #48 #95)
+#86 := [rewrite]: #85
+#96 := [monotonicity #86]: #84
+#100 := [trans #96 #98]: #99
+#103 := [quant-intro #100]: #102
+#72 := (not #51)
+#80 := (~ #72 #90)
+#88 := (~ #87 #87)
+#89 := [refl]: #88
+#78 := [nnf-neg #89]: #80
+#73 := [not-or-elim #74]: #72
+#91 := [mp~ #73 #78]: #90
+#104 := [mp #91 #103]: #101
+#591 := [mp #104 #590]: #586
+#255 := (not #57)
+#168 := (not #54)
+#248 := (not #586)
+#259 := (or #248 #168 #255)
+#169 := (or #255 #168)
+#260 := (or #248 #169)
+#578 := (iff #260 #259)
+#256 := (or #168 #255)
+#261 := (or #248 #256)
+#241 := (iff #261 #259)
+#576 := [rewrite]: #241
+#258 := (iff #260 #261)
+#170 := (iff #169 #256)
+#257 := [rewrite]: #170
+#262 := [monotonicity #257]: #258
+#235 := [trans #262 #576]: #578
+#188 := [quant-inst]: #260
+#365 := [mp #188 #235]: #259
+[unit-resolution #365 #591 #76 #77]: false
+unsat
 64bd43a9d49de65761e5220e25dbbe3dc269bf0e 238 0
 #2 := false
 decl f3 :: (-> S2 S1)
@@ -8545,214 +8753,6 @@
 #338 := [mp #643 #632]: #276
 [unit-resolution #338 #664 #617 #616]: false
 unsat
-b8d80ad0d8c340491041b0c69d71b3944eaf90e6 93 0
-#2 := false
-decl f5 :: (-> S2 S1)
-decl f6 :: S2
-#16 := f6
-#20 := (f5 f6)
-decl f1 :: S1
-#4 := f1
-#65 := (= f1 #20)
-#84 := (not #65)
-decl f3 :: (-> S2 S3 S1)
-decl f4 :: S3
-#9 := f4
-#17 := (f3 f6 f4)
-#59 := (= f1 #17)
-#8 := (:var 0 S2)
-#12 := (f5 #8)
-#44 := (= f1 #12)
-#10 := (f3 #8 f4)
-#41 := (= f1 #10)
-#50 := (not #41)
-#51 := (or #50 #44)
-#56 := (forall (vars (?v0 S2)) #51)
-#62 := (and #56 #59)
-#71 := (not #62)
-#72 := (or #71 #65)
-#77 := (not #72)
-#21 := (= #20 f1)
-#18 := (= #17 f1)
-#13 := (= #12 f1)
-#11 := (= #10 f1)
-#14 := (implies #11 #13)
-#15 := (forall (vars (?v0 S2)) #14)
-#19 := (and #15 #18)
-#22 := (implies #19 #21)
-#23 := (not #22)
-#78 := (iff #23 #77)
-#75 := (iff #22 #72)
-#68 := (implies #62 #65)
-#73 := (iff #68 #72)
-#74 := [rewrite]: #73
-#69 := (iff #22 #68)
-#66 := (iff #21 #65)
-#67 := [rewrite]: #66
-#63 := (iff #19 #62)
-#60 := (iff #18 #59)
-#61 := [rewrite]: #60
-#57 := (iff #15 #56)
-#54 := (iff #14 #51)
-#47 := (implies #41 #44)
-#52 := (iff #47 #51)
-#53 := [rewrite]: #52
-#48 := (iff #14 #47)
-#45 := (iff #13 #44)
-#46 := [rewrite]: #45
-#42 := (iff #11 #41)
-#43 := [rewrite]: #42
-#49 := [monotonicity #43 #46]: #48
-#55 := [trans #49 #53]: #54
-#58 := [quant-intro #55]: #57
-#64 := [monotonicity #58 #61]: #63
-#70 := [monotonicity #64 #67]: #69
-#76 := [trans #70 #74]: #75
-#79 := [monotonicity #76]: #78
-#40 := [asserted]: #23
-#82 := [mp #40 #79]: #77
-#85 := [not-or-elim #82]: #84
-#80 := [not-or-elim #82]: #62
-#83 := [and-elim #80]: #59
-#572 := (pattern #12)
-#571 := (pattern #10)
-#573 := (forall (vars (?v0 S2)) (:pat #571 #572) #51)
-#576 := (iff #56 #573)
-#574 := (iff #51 #51)
-#575 := [refl]: #574
-#577 := [quant-intro #575]: #576
-#97 := (~ #56 #56)
-#95 := (~ #51 #51)
-#96 := [refl]: #95
-#98 := [nnf-pos #96]: #97
-#81 := [and-elim #80]: #56
-#88 := [mp~ #81 #98]: #56
-#578 := [mp #88 #577]: #573
-#155 := (not #59)
-#157 := (not #573)
-#244 := (or #157 #155 #65)
-#242 := (or #155 #65)
-#235 := (or #157 #242)
-#247 := (iff #235 #244)
-#175 := [rewrite]: #247
-#246 := [quant-inst]: #235
-#248 := [mp #246 #175]: #244
-[unit-resolution #248 #578 #83 #85]: false
-unsat
-0f8bf9d230b6b97c3b9a64ed4f1bb8757963fbc7 113 0
-#2 := false
-decl f3 :: (-> S2 S3 S1)
-decl f4 :: S3
-#9 := f4
-decl f6 :: S2
-#16 := f6
-#19 := (f3 f6 f4)
-decl f1 :: S1
-#4 := f1
-#57 := (= f1 #19)
-decl f5 :: (-> S2 S1)
-#17 := (f5 f6)
-#54 := (= f1 #17)
-#60 := (and #54 #57)
-#63 := (not #60)
-#8 := (:var 0 S2)
-#12 := (f5 #8)
-#45 := (= f1 #12)
-#10 := (f3 #8 f4)
-#42 := (= f1 #10)
-#48 := (and #42 #45)
-#51 := (exists (vars (?v0 S2)) #48)
-#66 := (or #51 #63)
-#69 := (not #66)
-#20 := (= #19 f1)
-#18 := (= #17 f1)
-#21 := (and #18 #20)
-#22 := (not #21)
-#13 := (= #12 f1)
-#11 := (= #10 f1)
-#14 := (and #11 #13)
-#15 := (exists (vars (?v0 S2)) #14)
-#23 := (or #15 #22)
-#24 := (not #23)
-#70 := (iff #24 #69)
-#67 := (iff #23 #66)
-#64 := (iff #22 #63)
-#61 := (iff #21 #60)
-#58 := (iff #20 #57)
-#59 := [rewrite]: #58
-#55 := (iff #18 #54)
-#56 := [rewrite]: #55
-#62 := [monotonicity #56 #59]: #61
-#65 := [monotonicity #62]: #64
-#52 := (iff #15 #51)
-#49 := (iff #14 #48)
-#46 := (iff #13 #45)
-#47 := [rewrite]: #46
-#43 := (iff #11 #42)
-#44 := [rewrite]: #43
-#50 := [monotonicity #44 #47]: #49
-#53 := [quant-intro #50]: #52
-#68 := [monotonicity #53 #65]: #67
-#71 := [monotonicity #68]: #70
-#41 := [asserted]: #24
-#74 := [mp #41 #71]: #69
-#75 := [not-or-elim #74]: #60
-#77 := [and-elim #75]: #57
-#76 := [and-elim #75]: #54
-#585 := (pattern #12)
-#584 := (pattern #10)
-#93 := (not #45)
-#92 := (not #42)
-#94 := (or #92 #93)
-#586 := (forall (vars (?v0 S2)) (:pat #584 #585) #94)
-#101 := (forall (vars (?v0 S2)) #94)
-#589 := (iff #101 #586)
-#587 := (iff #94 #94)
-#588 := [refl]: #587
-#590 := [quant-intro #588]: #589
-#87 := (not #48)
-#90 := (forall (vars (?v0 S2)) #87)
-#102 := (iff #90 #101)
-#99 := (iff #87 #94)
-#95 := (not #94)
-#83 := (not #95)
-#97 := (iff #83 #94)
-#98 := [rewrite]: #97
-#84 := (iff #87 #83)
-#85 := (iff #48 #95)
-#86 := [rewrite]: #85
-#96 := [monotonicity #86]: #84
-#100 := [trans #96 #98]: #99
-#103 := [quant-intro #100]: #102
-#72 := (not #51)
-#80 := (~ #72 #90)
-#88 := (~ #87 #87)
-#89 := [refl]: #88
-#78 := [nnf-neg #89]: #80
-#73 := [not-or-elim #74]: #72
-#91 := [mp~ #73 #78]: #90
-#104 := [mp #91 #103]: #101
-#591 := [mp #104 #590]: #586
-#255 := (not #57)
-#168 := (not #54)
-#248 := (not #586)
-#259 := (or #248 #168 #255)
-#169 := (or #255 #168)
-#260 := (or #248 #169)
-#578 := (iff #260 #259)
-#256 := (or #168 #255)
-#261 := (or #248 #256)
-#241 := (iff #261 #259)
-#576 := [rewrite]: #241
-#258 := (iff #260 #261)
-#170 := (iff #169 #256)
-#257 := [rewrite]: #170
-#262 := [monotonicity #257]: #258
-#235 := [trans #262 #576]: #578
-#188 := [quant-inst]: #260
-#365 := [mp #188 #235]: #259
-[unit-resolution #365 #591 #76 #77]: false
-unsat
 42f3c8af4c50150e11519c085a0ad69e107e1705 43 0
 #2 := false
 decl f1 :: S1
@@ -9063,6 +9063,10 @@
 #29 := [asserted]: #12
 [mp #29 #46]: false
 unsat
+46acb4cd4b5353c32c529ffe509fc6f26ac2f2a1 3 0
+#2 := false
+[asserted]: false
+unsat
 ac00789473bf074e49a8a6419c1f2a1042912d6a 48 0
 #2 := false
 decl f1 :: S1
@@ -9112,6 +9116,25 @@
 #31 := [asserted]: #14
 [mp #31 #63]: false
 unsat
+040123bf68e09d0b72cf990436bb29a623c102b8 18 0
+#2 := false
+#9 := 1::int
+#8 := 0::int
+#10 := (< 0::int 1::int)
+#11 := (not #10)
+#38 := (iff #11 false)
+#1 := true
+#33 := (not true)
+#36 := (iff #33 false)
+#37 := [rewrite]: #36
+#34 := (iff #11 #33)
+#31 := (iff #10 true)
+#32 := [rewrite]: #31
+#35 := [monotonicity #32]: #34
+#39 := [trans #35 #37]: #38
+#28 := [asserted]: #11
+[mp #28 #39]: false
+unsat
 75052914158f379cd343f693f354895fa579a89c 53 0
 #2 := false
 decl f1 :: S1
@@ -9166,6 +9189,25 @@
 #31 := [asserted]: #14
 [mp #31 #68]: false
 unsat
+be1600749b493592f603ae3a7f9dcbc68d688187 18 0
+#2 := false
+#9 := 1::int
+#8 := 0::int
+#10 := (<= 0::int 1::int)
+#11 := (not #10)
+#38 := (iff #11 false)
+#1 := true
+#33 := (not true)
+#36 := (iff #33 false)
+#37 := [rewrite]: #36
+#34 := (iff #11 #33)
+#31 := (iff #10 true)
+#32 := [rewrite]: #31
+#35 := [monotonicity #32]: #34
+#39 := [trans #35 #37]: #38
+#28 := [asserted]: #11
+[mp #28 #39]: false
+unsat
 4bcd26d70bcaf24bb295031b732101a3dec2c643 56 0
 #2 := false
 decl f1 :: S1
@@ -9223,6 +9265,25 @@
 #32 := [asserted]: #15
 [mp #32 #71]: false
 unsat
+d6985ded37fcab252cac3fbb09a30e977c68973d 18 0
+#2 := false
+#9 := 2345678901::int
+#8 := 123456789::int
+#10 := (< 123456789::int 2345678901::int)
+#11 := (not #10)
+#38 := (iff #11 false)
+#1 := true
+#33 := (not true)
+#36 := (iff #33 false)
+#37 := [rewrite]: #36
+#34 := (iff #11 #33)
+#31 := (iff #10 true)
+#32 := [rewrite]: #31
+#35 := [monotonicity #32]: #34
+#39 := [trans #35 #37]: #38
+#28 := [asserted]: #11
+[mp #28 #39]: false
+unsat
 7eeb56537bd13a6f6bc35096a4ddfb33dceb295f 89 0
 #2 := false
 decl f4 :: S1
@@ -9371,6 +9432,37 @@
 #59 := [not-or-elim #57]: #58
 [mp #59 #74]: false
 unsat
+12f34f8245ed278a095c475d68eb5a5711d23981 30 0
+#2 := false
+decl f3 :: (-> int S2)
+#25 := 1::int
+#28 := (f3 1::int)
+#13 := 0::int
+#26 := (+ 0::int 1::int)
+#27 := (f3 #26)
+#29 := (= #27 #28)
+#30 := (not #29)
+#148 := (iff #30 false)
+#1 := true
+#143 := (not true)
+#146 := (iff #143 false)
+#147 := [rewrite]: #146
+#144 := (iff #30 #143)
+#141 := (iff #29 true)
+#136 := (= #28 #28)
+#139 := (iff #136 true)
+#140 := [rewrite]: #139
+#137 := (iff #29 #136)
+#133 := (= #26 1::int)
+#134 := [rewrite]: #133
+#135 := [monotonicity #134]: #29
+#138 := [monotonicity #135]: #137
+#142 := [trans #138 #140]: #141
+#145 := [monotonicity #142]: #144
+#149 := [trans #145 #147]: #148
+#132 := [asserted]: #30
+[mp #132 #149]: false
+unsat
 8e8baf35daf48781c204954ba8d7df5254aac6a8 50 0
 #2 := false
 decl f5 :: S2
@@ -9450,6 +9542,40 @@
 #43 := [not-or-elim #42]: #41
 [unit-resolution #43 #51]: false
 unsat
+fca9345b5fb82879eab30d8a35a71a4cfb012222 33 0
+#2 := false
+#27 := 1::int
+decl f4 :: (-> S2 int)
+decl f5 :: S2
+#25 := f5
+#26 := (f4 f5)
+#28 := (+ #26 1::int)
+#29 := (< #26 #28)
+#30 := (not #29)
+#151 := (iff #30 false)
+#133 := (+ 1::int #26)
+#136 := (< #26 #133)
+#139 := (not #136)
+#149 := (iff #139 false)
+#1 := true
+#144 := (not true)
+#147 := (iff #144 false)
+#148 := [rewrite]: #147
+#145 := (iff #139 #144)
+#142 := (iff #136 true)
+#143 := [rewrite]: #142
+#146 := [monotonicity #143]: #145
+#150 := [trans #146 #148]: #149
+#140 := (iff #30 #139)
+#137 := (iff #29 #136)
+#134 := (= #28 #133)
+#135 := [rewrite]: #134
+#138 := [monotonicity #135]: #137
+#141 := [monotonicity #138]: #140
+#152 := [trans #141 #150]: #151
+#132 := [asserted]: #30
+[mp #132 #152]: false
+unsat
 a8014c2ba4ebe428717a3516d1900ca3b7591555 73 0
 #2 := false
 decl f3 :: (-> S1 S1)
@@ -9524,558 +9650,6 @@
 #146 := [quant-inst]: #232
 [unit-resolution #146 #566 #74]: false
 unsat
-c0906c23e4b0650863a2ef0d68bafa4e06a9dd19 106 0
-#2 := false
-decl f3 :: (-> S2 S2 S1)
-decl ?v0!0 :: S2
-#72 := ?v0!0
-#83 := (f3 ?v0!0 ?v0!0)
-decl f1 :: S1
-#4 := f1
-#75 := (= f1 #83)
-#76 := (not #75)
-#9 := (:var 0 S2)
-#16 := (f3 #9 #9)
-#50 := (= f1 #16)
-#53 := (forall (vars (?v0 S2)) #50)
-#69 := (not #53)
-#84 := (~ #69 #76)
-#85 := [sk]: #84
-#8 := (:var 1 S2)
-#12 := (f3 #9 #8)
-#41 := (= f1 #12)
-#10 := (f3 #8 #9)
-#38 := (= f1 #10)
-#44 := (and #38 #41)
-#47 := (forall (vars (?v0 S2) (?v1 S2)) #44)
-#59 := (not #47)
-#60 := (or #59 #53)
-#65 := (not #60)
-#17 := (= #16 f1)
-#18 := (forall (vars (?v0 S2)) #17)
-#13 := (= #12 f1)
-#11 := (= #10 f1)
-#14 := (and #11 #13)
-#15 := (forall (vars (?v0 S2) (?v1 S2)) #14)
-#19 := (implies #15 #18)
-#20 := (not #19)
-#66 := (iff #20 #65)
-#63 := (iff #19 #60)
-#56 := (implies #47 #53)
-#61 := (iff #56 #60)
-#62 := [rewrite]: #61
-#57 := (iff #19 #56)
-#54 := (iff #18 #53)
-#51 := (iff #17 #50)
-#52 := [rewrite]: #51
-#55 := [quant-intro #52]: #54
-#48 := (iff #15 #47)
-#45 := (iff #14 #44)
-#42 := (iff #13 #41)
-#43 := [rewrite]: #42
-#39 := (iff #11 #38)
-#40 := [rewrite]: #39
-#46 := [monotonicity #40 #43]: #45
-#49 := [quant-intro #46]: #48
-#58 := [monotonicity #49 #55]: #57
-#64 := [trans #58 #62]: #63
-#67 := [monotonicity #64]: #66
-#37 := [asserted]: #20
-#70 := [mp #37 #67]: #65
-#71 := [not-or-elim #70]: #69
-#88 := [mp~ #71 #85]: #76
-#577 := (pattern #12)
-#576 := (pattern #10)
-#87 := (not #41)
-#86 := (not #38)
-#89 := (or #86 #87)
-#90 := (not #89)
-#578 := (forall (vars (?v0 S2) (?v1 S2)) (:pat #576 #577) #90)
-#93 := (forall (vars (?v0 S2) (?v1 S2)) #90)
-#581 := (iff #93 #578)
-#579 := (iff #90 #90)
-#580 := [refl]: #579
-#582 := [quant-intro #580]: #581
-#94 := (iff #47 #93)
-#91 := (iff #44 #90)
-#92 := [rewrite]: #91
-#95 := [quant-intro #92]: #94
-#81 := (~ #47 #47)
-#79 := (~ #44 #44)
-#80 := [refl]: #79
-#82 := [nnf-pos #80]: #81
-#68 := [not-or-elim #70]: #47
-#74 := [mp~ #68 #82]: #47
-#96 := [mp #74 #95]: #93
-#583 := [mp #96 #582]: #578
-#250 := (not #578)
-#254 := (or #250 #75)
-#160 := (or #76 #76)
-#247 := (not #160)
-#233 := (or #250 #247)
-#570 := (iff #233 #254)
-#357 := (iff #254 #254)
-#564 := [rewrite]: #357
-#180 := (iff #247 #75)
-#162 := (not #76)
-#251 := (iff #162 #75)
-#252 := [rewrite]: #251
-#249 := (iff #247 #162)
-#161 := (iff #160 #76)
-#248 := [rewrite]: #161
-#240 := [monotonicity #248]: #249
-#253 := [trans #240 #252]: #180
-#227 := [monotonicity #253]: #570
-#238 := [trans #227 #564]: #570
-#568 := [quant-inst]: #233
-#239 := [mp #568 #238]: #254
-[unit-resolution #239 #583 #88]: false
-unsat
-58aaefc3b25d8181c01a2139430686aeca861bf3 66 0
-#2 := false
-decl f4 :: S1
-#10 := f4
-decl f1 :: S1
-#4 := f1
-#37 := (= f1 f4)
-decl f3 :: S1
-#8 := f3
-#34 := (= f1 f3)
-#40 := (or #34 #37)
-#84 := (iff #40 false)
-#79 := (or false false)
-#82 := (iff #79 false)
-#83 := [rewrite]: #82
-#80 := (iff #40 #79)
-#75 := (iff #37 false)
-#66 := (not #37)
-#43 := (not #34)
-#49 := (and #43 #40)
-#57 := (not #49)
-#58 := (or #37 #57)
-#63 := (not #58)
-#11 := (= f4 f1)
-#9 := (= f3 f1)
-#13 := (not #9)
-#12 := (or #9 #11)
-#14 := (and #12 #13)
-#15 := (implies #14 #11)
-#16 := (not #15)
-#64 := (iff #16 #63)
-#61 := (iff #15 #58)
-#54 := (implies #49 #37)
-#59 := (iff #54 #58)
-#60 := [rewrite]: #59
-#55 := (iff #15 #54)
-#38 := (iff #11 #37)
-#39 := [rewrite]: #38
-#52 := (iff #14 #49)
-#46 := (and #40 #43)
-#50 := (iff #46 #49)
-#51 := [rewrite]: #50
-#47 := (iff #14 #46)
-#44 := (iff #13 #43)
-#35 := (iff #9 #34)
-#36 := [rewrite]: #35
-#45 := [monotonicity #36]: #44
-#41 := (iff #12 #40)
-#42 := [monotonicity #36 #39]: #41
-#48 := [monotonicity #42 #45]: #47
-#53 := [trans #48 #51]: #52
-#56 := [monotonicity #53 #39]: #55
-#62 := [trans #56 #60]: #61
-#65 := [monotonicity #62]: #64
-#33 := [asserted]: #16
-#68 := [mp #33 #65]: #63
-#67 := [not-or-elim #68]: #66
-#76 := [iff-false #67]: #75
-#77 := (iff #34 false)
-#69 := [not-or-elim #68]: #49
-#70 := [and-elim #69]: #43
-#78 := [iff-false #70]: #77
-#81 := [monotonicity #78 #76]: #80
-#85 := [trans #81 #83]: #84
-#71 := [and-elim #69]: #40
-[mp #71 #85]: false
-unsat
-d80d7bb97197c962c0b81d44c7a8cfd617b6ca33 59 0
-#2 := false
-decl f1 :: S1
-#4 := f1
-decl f6 :: S1
-#15 := f6
-#16 := (= f6 f1)
-decl f5 :: S1
-#13 := f5
-#14 := (= f5 f1)
-#17 := (and #14 #16)
-decl f4 :: S1
-#10 := f4
-#11 := (= f4 f1)
-decl f3 :: S1
-#8 := f3
-#9 := (= f3 f1)
-#12 := (and #9 #11)
-#18 := (or #12 #17)
-#19 := (implies #18 #18)
-#20 := (not #19)
-#71 := (iff #20 false)
-#1 := true
-#66 := (not true)
-#69 := (iff #66 false)
-#70 := [rewrite]: #69
-#67 := (iff #20 #66)
-#64 := (iff #19 true)
-#50 := (= f1 f6)
-#47 := (= f1 f5)
-#53 := (and #47 #50)
-#41 := (= f1 f4)
-#38 := (= f1 f3)
-#44 := (and #38 #41)
-#56 := (or #44 #53)
-#59 := (implies #56 #56)
-#62 := (iff #59 true)
-#63 := [rewrite]: #62
-#60 := (iff #19 #59)
-#57 := (iff #18 #56)
-#54 := (iff #17 #53)
-#51 := (iff #16 #50)
-#52 := [rewrite]: #51
-#48 := (iff #14 #47)
-#49 := [rewrite]: #48
-#55 := [monotonicity #49 #52]: #54
-#45 := (iff #12 #44)
-#42 := (iff #11 #41)
-#43 := [rewrite]: #42
-#39 := (iff #9 #38)
-#40 := [rewrite]: #39
-#46 := [monotonicity #40 #43]: #45
-#58 := [monotonicity #46 #55]: #57
-#61 := [monotonicity #58 #58]: #60
-#65 := [trans #61 #63]: #64
-#68 := [monotonicity #65]: #67
-#72 := [trans #68 #70]: #71
-#37 := [asserted]: #20
-[mp #37 #72]: false
-unsat
-46acb4cd4b5353c32c529ffe509fc6f26ac2f2a1 3 0
-#2 := false
-[asserted]: false
-unsat
-040123bf68e09d0b72cf990436bb29a623c102b8 18 0
-#2 := false
-#9 := 1::int
-#8 := 0::int
-#10 := (< 0::int 1::int)
-#11 := (not #10)
-#38 := (iff #11 false)
-#1 := true
-#33 := (not true)
-#36 := (iff #33 false)
-#37 := [rewrite]: #36
-#34 := (iff #11 #33)
-#31 := (iff #10 true)
-#32 := [rewrite]: #31
-#35 := [monotonicity #32]: #34
-#39 := [trans #35 #37]: #38
-#28 := [asserted]: #11
-[mp #28 #39]: false
-unsat
-be1600749b493592f603ae3a7f9dcbc68d688187 18 0
-#2 := false
-#9 := 1::int
-#8 := 0::int
-#10 := (<= 0::int 1::int)
-#11 := (not #10)
-#38 := (iff #11 false)
-#1 := true
-#33 := (not true)
-#36 := (iff #33 false)
-#37 := [rewrite]: #36
-#34 := (iff #11 #33)
-#31 := (iff #10 true)
-#32 := [rewrite]: #31
-#35 := [monotonicity #32]: #34
-#39 := [trans #35 #37]: #38
-#28 := [asserted]: #11
-[mp #28 #39]: false
-unsat
-d6985ded37fcab252cac3fbb09a30e977c68973d 18 0
-#2 := false
-#9 := 2345678901::int
-#8 := 123456789::int
-#10 := (< 123456789::int 2345678901::int)
-#11 := (not #10)
-#38 := (iff #11 false)
-#1 := true
-#33 := (not true)
-#36 := (iff #33 false)
-#37 := [rewrite]: #36
-#34 := (iff #11 #33)
-#31 := (iff #10 true)
-#32 := [rewrite]: #31
-#35 := [monotonicity #32]: #34
-#39 := [trans #35 #37]: #38
-#28 := [asserted]: #11
-[mp #28 #39]: false
-unsat
-12f34f8245ed278a095c475d68eb5a5711d23981 30 0
-#2 := false
-decl f3 :: (-> int S2)
-#25 := 1::int
-#28 := (f3 1::int)
-#13 := 0::int
-#26 := (+ 0::int 1::int)
-#27 := (f3 #26)
-#29 := (= #27 #28)
-#30 := (not #29)
-#148 := (iff #30 false)
-#1 := true
-#143 := (not true)
-#146 := (iff #143 false)
-#147 := [rewrite]: #146
-#144 := (iff #30 #143)
-#141 := (iff #29 true)
-#136 := (= #28 #28)
-#139 := (iff #136 true)
-#140 := [rewrite]: #139
-#137 := (iff #29 #136)
-#133 := (= #26 1::int)
-#134 := [rewrite]: #133
-#135 := [monotonicity #134]: #29
-#138 := [monotonicity #135]: #137
-#142 := [trans #138 #140]: #141
-#145 := [monotonicity #142]: #144
-#149 := [trans #145 #147]: #148
-#132 := [asserted]: #30
-[mp #132 #149]: false
-unsat
-fb0035d341cb2e8ac6449dbe61b4ac5d9e12a151 225 0
-#2 := false
-#13 := 0::int
-decl f4 :: (-> S2 int)
-decl f3 :: (-> int S2)
-decl f5 :: S2
-#25 := f5
-#26 := (f4 f5)
-#27 := 1::int
-#135 := (+ 1::int #26)
-#138 := (f3 #135)
-#141 := (f4 #138)
-#150 := -1::int
-#153 := (* -1::int #141)
-#154 := (+ #26 #153)
-#152 := (>= #154 0::int)
-#28 := (+ #26 1::int)
-#29 := (f3 #28)
-#30 := (f4 #29)
-#31 := (< #26 #30)
-#32 := (not #31)
-#164 := (iff #32 #152)
-#144 := (< #26 #141)
-#147 := (not #144)
-#162 := (iff #147 #152)
-#151 := (not #152)
-#157 := (not #151)
-#160 := (iff #157 #152)
-#161 := [rewrite]: #160
-#158 := (iff #147 #157)
-#155 := (iff #144 #151)
-#156 := [rewrite]: #155
-#159 := [monotonicity #156]: #158
-#163 := [trans #159 #161]: #162
-#148 := (iff #32 #147)
-#145 := (iff #31 #144)
-#142 := (= #30 #141)
-#139 := (= #29 #138)
-#136 := (= #28 #135)
-#137 := [rewrite]: #136
-#140 := [monotonicity #137]: #139
-#143 := [monotonicity #140]: #142
-#146 := [monotonicity #143]: #145
-#149 := [monotonicity #146]: #148
-#165 := [trans #149 #163]: #164
-#134 := [asserted]: #32
-#166 := [mp #134 #165]: #152
-#347 := (>= #141 0::int)
-#274 := (= #141 0::int)
-#642 := (>= #26 -1::int)
-#649 := (not #642)
-#648 := (= #154 -1::int)
-#336 := (not #648)
-#630 := (<= #154 -1::int)
-#621 := (not #630)
-#625 := (or #621 #151)
-#622 := [th-lemma]: #625
-#626 := [unit-resolution #622 #166]: #621
-#337 := (or #336 #630)
-#338 := [th-lemma]: #337
-#339 := [unit-resolution #338 #626]: #336
-#14 := (:var 0 int)
-#16 := (f3 #14)
-#662 := (pattern #16)
-#75 := (>= #14 0::int)
-#76 := (not #75)
-#17 := (f4 #16)
-#57 := (= #14 #17)
-#82 := (or #57 #76)
-#663 := (forall (vars (?v0 int)) (:pat #662) #82)
-#87 := (forall (vars (?v0 int)) #82)
-#666 := (iff #87 #663)
-#664 := (iff #82 #82)
-#665 := [refl]: #664
-#667 := [quant-intro #665]: #666
-#170 := (~ #87 #87)
-#167 := (~ #82 #82)
-#182 := [refl]: #167
-#171 := [nnf-pos #182]: #170
-#18 := (= #17 #14)
-#15 := (<= 0::int #14)
-#19 := (implies #15 #18)
-#20 := (forall (vars (?v0 int)) #19)
-#90 := (iff #20 #87)
-#64 := (not #15)
-#65 := (or #64 #57)
-#70 := (forall (vars (?v0 int)) #65)
-#88 := (iff #70 #87)
-#85 := (iff #65 #82)
-#79 := (or #76 #57)
-#83 := (iff #79 #82)
-#84 := [rewrite]: #83
-#80 := (iff #65 #79)
-#77 := (iff #64 #76)
-#73 := (iff #15 #75)
-#74 := [rewrite]: #73
-#78 := [monotonicity #74]: #77
-#81 := [monotonicity #78]: #80
-#86 := [trans #81 #84]: #85
-#89 := [quant-intro #86]: #88
-#71 := (iff #20 #70)
-#68 := (iff #19 #65)
-#61 := (implies #15 #57)
-#66 := (iff #61 #65)
-#67 := [rewrite]: #66
-#62 := (iff #19 #61)
-#59 := (iff #18 #57)
-#60 := [rewrite]: #59
-#63 := [monotonicity #60]: #62
-#69 := [trans #63 #67]: #68
-#72 := [quant-intro #69]: #71
-#91 := [trans #72 #89]: #90
-#56 := [asserted]: #20
-#92 := [mp #56 #91]: #87
-#183 := [mp~ #92 #171]: #87
-#668 := [mp #183 #667]: #663
-#645 := (not #663)
-#288 := (or #645 #649 #648)
-#330 := (>= #135 0::int)
-#331 := (not #330)
-#311 := (= #135 #141)
-#646 := (or #311 #331)
-#629 := (or #645 #646)
-#633 := (iff #629 #288)
-#643 := (or #649 #648)
-#293 := (or #645 #643)
-#631 := (iff #293 #288)
-#632 := [rewrite]: #631
-#294 := (iff #629 #293)
-#644 := (iff #646 #643)
-#652 := (or #648 #649)
-#303 := (iff #652 #643)
-#308 := [rewrite]: #303
-#647 := (iff #646 #652)
-#650 := (iff #331 #649)
-#316 := (iff #330 #642)
-#317 := [rewrite]: #316
-#651 := [monotonicity #317]: #650
-#305 := (iff #311 #648)
-#435 := [rewrite]: #305
-#653 := [monotonicity #435 #651]: #647
-#304 := [trans #653 #308]: #644
-#295 := [monotonicity #304]: #294
-#634 := [trans #295 #632]: #633
-#292 := [quant-inst]: #629
-#635 := [mp #292 #634]: #288
-#617 := [unit-resolution #635 #668 #339]: #649
-#22 := (= #17 0::int)
-#123 := (or #22 #75)
-#669 := (forall (vars (?v0 int)) (:pat #662) #123)
-#128 := (forall (vars (?v0 int)) #123)
-#672 := (iff #128 #669)
-#670 := (iff #123 #123)
-#671 := [refl]: #670
-#673 := [quant-intro #671]: #672
-#172 := (~ #128 #128)
-#184 := (~ #123 #123)
-#185 := [refl]: #184
-#173 := [nnf-pos #185]: #172
-#21 := (< #14 0::int)
-#23 := (implies #21 #22)
-#24 := (forall (vars (?v0 int)) #23)
-#131 := (iff #24 #128)
-#94 := (= 0::int #17)
-#100 := (not #21)
-#101 := (or #100 #94)
-#106 := (forall (vars (?v0 int)) #101)
-#129 := (iff #106 #128)
-#126 := (iff #101 #123)
-#120 := (or #75 #22)
-#124 := (iff #120 #123)
-#125 := [rewrite]: #124
-#121 := (iff #101 #120)
-#118 := (iff #94 #22)
-#119 := [rewrite]: #118
-#116 := (iff #100 #75)
-#111 := (not #76)
-#114 := (iff #111 #75)
-#115 := [rewrite]: #114
-#112 := (iff #100 #111)
-#109 := (iff #21 #76)
-#110 := [rewrite]: #109
-#113 := [monotonicity #110]: #112
-#117 := [trans #113 #115]: #116
-#122 := [monotonicity #117 #119]: #121
-#127 := [trans #122 #125]: #126
-#130 := [quant-intro #127]: #129
-#107 := (iff #24 #106)
-#104 := (iff #23 #101)
-#97 := (implies #21 #94)
-#102 := (iff #97 #101)
-#103 := [rewrite]: #102
-#98 := (iff #23 #97)
-#95 := (iff #22 #94)
-#96 := [rewrite]: #95
-#99 := [monotonicity #96]: #98
-#105 := [trans #99 #103]: #104
-#108 := [quant-intro #105]: #107
-#132 := [trans #108 #130]: #131
-#93 := [asserted]: #24
-#133 := [mp #93 #132]: #128
-#186 := [mp~ #133 #173]: #128
-#674 := [mp #186 #673]: #669
-#640 := (not #669)
-#638 := (or #640 #274 #642)
-#637 := (or #274 #330)
-#641 := (or #640 #637)
-#247 := (iff #641 #638)
-#639 := (or #274 #642)
-#628 := (or #640 #639)
-#352 := (iff #628 #638)
-#353 := [rewrite]: #352
-#350 := (iff #641 #628)
-#279 := (iff #637 #639)
-#280 := [monotonicity #317]: #279
-#351 := [monotonicity #280]: #350
-#623 := [trans #351 #353]: #247
-#627 := [quant-inst]: #641
-#624 := [mp #627 #623]: #638
-#618 := [unit-resolution #624 #674 #617]: #274
-#333 := (not #274)
-#615 := (or #333 #347)
-#619 := [th-lemma]: #615
-#616 := [unit-resolution #619 #618]: #347
-[th-lemma #617 #616 #166]: false
-unsat
 f572500dcd49c30edfbceabc272b009fb11814d2 428 0
 #2 := false
 decl f4 :: (-> S2 int)
@@ -10505,9 +10079,243 @@
 #393 := [unit-resolution #403 #411 #414]: #443
 [unit-resolution #393 #424]: false
 unsat
-1b539d34eedd00cd7cacdb9d650b014baeb31cd1 409 0
-#2 := false
-#181 := -1::int
+c0906c23e4b0650863a2ef0d68bafa4e06a9dd19 106 0
+#2 := false
+decl f3 :: (-> S2 S2 S1)
+decl ?v0!0 :: S2
+#72 := ?v0!0
+#83 := (f3 ?v0!0 ?v0!0)
+decl f1 :: S1
+#4 := f1
+#75 := (= f1 #83)
+#76 := (not #75)
+#9 := (:var 0 S2)
+#16 := (f3 #9 #9)
+#50 := (= f1 #16)
+#53 := (forall (vars (?v0 S2)) #50)
+#69 := (not #53)
+#84 := (~ #69 #76)
+#85 := [sk]: #84
+#8 := (:var 1 S2)
+#12 := (f3 #9 #8)
+#41 := (= f1 #12)
+#10 := (f3 #8 #9)
+#38 := (= f1 #10)
+#44 := (and #38 #41)
+#47 := (forall (vars (?v0 S2) (?v1 S2)) #44)
+#59 := (not #47)
+#60 := (or #59 #53)
+#65 := (not #60)
+#17 := (= #16 f1)
+#18 := (forall (vars (?v0 S2)) #17)
+#13 := (= #12 f1)
+#11 := (= #10 f1)
+#14 := (and #11 #13)
+#15 := (forall (vars (?v0 S2) (?v1 S2)) #14)
+#19 := (implies #15 #18)
+#20 := (not #19)
+#66 := (iff #20 #65)
+#63 := (iff #19 #60)
+#56 := (implies #47 #53)
+#61 := (iff #56 #60)
+#62 := [rewrite]: #61
+#57 := (iff #19 #56)
+#54 := (iff #18 #53)
+#51 := (iff #17 #50)
+#52 := [rewrite]: #51
+#55 := [quant-intro #52]: #54
+#48 := (iff #15 #47)
+#45 := (iff #14 #44)
+#42 := (iff #13 #41)
+#43 := [rewrite]: #42
+#39 := (iff #11 #38)
+#40 := [rewrite]: #39
+#46 := [monotonicity #40 #43]: #45
+#49 := [quant-intro #46]: #48
+#58 := [monotonicity #49 #55]: #57
+#64 := [trans #58 #62]: #63
+#67 := [monotonicity #64]: #66
+#37 := [asserted]: #20
+#70 := [mp #37 #67]: #65
+#71 := [not-or-elim #70]: #69
+#88 := [mp~ #71 #85]: #76
+#577 := (pattern #12)
+#576 := (pattern #10)
+#87 := (not #41)
+#86 := (not #38)
+#89 := (or #86 #87)
+#90 := (not #89)
+#578 := (forall (vars (?v0 S2) (?v1 S2)) (:pat #576 #577) #90)
+#93 := (forall (vars (?v0 S2) (?v1 S2)) #90)
+#581 := (iff #93 #578)
+#579 := (iff #90 #90)
+#580 := [refl]: #579
+#582 := [quant-intro #580]: #581
+#94 := (iff #47 #93)
+#91 := (iff #44 #90)
+#92 := [rewrite]: #91
+#95 := [quant-intro #92]: #94
+#81 := (~ #47 #47)
+#79 := (~ #44 #44)
+#80 := [refl]: #79
+#82 := [nnf-pos #80]: #81
+#68 := [not-or-elim #70]: #47
+#74 := [mp~ #68 #82]: #47
+#96 := [mp #74 #95]: #93
+#583 := [mp #96 #582]: #578
+#250 := (not #578)
+#254 := (or #250 #75)
+#160 := (or #76 #76)
+#247 := (not #160)
+#233 := (or #250 #247)
+#570 := (iff #233 #254)
+#357 := (iff #254 #254)
+#564 := [rewrite]: #357
+#180 := (iff #247 #75)
+#162 := (not #76)
+#251 := (iff #162 #75)
+#252 := [rewrite]: #251
+#249 := (iff #247 #162)
+#161 := (iff #160 #76)
+#248 := [rewrite]: #161
+#240 := [monotonicity #248]: #249
+#253 := [trans #240 #252]: #180
+#227 := [monotonicity #253]: #570
+#238 := [trans #227 #564]: #570
+#568 := [quant-inst]: #233
+#239 := [mp #568 #238]: #254
+[unit-resolution #239 #583 #88]: false
+unsat
+58aaefc3b25d8181c01a2139430686aeca861bf3 66 0
+#2 := false
+decl f4 :: S1
+#10 := f4
+decl f1 :: S1
+#4 := f1
+#37 := (= f1 f4)
+decl f3 :: S1
+#8 := f3
+#34 := (= f1 f3)
+#40 := (or #34 #37)
+#84 := (iff #40 false)
+#79 := (or false false)
+#82 := (iff #79 false)
+#83 := [rewrite]: #82
+#80 := (iff #40 #79)
+#75 := (iff #37 false)
+#66 := (not #37)
+#43 := (not #34)
+#49 := (and #43 #40)
+#57 := (not #49)
+#58 := (or #37 #57)
+#63 := (not #58)
+#11 := (= f4 f1)
+#9 := (= f3 f1)
+#13 := (not #9)
+#12 := (or #9 #11)
+#14 := (and #12 #13)
+#15 := (implies #14 #11)
+#16 := (not #15)
+#64 := (iff #16 #63)
+#61 := (iff #15 #58)
+#54 := (implies #49 #37)
+#59 := (iff #54 #58)
+#60 := [rewrite]: #59
+#55 := (iff #15 #54)
+#38 := (iff #11 #37)
+#39 := [rewrite]: #38
+#52 := (iff #14 #49)
+#46 := (and #40 #43)
+#50 := (iff #46 #49)
+#51 := [rewrite]: #50
+#47 := (iff #14 #46)
+#44 := (iff #13 #43)
+#35 := (iff #9 #34)
+#36 := [rewrite]: #35
+#45 := [monotonicity #36]: #44
+#41 := (iff #12 #40)
+#42 := [monotonicity #36 #39]: #41
+#48 := [monotonicity #42 #45]: #47
+#53 := [trans #48 #51]: #52
+#56 := [monotonicity #53 #39]: #55
+#62 := [trans #56 #60]: #61
+#65 := [monotonicity #62]: #64
+#33 := [asserted]: #16
+#68 := [mp #33 #65]: #63
+#67 := [not-or-elim #68]: #66
+#76 := [iff-false #67]: #75
+#77 := (iff #34 false)
+#69 := [not-or-elim #68]: #49
+#70 := [and-elim #69]: #43
+#78 := [iff-false #70]: #77
+#81 := [monotonicity #78 #76]: #80
+#85 := [trans #81 #83]: #84
+#71 := [and-elim #69]: #40
+[mp #71 #85]: false
+unsat
+d80d7bb97197c962c0b81d44c7a8cfd617b6ca33 59 0
+#2 := false
+decl f1 :: S1
+#4 := f1
+decl f6 :: S1
+#15 := f6
+#16 := (= f6 f1)
+decl f5 :: S1
+#13 := f5
+#14 := (= f5 f1)
+#17 := (and #14 #16)
+decl f4 :: S1
+#10 := f4
+#11 := (= f4 f1)
+decl f3 :: S1
+#8 := f3
+#9 := (= f3 f1)
+#12 := (and #9 #11)
+#18 := (or #12 #17)
+#19 := (implies #18 #18)
+#20 := (not #19)
+#71 := (iff #20 false)
+#1 := true
+#66 := (not true)
+#69 := (iff #66 false)
+#70 := [rewrite]: #69
+#67 := (iff #20 #66)
+#64 := (iff #19 true)
+#50 := (= f1 f6)
+#47 := (= f1 f5)
+#53 := (and #47 #50)
+#41 := (= f1 f4)
+#38 := (= f1 f3)
+#44 := (and #38 #41)
+#56 := (or #44 #53)
+#59 := (implies #56 #56)
+#62 := (iff #59 true)
+#63 := [rewrite]: #62
+#60 := (iff #19 #59)
+#57 := (iff #18 #56)
+#54 := (iff #17 #53)
+#51 := (iff #16 #50)
+#52 := [rewrite]: #51
+#48 := (iff #14 #47)
+#49 := [rewrite]: #48
+#55 := [monotonicity #49 #52]: #54
+#45 := (iff #12 #44)
+#42 := (iff #11 #41)
+#43 := [rewrite]: #42
+#39 := (iff #9 #38)
+#40 := [rewrite]: #39
+#46 := [monotonicity #40 #43]: #45
+#58 := [monotonicity #46 #55]: #57
+#61 := [monotonicity #58 #58]: #60
+#65 := [trans #61 #63]: #64
+#68 := [monotonicity #65]: #67
+#72 := [trans #68 #70]: #71
+#37 := [asserted]: #20
+[mp #37 #72]: false
+unsat
+5682ca831360f99dba925cc3023ce41a2bdd0f63 364 0
+#2 := false
+#13 := 0::int
 decl f4 :: (-> S2 int)
 decl f3 :: (-> int S2)
 decl f6 :: S2
@@ -10517,403 +10325,358 @@
 #25 := f5
 #26 := (f4 f5)
 #29 := (+ #26 #28)
+#161 := 2::int
+#162 := (+ 2::int #29)
+#167 := (f3 #162)
+#170 := (f4 #167)
+#179 := -1::int
+#182 := (* -1::int #170)
 #30 := 1::int
-#145 := (+ 1::int #29)
-#148 := (f3 #145)
-#151 := (f4 #148)
-#676 := (* -1::int #151)
-#336 := (+ #28 #676)
-#341 := (+ #26 #336)
-#280 := (>= #341 -1::int)
-#426 := (not #280)
-#163 := (+ 1::int #28)
-#166 := (f3 #163)
-#169 := (f4 #166)
-#185 := (* -1::int #169)
-#602 := (+ #28 #185)
-#574 := (<= #602 -1::int)
-#612 := (= #602 -1::int)
-#610 := (>= #28 -1::int)
-#13 := 0::int
-#554 := (>= #28 0::int)
-#479 := (= #28 0::int)
-#274 := (f3 #28)
-#557 := (f4 #274)
-#535 := (= #557 0::int)
-#462 := (not #554)
-#458 := [hypothesis]: #462
-#536 := (or #535 #554)
+#143 := (+ 1::int #29)
+#146 := (f3 #143)
+#149 := (f4 #146)
+#183 := (+ #149 #182)
+#181 := (>= #183 0::int)
+#35 := (+ #28 1::int)
+#34 := (+ #26 1::int)
+#36 := (+ #34 #35)
+#37 := (f3 #36)
+#38 := (f4 #37)
+#31 := (+ #29 1::int)
+#32 := (f3 #31)
+#33 := (f4 #32)
+#39 := (< #33 #38)
+#40 := (not #39)
+#193 := (iff #40 #181)
+#173 := (< #149 #170)
+#176 := (not #173)
+#191 := (iff #176 #181)
+#180 := (not #181)
+#186 := (not #180)
+#189 := (iff #186 #181)
+#190 := [rewrite]: #189
+#187 := (iff #176 #186)
+#184 := (iff #173 #180)
+#185 := [rewrite]: #184
+#188 := [monotonicity #185]: #187
+#192 := [trans #188 #190]: #191
+#177 := (iff #40 #176)
+#174 := (iff #39 #173)
+#171 := (= #38 #170)
+#168 := (= #37 #167)
+#165 := (= #36 #162)
+#155 := (+ 1::int #28)
+#152 := (+ 1::int #26)
+#158 := (+ #152 #155)
+#163 := (= #158 #162)
+#164 := [rewrite]: #163
+#159 := (= #36 #158)
+#156 := (= #35 #155)
+#157 := [rewrite]: #156
+#153 := (= #34 #152)
+#154 := [rewrite]: #153
+#160 := [monotonicity #154 #157]: #159
+#166 := [trans #160 #164]: #165
+#169 := [monotonicity #166]: #168
+#172 := [monotonicity #169]: #171
+#150 := (= #33 #149)
+#147 := (= #32 #146)
+#144 := (= #31 #143)
+#145 := [rewrite]: #144
+#148 := [monotonicity #145]: #147
+#151 := [monotonicity #148]: #150
+#175 := [monotonicity #151 #172]: #174
+#178 := [monotonicity #175]: #177
+#194 := [trans #178 #192]: #193
+#142 := [asserted]: #40
+#195 := [mp #142 #194]: #181
+#637 := -2::int
+#641 := (+ #28 #182)
+#642 := (+ #26 #641)
+#517 := (<= #642 -2::int)
+#643 := (= #642 -2::int)
+#486 := (>= #29 -2::int)
+#337 := (>= #29 -1::int)
+#606 := (>= #26 0::int)
+#577 := (= #26 0::int)
+#269 := (f3 #26)
+#611 := (f4 #269)
+#600 := (= #611 0::int)
+#562 := (not #606)
+#563 := [hypothesis]: #562
+#601 := (or #600 #606)
 #14 := (:var 0 int)
 #16 := (f3 #14)
-#695 := (pattern #16)
-#85 := (>= #14 0::int)
+#691 := (pattern #16)
+#83 := (>= #14 0::int)
 #17 := (f4 #16)
 #22 := (= #17 0::int)
-#133 := (or #22 #85)
-#702 := (forall (vars (?v0 int)) (:pat #695) #133)
-#138 := (forall (vars (?v0 int)) #133)
-#705 := (iff #138 #702)
-#703 := (iff #133 #133)
-#704 := [refl]: #703
-#706 := [quant-intro #704]: #705
-#205 := (~ #138 #138)
-#217 := (~ #133 #133)
-#218 := [refl]: #217
-#206 := [nnf-pos #218]: #205
+#131 := (or #22 #83)
+#698 := (forall (vars (?v0 int)) (:pat #691) #131)
+#136 := (forall (vars (?v0 int)) #131)
+#701 := (iff #136 #698)
+#699 := (iff #131 #131)
+#700 := [refl]: #699
+#702 := [quant-intro #700]: #701
+#201 := (~ #136 #136)
+#213 := (~ #131 #131)
+#214 := [refl]: #213
+#202 := [nnf-pos #214]: #201
 #21 := (< #14 0::int)
 #23 := (implies #21 #22)
 #24 := (forall (vars (?v0 int)) #23)
-#141 := (iff #24 #138)
-#104 := (= 0::int #17)
-#110 := (not #21)
-#111 := (or #110 #104)
-#116 := (forall (vars (?v0 int)) #111)
-#139 := (iff #116 #138)
-#136 := (iff #111 #133)
-#130 := (or #85 #22)
-#134 := (iff #130 #133)
-#135 := [rewrite]: #134
-#131 := (iff #111 #130)
-#128 := (iff #104 #22)
-#129 := [rewrite]: #128
-#126 := (iff #110 #85)
-#86 := (not #85)
-#121 := (not #86)
-#124 := (iff #121 #85)
-#125 := [rewrite]: #124
-#122 := (iff #110 #121)
-#119 := (iff #21 #86)
-#120 := [rewrite]: #119
-#123 := [monotonicity #120]: #122
-#127 := [trans #123 #125]: #126
-#132 := [monotonicity #127 #129]: #131
-#137 := [trans #132 #135]: #136
-#140 := [quant-intro #137]: #139
-#117 := (iff #24 #116)
-#114 := (iff #23 #111)
-#107 := (implies #21 #104)
-#112 := (iff #107 #111)
-#113 := [rewrite]: #112
-#108 := (iff #23 #107)
-#105 := (iff #22 #104)
-#106 := [rewrite]: #105
-#109 := [monotonicity #106]: #108
-#115 := [trans #109 #113]: #114
-#118 := [quant-intro #115]: #117
-#142 := [trans #118 #140]: #141
-#103 := [asserted]: #24
-#143 := [mp #103 #142]: #138
-#219 := [mp~ #143 #206]: #138
-#707 := [mp #219 #706]: #702
-#371 := (not #702)
-#541 := (or #371 #535 #554)
-#542 := (or #371 #536)
-#543 := (iff #542 #541)
-#544 := [rewrite]: #543
-#547 := [quant-inst]: #542
-#545 := [mp #547 #544]: #541
-#463 := [unit-resolution #545 #707]: #536
-#442 := [unit-resolution #463 #458]: #535
-#449 := (= #28 #557)
-#359 := (= f6 #274)
+#139 := (iff #24 #136)
+#102 := (= 0::int #17)
+#108 := (not #21)
+#109 := (or #108 #102)
+#114 := (forall (vars (?v0 int)) #109)
+#137 := (iff #114 #136)
+#134 := (iff #109 #131)
+#128 := (or #83 #22)
+#132 := (iff #128 #131)
+#133 := [rewrite]: #132
+#129 := (iff #109 #128)
+#126 := (iff #102 #22)
+#127 := [rewrite]: #126
+#124 := (iff #108 #83)
+#84 := (not #83)
+#119 := (not #84)
+#122 := (iff #119 #83)
+#123 := [rewrite]: #122
+#120 := (iff #108 #119)
+#117 := (iff #21 #84)
+#118 := [rewrite]: #117
+#121 := [monotonicity #118]: #120
+#125 := [trans #121 #123]: #124
+#130 := [monotonicity #125 #127]: #129
+#135 := [trans #130 #133]: #134
+#138 := [quant-intro #135]: #137
+#115 := (iff #24 #114)
+#112 := (iff #23 #109)
+#105 := (implies #21 #102)
+#110 := (iff #105 #109)
+#111 := [rewrite]: #110
+#106 := (iff #23 #105)
+#103 := (iff #22 #102)
+#104 := [rewrite]: #103
+#107 := [monotonicity #104]: #106
+#113 := [trans #107 #111]: #112
+#116 := [quant-intro #113]: #115
+#140 := [trans #116 #138]: #139
+#101 := [asserted]: #24
+#141 := [mp #101 #140]: #136
+#215 := [mp~ #141 #202]: #136
+#703 := [mp #215 #702]: #698
+#651 := (not #698)
+#597 := (or #651 #600 #606)
+#604 := (or #651 #601)
+#589 := (iff #604 #597)
+#591 := [rewrite]: #589
+#588 := [quant-inst]: #604
+#592 := [mp #588 #591]: #597
+#564 := [unit-resolution #592 #703]: #601
+#565 := [unit-resolution #564 #563]: #600
+#566 := (= #26 #611)
+#354 := (= f5 #269)
 #8 := (:var 0 S2)
 #9 := (f4 #8)
-#687 := (pattern #9)
+#683 := (pattern #9)
 #10 := (f3 #9)
-#60 := (= #8 #10)
-#688 := (forall (vars (?v0 S2)) (:pat #687) #60)
-#63 := (forall (vars (?v0 S2)) #60)
-#689 := (iff #63 #688)
-#691 := (iff #688 #688)
-#692 := [rewrite]: #691
-#690 := [rewrite]: #689
-#693 := [trans #690 #692]: #689
-#213 := (~ #63 #63)
-#211 := (~ #60 #60)
-#212 := [refl]: #211
-#214 := [nnf-pos #212]: #213
+#58 := (= #8 #10)
+#684 := (forall (vars (?v0 S2)) (:pat #683) #58)
+#61 := (forall (vars (?v0 S2)) #58)
+#685 := (iff #61 #684)
+#687 := (iff #684 #684)
+#688 := [rewrite]: #687
+#686 := [rewrite]: #685
+#689 := [trans #686 #688]: #685
+#209 := (~ #61 #61)
+#207 := (~ #58 #58)
+#208 := [refl]: #207
+#210 := [nnf-pos #208]: #209
 #11 := (= #10 #8)
 #12 := (forall (vars (?v0 S2)) #11)
-#64 := (iff #12 #63)
-#61 := (iff #11 #60)
-#62 := [rewrite]: #61
-#65 := [quant-intro #62]: #64
-#59 := [asserted]: #12
-#68 := [mp #59 #65]: #63
-#202 := [mp~ #68 #214]: #63
-#694 := [mp #202 #693]: #688
-#360 := (not #688)
-#361 := (or #360 #359)
-#365 := [quant-inst]: #361
-#445 := [unit-resolution #365 #694]: #359
-#451 := [monotonicity #445]: #449
-#452 := [trans #451 #442]: #479
-#450 := (not #479)
-#453 := (or #450 #554)
-#441 := [th-lemma]: #453
-#444 := [unit-resolution #441 #458 #452]: false
-#446 := [lemma #444]: #554
-#304 := (or #462 #610)
-#447 := [th-lemma]: #304
-#443 := [unit-resolution #447 #446]: #610
-#605 := (not #610)
-#593 := (or #605 #612)
-#67 := (= #14 #17)
-#92 := (or #67 #86)
-#696 := (forall (vars (?v0 int)) (:pat #695) #92)
-#97 := (forall (vars (?v0 int)) #92)
-#699 := (iff #97 #696)
-#697 := (iff #92 #92)
-#698 := [refl]: #697
-#700 := [quant-intro #698]: #699
-#203 := (~ #97 #97)
-#200 := (~ #92 #92)
-#215 := [refl]: #200
-#204 := [nnf-pos #215]: #203
+#62 := (iff #12 #61)
+#59 := (iff #11 #58)
+#60 := [rewrite]: #59
+#63 := [quant-intro #60]: #62
+#57 := [asserted]: #12
+#66 := [mp #57 #63]: #61
+#198 := [mp~ #66 #210]: #61
+#690 := [mp #198 #689]: #684
+#356 := (not #684)
+#347 := (or #356 #354)
+#358 := [quant-inst]: #347
+#560 := [unit-resolution #358 #690]: #354
+#552 := [monotonicity #560]: #566
+#548 := [trans #552 #565]: #577
+#549 := (not #577)
+#550 := (or #549 #606)
+#553 := [th-lemma]: #550
+#554 := [unit-resolution #553 #563 #548]: false
+#555 := [lemma #554]: #606
+#602 := (>= #28 0::int)
+#578 := (= #28 0::int)
+#270 := (f3 #28)
+#603 := (f4 #270)
+#593 := (= #603 0::int)
+#551 := (not #602)
+#557 := [hypothesis]: #551
+#594 := (or #593 #602)
+#581 := (or #651 #593 #602)
+#582 := (or #651 #594)
+#585 := (iff #582 #581)
+#586 := [rewrite]: #585
+#584 := [quant-inst]: #582
+#583 := [mp #584 #586]: #581
+#530 := [unit-resolution #583 #703]: #594
+#531 := [unit-resolution #530 #557]: #593
+#425 := (= #28 #603)
+#355 := (= f6 #270)
+#357 := (or #356 #355)
+#361 := [quant-inst]: #357
+#532 := [unit-resolution #361 #690]: #355
+#536 := [monotonicity #532]: #425
+#537 := [trans #536 #531]: #578
+#538 := (not #578)
+#543 := (or #538 #602)
+#539 := [th-lemma]: #543
+#540 := [unit-resolution #539 #557 #537]: false
+#541 := [lemma #540]: #602
+#556 := (or #551 #562 #337)
+#544 := [th-lemma]: #556
+#545 := [unit-resolution #544 #541 #555]: #337
+#674 := (not #337)
+#546 := (or #674 #486)
+#542 := [th-lemma]: #546
+#547 := [unit-resolution #542 #545]: #486
+#630 := (not #486)
+#627 := (or #630 #643)
+#65 := (= #14 #17)
+#90 := (or #65 #84)
+#692 := (forall (vars (?v0 int)) (:pat #691) #90)
+#95 := (forall (vars (?v0 int)) #90)
+#695 := (iff #95 #692)
+#693 := (iff #90 #90)
+#694 := [refl]: #693
+#696 := [quant-intro #694]: #695
+#199 := (~ #95 #95)
+#196 := (~ #90 #90)
+#211 := [refl]: #196
+#200 := [nnf-pos #211]: #199
 #18 := (= #17 #14)
 #15 := (<= 0::int #14)
 #19 := (implies #15 #18)
 #20 := (forall (vars (?v0 int)) #19)
-#100 := (iff #20 #97)
-#74 := (not #15)
-#75 := (or #74 #67)
-#80 := (forall (vars (?v0 int)) #75)
-#98 := (iff #80 #97)
-#95 := (iff #75 #92)
-#89 := (or #86 #67)
-#93 := (iff #89 #92)
-#94 := [rewrite]: #93
-#90 := (iff #75 #89)
-#87 := (iff #74 #86)
-#83 := (iff #15 #85)
-#84 := [rewrite]: #83
-#88 := [monotonicity #84]: #87
-#91 := [monotonicity #88]: #90
-#96 := [trans #91 #94]: #95
-#99 := [quant-intro #96]: #98
-#81 := (iff #20 #80)
-#78 := (iff #19 #75)
-#71 := (implies #15 #67)
-#76 := (iff #71 #75)
-#77 := [rewrite]: #76
-#72 := (iff #19 #71)
-#69 := (iff #18 #67)
-#70 := [rewrite]: #69
-#73 := [monotonicity #70]: #72
-#79 := [trans #73 #77]: #78
-#82 := [quant-intro #79]: #81
-#101 := [trans #82 #99]: #100
-#66 := [asserted]: #20
-#102 := [mp #66 #101]: #97
-#216 := [mp~ #102 #204]: #97
-#701 := [mp #216 #700]: #696
-#670 := (not #696)
-#594 := (or #670 #605 #612)
-#609 := (>= #163 0::int)
-#611 := (not #609)
-#603 := (= #163 #169)
-#600 := (or #603 #611)
-#599 := (or #670 #600)
-#591 := (iff #599 #594)
-#586 := (or #670 #593)
-#590 := (iff #586 #594)
-#587 := [rewrite]: #590
-#588 := (iff #599 #586)
-#597 := (iff #600 #593)
-#601 := (or #612 #605)
-#595 := (iff #601 #593)
-#596 := [rewrite]: #595
-#608 := (iff #600 #601)
-#606 := (iff #611 #605)
-#615 := (iff #609 #610)
-#604 := [rewrite]: #615
-#607 := [monotonicity #604]: #606
-#613 := (iff #603 #612)
-#614 := [rewrite]: #613
-#592 := [monotonicity #614 #607]: #608
-#598 := [trans #592 #596]: #597
-#589 := [monotonicity #598]: #588
-#571 := [trans #589 #587]: #591
-#585 := [quant-inst]: #599
-#572 := [mp #585 #571]: #594
-#448 := [unit-resolution #572 #701]: #593
-#438 := [unit-resolution #448 #443]: #612
-#428 := (not #612)
-#430 := (or #428 #574)
-#431 := [th-lemma]: #430
-#434 := [unit-resolution #431 #438]: #574
-#154 := (+ 1::int #26)
-#157 := (f3 #154)
-#160 := (f4 #157)
-#184 := (* -1::int #160)
-#488 := (+ #26 #184)
-#512 := (<= #488 -1::int)
-#489 := (= #488 -1::int)
-#633 := (>= #26 -1::int)
-#570 := (>= #26 0::int)
-#478 := (= #26 0::int)
-#273 := (f3 #26)
-#556 := (f4 #273)
-#552 := (= #556 0::int)
-#480 := (not #570)
-#481 := [hypothesis]: #480
-#553 := (or #552 #570)
-#558 := (or #371 #552 #570)
-#559 := (or #371 #553)
-#555 := (iff #559 #558)
-#561 := [rewrite]: #555
-#560 := [quant-inst]: #559
-#534 := [mp #560 #561]: #558
-#482 := [unit-resolution #534 #707]: #553
-#483 := [unit-resolution #482 #481]: #552
-#484 := (= #26 #556)
-#358 := (= f5 #273)
-#351 := (or #360 #358)
-#362 := [quant-inst]: #351
-#466 := [unit-resolution #362 #694]: #358
-#454 := [monotonicity #466]: #484
-#455 := [trans #454 #483]: #478
-#456 := (not #478)
-#457 := (or #456 #570)
-#459 := [th-lemma]: #457
-#460 := [unit-resolution #459 #481 #455]: false
-#461 := [lemma #460]: #570
-#435 := (or #480 #633)
-#439 := [th-lemma]: #435
-#432 := [unit-resolution #439 #461]: #633
-#629 := (not #633)
-#637 := (or #489 #629)
-#467 := (or #670 #489 #629)
-#645 := (>= #154 0::int)
-#646 := (not #645)
-#641 := (= #154 #160)
-#647 := (or #641 #646)
-#469 := (or #670 #647)
-#628 := (iff #469 #467)
-#623 := (or #670 #637)
-#627 := (iff #623 #467)
-#625 := [rewrite]: #627
-#624 := (iff #469 #623)
-#631 := (iff #647 #637)
-#630 := (iff #646 #629)
-#634 := (iff #645 #633)
-#635 := [rewrite]: #634
-#636 := [monotonicity #635]: #630
-#490 := (iff #641 #489)
-#632 := [rewrite]: #490
-#638 := [monotonicity #632 #636]: #631
-#626 := [monotonicity #638]: #624
-#510 := [trans #626 #625]: #628
-#470 := [quant-inst]: #469
-#511 := [mp #470 #510]: #467
-#440 := [unit-resolution #511 #701]: #637
-#433 := [unit-resolution #440 #432]: #489
-#436 := (not #489)
-#437 := (or #436 #512)
-#423 := [th-lemma]: #437
-#425 := [unit-resolution #423 #433]: #512
-#186 := (+ #184 #185)
-#187 := (+ #151 #186)
-#183 := (>= #187 0::int)
-#37 := (+ #28 1::int)
-#38 := (f3 #37)
-#39 := (f4 #38)
-#34 := (+ #26 1::int)
-#35 := (f3 #34)
-#36 := (f4 #35)
-#40 := (+ #36 #39)
-#31 := (+ #29 1::int)
-#32 := (f3 #31)
-#33 := (f4 #32)
-#41 := (< #33 #40)
-#42 := (not #41)
-#197 := (iff #42 #183)
-#172 := (+ #160 #169)
-#175 := (< #151 #172)
-#178 := (not #175)
-#195 := (iff #178 #183)
-#182 := (not #183)
-#190 := (not #182)
-#193 := (iff #190 #183)
-#194 := [rewrite]: #193
-#191 := (iff #178 #190)
-#188 := (iff #175 #182)
-#189 := [rewrite]: #188
-#192 := [monotonicity #189]: #191
-#196 := [trans #192 #194]: #195
-#179 := (iff #42 #178)
-#176 := (iff #41 #175)
-#173 := (= #40 #172)
-#170 := (= #39 #169)
-#167 := (= #38 #166)
-#164 := (= #37 #163)
-#165 := [rewrite]: #164
-#168 := [monotonicity #165]: #167
-#171 := [monotonicity #168]: #170
-#161 := (= #36 #160)
-#158 := (= #35 #157)
-#155 := (= #34 #154)
-#156 := [rewrite]: #155
-#159 := [monotonicity #156]: #158
-#162 := [monotonicity #159]: #161
-#174 := [monotonicity #162 #171]: #173
-#152 := (= #33 #151)
-#149 := (= #32 #148)
-#146 := (= #31 #145)
-#147 := [rewrite]: #146
-#150 := [monotonicity #147]: #149
-#153 := [monotonicity #150]: #152
-#177 := [monotonicity #153 #174]: #176
-#180 := [monotonicity #177]: #179
-#198 := [trans #180 #196]: #197
-#144 := [asserted]: #42
-#199 := [mp #144 #198]: #183
-#427 := (not #574)
-#424 := (not #512)
-#409 := (or #426 #182 #424 #427)
-#411 := [th-lemma]: #409
-#412 := [unit-resolution #411 #199 #425 #434]: #426
-#677 := (= #341 -1::int)
-#321 := (>= #29 -1::int)
-#413 := (or #321 #629 #462)
-#414 := [th-lemma]: #413
-#415 := [unit-resolution #414 #432 #446]: #321
-#326 := (not #321)
-#667 := (or #326 #677)
-#672 := (or #670 #326 #677)
-#682 := (>= #145 0::int)
-#683 := (not #682)
-#680 := (= #145 #151)
-#686 := (or #680 #683)
-#312 := (or #670 #686)
-#383 := (iff #312 #672)
-#673 := (or #670 #667)
-#660 := (iff #673 #672)
+#98 := (iff #20 #95)
+#72 := (not #15)
+#73 := (or #72 #65)
+#78 := (forall (vars (?v0 int)) #73)
+#96 := (iff #78 #95)
+#93 := (iff #73 #90)
+#87 := (or #84 #65)
+#91 := (iff #87 #90)
+#92 := [rewrite]: #91
+#88 := (iff #73 #87)
+#85 := (iff #72 #84)
+#81 := (iff #15 #83)
+#82 := [rewrite]: #81
+#86 := [monotonicity #82]: #85
+#89 := [monotonicity #86]: #88
+#94 := [trans #89 #92]: #93
+#97 := [quant-intro #94]: #96
+#79 := (iff #20 #78)
+#76 := (iff #19 #73)
+#69 := (implies #15 #65)
+#74 := (iff #69 #73)
+#75 := [rewrite]: #74
+#70 := (iff #19 #69)
+#67 := (iff #18 #65)
+#68 := [rewrite]: #67
+#71 := [monotonicity #68]: #70
+#77 := [trans #71 #75]: #76
+#80 := [quant-intro #77]: #79
+#99 := [trans #80 #97]: #98
+#64 := [asserted]: #20
+#100 := [mp #64 #99]: #95
+#212 := [mp~ #100 #200]: #95
+#697 := [mp #212 #696]: #692
+#664 := (not #692)
+#619 := (or #664 #630 #643)
+#639 := (>= #162 0::int)
+#640 := (not #639)
+#635 := (= #162 #170)
+#636 := (or #635 #640)
+#620 := (or #664 #636)
+#508 := (iff #620 #619)
+#623 := (or #664 #627)
+#506 := (iff #623 #619)
+#507 := [rewrite]: #506
+#621 := (iff #620 #623)
+#465 := (iff #636 #627)
+#626 := (or #643 #630)
+#634 := (iff #626 #627)
+#463 := [rewrite]: #634
+#632 := (iff #636 #626)
+#631 := (iff #640 #630)
+#628 := (iff #639 #486)
+#629 := [rewrite]: #628
+#625 := [monotonicity #629]: #631
+#484 := (iff #635 #643)
+#485 := [rewrite]: #484
+#633 := [monotonicity #485 #625]: #632
+#466 := [trans #633 #463]: #465
+#624 := [monotonicity #466]: #621
+#467 := [trans #624 #507]: #508
+#622 := [quant-inst]: #620
+#615 := [mp #622 #467]: #619
+#527 := [unit-resolution #615 #697]: #627
+#473 := [unit-resolution #527 #547]: #643
+#528 := (not #643)
+#509 := (or #528 #517)
+#533 := [th-lemma]: #509
+#534 := [unit-resolution #533 #473]: #517
+#680 := (* -1::int #149)
+#681 := (+ #28 #680)
+#676 := (+ #26 #681)
+#379 := (>= #676 -1::int)
+#682 := (= #676 -1::int)
+#324 := (or #674 #682)
+#659 := (or #664 #674 #682)
+#464 := (>= #143 0::int)
+#671 := (not #464)
+#678 := (= #143 #149)
+#679 := (or #678 #671)
+#665 := (or #664 #679)
+#667 := (iff #665 #659)
+#666 := (or #664 #324)
+#309 := (iff #666 #659)
+#669 := [rewrite]: #309
+#668 := (iff #665 #666)
+#662 := (iff #679 #324)
+#321 := (or #682 #674)
+#660 := (iff #321 #324)
 #661 := [rewrite]: #660
-#671 := (iff #312 #673)
-#669 := (iff #686 #667)
-#664 := (or #677 #326)
-#668 := (iff #664 #667)
-#663 := [rewrite]: #668
-#665 := (iff #686 #664)
-#327 := (iff #683 #326)
-#662 := (iff #682 #321)
-#325 := [rewrite]: #662
-#328 := [monotonicity #325]: #327
-#337 := (iff #680 #677)
-#678 := [rewrite]: #337
-#666 := [monotonicity #678 #328]: #665
-#307 := [trans #666 #663]: #669
-#674 := [monotonicity #307]: #671
-#384 := [trans #674 #661]: #383
-#313 := [quant-inst]: #312
-#385 := [mp #313 #384]: #672
-#416 := [unit-resolution #385 #701]: #667
-#417 := [unit-resolution #416 #415]: #677
-#418 := (not #677)
-#419 := (or #418 #280)
-#420 := [th-lemma]: #419
-[unit-resolution #420 #417 #412]: false
+#322 := (iff #679 #321)
+#317 := (iff #671 #674)
+#673 := (iff #464 #337)
+#333 := [rewrite]: #673
+#658 := [monotonicity #333]: #317
+#672 := (iff #678 #682)
+#332 := [rewrite]: #672
+#323 := [monotonicity #332 #658]: #322
+#663 := [trans #323 #661]: #662
+#308 := [monotonicity #663]: #668
+#670 := [trans #308 #669]: #667
+#303 := [quant-inst]: #665
+#656 := [mp #303 #670]: #659
+#529 := [unit-resolution #656 #697]: #324
+#535 := [unit-resolution #529 #545]: #682
+#503 := (not #682)
+#510 := (or #503 #379)
+#469 := [th-lemma]: #510
+#500 := [unit-resolution #469 #535]: #379
+[th-lemma #500 #534 #195]: false
 unsat
 b265c055659e0ea1b48e0304606789db36e05540 60 0
 #2 := false
@@ -11075,6 +10838,67 @@
 #136 := [asserted]: #34
 [mp #136 #154]: false
 unsat
+b04995911f57617d06c9591edf349edadf325b74 60 0
+#2 := false
+decl f3 :: (-> int S2)
+decl f4 :: (-> S2 int)
+decl f5 :: S2
+#25 := f5
+#26 := (f4 f5)
+#135 := (f3 #26)
+#141 := (= f5 #135)
+#146 := (not #141)
+#13 := 0::int
+#27 := (- #26 0::int)
+#28 := (f3 #27)
+#29 := (= #28 f5)
+#30 := (not #29)
+#147 := (iff #30 #146)
+#144 := (iff #29 #141)
+#138 := (= #135 f5)
+#142 := (iff #138 #141)
+#143 := [rewrite]: #142
+#139 := (iff #29 #138)
+#136 := (= #28 #135)
+#133 := (= #27 #26)
+#134 := [rewrite]: #133
+#137 := [monotonicity #134]: #136
+#140 := [monotonicity #137]: #139
+#145 := [trans #140 #143]: #144
+#148 := [monotonicity #145]: #147
+#132 := [asserted]: #30
+#151 := [mp #132 #148]: #146
+#8 := (:var 0 S2)
+#9 := (f4 #8)
+#639 := (pattern #9)
+#10 := (f3 #9)
+#48 := (= #8 #10)
+#640 := (forall (vars (?v0 S2)) (:pat #639) #48)
+#51 := (forall (vars (?v0 S2)) #48)
+#641 := (iff #51 #640)
+#643 := (iff #640 #640)
+#644 := [rewrite]: #643
+#642 := [rewrite]: #641
+#645 := [trans #642 #644]: #641
+#163 := (~ #51 #51)
+#161 := (~ #48 #48)
+#162 := [refl]: #161
+#164 := [nnf-pos #162]: #163
+#11 := (= #10 #8)
+#12 := (forall (vars (?v0 S2)) #11)
+#52 := (iff #12 #51)
+#49 := (iff #11 #48)
+#50 := [rewrite]: #49
+#53 := [quant-intro #50]: #52
+#47 := [asserted]: #12
+#56 := [mp #47 #53]: #51
+#152 := [mp~ #56 #164]: #51
+#646 := [mp #152 #645]: #640
+#224 := (not #640)
+#310 := (or #224 #141)
+#311 := [quant-inst]: #310
+[unit-resolution #311 #646 #151]: false
+unsat
 b5b340366dfb8289e173cd594b95953e97e705ac 42 0
 #2 := false
 decl f3 :: (-> int S2)
@@ -11118,6 +10942,186 @@
 #140 := [asserted]: #38
 [mp #140 #158]: false
 unsat
+2a686ca258d75e408aba2310eab7bfde718856c5 179 0
+#2 := false
+decl f3 :: (-> int S2)
+decl f4 :: (-> S2 int)
+decl f6 :: S2
+#27 := f6
+#28 := (f4 f6)
+#138 := -1::int
+#139 := (* -1::int #28)
+decl f5 :: S2
+#25 := f5
+#26 := (f4 f5)
+#140 := (+ #26 #139)
+#143 := (f3 #140)
+#13 := 0::int
+#32 := (f3 0::int)
+#149 := (= #32 #143)
+#649 := (f4 #143)
+#597 := (f3 #649)
+#596 := (= #597 #143)
+#499 := (= #143 #597)
+#8 := (:var 0 S2)
+#9 := (f4 #8)
+#665 := (pattern #9)
+#10 := (f3 #9)
+#53 := (= #8 #10)
+#666 := (forall (vars (?v0 S2)) (:pat #665) #53)
+#56 := (forall (vars (?v0 S2)) #53)
+#667 := (iff #56 #666)
+#669 := (iff #666 #666)
+#670 := [rewrite]: #669
+#668 := [rewrite]: #667
+#671 := [trans #668 #670]: #667
+#192 := (~ #56 #56)
+#190 := (~ #53 #53)
+#191 := [refl]: #190
+#193 := [nnf-pos #191]: #192
+#11 := (= #10 #8)
+#12 := (forall (vars (?v0 S2)) #11)
+#57 := (iff #12 #56)
+#54 := (iff #11 #53)
+#55 := [rewrite]: #54
+#58 := [quant-intro #55]: #57
+#52 := [asserted]: #12
+#61 := [mp #52 #58]: #56
+#179 := [mp~ #61 #193]: #56
+#672 := [mp #179 #671]: #666
+#338 := (not #666)
+#502 := (or #338 #499)
+#503 := [quant-inst]: #502
+#501 := [unit-resolution #503 #672]: #499
+#600 := [symm #501]: #596
+#506 := (= #32 #597)
+#504 := (= 0::int #649)
+#622 := (= #649 0::int)
+#161 := (>= #140 0::int)
+#160 := (not #161)
+#154 := (not #149)
+#167 := (and #154 #160)
+#30 := (- #26 #28)
+#31 := (f3 #30)
+#33 := (= #31 #32)
+#34 := (not #33)
+#29 := (< #26 #28)
+#35 := (and #29 #34)
+#172 := (iff #35 #167)
+#157 := (and #29 #154)
+#170 := (iff #157 #167)
+#164 := (and #160 #154)
+#168 := (iff #164 #167)
+#169 := [rewrite]: #168
+#165 := (iff #157 #164)
+#162 := (iff #29 #160)
+#163 := [rewrite]: #162
+#166 := [monotonicity #163]: #165
+#171 := [trans #166 #169]: #170
+#158 := (iff #35 #157)
+#155 := (iff #34 #154)
+#152 := (iff #33 #149)
+#146 := (= #143 #32)
+#150 := (iff #146 #149)
+#151 := [rewrite]: #150
+#147 := (iff #33 #146)
+#144 := (= #31 #143)
+#141 := (= #30 #140)
+#142 := [rewrite]: #141
+#145 := [monotonicity #142]: #144
+#148 := [monotonicity #145]: #147
+#153 := [trans #148 #151]: #152
+#156 := [monotonicity #153]: #155
+#159 := [monotonicity #156]: #158
+#173 := [trans #159 #171]: #172
+#137 := [asserted]: #35
+#174 := [mp #137 #173]: #167
+#176 := [and-elim #174]: #160
+#14 := (:var 0 int)
+#16 := (f3 #14)
+#673 := (pattern #16)
+#78 := (>= #14 0::int)
+#17 := (f4 #16)
+#22 := (= #17 0::int)
+#126 := (or #22 #78)
+#680 := (forall (vars (?v0 int)) (:pat #673) #126)
+#131 := (forall (vars (?v0 int)) #126)
+#683 := (iff #131 #680)
+#681 := (iff #126 #126)
+#682 := [refl]: #681
+#684 := [quant-intro #682]: #683
+#182 := (~ #131 #131)
+#196 := (~ #126 #126)
+#197 := [refl]: #196
+#183 := [nnf-pos #197]: #182
+#21 := (< #14 0::int)
+#23 := (implies #21 #22)
+#24 := (forall (vars (?v0 int)) #23)
+#134 := (iff #24 #131)
+#97 := (= 0::int #17)
+#103 := (not #21)
+#104 := (or #103 #97)
+#109 := (forall (vars (?v0 int)) #104)
+#132 := (iff #109 #131)
+#129 := (iff #104 #126)
+#123 := (or #78 #22)
+#127 := (iff #123 #126)
+#128 := [rewrite]: #127
+#124 := (iff #104 #123)
+#121 := (iff #97 #22)
+#122 := [rewrite]: #121
+#119 := (iff #103 #78)
+#79 := (not #78)
+#114 := (not #79)
+#117 := (iff #114 #78)
+#118 := [rewrite]: #117
+#115 := (iff #103 #114)
+#112 := (iff #21 #79)
+#113 := [rewrite]: #112
+#116 := [monotonicity #113]: #115
+#120 := [trans #116 #118]: #119
+#125 := [monotonicity #120 #122]: #124
+#130 := [trans #125 #128]: #129
+#133 := [quant-intro #130]: #132
+#110 := (iff #24 #109)
+#107 := (iff #23 #104)
+#100 := (implies #21 #97)
+#105 := (iff #100 #104)
+#106 := [rewrite]: #105
+#101 := (iff #23 #100)
+#98 := (iff #22 #97)
+#99 := [rewrite]: #98
+#102 := [monotonicity #99]: #101
+#108 := [trans #102 #106]: #107
+#111 := [quant-intro #108]: #110
+#135 := [trans #111 #133]: #134
+#96 := [asserted]: #24
+#136 := [mp #96 #135]: #131
+#198 := [mp~ #136 #183]: #131
+#685 := [mp #198 #684]: #680
+#619 := (not #680)
+#625 := (or #619 #161 #622)
+#617 := (or #622 #161)
+#466 := (or #619 #617)
+#607 := (iff #466 #625)
+#618 := (or #161 #622)
+#468 := (or #619 #618)
+#612 := (iff #468 #625)
+#613 := [rewrite]: #612
+#610 := (iff #466 #468)
+#623 := (iff #617 #618)
+#624 := [rewrite]: #623
+#611 := [monotonicity #624]: #610
+#608 := [trans #611 #613]: #607
+#467 := [quant-inst]: #466
+#614 := [mp #467 #608]: #625
+#494 := [unit-resolution #614 #685 #176]: #622
+#505 := [symm #494]: #504
+#599 := [monotonicity #505]: #506
+#587 := [trans #599 #600]: #149
+#175 := [and-elim #174]: #154
+[unit-resolution #175 #587]: false
+unsat
 3c1f7d30ea379c9ce2207a011fc3d11958eb42f1 438 0
 #2 := false
 #13 := 0::int
@@ -11557,247 +11561,6 @@
 #404 := [unit-resolution #379 #434]: #485
 [unit-resolution #404 #396]: false
 unsat
-b04995911f57617d06c9591edf349edadf325b74 60 0
-#2 := false
-decl f3 :: (-> int S2)
-decl f4 :: (-> S2 int)
-decl f5 :: S2
-#25 := f5
-#26 := (f4 f5)
-#135 := (f3 #26)
-#141 := (= f5 #135)
-#146 := (not #141)
-#13 := 0::int
-#27 := (- #26 0::int)
-#28 := (f3 #27)
-#29 := (= #28 f5)
-#30 := (not #29)
-#147 := (iff #30 #146)
-#144 := (iff #29 #141)
-#138 := (= #135 f5)
-#142 := (iff #138 #141)
-#143 := [rewrite]: #142
-#139 := (iff #29 #138)
-#136 := (= #28 #135)
-#133 := (= #27 #26)
-#134 := [rewrite]: #133
-#137 := [monotonicity #134]: #136
-#140 := [monotonicity #137]: #139
-#145 := [trans #140 #143]: #144
-#148 := [monotonicity #145]: #147
-#132 := [asserted]: #30
-#151 := [mp #132 #148]: #146
-#8 := (:var 0 S2)
-#9 := (f4 #8)
-#639 := (pattern #9)
-#10 := (f3 #9)
-#48 := (= #8 #10)
-#640 := (forall (vars (?v0 S2)) (:pat #639) #48)
-#51 := (forall (vars (?v0 S2)) #48)
-#641 := (iff #51 #640)
-#643 := (iff #640 #640)
-#644 := [rewrite]: #643
-#642 := [rewrite]: #641
-#645 := [trans #642 #644]: #641
-#163 := (~ #51 #51)
-#161 := (~ #48 #48)
-#162 := [refl]: #161
-#164 := [nnf-pos #162]: #163
-#11 := (= #10 #8)
-#12 := (forall (vars (?v0 S2)) #11)
-#52 := (iff #12 #51)
-#49 := (iff #11 #48)
-#50 := [rewrite]: #49
-#53 := [quant-intro #50]: #52
-#47 := [asserted]: #12
-#56 := [mp #47 #53]: #51
-#152 := [mp~ #56 #164]: #51
-#646 := [mp #152 #645]: #640
-#224 := (not #640)
-#310 := (or #224 #141)
-#311 := [quant-inst]: #310
-[unit-resolution #311 #646 #151]: false
-unsat
-2a686ca258d75e408aba2310eab7bfde718856c5 179 0
-#2 := false
-decl f3 :: (-> int S2)
-decl f4 :: (-> S2 int)
-decl f6 :: S2
-#27 := f6
-#28 := (f4 f6)
-#138 := -1::int
-#139 := (* -1::int #28)
-decl f5 :: S2
-#25 := f5
-#26 := (f4 f5)
-#140 := (+ #26 #139)
-#143 := (f3 #140)
-#13 := 0::int
-#32 := (f3 0::int)
-#149 := (= #32 #143)
-#649 := (f4 #143)
-#597 := (f3 #649)
-#596 := (= #597 #143)
-#499 := (= #143 #597)
-#8 := (:var 0 S2)
-#9 := (f4 #8)
-#665 := (pattern #9)
-#10 := (f3 #9)
-#53 := (= #8 #10)
-#666 := (forall (vars (?v0 S2)) (:pat #665) #53)
-#56 := (forall (vars (?v0 S2)) #53)
-#667 := (iff #56 #666)
-#669 := (iff #666 #666)
-#670 := [rewrite]: #669
-#668 := [rewrite]: #667
-#671 := [trans #668 #670]: #667
-#192 := (~ #56 #56)
-#190 := (~ #53 #53)
-#191 := [refl]: #190
-#193 := [nnf-pos #191]: #192
-#11 := (= #10 #8)
-#12 := (forall (vars (?v0 S2)) #11)
-#57 := (iff #12 #56)
-#54 := (iff #11 #53)
-#55 := [rewrite]: #54
-#58 := [quant-intro #55]: #57
-#52 := [asserted]: #12
-#61 := [mp #52 #58]: #56
-#179 := [mp~ #61 #193]: #56
-#672 := [mp #179 #671]: #666
-#338 := (not #666)
-#502 := (or #338 #499)
-#503 := [quant-inst]: #502
-#501 := [unit-resolution #503 #672]: #499
-#600 := [symm #501]: #596
-#506 := (= #32 #597)
-#504 := (= 0::int #649)
-#622 := (= #649 0::int)
-#161 := (>= #140 0::int)
-#160 := (not #161)
-#154 := (not #149)
-#167 := (and #154 #160)
-#30 := (- #26 #28)
-#31 := (f3 #30)
-#33 := (= #31 #32)
-#34 := (not #33)
-#29 := (< #26 #28)
-#35 := (and #29 #34)
-#172 := (iff #35 #167)
-#157 := (and #29 #154)
-#170 := (iff #157 #167)
-#164 := (and #160 #154)
-#168 := (iff #164 #167)
-#169 := [rewrite]: #168
-#165 := (iff #157 #164)
-#162 := (iff #29 #160)
-#163 := [rewrite]: #162
-#166 := [monotonicity #163]: #165
-#171 := [trans #166 #169]: #170
-#158 := (iff #35 #157)
-#155 := (iff #34 #154)
-#152 := (iff #33 #149)
-#146 := (= #143 #32)
-#150 := (iff #146 #149)
-#151 := [rewrite]: #150
-#147 := (iff #33 #146)
-#144 := (= #31 #143)
-#141 := (= #30 #140)
-#142 := [rewrite]: #141
-#145 := [monotonicity #142]: #144
-#148 := [monotonicity #145]: #147
-#153 := [trans #148 #151]: #152
-#156 := [monotonicity #153]: #155
-#159 := [monotonicity #156]: #158
-#173 := [trans #159 #171]: #172
-#137 := [asserted]: #35
-#174 := [mp #137 #173]: #167
-#176 := [and-elim #174]: #160
-#14 := (:var 0 int)
-#16 := (f3 #14)
-#673 := (pattern #16)
-#78 := (>= #14 0::int)
-#17 := (f4 #16)
-#22 := (= #17 0::int)
-#126 := (or #22 #78)
-#680 := (forall (vars (?v0 int)) (:pat #673) #126)
-#131 := (forall (vars (?v0 int)) #126)
-#683 := (iff #131 #680)
-#681 := (iff #126 #126)
-#682 := [refl]: #681
-#684 := [quant-intro #682]: #683
-#182 := (~ #131 #131)
-#196 := (~ #126 #126)
-#197 := [refl]: #196
-#183 := [nnf-pos #197]: #182
-#21 := (< #14 0::int)
-#23 := (implies #21 #22)
-#24 := (forall (vars (?v0 int)) #23)
-#134 := (iff #24 #131)
-#97 := (= 0::int #17)
-#103 := (not #21)
-#104 := (or #103 #97)
-#109 := (forall (vars (?v0 int)) #104)
-#132 := (iff #109 #131)
-#129 := (iff #104 #126)
-#123 := (or #78 #22)
-#127 := (iff #123 #126)
-#128 := [rewrite]: #127
-#124 := (iff #104 #123)
-#121 := (iff #97 #22)
-#122 := [rewrite]: #121
-#119 := (iff #103 #78)
-#79 := (not #78)
-#114 := (not #79)
-#117 := (iff #114 #78)
-#118 := [rewrite]: #117
-#115 := (iff #103 #114)
-#112 := (iff #21 #79)
-#113 := [rewrite]: #112
-#116 := [monotonicity #113]: #115
-#120 := [trans #116 #118]: #119
-#125 := [monotonicity #120 #122]: #124
-#130 := [trans #125 #128]: #129
-#133 := [quant-intro #130]: #132
-#110 := (iff #24 #109)
-#107 := (iff #23 #104)
-#100 := (implies #21 #97)
-#105 := (iff #100 #104)
-#106 := [rewrite]: #105
-#101 := (iff #23 #100)
-#98 := (iff #22 #97)
-#99 := [rewrite]: #98
-#102 := [monotonicity #99]: #101
-#108 := [trans #102 #106]: #107
-#111 := [quant-intro #108]: #110
-#135 := [trans #111 #133]: #134
-#96 := [asserted]: #24
-#136 := [mp #96 #135]: #131
-#198 := [mp~ #136 #183]: #131
-#685 := [mp #198 #684]: #680
-#619 := (not #680)
-#625 := (or #619 #161 #622)
-#617 := (or #622 #161)
-#466 := (or #619 #617)
-#607 := (iff #466 #625)
-#618 := (or #161 #622)
-#468 := (or #619 #618)
-#612 := (iff #468 #625)
-#613 := [rewrite]: #612
-#610 := (iff #466 #468)
-#623 := (iff #617 #618)
-#624 := [rewrite]: #623
-#611 := [monotonicity #624]: #610
-#608 := [trans #611 #613]: #607
-#467 := [quant-inst]: #466
-#614 := [mp #467 #608]: #625
-#494 := [unit-resolution #614 #685 #176]: #622
-#505 := [symm #494]: #504
-#599 := [monotonicity #505]: #506
-#587 := [trans #599 #600]: #149
-#175 := [and-elim #174]: #154
-[unit-resolution #175 #587]: false
-unsat
 d2811f187a26b77cca78876fe4e7b2248df3c75e 321 0
 #2 := false
 decl f3 :: (-> int S2)
@@ -12450,6 +12213,40 @@
 #500 := [trans #499 #542]: #188
 [unit-resolution #198 #500]: false
 unsat
+73fe8e8f8efc05a9592e80e471f1f73a8ea6b41e 33 0
+#2 := false
+decl f3 :: (-> int S2)
+#13 := 0::int
+#29 := (f3 0::int)
+decl f4 :: (-> S2 int)
+decl f5 :: S2
+#25 := f5
+#26 := (f4 f5)
+#27 := (* #26 0::int)
+#28 := (f3 #27)
+#30 := (= #28 #29)
+#31 := (not #30)
+#149 := (iff #31 false)
+#1 := true
+#144 := (not true)
+#147 := (iff #144 false)
+#148 := [rewrite]: #147
+#145 := (iff #31 #144)
+#142 := (iff #30 true)
+#137 := (= #29 #29)
+#140 := (iff #137 true)
+#141 := [rewrite]: #140
+#138 := (iff #30 #137)
+#134 := (= #27 0::int)
+#135 := [rewrite]: #134
+#136 := [monotonicity #135]: #30
+#139 := [monotonicity #136]: #138
+#143 := [trans #139 #141]: #142
+#146 := [monotonicity #143]: #145
+#150 := [trans #146 #148]: #149
+#133 := [asserted]: #31
+[mp #133 #150]: false
+unsat
 38a43c830e9f2f628495aa4330122f2c2da981cd 517 0
 #2 := false
 #13 := 0::int
@@ -12968,40 +12765,6 @@
 #282 := [unit-resolution #419 #286]: #319
 [unit-resolution #424 #282 #300]: false
 unsat
-73fe8e8f8efc05a9592e80e471f1f73a8ea6b41e 33 0
-#2 := false
-decl f3 :: (-> int S2)
-#13 := 0::int
-#29 := (f3 0::int)
-decl f4 :: (-> S2 int)
-decl f5 :: S2
-#25 := f5
-#26 := (f4 f5)
-#27 := (* #26 0::int)
-#28 := (f3 #27)
-#30 := (= #28 #29)
-#31 := (not #30)
-#149 := (iff #31 false)
-#1 := true
-#144 := (not true)
-#147 := (iff #144 false)
-#148 := [rewrite]: #147
-#145 := (iff #31 #144)
-#142 := (iff #30 true)
-#137 := (= #29 #29)
-#140 := (iff #137 true)
-#141 := [rewrite]: #140
-#138 := (iff #30 #137)
-#134 := (= #27 0::int)
-#135 := [rewrite]: #134
-#136 := [monotonicity #135]: #30
-#139 := [monotonicity #136]: #138
-#143 := [trans #139 #141]: #142
-#146 := [monotonicity #143]: #145
-#150 := [trans #146 #148]: #149
-#133 := [asserted]: #31
-[mp #133 #150]: false
-unsat
 b8b27e6325657430dd1af6ebdf5787c6efe3284f 33 0
 #2 := false
 decl f3 :: (-> int S2)
@@ -13711,6 +13474,281 @@
 #271 := [asserted]: #59
 [unit-resolution #271 #738]: false
 unsat
+548d39bc73378ffff45c17ea9af834838e4f2aed 274 0
+#2 := false
+decl f5 :: (-> int S2)
+#11 := 0::int
+#55 := (f5 0::int)
+decl f4 :: (-> int int int)
+#53 := (f4 0::int 0::int)
+#54 := (f5 #53)
+#56 := (= #54 #55)
+#831 := (= #53 0::int)
+#9 := (:var 0 int)
+#8 := (:var 1 int)
+#29 := (f4 #8 #9)
+#850 := (pattern #29)
+#81 := -1::int
+#85 := (* -1::int #9)
+#82 := (* -1::int #8)
+#140 := (mod #82 #85)
+#361 := (+ #29 #140)
+#362 := (= #361 0::int)
+#30 := (mod #8 #9)
+#358 := (* -1::int #30)
+#359 := (+ #29 #358)
+#360 := (= #359 0::int)
+#107 := (<= #9 0::int)
+#103 := (<= #8 0::int)
+#300 := (or #103 #107)
+#301 := (not #300)
+#114 := (>= #8 0::int)
+#283 := (or #107 #114)
+#284 := (not #283)
+#307 := (or #284 #301)
+#363 := (ite #307 #360 #362)
+#357 := (= #29 0::int)
+#12 := (= #8 0::int)
+#364 := (ite #12 #357 #363)
+#356 := (= #8 #29)
+#13 := (= #9 0::int)
+#365 := (ite #13 #356 #364)
+#851 := (forall (vars (?v0 int) (?v1 int)) (:pat #850) #365)
+#368 := (forall (vars (?v0 int) (?v1 int)) #365)
+#854 := (iff #368 #851)
+#852 := (iff #365 #365)
+#853 := [refl]: #852
+#855 := [quant-intro #853]: #854
+#146 := (* -1::int #140)
+#325 := (ite #307 #30 #146)
+#328 := (ite #12 0::int #325)
+#331 := (ite #13 #8 #328)
+#334 := (= #29 #331)
+#337 := (forall (vars (?v0 int) (?v1 int)) #334)
+#369 := (iff #337 #368)
+#366 := (iff #334 #365)
+#367 := [rewrite]: #366
+#370 := [quant-intro #367]: #369
+#115 := (not #114)
+#108 := (not #107)
+#118 := (and #108 #115)
+#104 := (not #103)
+#111 := (and #104 #108)
+#121 := (or #111 #118)
+#166 := (ite #121 #30 #146)
+#169 := (ite #12 0::int #166)
+#172 := (ite #13 #8 #169)
+#175 := (= #29 #172)
+#178 := (forall (vars (?v0 int) (?v1 int)) #175)
+#338 := (iff #178 #337)
+#335 := (iff #175 #334)
+#332 := (= #172 #331)
+#329 := (= #169 #328)
+#326 := (= #166 #325)
+#310 := (iff #121 #307)
+#304 := (or #301 #284)
+#308 := (iff #304 #307)
+#309 := [rewrite]: #308
+#305 := (iff #121 #304)
+#302 := (iff #118 #284)
+#303 := [rewrite]: #302
+#281 := (iff #111 #301)
+#282 := [rewrite]: #281
+#306 := [monotonicity #282 #303]: #305
+#311 := [trans #306 #309]: #310
+#327 := [monotonicity #311]: #326
+#330 := [monotonicity #327]: #329
+#333 := [monotonicity #330]: #332
+#336 := [monotonicity #333]: #335
+#339 := [quant-intro #336]: #338
+#273 := (~ #178 #178)
+#270 := (~ #175 #175)
+#289 := [refl]: #270
+#274 := [nnf-pos #289]: #273
+#23 := (- #9)
+#22 := (- #8)
+#31 := (mod #22 #23)
+#32 := (- #31)
+#16 := (< 0::int #9)
+#18 := (< #8 0::int)
+#19 := (and #18 #16)
+#15 := (< 0::int #8)
+#17 := (and #15 #16)
+#20 := (or #17 #19)
+#33 := (ite #20 #30 #32)
+#34 := (ite #12 0::int #33)
+#35 := (ite #13 #8 #34)
+#36 := (= #29 #35)
+#37 := (forall (vars (?v0 int) (?v1 int)) #36)
+#181 := (iff #37 #178)
+#75 := (and #16 #18)
+#78 := (or #17 #75)
+#151 := (ite #78 #30 #146)
+#154 := (ite #12 0::int #151)
+#157 := (ite #13 #8 #154)
+#160 := (= #29 #157)
+#163 := (forall (vars (?v0 int) (?v1 int)) #160)
+#179 := (iff #163 #178)
+#176 := (iff #160 #175)
+#173 := (= #157 #172)
+#170 := (= #154 #169)
+#167 := (= #151 #166)
+#122 := (iff #78 #121)
+#119 := (iff #75 #118)
+#116 := (iff #18 #115)
+#117 := [rewrite]: #116
+#109 := (iff #16 #108)
+#110 := [rewrite]: #109
+#120 := [monotonicity #110 #117]: #119
+#112 := (iff #17 #111)
+#105 := (iff #15 #104)
+#106 := [rewrite]: #105
+#113 := [monotonicity #106 #110]: #112
+#123 := [monotonicity #113 #120]: #122
+#168 := [monotonicity #123]: #167
+#171 := [monotonicity #168]: #170
+#174 := [monotonicity #171]: #173
+#177 := [monotonicity #174]: #176
+#180 := [quant-intro #177]: #179
+#164 := (iff #37 #163)
+#161 := (iff #36 #160)
+#158 := (= #35 #157)
+#155 := (= #34 #154)
+#152 := (= #33 #151)
+#149 := (= #32 #146)
+#143 := (- #140)
+#147 := (= #143 #146)
+#148 := [rewrite]: #147
+#144 := (= #32 #143)
+#141 := (= #31 #140)
+#86 := (= #23 #85)
+#87 := [rewrite]: #86
+#83 := (= #22 #82)
+#84 := [rewrite]: #83
+#142 := [monotonicity #84 #87]: #141
+#145 := [monotonicity #142]: #144
+#150 := [trans #145 #148]: #149
+#79 := (iff #20 #78)
+#76 := (iff #19 #75)
+#77 := [rewrite]: #76
+#80 := [monotonicity #77]: #79
+#153 := [monotonicity #80 #150]: #152
+#156 := [monotonicity #153]: #155
+#159 := [monotonicity #156]: #158
+#162 := [monotonicity #159]: #161
+#165 := [quant-intro #162]: #164
+#182 := [trans #165 #180]: #181
+#139 := [asserted]: #37
+#183 := [mp #139 #182]: #178
+#290 := [mp~ #183 #274]: #178
+#340 := [mp #290 #339]: #337
+#371 := [mp #340 #370]: #368
+#856 := [mp #371 #855]: #851
+#646 := (not #851)
+#788 := (or #646 #831)
+#429 := (* -1::int 0::int)
+#514 := (mod #429 #429)
+#515 := (+ #53 #514)
+#516 := (= #515 0::int)
+#507 := (mod 0::int 0::int)
+#518 := (* -1::int #507)
+#519 := (+ #53 #518)
+#447 := (= #519 0::int)
+#520 := (<= 0::int 0::int)
+#517 := (or #520 #520)
+#521 := (not #517)
+#500 := (>= 0::int 0::int)
+#835 := (or #520 #500)
+#837 := (not #835)
+#494 := (or #837 #521)
+#624 := (ite #494 #447 #516)
+#505 := (= 0::int 0::int)
+#506 := (ite #505 #831 #624)
+#838 := (= 0::int #53)
+#839 := (ite #505 #838 #506)
+#789 := (or #646 #839)
+#791 := (iff #789 #788)
+#786 := (iff #788 #788)
+#792 := [rewrite]: #786
+#644 := (iff #839 #831)
+#1 := true
+#796 := (ite true #831 #831)
+#797 := (iff #796 #831)
+#803 := [rewrite]: #797
+#801 := (iff #839 #796)
+#800 := (iff #506 #831)
+#536 := (+ #53 #507)
+#811 := (= #536 0::int)
+#808 := (ite true #831 #811)
+#798 := (iff #808 #831)
+#799 := [rewrite]: #798
+#805 := (iff #506 #808)
+#522 := (iff #624 #811)
+#526 := (ite false #447 #811)
+#806 := (iff #526 #811)
+#807 := [rewrite]: #806
+#527 := (iff #624 #526)
+#815 := (iff #516 #811)
+#810 := (= #515 #536)
+#813 := (= #514 #507)
+#435 := (= #429 0::int)
+#812 := [rewrite]: #435
+#535 := [monotonicity #812 #812]: #813
+#814 := [monotonicity #535]: #810
+#525 := [monotonicity #814]: #815
+#541 := (iff #494 false)
+#830 := (or false false)
+#539 := (iff #830 false)
+#540 := [rewrite]: #539
+#816 := (iff #494 #830)
+#829 := (iff #521 false)
+#484 := (not true)
+#822 := (iff #484 false)
+#823 := [rewrite]: #822
+#468 := (iff #521 #484)
+#826 := (iff #517 true)
+#493 := (or true true)
+#818 := (iff #493 true)
+#481 := [rewrite]: #818
+#825 := (iff #517 #493)
+#832 := (iff #520 true)
+#492 := [rewrite]: #832
+#463 := [monotonicity #492 #492]: #825
+#828 := [trans #463 #481]: #826
+#469 := [monotonicity #828]: #468
+#827 := [trans #469 #823]: #829
+#824 := (iff #837 false)
+#820 := (iff #837 #484)
+#482 := (iff #835 true)
+#834 := (iff #835 #493)
+#497 := (iff #500 true)
+#833 := [rewrite]: #497
+#477 := [monotonicity #492 #833]: #834
+#483 := [trans #477 #481]: #482
+#821 := [monotonicity #483]: #820
+#819 := [trans #821 #823]: #824
+#817 := [monotonicity #819 #827]: #816
+#542 := [trans #817 #540]: #541
+#528 := [monotonicity #542 #525]: #527
+#804 := [trans #528 #807]: #522
+#840 := (iff #505 true)
+#841 := [rewrite]: #840
+#809 := [monotonicity #841 #804]: #805
+#795 := [trans #809 #799]: #800
+#836 := (iff #838 #831)
+#842 := [rewrite]: #836
+#802 := [monotonicity #841 #842 #795]: #801
+#645 := [trans #802 #803]: #644
+#785 := [monotonicity #645]: #791
+#793 := [trans #785 #792]: #791
+#790 := [quant-inst]: #789
+#787 := [mp #790 #793]: #788
+#741 := [unit-resolution #787 #856]: #831
+#742 := [monotonicity #741]: #56
+#57 := (not #56)
+#269 := [asserted]: #57
+[unit-resolution #269 #742]: false
+unsat
 426e56a2fa6cae689a233b52c380ff3e1f4c5d0f 287 0
 #2 := false
 decl f5 :: (-> int S2)
@@ -13999,6 +14037,328 @@
 #270 := [asserted]: #58
 [unit-resolution #270 #691]: false
 unsat
+2a856348a2d0d12d43659d3f8fbd60f2f395959a 321 0
+#2 := false
+decl f5 :: (-> int S2)
+decl f4 :: (-> int int int)
+#11 := 0::int
+decl f6 :: (-> S2 int)
+decl f7 :: S2
+#53 := f7
+#54 := (f6 f7)
+#55 := (f4 #54 0::int)
+#56 := (f5 #55)
+#271 := (= f7 #56)
+#795 := (f5 #54)
+#772 := (= #795 #56)
+#771 := (= #56 #795)
+#768 := (= #55 #54)
+#848 := (= #54 #55)
+#9 := (:var 0 int)
+#8 := (:var 1 int)
+#29 := (f4 #8 #9)
+#858 := (pattern #29)
+#82 := -1::int
+#86 := (* -1::int #9)
+#83 := (* -1::int #8)
+#141 := (mod #83 #86)
+#369 := (+ #29 #141)
+#370 := (= #369 0::int)
+#30 := (mod #8 #9)
+#366 := (* -1::int #30)
+#367 := (+ #29 #366)
+#368 := (= #367 0::int)
+#108 := (<= #9 0::int)
+#104 := (<= #8 0::int)
+#308 := (or #104 #108)
+#309 := (not #308)
+#115 := (>= #8 0::int)
+#291 := (or #108 #115)
+#292 := (not #291)
+#315 := (or #292 #309)
+#371 := (ite #315 #368 #370)
+#365 := (= #29 0::int)
+#12 := (= #8 0::int)
+#372 := (ite #12 #365 #371)
+#364 := (= #8 #29)
+#13 := (= #9 0::int)
+#373 := (ite #13 #364 #372)
+#859 := (forall (vars (?v0 int) (?v1 int)) (:pat #858) #373)
+#376 := (forall (vars (?v0 int) (?v1 int)) #373)
+#862 := (iff #376 #859)
+#860 := (iff #373 #373)
+#861 := [refl]: #860
+#863 := [quant-intro #861]: #862
+#147 := (* -1::int #141)
+#333 := (ite #315 #30 #147)
+#336 := (ite #12 0::int #333)
+#339 := (ite #13 #8 #336)
+#342 := (= #29 #339)
+#345 := (forall (vars (?v0 int) (?v1 int)) #342)
+#377 := (iff #345 #376)
+#374 := (iff #342 #373)
+#375 := [rewrite]: #374
+#378 := [quant-intro #375]: #377
+#116 := (not #115)
+#109 := (not #108)
+#119 := (and #109 #116)
+#105 := (not #104)
+#112 := (and #105 #109)
+#122 := (or #112 #119)
+#167 := (ite #122 #30 #147)
+#170 := (ite #12 0::int #167)
+#173 := (ite #13 #8 #170)
+#176 := (= #29 #173)
+#179 := (forall (vars (?v0 int) (?v1 int)) #176)
+#346 := (iff #179 #345)
+#343 := (iff #176 #342)
+#340 := (= #173 #339)
+#337 := (= #170 #336)
+#334 := (= #167 #333)
+#318 := (iff #122 #315)
+#312 := (or #309 #292)
+#316 := (iff #312 #315)
+#317 := [rewrite]: #316
+#313 := (iff #122 #312)
+#310 := (iff #119 #292)
+#311 := [rewrite]: #310
+#289 := (iff #112 #309)
+#290 := [rewrite]: #289
+#314 := [monotonicity #290 #311]: #313
+#319 := [trans #314 #317]: #318
+#335 := [monotonicity #319]: #334
+#338 := [monotonicity #335]: #337
+#341 := [monotonicity #338]: #340
+#344 := [monotonicity #341]: #343
+#347 := [quant-intro #344]: #346
+#281 := (~ #179 #179)
+#277 := (~ #176 #176)
+#297 := [refl]: #277
+#282 := [nnf-pos #297]: #281
+#23 := (- #9)
+#22 := (- #8)
+#31 := (mod #22 #23)
+#32 := (- #31)
+#16 := (< 0::int #9)
+#18 := (< #8 0::int)
+#19 := (and #18 #16)
+#15 := (< 0::int #8)
+#17 := (and #15 #16)
+#20 := (or #17 #19)
+#33 := (ite #20 #30 #32)
+#34 := (ite #12 0::int #33)
+#35 := (ite #13 #8 #34)
+#36 := (= #29 #35)
+#37 := (forall (vars (?v0 int) (?v1 int)) #36)
+#182 := (iff #37 #179)
+#76 := (and #16 #18)
+#79 := (or #17 #76)
+#152 := (ite #79 #30 #147)
+#155 := (ite #12 0::int #152)
+#158 := (ite #13 #8 #155)
+#161 := (= #29 #158)
+#164 := (forall (vars (?v0 int) (?v1 int)) #161)
+#180 := (iff #164 #179)
+#177 := (iff #161 #176)
+#174 := (= #158 #173)
+#171 := (= #155 #170)
+#168 := (= #152 #167)
+#123 := (iff #79 #122)
+#120 := (iff #76 #119)
+#117 := (iff #18 #116)
+#118 := [rewrite]: #117
+#110 := (iff #16 #109)
+#111 := [rewrite]: #110
+#121 := [monotonicity #111 #118]: #120
+#113 := (iff #17 #112)
+#106 := (iff #15 #105)
+#107 := [rewrite]: #106
+#114 := [monotonicity #107 #111]: #113
+#124 := [monotonicity #114 #121]: #123
+#169 := [monotonicity #124]: #168
+#172 := [monotonicity #169]: #171
+#175 := [monotonicity #172]: #174
+#178 := [monotonicity #175]: #177
+#181 := [quant-intro #178]: #180
+#165 := (iff #37 #164)
+#162 := (iff #36 #161)
+#159 := (= #35 #158)
+#156 := (= #34 #155)
+#153 := (= #33 #152)
+#150 := (= #32 #147)
+#144 := (- #141)
+#148 := (= #144 #147)
+#149 := [rewrite]: #148
+#145 := (= #32 #144)
+#142 := (= #31 #141)
+#87 := (= #23 #86)
+#88 := [rewrite]: #87
+#84 := (= #22 #83)
+#85 := [rewrite]: #84
+#143 := [monotonicity #85 #88]: #142
+#146 := [monotonicity #143]: #145
+#151 := [trans #146 #149]: #150
+#80 := (iff #20 #79)
+#77 := (iff #19 #76)
+#78 := [rewrite]: #77
+#81 := [monotonicity #78]: #80
+#154 := [monotonicity #81 #151]: #153
+#157 := [monotonicity #154]: #156
+#160 := [monotonicity #157]: #159
+#163 := [monotonicity #160]: #162
+#166 := [quant-intro #163]: #165
+#183 := [trans #166 #181]: #182
+#140 := [asserted]: #37
+#184 := [mp #140 #183]: #179
+#298 := [mp~ #184 #282]: #179
+#348 := [mp #298 #347]: #345
+#379 := [mp #348 #378]: #376
+#864 := [mp #379 #863]: #859
+#653 := (not #859)
+#654 := (or #653 #848)
+#437 := (* -1::int 0::int)
+#522 := (* -1::int #54)
+#523 := (mod #522 #437)
+#524 := (+ #55 #523)
+#515 := (= #524 0::int)
+#526 := (mod #54 0::int)
+#527 := (* -1::int #526)
+#455 := (+ #55 #527)
+#528 := (= #455 0::int)
+#525 := (<= 0::int 0::int)
+#529 := (<= #54 0::int)
+#508 := (or #529 #525)
+#843 := (not #508)
+#845 := (>= #54 0::int)
+#502 := (or #525 #845)
+#632 := (not #502)
+#839 := (or #632 #843)
+#513 := (ite #839 #528 #515)
+#514 := (= #55 0::int)
+#846 := (= #54 0::int)
+#847 := (ite #846 #514 #513)
+#849 := (= 0::int 0::int)
+#844 := (ite #849 #848 #847)
+#796 := (or #653 #844)
+#798 := (iff #796 #654)
+#793 := (iff #654 #654)
+#794 := [rewrite]: #793
+#811 := (iff #844 #848)
+#544 := (mod #522 0::int)
+#819 := (+ #55 #544)
+#534 := (= #819 0::int)
+#806 := (ite #846 #514 #534)
+#1 := true
+#803 := (ite true #848 #806)
+#810 := (iff #803 #848)
+#805 := [rewrite]: #810
+#804 := (iff #844 #803)
+#807 := (iff #847 #806)
+#813 := (iff #513 #534)
+#814 := (ite false #528 #534)
+#812 := (iff #814 #534)
+#816 := [rewrite]: #812
+#815 := (iff #513 #814)
+#535 := (iff #515 #534)
+#823 := (= #524 #819)
+#818 := (= #523 #544)
+#821 := (= #437 0::int)
+#543 := [rewrite]: #821
+#822 := [monotonicity #543]: #818
+#533 := [monotonicity #822]: #823
+#536 := [monotonicity #533]: #535
+#443 := (iff #839 false)
+#825 := (or false false)
+#549 := (iff #825 false)
+#550 := [rewrite]: #549
+#547 := (iff #839 #825)
+#838 := (iff #843 false)
+#491 := (not true)
+#829 := (iff #491 false)
+#830 := [rewrite]: #829
+#837 := (iff #843 #491)
+#476 := (iff #508 true)
+#827 := (or #529 true)
+#834 := (iff #827 true)
+#836 := [rewrite]: #834
+#833 := (iff #508 #827)
+#500 := (iff #525 true)
+#505 := [rewrite]: #500
+#471 := [monotonicity #505]: #833
+#477 := [trans #471 #836]: #476
+#835 := [monotonicity #477]: #837
+#824 := [trans #835 #830]: #838
+#831 := (iff #632 false)
+#492 := (iff #632 #491)
+#489 := (iff #502 true)
+#841 := (or true #845)
+#485 := (iff #841 true)
+#826 := [rewrite]: #485
+#501 := (iff #502 #841)
+#842 := [monotonicity #505]: #501
+#490 := [trans #842 #826]: #489
+#828 := [monotonicity #490]: #492
+#832 := [trans #828 #830]: #831
+#548 := [monotonicity #832 #824]: #547
+#820 := [trans #548 #550]: #443
+#530 := [monotonicity #820 #536]: #815
+#817 := [trans #530 #816]: #813
+#808 := [monotonicity #817]: #807
+#850 := (iff #849 true)
+#840 := [rewrite]: #850
+#809 := [monotonicity #840 #808]: #804
+#652 := [trans #809 #805]: #811
+#799 := [monotonicity #652]: #798
+#800 := [trans #799 #794]: #798
+#797 := [quant-inst]: #796
+#801 := [mp #797 #800]: #654
+#779 := [unit-resolution #801 #864]: #848
+#769 := [symm #779]: #768
+#765 := [monotonicity #769]: #771
+#756 := [symm #765]: #772
+#802 := (= f7 #795)
+#38 := (:var 0 S2)
+#39 := (f6 #38)
+#865 := (pattern #39)
+#40 := (f5 #39)
+#186 := (= #38 #40)
+#866 := (forall (vars (?v0 S2)) (:pat #865) #186)
+#189 := (forall (vars (?v0 S2)) #186)
+#867 := (iff #189 #866)
+#869 := (iff #866 #866)
+#870 := [rewrite]: #869
+#868 := [rewrite]: #867
+#871 := [trans #868 #870]: #867
+#283 := (~ #189 #189)
+#299 := (~ #186 #186)
+#300 := [refl]: #299
+#284 := [nnf-pos #300]: #283
+#41 := (= #40 #38)
+#42 := (forall (vars (?v0 S2)) #41)
+#190 := (iff #42 #189)
+#187 := (iff #41 #186)
+#188 := [rewrite]: #187
+#191 := [quant-intro #188]: #190
+#185 := [asserted]: #42
+#194 := [mp #185 #191]: #189
+#301 := [mp~ #194 #284]: #189
+#872 := [mp #301 #871]: #866
+#634 := (not #866)
+#787 := (or #634 #802)
+#788 := [quant-inst]: #787
+#770 := [unit-resolution #788 #872]: #802
+#757 := [trans #770 #756]: #271
+#274 := (not #271)
+#57 := (= #56 f7)
+#58 := (not #57)
+#275 := (iff #58 #274)
+#272 := (iff #57 #271)
+#273 := [rewrite]: #272
+#276 := [monotonicity #273]: #275
+#270 := [asserted]: #58
+#279 := [mp #270 #276]: #274
+[unit-resolution #279 #757]: false
+unsat
 f595f2976198bb59087cfc3afdc24567f743886b 287 0
 #2 := false
 decl f5 :: (-> int S2)
@@ -14586,6 +14946,311 @@
 #271 := [asserted]: #59
 [unit-resolution #271 #706]: false
 unsat
+42cd145e516d85b450559c9cc1b54c1ed7265de3 304 0
+#2 := false
+decl f5 :: (-> int S2)
+#11 := 0::int
+#56 := (f5 0::int)
+decl f4 :: (-> int int int)
+#53 := 1::int
+#54 := (f4 0::int 1::int)
+#55 := (f5 #54)
+#57 := (= #55 #56)
+#838 := (= #54 0::int)
+#9 := (:var 0 int)
+#8 := (:var 1 int)
+#29 := (f4 #8 #9)
+#850 := (pattern #29)
+#82 := -1::int
+#86 := (* -1::int #9)
+#83 := (* -1::int #8)
+#141 := (mod #83 #86)
+#362 := (+ #29 #141)
+#363 := (= #362 0::int)
+#30 := (mod #8 #9)
+#359 := (* -1::int #30)
+#360 := (+ #29 #359)
+#361 := (= #360 0::int)
+#108 := (<= #9 0::int)
+#104 := (<= #8 0::int)
+#301 := (or #104 #108)
+#302 := (not #301)
+#115 := (>= #8 0::int)
+#284 := (or #108 #115)
+#285 := (not #284)
+#308 := (or #285 #302)
+#364 := (ite #308 #361 #363)
+#358 := (= #29 0::int)
+#12 := (= #8 0::int)
+#365 := (ite #12 #358 #364)
+#357 := (= #8 #29)
+#13 := (= #9 0::int)
+#366 := (ite #13 #357 #365)
+#851 := (forall (vars (?v0 int) (?v1 int)) (:pat #850) #366)
+#369 := (forall (vars (?v0 int) (?v1 int)) #366)
+#854 := (iff #369 #851)
+#852 := (iff #366 #366)
+#853 := [refl]: #852
+#855 := [quant-intro #853]: #854
+#147 := (* -1::int #141)
+#326 := (ite #308 #30 #147)
+#329 := (ite #12 0::int #326)
+#332 := (ite #13 #8 #329)
+#335 := (= #29 #332)
+#338 := (forall (vars (?v0 int) (?v1 int)) #335)
+#370 := (iff #338 #369)
+#367 := (iff #335 #366)
+#368 := [rewrite]: #367
+#371 := [quant-intro #368]: #370
+#116 := (not #115)
+#109 := (not #108)
+#119 := (and #109 #116)
+#105 := (not #104)
+#112 := (and #105 #109)
+#122 := (or #112 #119)
+#167 := (ite #122 #30 #147)
+#170 := (ite #12 0::int #167)
+#173 := (ite #13 #8 #170)
+#176 := (= #29 #173)
+#179 := (forall (vars (?v0 int) (?v1 int)) #176)
+#339 := (iff #179 #338)
+#336 := (iff #176 #335)
+#333 := (= #173 #332)
+#330 := (= #170 #329)
+#327 := (= #167 #326)
+#311 := (iff #122 #308)
+#305 := (or #302 #285)
+#309 := (iff #305 #308)
+#310 := [rewrite]: #309
+#306 := (iff #122 #305)
+#303 := (iff #119 #285)
+#304 := [rewrite]: #303
+#282 := (iff #112 #302)
+#283 := [rewrite]: #282
+#307 := [monotonicity #283 #304]: #306
+#312 := [trans #307 #310]: #311
+#328 := [monotonicity #312]: #327
+#331 := [monotonicity #328]: #330
+#334 := [monotonicity #331]: #333
+#337 := [monotonicity #334]: #336
+#340 := [quant-intro #337]: #339
+#274 := (~ #179 #179)
+#271 := (~ #176 #176)
+#290 := [refl]: #271
+#275 := [nnf-pos #290]: #274
+#23 := (- #9)
+#22 := (- #8)
+#31 := (mod #22 #23)
+#32 := (- #31)
+#16 := (< 0::int #9)
+#18 := (< #8 0::int)
+#19 := (and #18 #16)
+#15 := (< 0::int #8)
+#17 := (and #15 #16)
+#20 := (or #17 #19)
+#33 := (ite #20 #30 #32)
+#34 := (ite #12 0::int #33)
+#35 := (ite #13 #8 #34)
+#36 := (= #29 #35)
+#37 := (forall (vars (?v0 int) (?v1 int)) #36)
+#182 := (iff #37 #179)
+#76 := (and #16 #18)
+#79 := (or #17 #76)
+#152 := (ite #79 #30 #147)
+#155 := (ite #12 0::int #152)
+#158 := (ite #13 #8 #155)
+#161 := (= #29 #158)
+#164 := (forall (vars (?v0 int) (?v1 int)) #161)
+#180 := (iff #164 #179)
+#177 := (iff #161 #176)
+#174 := (= #158 #173)
+#171 := (= #155 #170)
+#168 := (= #152 #167)
+#123 := (iff #79 #122)
+#120 := (iff #76 #119)
+#117 := (iff #18 #116)
+#118 := [rewrite]: #117
+#110 := (iff #16 #109)
+#111 := [rewrite]: #110
+#121 := [monotonicity #111 #118]: #120
+#113 := (iff #17 #112)
+#106 := (iff #15 #105)
+#107 := [rewrite]: #106
+#114 := [monotonicity #107 #111]: #113
+#124 := [monotonicity #114 #121]: #123
+#169 := [monotonicity #124]: #168
+#172 := [monotonicity #169]: #171
+#175 := [monotonicity #172]: #174
+#178 := [monotonicity #175]: #177
+#181 := [quant-intro #178]: #180
+#165 := (iff #37 #164)
+#162 := (iff #36 #161)
+#159 := (= #35 #158)
+#156 := (= #34 #155)
+#153 := (= #33 #152)
+#150 := (= #32 #147)
+#144 := (- #141)
+#148 := (= #144 #147)
+#149 := [rewrite]: #148
+#145 := (= #32 #144)
+#142 := (= #31 #141)
+#87 := (= #23 #86)
+#88 := [rewrite]: #87
+#84 := (= #22 #83)
+#85 := [rewrite]: #84
+#143 := [monotonicity #85 #88]: #142
+#146 := [monotonicity #143]: #145
+#151 := [trans #146 #149]: #150
+#80 := (iff #20 #79)
+#77 := (iff #19 #76)
+#78 := [rewrite]: #77
+#81 := [monotonicity #78]: #80
+#154 := [monotonicity #81 #151]: #153
+#157 := [monotonicity #154]: #156
+#160 := [monotonicity #157]: #159
+#163 := [monotonicity #160]: #162
+#166 := [quant-intro #163]: #165
+#183 := [trans #166 #181]: #182
+#140 := [asserted]: #37
+#184 := [mp #140 #183]: #179
+#291 := [mp~ #184 #275]: #179
+#341 := [mp #291 #340]: #338
+#372 := [mp #341 #371]: #369
+#856 := [mp #372 #855]: #851
+#676 := (not #851)
+#678 := (or #676 #838)
+#430 := (* -1::int 1::int)
+#514 := (* -1::int 0::int)
+#515 := (mod #514 #430)
+#516 := (+ #54 #515)
+#507 := (= #516 0::int)
+#518 := (mod 0::int 1::int)
+#519 := (* -1::int #518)
+#520 := (+ #54 #519)
+#517 := (= #520 0::int)
+#521 := (<= 1::int 0::int)
+#500 := (<= 0::int 0::int)
+#835 := (or #500 #521)
+#837 := (not #835)
+#494 := (>= 0::int 0::int)
+#624 := (or #521 #494)
+#831 := (not #624)
+#505 := (or #831 #837)
+#506 := (ite #505 #517 #507)
+#839 := (= 0::int 0::int)
+#840 := (ite #839 #838 #506)
+#841 := (= 0::int #54)
+#836 := (= 1::int 0::int)
+#842 := (ite #836 #841 #840)
+#679 := (or #676 #842)
+#680 := (iff #679 #678)
+#682 := (iff #678 #678)
+#683 := [rewrite]: #682
+#776 := (iff #842 #838)
+#625 := (ite false #838 #838)
+#780 := (iff #625 #838)
+#782 := [rewrite]: #780
+#772 := (iff #842 #625)
+#775 := (iff #840 #838)
+#1 := true
+#784 := (ite true #838 #838)
+#668 := (iff #784 #8