diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,7 +1,41 @@
 * Hackage: <http://hackage.haskell.org/package/sbv>
 * GitHub:  <http://leventerkok.github.com/sbv/>
 
-* Latest Hackage released version: 8.5, 2019-10-16
+* Latest Hackage released version: 8.6, 2020-02-08
+
+### Version 8.6, 2020-02-08
+
+  * Fix typo in error message. Thanks to Oliver Charles
+    for the patch.
+
+  * Fix parsing of sequence counter-examples to accommodate
+    recent changes in z3.
+
+  * Add missing exports related to N-bit words. Thanks to
+    Markus Barenhoff for the patch.
+
+  * Generalized code-generation functions to accept a function
+    with an arbitrary return type, which was previously just unit.
+    This allows for complicated code-generation scenarios where
+    one code-gen run can produce input to the next.
+
+  * Scalability improvements for internal data structures. Thanks
+    to Brian Huffman for the patch.
+
+  * Add interpolation support for Z3, following changes to that
+    solver. Note that SBV now supports two different APIs for
+    interpolation extraction, one for Z3 and the other for
+    MathSAT. This is unfortunate, but necessary since interpolant
+    extraction isn't quite standardized amongst solvers and
+    MathSAT and Z3 use sufficiently different calling mechanisms
+    to warrant their own calls. See 'Documentation.SBV.Examples.Queries.Interpolants'
+    for examples that illustrate both cases.
+
+  * Add a new argument to `displayModels` function to allow rearranging
+    of the results in an 'allSat` call. Strictly speaking this is
+    a backwards breaking change, but substituting `id` for the
+    new argument gives you old functionality, so easy to work-around.
+
 
 ### Version 8.5, 2019-10-16
 
diff --git a/COPYRIGHT b/COPYRIGHT
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2019, Levent Erkok (erkokl@gmail.com)
+Copyright (c) 2010-2020, Levent Erkok (erkokl@gmail.com)
 All rights reserved.
 
 The sbv library is distributed with the BSD3 license. See the LICENSE file
diff --git a/Data/SBV.hs b/Data/SBV.hs
--- a/Data/SBV.hs
+++ b/Data/SBV.hs
@@ -147,7 +147,7 @@
   -- *** Signed bit-vectors
   , SInt8, SInt16, SInt32, SInt64, SInt, IntN
   -- *** Converting between fixed-size and arbitrary bitvectors
-  , FromSized, ToSized, fromSized, toSized
+  , IsNonZero, FromSized, ToSized, fromSized, toSized
   -- ** Unbounded integers
   -- $unboundedLimitations
   , SInteger
diff --git a/Data/SBV/Compilers/C.hs b/Data/SBV/Compilers/C.hs
--- a/Data/SBV/Compilers/C.hs
+++ b/Data/SBV/Compilers/C.hs
@@ -50,12 +50,17 @@
 --
 --   * The final argument is the function to be compiled.
 --
--- Compilation will also generate a @Makefile@,  a header file, and a driver (test) program, etc.
-compileToC :: Maybe FilePath -> String -> SBVCodeGen () -> IO ()
-compileToC mbDirName nm f = compileToC' nm f >>= renderCgPgmBundle mbDirName
+-- Compilation will also generate a @Makefile@,  a header file, and a driver (test) program, etc. As a
+-- result, we return whatever the code-gen function returns. Most uses should simply have @()@ as
+-- the return type here, but the value can be useful if you want to chain the result of
+-- one compilation act to the next.
+compileToC :: Maybe FilePath -> String -> SBVCodeGen a -> IO a
+compileToC mbDirName nm f = do (retVal, cfg, bundle) <- compileToC' nm f
+                               renderCgPgmBundle mbDirName (cfg, bundle)
+                               return retVal
 
 -- | Lower level version of 'compileToC', producing a 'CgPgmBundle'
-compileToC' :: String -> SBVCodeGen () -> IO (CgConfig, CgPgmBundle)
+compileToC' :: String -> SBVCodeGen a -> IO (a, CgConfig, CgPgmBundle)
 compileToC' nm f = do rands <- randoms `fmap` newStdGen
                       codeGen SBVToC (defaultCgConfig { cgDriverVals = rands }) nm f
 
@@ -69,12 +74,16 @@
 --
 --   * The third argument is the list of functions to include, in the form of function-name/code pairs, similar
 --     to the second and third arguments of 'compileToC', except in a list.
-compileToCLib :: Maybe FilePath -> String -> [(String, SBVCodeGen ())] -> IO ()
-compileToCLib mbDirName libName comps = compileToCLib' libName comps >>= renderCgPgmBundle mbDirName
+compileToCLib :: Maybe FilePath -> String -> [(String, SBVCodeGen a)] -> IO [a]
+compileToCLib mbDirName libName comps = do (retVal, cfg, pgm) <- compileToCLib' libName comps
+                                           renderCgPgmBundle mbDirName (cfg, pgm)
+                                           return retVal
 
 -- | Lower level version of 'compileToCLib', producing a 'CgPgmBundle'
-compileToCLib' :: String -> [(String, SBVCodeGen ())] -> IO (CgConfig, CgPgmBundle)
-compileToCLib' libName comps = mergeToLib libName `fmap` mapM (uncurry compileToC') comps
+compileToCLib' :: String -> [(String, SBVCodeGen a)] -> IO ([a], CgConfig, CgPgmBundle)
+compileToCLib' libName comps = do resCfgBundles <- mapM (uncurry compileToC') comps
+                                  let (finalCfg, finalPgm) = mergeToLib libName [(c, b) | (_, c, b) <- resCfgBundles]
+                                  return ([r | (r, _, _) <- resCfgBundles], finalCfg, finalPgm)
 
 ---------------------------------------------------------------------------
 -- * Implementation
diff --git a/Data/SBV/Compilers/CodeGen.hs b/Data/SBV/Compilers/CodeGen.hs
--- a/Data/SBV/Compilers/CodeGen.hs
+++ b/Data/SBV/Compilers/CodeGen.hs
@@ -335,9 +335,9 @@
 
 -- | Generate code for a symbolic program, returning a Code-gen bundle, i.e., collection
 -- of makefiles, source code, headers, etc.
-codeGen :: CgTarget l => l -> CgConfig -> String -> SBVCodeGen () -> IO (CgConfig, CgPgmBundle)
+codeGen :: CgTarget l => l -> CgConfig -> String -> SBVCodeGen a -> IO (a, CgConfig, CgPgmBundle)
 codeGen l cgConfig nm (SBVCodeGen comp) = do
-   (((), st'), res) <- runSymbolic CodeGen $ runStateT comp initCgState { cgFinalConfig = cgConfig }
+   ((retVal, st'), res) <- runSymbolic CodeGen $ runStateT comp initCgState { cgFinalConfig = cgConfig }
    let st = st' { cgInputs       = reverse (cgInputs st')
                 , cgOutputs      = reverse (cgOutputs st')
                 }
@@ -346,7 +346,7 @@
    unless (null dupNames) $
         error $ "SBV.codeGen: " ++ show nm ++ " has following argument names duplicated: " ++ unwords dupNames
 
-   return (cgFinalConfig st, translate l (cgFinalConfig st) nm st res)
+   return (retVal, cgFinalConfig st, translate l (cgFinalConfig st) nm st res)
 
 -- | Render a code-gen bundle to a directory or to stdout
 renderCgPgmBundle :: Maybe FilePath -> (CgConfig, CgPgmBundle) -> IO ()
diff --git a/Data/SBV/Control.hs b/Data/SBV/Control.hs
--- a/Data/SBV/Control.hs
+++ b/Data/SBV/Control.hs
@@ -39,7 +39,7 @@
      , getProof
 
      -- ** Extracting interpolants
-     , getInterpolant
+     , getInterpolantMathSAT, getInterpolantZ3
 
      -- ** Extracting assertions
      , getAssertions
@@ -88,7 +88,7 @@
                                       , getAssertionStackDepth
                                       , inNewAssertionStack, push, pop
                                       , caseSplit, resetAssertions, echo, exit
-                                      , getUnsatCore, getProof, getInterpolant
+                                      , getUnsatCore, getProof, getInterpolantMathSAT, getInterpolantZ3
                                       , getAssertions, getAssignment
                                       , mkSMTResult, freshVar_, freshVar
                                       , freshArray, freshArray_, checkSat, ensureSat
diff --git a/Data/SBV/Control/BaseIO.hs b/Data/SBV/Control/BaseIO.hs
--- a/Data/SBV/Control/BaseIO.hs
+++ b/Data/SBV/Control/BaseIO.hs
@@ -225,7 +225,10 @@
 getProof :: Query String
 getProof = Trans.getProof
 
--- | Retrieve an interpolant after an 'Data.SBV.Control.Unsat' result is obtained. Note you must have arranged for
+-- | Interpolant extraction for MathSAT. Compare with 'getInterpolantZ3', which performs
+-- similar function (but with a different use model) in Z3.
+--
+-- Retrieve an interpolant after an 'Data.SBV.Control.Unsat' result is obtained. Note you must have arranged for
 -- interpolants to be produced first via
 --
 -- @
@@ -235,7 +238,7 @@
 -- for this call to not error out!
 --
 -- To get an interpolant for a pair of formulas @A@ and @B@, use a 'Data.SBV.constrainWithAttribute' call to attach
--- interplation groups to @A@ and @B@. Then call 'getInterpolant' @[\"A\"]@, assuming those are the names
+-- interplation groups to @A@ and @B@. Then call 'getInterpolantMathSAT' @[\"A\"]@, assuming those are the names
 -- you gave to the formulas in the @A@ group.
 --
 -- An interpolant for @A@ and @B@ is a formula @I@ such that:
@@ -250,12 +253,52 @@
 -- be satisfied at the same time. Furthermore, @I@ will have only the symbols that are common
 -- to @A@ and @B@.
 --
--- N.B. As of Z3 version 4.8.0; Z3 no longer supports interpolants. Use the MathSAT backend for extracting
--- interpolants. See "Documentation.SBV.Examples.Queries.Interpolants" for an example.
+-- NB. Interpolant extraction isn't standardized well in SMTLib. Currently both MathSAT and Z3
+-- support them, but with slightly differing APIs. So, we support two APIs with slightly
+-- differing types to accommodate both. See "Documentation.SBV.Examples.Queries.Interpolants" for example
+-- usages in these solvers.
 --
--- NB. For a version which generalizes over the underlying monad, see 'Data.SBV.Trans.Control.getInterpolant'
-getInterpolant :: [String] -> Query String
-getInterpolant = Trans.getInterpolant
+-- NB. For a version which generalizes over the underlying monad, see 'Data.SBV.Trans.Control.getInterpolantMathSAT'
+getInterpolantMathSAT :: [String] -> Query String
+getInterpolantMathSAT = Trans.getInterpolantMathSAT
+
+-- | Interpolant extraction for z3. Compare with 'getInterpolantMathSAT', which performs
+-- similar function (but with a different use model) in MathSAT.
+--
+-- Unlike the MathSAT variant, you should simply call 'getInterpolantZ3' on symbolic booleans
+-- to retrieve the interpolant. Do not call `checkSat` or create named constraints. This makes it
+-- harder to identify formulas, but the current state of affairs in interpolant API requires this kludge.
+--
+-- An interpolant for @A@ and @B@ is a formula @I@ such that:
+--
+-- @
+--        A ==> I
+--    and B ==> not I
+-- @
+--
+-- That is, it's evidence that @A@ and @B@ cannot be true together
+-- since @A@ implies @I@ but @B@ implies @not I@; establishing that @A@ and @B@ cannot
+-- be satisfied at the same time. Furthermore, @I@ will have only the symbols that are common
+-- to @A@ and @B@.
+--
+-- In Z3, interpolants generalize to sequences: If you pass more than two formulas, then you will get
+-- a sequence of interpolants. In general, for @N@ formulas that are not satisfiable together, you will be
+-- returned @N-1@ interpolants. If formulas are @A1 .. An@, then interpolants will be @I1 .. I(N-1)@, such
+-- that @A1 ==> I1@, @A2 /\\ I1 ==> I2@, @A3 /\\ I2 ==> I3@, ..., and finally @AN ===> not I(N-1)@.
+--
+-- Currently, SBV only returns simple and sequence interpolants, and does not support tree-interpolants.
+-- If you need these, please get in touch. Furthermore, the result will be a list of mere strings representing the
+-- interpolating formulas, as opposed to a more structured type. Please get in touch if you use this function and can
+-- suggest a better API.
+--
+-- NB. Interpolant extraction isn't standardized well in SMTLib. Currently both MathSAT and Z3
+-- support them, but with slightly differing APIs. So, we support two APIs with slightly
+-- differing types to accommodate both. See "Documentation.SBV.Examples.Queries.Interpolants" for example
+-- usages in these solvers.
+--
+-- NB. For a version which generalizes over the underlying monad, see 'Data.SBV.Trans.Control.getInterpolantZ3'
+getInterpolantZ3 :: [SBool] -> Query String
+getInterpolantZ3 = Trans.getInterpolantZ3
 
 -- | Retrieve assertions. Note you must have arranged for
 -- assertions to be available first via
diff --git a/Data/SBV/Control/Query.hs b/Data/SBV/Control/Query.hs
--- a/Data/SBV/Control/Query.hs
+++ b/Data/SBV/Control/Query.hs
@@ -19,7 +19,7 @@
 module Data.SBV.Control.Query (
        send, ask, retrieveResponse
      , CheckSatResult(..), checkSat, checkSatUsing, checkSatAssuming, checkSatAssumingWithUnsatisfiableSet
-     , getUnsatCore, getProof, getInterpolant, getAssignment, getOption, freshVar, freshVar_, freshArray, freshArray_, push, pop, getAssertionStackDepth
+     , getUnsatCore, getProof, getInterpolantMathSAT, getInterpolantZ3, getAssignment, getOption, freshVar, freshVar_, freshArray, freshArray_, push, pop, getAssertionStackDepth
      , inNewAssertionStack, echo, caseSplit, resetAssertions, exit, getAssertions, getValue, getUninterpretedValue, getModel, getSMTResult
      , getLexicographicOptResults, getIndependentOptResults, getParetoOptResults, getAllSatResult, getUnknownReason, getObservables, ensureSat
      , SMTOption(..), SMTInfoFlag(..), SMTErrorBehavior(..), SMTReasonUnknown(..), SMTInfoResponse(..), getInfo
@@ -30,8 +30,8 @@
      , io
      ) where
 
-import Control.Monad            (unless, when, zipWithM)
-import Control.Monad.IO.Class   (MonadIO)
+import Control.Monad          (unless, when, zipWithM)
+import Control.Monad.IO.Class (MonadIO)
 
 import Data.IORef (readIORef)
 
@@ -653,11 +653,11 @@
         -- result of parsing is ignored.
         parse r bad $ \_ -> return r
 
--- | Generalization of 'Data.SBV.Control.getInterpolant'
-getInterpolant :: (MonadIO m, MonadQuery m) => [String] -> m String
-getInterpolant fs
+-- | Generalization of 'Data.SBV.Control.getInterpolantMathSAT'. Use this version with MathSAT.
+getInterpolantMathSAT :: (MonadIO m, MonadQuery m) => [String] -> m String
+getInterpolantMathSAT fs
   | null fs
-  = error "SBV.getInterpolant requires at least one marked constraint, received none!"
+  = error "SBV.getInterpolantMathSAT requires at least one marked constraint, received none!"
   | True
   = do let bar s = '|' : s ++ "|"
            cmd = "(get-interpolant (" ++ unwords (map bar fs) ++ "))"
@@ -670,6 +670,25 @@
                                  , "and that you have used the proper attributes using the"
                                  , "constrainWithAttribute function."
                                  ]
+
+       r <- ask cmd
+
+       parse r bad $ \e -> return $ serialize False e
+
+
+-- | Generalization of 'Data.SBV.Control.getInterpolantZ3'. Use this version with Z3.
+getInterpolantZ3 :: (MonadIO m, MonadQuery m) => [SBool] -> m String
+getInterpolantZ3 fs
+  | length fs < 2
+  = error $ "SBV.getInterpolantZ3 requires at least two booleans, received: " ++ show fs
+  | True
+  = do ss <- let fAll []     sofar = return $ reverse sofar
+                 fAll (b:bs) sofar = do sv <- inNewContext (`sbvToSV` b)
+                                        fAll bs (sv : sofar)
+             in fAll fs []
+
+       let cmd = "(get-interpolant " ++ unwords (map show ss) ++ ")"
+           bad = unexpected "getInterpolant" cmd "a get-interpolant response" Nothing
 
        r <- ask cmd
 
diff --git a/Data/SBV/Control/Utils.hs b/Data/SBV/Control/Utils.hs
--- a/Data/SBV/Control/Utils.hs
+++ b/Data/SBV/Control/Utils.hs
@@ -402,9 +402,8 @@
           c2w8 = fromIntegral . ord
 
    -- Otherwise we have a good old sequence, just parse it simply:
-   sexprToVal (EApp [ECon "seq.++", l, r])            = do l' <- sexprToVal l
-                                                           r' <- sexprToVal r
-                                                           return $ l' ++ r'
+   sexprToVal (EApp (ECon "seq.++" : rest))           = do elts <- mapM sexprToVal rest
+                                                           return $ concat elts
    sexprToVal (EApp [ECon "seq.unit", a])             = do a' <- sexprToVal a
                                                            return [a']
    sexprToVal (EApp [ECon "as", ECon "seq.empty", _]) = return []
@@ -980,7 +979,7 @@
                 walk (EApp [ECon "seq.unit", v])             = case recoverKindedValue ek v of
                                                                  Just w -> [cvVal w]
                                                                  Nothing -> error $ "Cannot parse a sequence item of kind " ++ show ek ++ " from: " ++ show v ++ extra v
-                walk (EApp [ECon "seq.++", pre, post])       = walk pre ++ walk post
+                walk (EApp (ECon "seq.++" : rest))           = concatMap walk rest
                 walk cur                                     = error $ "Expected a sequence constant, but received: " ++ show cur ++ extra cur
 
                 extra cur | show cur == t = ""
@@ -1166,7 +1165,7 @@
 -- | What are the top level inputs? Trackers are returned as top level existentials
 getQuantifiedInputs :: (MonadIO m, MonadQuery m) => m [(Quantifier, NamedSymVar)]
 getQuantifiedInputs = do State{rinps} <- queryState
-                         (rQinps, rTrackers) <- liftIO $ readIORef rinps
+                         ((rQinps, rTrackers), _) <- liftIO $ readIORef rinps
 
                          let qinps    = reverse rQinps
                              trackers = map (EX,) $ reverse rTrackers
@@ -1611,7 +1610,7 @@
                     case queryContext of
                       QueryInternal -> return ()         -- we're good, internal usages don't mess with scopes
                       QueryExternal -> do
-                        (userInps, _) <- readIORef (rinps st)
+                        ((userInps, _), _) <- readIORef (rinps st)
                         let badInps = reverse [n | (ALL, (_, n)) <- userInps]
                         case badInps of
                           [] -> return ()
diff --git a/Data/SBV/Core/Data.hs b/Data/SBV/Core/Data.hs
--- a/Data/SBV/Core/Data.hs
+++ b/Data/SBV/Core/Data.hs
@@ -389,7 +389,7 @@
    softConstrain :: SBool -> m ()
    -- | Add a named constraint. The name is used in unsat-core extraction.
    namedConstraint :: String -> SBool -> m ()
-   -- | Add a constraint, with arbitrary attributes. Used in interpolant generation.
+   -- | Add a constraint, with arbitrary attributes.
    constrainWithAttribute :: [(String, String)] -> SBool -> m ()
    -- | Set info. Example: @setInfo ":status" ["unsat"]@.
    setInfo :: String -> [String] -> m ()
diff --git a/Data/SBV/Core/Floating.hs b/Data/SBV/Core/Floating.hs
--- a/Data/SBV/Core/Floating.hs
+++ b/Data/SBV/Core/Floating.hs
@@ -223,14 +223,14 @@
   -- >>> prove $ roundTrip @Int32
   -- Falsifiable. Counter-example:
   --   s0 = RoundNearestTiesToEven :: RoundingMode
-  --   s1 =            -2147483616 :: Int32
+  --   s1 =              134280664 :: Int32
   --
   -- Note how we get a failure on `Int32`. The counter-example value is not representable exactly as a single precision float:
   --
-  -- >>> toRational (-2147483616 :: Float)
-  -- (-2147483648) % 1
+  -- >>> toRational (134280664 :: Float)
+  -- 134280672 % 1
   --
-  -- Note how the numerator is different, it is off by 32. This is hardly surprising, since floats become sparser as
+  -- Note how the numerator is different, it is off by 8. This is hardly surprising, since floats become sparser as
   -- the magnitude increases to be able to cover all the integer values representable.
   toSFloat :: SRoundingMode -> SBV a -> SFloat
 
diff --git a/Data/SBV/Core/Model.hs b/Data/SBV/Core/Model.hs
--- a/Data/SBV/Core/Model.hs
+++ b/Data/SBV/Core/Model.hs
@@ -1128,24 +1128,24 @@
 -- | 'sTrue' if the sum of coefficients for 'sTrue' elements is at most @k@. Generalizes 'pbAtMost'.
 pbLe :: [(Int, SBool)] -> Int -> SBool
 pbLe xs k
- | k < 0                       = error $ "SBV.pbLe: Non-negative value required, received: " ++ show k
- | all isConcrete (map snd xs) = literal $ sum [pbToInteger "pbLe" c b | (c, b) <- xs] <= fromIntegral k
- | True                        = liftPB "pbLe" (PB_Le (map fst xs) k) (map snd xs)
+ | k < 0                     = error $ "SBV.pbLe: Non-negative value required, received: " ++ show k
+ | all (isConcrete . snd) xs = literal $ sum [pbToInteger "pbLe" c b | (c, b) <- xs] <= fromIntegral k
+ | True                      = liftPB "pbLe" (PB_Le (map fst xs) k) (map snd xs)
 
 -- | 'sTrue' if the sum of coefficients for 'sTrue' elements is at least @k@. Generalizes 'pbAtLeast'.
 pbGe :: [(Int, SBool)] -> Int -> SBool
 pbGe xs k
- | k < 0                       = error $ "SBV.pbGe: Non-negative value required, received: " ++ show k
- | all isConcrete (map snd xs) = literal $ sum [pbToInteger "pbGe" c b | (c, b) <- xs] >= fromIntegral k
- | True                        = liftPB "pbGe" (PB_Ge (map fst xs) k) (map snd xs)
+ | k < 0                     = error $ "SBV.pbGe: Non-negative value required, received: " ++ show k
+ | all (isConcrete . snd) xs = literal $ sum [pbToInteger "pbGe" c b | (c, b) <- xs] >= fromIntegral k
+ | True                      = liftPB "pbGe" (PB_Ge (map fst xs) k) (map snd xs)
 
 -- | 'sTrue' if the sum of coefficients for 'sTrue' elements is exactly least @k@. Useful for coding
 -- /exactly K-of-N/ constraints, and in particular mutex constraints.
 pbEq :: [(Int, SBool)] -> Int -> SBool
 pbEq xs k
- | k < 0                       = error $ "SBV.pbEq: Non-negative value required, received: " ++ show k
- | all isConcrete (map snd xs) = literal $ sum [pbToInteger "pbEq" c b | (c, b) <- xs] == fromIntegral k
- | True                        = liftPB "pbEq" (PB_Eq (map fst xs) k) (map snd xs)
+ | k < 0                     = error $ "SBV.pbEq: Non-negative value required, received: " ++ show k
+ | all (isConcrete . snd) xs = literal $ sum [pbToInteger "pbEq" c b | (c, b) <- xs] == fromIntegral k
+ | True                      = liftPB "pbEq" (PB_Eq (map fst xs) k) (map snd xs)
 
 -- | 'sTrue' if there is at most one set bit
 pbMutexed :: [SBool] -> SBool
diff --git a/Data/SBV/Core/Symbolic.hs b/Data/SBV/Core/Symbolic.hs
--- a/Data/SBV/Core/Symbolic.hs
+++ b/Data/SBV/Core/Symbolic.hs
@@ -107,8 +107,16 @@
 newtype NodeId = NodeId Int deriving (Eq, Ord)
 
 -- | A symbolic word, tracking it's signedness and size.
-data SV = SV !Kind !NodeId deriving (Eq, Ord)
+data SV = SV !Kind !NodeId
 
+-- | For equality, we merely use the node-id
+instance Eq SV where
+  SV _ n1 == SV _ n2 = n1 == n2
+
+-- | Again, simply use the node-id for ordering
+instance Ord SV where
+  SV _ n1 `compare` SV _ n2 = n1 `compare` n2
+
 instance HasKind SV where
   kindOf (SV k _) = k
 
@@ -886,7 +894,9 @@
                     , rctr         :: IORef Int
                     , rUsedKinds   :: IORef KindSet
                     , rUsedLbls    :: IORef (Set.Set String)
-                    , rinps        :: IORef ([(Quantifier, NamedSymVar)], [NamedSymVar]) -- User defined, and internal existential
+                    , rinps        :: IORef (([(Quantifier, NamedSymVar)], [NamedSymVar]), Set.Set String) -- First : User defined, with proper quantifiers
+                                                                                                           -- Second: Internally declared, always existential
+                                                                                                           -- Third : Entire set of names, for faster lookup
                     , rConstraints :: IORef (S.Seq (Bool, [(String, String)], SV))
                     , routs        :: IORef [SV]
                     , rtblMap      :: IORef TableMap
@@ -1063,7 +1073,7 @@
                                      Concrete{}           -> ALL
                                n = "__internal_sbv_" ++ nm
                                v = (sv, n)
-                           modifyState st rinps (first ((q, v) :))
+                           modifyState st rinps (first ((q, v) :) *** Set.insert n)
                                      $ modifyIncState st rNewInps (\newInps -> case q of
                                                                                  EX -> v : newInps
                                                                                  -- I don't think the following can actually happen
@@ -1143,7 +1153,7 @@
   | '|' `elem` nm
   = err "contains the character `|', which is not allowed!"
   | '\\' `elem` nm
-  = err "contains the character `\', which is not allowed!"
+  = err "contains the character `\\', which is not allowed!"
   | True
   = do old <- readIORef $ rUsedLbls st
        if nm `Set.member` old
@@ -1365,10 +1375,9 @@
 -- | Introduce a new user name. We simply append a suffix if we have seen this variable before.
 introduceUserName :: State -> Bool -> String -> Kind -> Quantifier -> SV -> IO SVal
 introduceUserName st isTracker nmOrig k q sv = do
-        (is, ints) <- readIORef (rinps st)
+        (_, old) <- readIORef (rinps st)
 
-        let old = [n | (_, (_, n)) <- is] ++ [n | (_, n) <- ints]
-            nm  = mkUnique nmOrig old
+        let nm  = mkUnique nmOrig old
 
         if isTracker && q == ALL
            then error $ "SBV: Impossible happened! A universally quantified tracker variable is being introduced: " ++ show nm
@@ -1382,16 +1391,16 @@
                                                            , "Only existential variables are supported in query mode."
                                                            ]
                    if isTracker
-                      then modifyState st rinps (second ((:) (sv, nm)))
+                      then modifyState st rinps (second ((:) (sv, nm)) *** Set.insert nm)
                                      $ noInteractive ["Adding a new tracker variable in interactive mode: " ++ show nm]
-                      else modifyState st rinps (first ((:) (q, (sv, nm))))
+                      else modifyState st rinps (first ((:) (q, (sv, nm))) *** Set.insert nm)
                                      $ modifyIncState st rNewInps newInp
                    return $ SVal k $ Right $ cache (const (return sv))
 
    where -- The following can be rather slow if we keep reusing the same prefix, but I doubt it'll be a problem in practice
          -- Also, the following will fail if we span the range of integers without finding a match, but your computer would
          -- die way ahead of that happening if that's the case!
-         mkUnique prefix names = head $ dropWhile (`elem` names) (prefix : [prefix ++ "_" ++ show i | i <- [(0::Int)..]])
+         mkUnique prefix names = head $ dropWhile (`Set.member` names) (prefix : [prefix ++ "_" ++ show i | i <- [(0::Int)..]])
 
 -- | Generalization of 'Data.SBV.addAxiom'
 addAxiom :: MonadSymbolic m => String -> [String] -> m ()
@@ -1415,7 +1424,7 @@
      pgm       <- newIORef (SBVPgm S.empty)
      emap      <- newIORef Map.empty
      cmap      <- newIORef Map.empty
-     inps      <- newIORef ([], [])
+     inps      <- newIORef (([], []), Set.empty)
      outs      <- newIORef []
      tables    <- newIORef Map.empty
      arrays    <- newIORef IMap.empty
@@ -1483,7 +1492,7 @@
                                        , rObservables=observes
                                        } = do
    SBVPgm rpgm  <- readIORef pgm
-   inpsO <- (reverse *** reverse) <$> readIORef inps
+   inpsO <- (reverse *** reverse) . fst <$> readIORef inps
    outsO <- reverse <$> readIORef outs
 
    let swap  (a, b)              = (b, a)
diff --git a/Data/SBV/List.hs b/Data/SBV/List.hs
--- a/Data/SBV/List.hs
+++ b/Data/SBV/List.hs
@@ -130,7 +130,7 @@
 -- Q.E.D.
 -- >>> sat $ \(l :: SList Word16) -> length l .>= 2 .&& listToListAt l 0 ./= listToListAt l (length l - 1)
 -- Satisfiable. Model:
---   s0 = [0,0,2] :: [Word16]
+--   s0 = [0,0,256] :: [Word16]
 listToListAt :: SymVal a => SList a -> SInteger -> SList a
 listToListAt s offset = subList s offset 1
 
diff --git a/Data/SBV/RegExp.hs b/Data/SBV/RegExp.hs
--- a/Data/SBV/RegExp.hs
+++ b/Data/SBV/RegExp.hs
@@ -87,7 +87,7 @@
 -- >>> let phone = pre * "-" * post
 -- >>> sat $ \s -> (s :: SString) `match` phone
 -- Satisfiable. Model:
---   s0 = "200-1000" :: String
+--   s0 = "100-1000" :: String
 class RegExpMatchable a where
    -- | @`match` s r@ checks whether @s@ is in the language generated by @r@.
    match :: a -> RegExp -> SBool
diff --git a/Data/SBV/SMT/SMT.hs b/Data/SBV/SMT/SMT.hs
--- a/Data/SBV/SMT/SMT.hs
+++ b/Data/SBV/SMT/SMT.hs
@@ -439,10 +439,12 @@
 -- | Given an 'Data.SBV.allSat' call, we typically want to iterate over it and print the results in sequence. The
 -- 'displayModels' function automates this task by calling @disp@ on each result, consecutively. The first
 -- 'Int' argument to @disp@ 'is the current model number. The second argument is a tuple, where the first
--- element indicates whether the model is alleged (i.e., if the solver is not sure, returing Unknown)
-displayModels :: SatModel a => (Int -> (Bool, a) -> IO ()) -> AllSatResult -> IO Int
-displayModels disp (AllSatResult (_, _, _, ms)) = do
-    inds <- zipWithM display [a | Right a <- map (getModelAssignment . SatResult) ms] [(1::Int)..]
+-- element indicates whether the model is alleged (i.e., if the solver is not sure, returing Unknown).
+-- The arrange argument can sort the results in any way you like, if necessary.
+displayModels :: SatModel a => ([(Bool, a)] -> [(Bool, a)]) -> (Int -> (Bool, a) -> IO ()) -> AllSatResult -> IO Int
+displayModels arrange disp (AllSatResult (_, _, _, ms)) = do
+    let models = [a | Right a <- map (getModelAssignment . SatResult) ms]
+    inds <- zipWithM display (arrange models) [(1::Int)..]
     return $ last (0:inds)
   where display r i = disp i r >> return i
 
diff --git a/Data/SBV/SMT/SMTLib2.hs b/Data/SBV/SMT/SMTLib2.hs
--- a/Data/SBV/SMT/SMTLib2.hs
+++ b/Data/SBV/SMT/SMTLib2.hs
@@ -304,7 +304,8 @@
         mkLet (s, SBVApp (Label m) [e]) = "(let ((" ++ show s ++ " " ++ cvtSV                skolemMap          e ++ ")) ; " ++ m
         mkLet (s, e)                    = "(let ((" ++ show s ++ " " ++ cvtExp solverCaps rm skolemMap tableMap e ++ "))"
 
-        userName s = case s `lookup` map snd inputs of
+        userNameMap = M.fromList (map snd inputs)
+        userName s = case M.lookup s userNameMap of
                         Just u  | show s /= u -> " ; tracks user variable " ++ show u
                         _ -> ""
 
diff --git a/Data/SBV/Set.hs b/Data/SBV/Set.hs
--- a/Data/SBV/Set.hs
+++ b/Data/SBV/Set.hs
@@ -379,8 +379,8 @@
 --
 -- >>> prove $ \x (s :: SSet Integer) -> (x `delete` s) `isProperSubsetOf` s
 -- Falsifiable. Counter-example:
---   s0 =       0 :: Integer
---   s1 = U - {0} :: {Integer}
+--   s0 =         0 :: Integer
+--   s1 = U - {0,1} :: {Integer}
 --
 -- >>> prove $ \x (s :: SSet Integer) -> x `member` s .=> (x `delete` s) `isProperSubsetOf` s
 -- Q.E.D.
diff --git a/Data/SBV/String.hs b/Data/SBV/String.hs
--- a/Data/SBV/String.hs
+++ b/Data/SBV/String.hs
@@ -133,7 +133,7 @@
 -- Q.E.D.
 -- >>> sat $ \s -> length s .>= 2 .&& strToStrAt s 0 ./= strToStrAt s (length s - 1)
 -- Satisfiable. Model:
---   s0 = "\NUL\STX" :: String
+--   s0 = "\NUL\NUL\DLE" :: String
 strToStrAt :: SString -> SInteger -> SString
 strToStrAt s offset = subStr s offset 1
 
diff --git a/Data/SBV/Trans.hs b/Data/SBV/Trans.hs
--- a/Data/SBV/Trans.hs
+++ b/Data/SBV/Trans.hs
@@ -23,9 +23,11 @@
   , sAnd, sOr, sAny, sAll
   -- ** Bit-vectors
   -- *** Unsigned bit-vectors
-  , SWord8, SWord16, SWord32, SWord64
+  , SWord8, SWord16, SWord32, SWord64, SWord, WordN
   -- *** Signed bit-vectors
-  , SInt8, SInt16, SInt32, SInt64
+  , SInt8, SInt16, SInt32, SInt64, SInt, IntN
+  -- *** Converting between fixed-size and arbitrary bitvectors
+  , IsNonZero, FromSized, ToSized, fromSized, toSized
   -- ** Unbounded integers
   , SInteger
   -- ** Floating point numbers
@@ -163,6 +165,8 @@
 import Data.SBV.Provers.Prover
 
 import Data.SBV.Client
+import Data.SBV.Client.BaseIO  (FromSized, ToSized, fromSized, toSized)
+
 
 import Data.SBV.Utils.TDiff   (Timing(..))
 
diff --git a/Data/SBV/Trans/Control.hs b/Data/SBV/Trans/Control.hs
--- a/Data/SBV/Trans/Control.hs
+++ b/Data/SBV/Trans/Control.hs
@@ -37,7 +37,7 @@
      , getProof
 
      -- ** Extracting interpolants
-     , getInterpolant
+     , getInterpolantMathSAT, getInterpolantZ3
 
      -- ** Extracting assertions
      , getAssertions
diff --git a/Documentation/SBV/Examples/BitPrecise/BrokenSearch.hs b/Documentation/SBV/Examples/BitPrecise/BrokenSearch.hs
--- a/Documentation/SBV/Examples/BitPrecise/BrokenSearch.hs
+++ b/Documentation/SBV/Examples/BitPrecise/BrokenSearch.hs
@@ -22,13 +22,13 @@
 --
 -- >>> checkArithOverflow midPointBroken
 -- Documentation/SBV/Examples/BitPrecise/BrokenSearch.hs:35:28:+!: SInt32 addition overflows: Violated. Model:
---   low  = 2147483583 :: Int32
---   high = 2147483647 :: Int32
+--   low  = 2147475457 :: Int32
+--   high = 2147483645 :: Int32
 --
 -- Indeed:
 --
--- >>> (2147483583 + 2147483647) `div` (2::Int32)
--- -33
+-- >>> (2147475457 + 2147483645) `div` (2::Int32)
+-- -4097
 --
 -- giving us a negative mid-point value!
 midPointBroken :: SInt32 -> SInt32 -> SInt32
diff --git a/Documentation/SBV/Examples/Crypto/AES.hs b/Documentation/SBV/Examples/Crypto/AES.hs
--- a/Documentation/SBV/Examples/Crypto/AES.hs
+++ b/Documentation/SBV/Examples/Crypto/AES.hs
@@ -32,6 +32,8 @@
 
 module Documentation.SBV.Examples.Crypto.AES where
 
+import Control.Monad (void)
+
 import Data.SBV
 import Data.SBV.Tools.CodeGen
 import Data.SBV.Tools.Polynomial
@@ -570,7 +572,7 @@
 -- | Generate code for AES functionality; given the key size.
 cgAESLibrary :: Int -> Maybe FilePath -> IO ()
 cgAESLibrary sz mbd
-  | sz `elem` [128, 192, 256] = compileToCLib mbd nm (aesLibComponents sz)
+  | sz `elem` [128, 192, 256] = void $ compileToCLib mbd nm (aesLibComponents sz)
   | True                      = error $ "cgAESLibrary: Size must be one of 128, 192, or 256, received: " ++ show sz
   where nm = "aes" ++ show sz ++ "Lib"
 
diff --git a/Documentation/SBV/Examples/Existentials/CRCPolynomial.hs b/Documentation/SBV/Examples/Existentials/CRCPolynomial.hs
--- a/Documentation/SBV/Examples/Existentials/CRCPolynomial.hs
+++ b/Documentation/SBV/Examples/Existentials/CRCPolynomial.hs
@@ -60,7 +60,7 @@
                                 -- polynomial, as all CRC polynomials have the "+1"
                                 -- term in them set. This simplifies the query.
                                 return $ sTestBit p 0 .&& crcGood hd p s r
-                       cnt <- displayModels disp res
+                       cnt <- displayModels id disp res
                        putStrLn $ "Found: " ++ show cnt ++ " polynomail(s)."
         where disp :: Int -> (Bool, Word16) -> IO ()
               disp n (_, s) = putStrLn $ "Polynomial #" ++ show n ++ ". x^16 + " ++ showPolynomial False s
diff --git a/Documentation/SBV/Examples/Lists/BoundedMutex.hs b/Documentation/SBV/Examples/Lists/BoundedMutex.hs
--- a/Documentation/SBV/Examples/Lists/BoundedMutex.hs
+++ b/Documentation/SBV/Examples/Lists/BoundedMutex.hs
@@ -98,7 +98,8 @@
 -- so long as both the agents and the arbiter act according to the rules. The check is bounded up-to-the
 -- given concrete bound; so this is an example of a bounded-model-checking style proof. We have:
 --
--- >>> checkMutex 20
+-- Test turned off. See: https://github.com/Z3Prover/z3/issues/2956
+-- checkMutex 20
 -- All is good!
 checkMutex :: Int -> IO ()
 checkMutex b = runSMT $ do
diff --git a/Documentation/SBV/Examples/Lists/Nested.hs b/Documentation/SBV/Examples/Lists/Nested.hs
--- a/Documentation/SBV/Examples/Lists/Nested.hs
+++ b/Documentation/SBV/Examples/Lists/Nested.hs
@@ -24,7 +24,8 @@
 
 -- | Simple example demonstrating the use of nested lists. We have:
 --
--- >>> nestedExample
+-- Turned off. See: https://github.com/Z3Prover/z3/issues/2820
+-- nestedExample
 -- [[1,2,3],[4,5,6,7],[8,9,10],[11,12,13]]
 nestedExample :: IO ()
 nestedExample = runSMT $ do a :: SList [Integer] <- free "a"
diff --git a/Documentation/SBV/Examples/Misc/Floating.hs b/Documentation/SBV/Examples/Misc/Floating.hs
--- a/Documentation/SBV/Examples/Misc/Floating.hs
+++ b/Documentation/SBV/Examples/Misc/Floating.hs
@@ -58,21 +58,21 @@
 --
 -- >>> assocPlusRegular
 -- Falsifiable. Counter-example:
---   x = 3.1705284e18 :: Float
---   y =  5.634997e12 :: Float
---   z = -1.503316e20 :: Float
+--   x =   5.615828e-4 :: Float
+--   y = -2.2688436e-3 :: Float
+--   z =    -2047.9991 :: Float
 --
 -- Indeed, we have:
 --
--- >>> let x = 3.1705284e18 :: Float
--- >>> let y =  5.634997e12 :: Float
--- >>> let z = -1.503316e20 :: Float
+-- >>> let x =   5.615828e-4 :: Float
+-- >>> let y = -2.2688436e-3 :: Float
+-- >>> let z =    -2047.9991 :: Float
 -- >>> x + (y + z)
--- -1.4716107e20
+-- -2048.001
 -- >>> (x + y) + z
--- -1.4716106e20
+-- -2048.0007
 --
--- Note the difference in the last digit before the exponent!
+-- Note the difference in the results!
 assocPlusRegular :: IO ThmResult
 assocPlusRegular = prove $ do [x, y, z] <- sFloats ["x", "y", "z"]
                               let lhs = x+(y+z)
@@ -92,13 +92,13 @@
 --
 -- >>> nonZeroAddition
 -- Falsifiable. Counter-example:
---   a = -2.032879e-20 :: Float
---   b =  4.887041e-39 :: Float
+--   a =   -1.9999999 :: Float
+--   b = 9.403954e-38 :: Float
 --
 -- Indeed, we have:
 --
--- >>> let a = -2.032879e-20 :: Float
--- >>> let b =  4.887041e-39 :: Float
+-- >>> let a =   -1.9999999 :: Float
+-- >>> let b = 9.403954e-38 :: Float
 -- >>> a + b == a
 -- True
 -- >>> b == 0
@@ -121,11 +121,11 @@
 --
 -- >>> multInverse
 -- Falsifiable. Counter-example:
---   a = -6.72794746807321e-309 :: Double
+--   a = -1.910829855912238e-308 :: Double
 --
 -- Indeed, we have:
 --
--- >>> let a = -6.72794746807321e-309 :: Double
+-- >>> let a = -1.910829855912238e-308 :: Double
 -- >>> a * (1/a)
 -- 0.9999999999999999
 multInverse :: IO ThmResult
diff --git a/Documentation/SBV/Examples/ProofTools/BMC.hs b/Documentation/SBV/Examples/ProofTools/BMC.hs
--- a/Documentation/SBV/Examples/ProofTools/BMC.hs
+++ b/Documentation/SBV/Examples/ProofTools/BMC.hs
@@ -83,7 +83,7 @@
 -- BMC: Iteration: 2
 -- BMC: Iteration: 3
 -- BMC: Solution found at iteration 3
--- Right (3,[(0,10),(0,6),(0,2),(2,2)])
+-- Right (3,[(0,10),(0,6),(2,6),(2,2)])
 --
 -- As expected, there's a solution in this case. Furthermore, since the BMC engine
 -- found a solution at depth @3@, we also know that there is no solution at
diff --git a/Documentation/SBV/Examples/Puzzles/Counts.hs b/Documentation/SBV/Examples/Puzzles/Counts.hs
--- a/Documentation/SBV/Examples/Puzzles/Counts.hs
+++ b/Documentation/SBV/Examples/Puzzles/Counts.hs
@@ -30,6 +30,7 @@
 module Documentation.SBV.Examples.Puzzles.Counts where
 
 import Data.SBV
+import Data.List (sortOn)
 
 -- | We will assume each number can be represented by an 8-bit word, i.e., can be at most 128.
 type Count  = SWord8
@@ -58,13 +59,13 @@
 --
 -- >>> counts
 -- Solution #1
--- In this sentence, the number of occurrences of 0 is 1, of 1 is 7, of 2 is 3, of 3 is 2, of 4 is 1, of 5 is 1, of 6 is 1, of 7 is 2, of 8 is 1, of 9 is 1.
--- Solution #2
 -- In this sentence, the number of occurrences of 0 is 1, of 1 is 11, of 2 is 2, of 3 is 1, of 4 is 1, of 5 is 1, of 6 is 1, of 7 is 1, of 8 is 1, of 9 is 1.
+-- Solution #2
+-- In this sentence, the number of occurrences of 0 is 1, of 1 is 7, of 2 is 3, of 3 is 2, of 4 is 1, of 5 is 1, of 6 is 1, of 7 is 2, of 8 is 1, of 9 is 1.
 -- Found: 2 solution(s).
 counts :: IO ()
 counts = do res <- allSat $ puzzle `fmap` mkExistVars 10
-            cnt <- displayModels disp res
+            cnt <- displayModels (sortOn show) disp res
             putStrLn $ "Found: " ++ show cnt ++ " solution(s)."
   where disp n (_, s) = do putStrLn $ "Solution #" ++ show n
                            dispSolution s
diff --git a/Documentation/SBV/Examples/Puzzles/Euler185.hs b/Documentation/SBV/Examples/Puzzles/Euler185.hs
--- a/Documentation/SBV/Examples/Puzzles/Euler185.hs
+++ b/Documentation/SBV/Examples/Puzzles/Euler185.hs
@@ -46,6 +46,6 @@
 -- Number of solutions: 1
 solveEuler185 :: IO ()
 solveEuler185 = do res <- allSat euler185
-                   cnt <- displayModels disp res
+                   cnt <- displayModels id disp res
                    putStrLn $ "Number of solutions: " ++ show cnt
    where disp _ (_, ss) = putStrLn $ concatMap show (ss :: [Word8])
diff --git a/Documentation/SBV/Examples/Puzzles/MagicSquare.hs b/Documentation/SBV/Examples/Puzzles/MagicSquare.hs
--- a/Documentation/SBV/Examples/Puzzles/MagicSquare.hs
+++ b/Documentation/SBV/Examples/Puzzles/MagicSquare.hs
@@ -59,7 +59,7 @@
  | n < 0 = putStrLn $ "n must be non-negative, received: " ++ show n
  | True  = do putStrLn $ "Finding all " ++ show n ++ "-magic squares.."
               res <- allSat $ (isMagic . chunk n) `fmap` mkExistVars n2
-              cnt <- displayModels disp res
+              cnt <- displayModels id disp res
               putStrLn $ "Found: " ++ show cnt ++ " solution(s)."
    where n2 = n * n
          disp i (_, model)
diff --git a/Documentation/SBV/Examples/Puzzles/NQueens.hs b/Documentation/SBV/Examples/Puzzles/NQueens.hs
--- a/Documentation/SBV/Examples/Puzzles/NQueens.hs
+++ b/Documentation/SBV/Examples/Puzzles/NQueens.hs
@@ -36,7 +36,7 @@
  | n < 0 = putStrLn $ "n must be non-negative, received: " ++ show n
  | True  = do putStrLn $ "Finding all " ++ show n ++ "-queens solutions.."
               res <- allSat $ isValid n `fmap` mkExistVars n
-              cnt <- displayModels disp res
+              cnt <- displayModels id disp res
               putStrLn $ "Found: " ++ show cnt ++ " solution(s)."
    where disp i (_, s) = do putStr $ "Solution #" ++ show i ++ ": "
                             dispSolution s
diff --git a/Documentation/SBV/Examples/Puzzles/Sudoku.hs b/Documentation/SBV/Examples/Puzzles/Sudoku.hs
--- a/Documentation/SBV/Examples/Puzzles/Sudoku.hs
+++ b/Documentation/SBV/Examples/Puzzles/Sudoku.hs
@@ -76,7 +76,7 @@
 solveAll :: Puzzle -> IO ()
 solveAll p@(i, f) = do putStrLn "Finding all solutions.."
                        res <- allSat $ (valid . f) `fmap` mkExistVars i
-                       cnt <- displayModels disp res
+                       cnt <- displayModels id disp res
                        putStrLn $ "Found: " ++ show cnt ++ " solution(s)."
    where disp n s = do putStrLn $ "Solution #" ++ show n
                        dispSolution p s
diff --git a/Documentation/SBV/Examples/Puzzles/U2Bridge.hs b/Documentation/SBV/Examples/Puzzles/U2Bridge.hs
--- a/Documentation/SBV/Examples/Puzzles/U2Bridge.hs
+++ b/Documentation/SBV/Examples/Puzzles/U2Bridge.hs
@@ -228,7 +228,7 @@
                               p2 <- exists_
                               return (b, p1, p2)
               res <- allSat $ isValid `fmap` mapM (const genAct) [1..n]
-              cnt <- displayModels disp (rearrange res)
+              cnt <- displayModels (sortOn show) disp res
               if cnt == 0 then return False
                           else do putStrLn $ "Found: " ++ show cnt ++ " solution" ++ plu cnt ++ " with " ++ show n ++ " move" ++ plu n ++ "."
                                   return True
@@ -248,13 +248,6 @@
                sh2 t = let s = show t in if length s < 2 then ' ' : s else s
                shL False = " --> "
                shL True  = " <-- "
-
-        -- The following function can be replaced by id. It's only
-        -- here to make sure the multiple solutions come out in the
-        -- same order and thus not mess up our test suite if the
-        -- solver decides to return them in the alternate order
-        rearrange :: AllSatResult -> AllSatResult
-        rearrange (AllSatResult (b1, b2, b3, ms)) = AllSatResult (b1, b2, b3, sortOn (show . SatResult) ms)
 
 -- | Solve the U2-bridge crossing puzzle, starting by testing solutions with
 -- increasing number of steps, until we find one. We have:
diff --git a/Documentation/SBV/Examples/Queries/Interpolants.hs b/Documentation/SBV/Examples/Queries/Interpolants.hs
--- a/Documentation/SBV/Examples/Queries/Interpolants.hs
+++ b/Documentation/SBV/Examples/Queries/Interpolants.hs
@@ -8,8 +8,10 @@
 --
 -- Demonstrates extraction of interpolants via queries.
 --
--- N.B. As of Z3 version 4.8.0; Z3 no longer supports interpolants. You need
--- to use the MathSAT backend for this example to work.
+-- N.B. Interpolants are supported by MathSAT and Z3. Unfortunately
+-- the extraction of interpolants is not standardized, and are slightly
+-- different for these two solvers. So, we have two separate examples
+-- to demonstrate the usage.
 -----------------------------------------------------------------------------
 
 {-# OPTIONS_GHC -Wall -Werror #-}
@@ -19,7 +21,7 @@
 import Data.SBV
 import Data.SBV.Control
 
--- | Compute the interpolant for the following sets of formulas:
+-- | MathSAT example. Compute the interpolant for the following sets of formulas:
 --
 --     @{x - 3y >= -1, x + y >= 0}@
 --
@@ -39,7 +41,7 @@
 -- An interpolant for these sets would only talk about the variable @x@ that is common
 -- to both. We have:
 --
--- >>> runSMTWith mathSAT example
+-- >>> runSMTWith mathSAT exampleMathSAT
 -- "(<= 0 s0)"
 --
 -- Notice that we get a string back, not a term; so there's some back-translation we need to do. We
@@ -56,13 +58,14 @@
 -- Q.E.D.
 --
 -- This establishes that we indeed have an interpolant!
-example :: Symbolic String
-example = do
+exampleMathSAT :: Symbolic String
+exampleMathSAT = do
        x <- sInteger "x"
        y <- sInteger "y"
        z <- sInteger "z"
 
        -- tell the solver we want interpolants
+       -- NB. Only MathSAT needs this. Z3 doesn't need or like this setting!
        setOption $ ProduceInterpolants True
 
        -- create interpolation constraints. MathSAT requires the relevant formulas
@@ -75,6 +78,44 @@
        -- To obtain the interpolant, we run a query
        query $ do cs <- checkSat
                   case cs of
-                    Unsat -> getInterpolant ["A"]
+                    Unsat -> getInterpolantMathSAT ["A"]
                     Sat   -> error "Unexpected sat result!"
                     Unk   -> error "Unexpected unknown result!"
+
+-- | Z3 example. Compute the interpolant for formulas @y = 2x@ and @y = 2z+1@.
+--
+-- These formulas are not satisfiable together since it would mean
+-- @y@ is both even and odd at the same time. An interpolant for
+-- this pair of formulas is a formula that's expressed only in terms
+-- of @y@, which is the only common symbol among them. We have:
+--
+-- >>> runSMT evenOdd
+-- "(or (= s1 0) (= s1 (* 2 (div s1 2))))"
+--
+-- This is a bit hard to read unfortunately, due to translation artifacts and use of strings. To analyze,
+-- we need to know that @s1@ is @y@ through SBV's translation. Let's express it in
+-- regular infix notation with @y@ for @s1@:
+--
+-- @(y == 0) || (y == 2 * (y `div` 2))@
+--
+-- Notice that the only symbol is @y@, as required. To establish that this is
+-- indeed an interpolant, we should establish that when @y@ is even, this formula
+-- is @True@; and if @y@ is odd, then then it should be @False@. You can argue
+-- mathematically that this indeed the case, but let's just use SBV to prove these:
+--
+-- >>> prove $ \y -> (y `sMod` 2 .== 0) .=> ((y .== 0) .|| (y .== 2 * (y `sDiv` (2::SInteger))))
+-- Q.E.D.
+--
+-- And:
+--
+-- >>> prove $ \y -> (y `sMod` 2 .== 1) .=> sNot ((y .== 0) .|| (y .== 2 * (y `sDiv` (2::SInteger))))
+-- Q.E.D.
+--
+-- This establishes that we indeed have an interpolant!
+evenOdd :: Symbolic String
+evenOdd = do
+       x <- sInteger "x"
+       y <- sInteger "y"
+       z <- sInteger "z"
+
+       query $ getInterpolantZ3 [y .== 2*x, y .== 2*z+1]
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 SBV: SMT Based Verification in Haskell
 
-Copyright (c) 2010-2019, Levent Erkok (erkokl@gmail.com)
+Copyright (c) 2010-2020, Levent Erkok (erkokl@gmail.com)
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0010)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000010)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000010)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x10)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x20)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x40)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0008)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000008)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000008)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x08)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0010)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word32.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 32) #x00000010)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
-[GOOD] (define-fun s2 () (_ BitVec 32) #x00000010)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
 [GOOD] (declare-fun s1 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word64.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000010)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
-[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000010)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
 [GOOD] (declare-fun s1 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x10)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word64.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000020)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
-[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000020)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
 [GOOD] (declare-fun s1 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x20)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x40)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word16.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 16) #x0008)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
-[GOOD] (define-fun s2 () (_ BitVec 16) #x0008)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
 [GOOD] (declare-fun s1 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word32.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 32) #x00000008)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
-[GOOD] (define-fun s2 () (_ BitVec 32) #x00000008)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
 [GOOD] (declare-fun s1 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word64.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000008)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
-[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000008)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
 [GOOD] (declare-fun s1 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x08)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0010)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000010)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000010)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x10)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x20)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x40)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0008)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000008)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000008)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x08)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0010)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word32.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 32) #x00000010)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
-[GOOD] (define-fun s2 () (_ BitVec 32) #x00000010)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
 [GOOD] (declare-fun s1 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word64.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000010)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
-[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000010)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
 [GOOD] (declare-fun s1 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x10)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s35 () (_ BitVec 16) #x0000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000020)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word64.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000020)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
-[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000020)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
 [GOOD] (declare-fun s1 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x20)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s55 () (_ BitVec 32) #x00000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word16.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 16) #x0040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word32.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 32) #x00000040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word64.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000040)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x40)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s91 () (_ BitVec 64) #x0000000000000000)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word16.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word16.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word16.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word16.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 16) #x0008)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
-[GOOD] (define-fun s2 () (_ BitVec 16) #x0008)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
 [GOOD] (declare-fun s1 () (_ BitVec 16))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word32.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word32.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word32.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word32.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 32) #x00000008)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
-[GOOD] (define-fun s2 () (_ BitVec 32) #x00000008)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
 [GOOD] (declare-fun s1 () (_ BitVec 32))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word64.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word64.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word64.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word64.gold
@@ -9,9 +9,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000008)
 [GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
-[GOOD] (define-fun s2 () (_ BitVec 64) #x0000000000000008)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
 [GOOD] (declare-fun s1 () (_ BitVec 64))
diff --git a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word8.gold b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word8.gold
--- a/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word8.gold
+++ b/SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word8.gold
@@ -9,8 +9,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x08)
+[GOOD] (define-fun s5 () (_ BitVec 1) #b0)
 [GOOD] (define-fun s23 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (_ BitVec 8))
diff --git a/SBVTestSuite/GoldFiles/ccitt.gold b/SBVTestSuite/GoldFiles/ccitt.gold
--- a/SBVTestSuite/GoldFiles/ccitt.gold
+++ b/SBVTestSuite/GoldFiles/ccitt.gold
@@ -3,9 +3,6 @@
   s1 :: SWord 48
 CONSTANTS
   s5 = 0 :: WordN 1
-  s2054 = 0 :: Word8
-  s2055 = 1 :: Word8
-  s2183 = 3 :: Word8
   s101 = 65536 :: Word64
   s102 = 0 :: Word64
   s104 = 131072 :: Word64
@@ -71,6 +68,9 @@
   s795 = 8192 :: Word64
   s798 = 16384 :: Word64
   s801 = 32768 :: Word64
+  s2054 = 0 :: Word8
+  s2055 = 1 :: Word8
+  s2183 = 3 :: Word8
 TABLES
 ARRAYS
 UNINTERPRETED CONSTANTS
diff --git a/SBVTestSuite/GoldFiles/freshVars.gold b/SBVTestSuite/GoldFiles/freshVars.gold
--- a/SBVTestSuite/GoldFiles/freshVars.gold
+++ b/SBVTestSuite/GoldFiles/freshVars.gold
@@ -184,20 +184,16 @@
 [SEND] (get-value (s62))
 [RECV] ((s62 "hello"))
 [SEND] (get-value (s63))
-[RECV] ((s63 (seq.++ (seq.unit 1) (seq.++ (seq.unit 2) (seq.++ (seq.unit 3) (seq.unit 4))))))
+[RECV] ((s63 (seq.++ (seq.unit 1) (seq.unit 2) (seq.unit 3) (seq.unit 4))))
 [SEND] (get-value (s64))
-[RECV] ((s64 (seq.++ (seq.unit (seq.++ (seq.unit 1) (seq.++ (seq.unit 2) (seq.unit 3))))
-               (seq.unit (seq.++ (seq.unit 4)
-                                 (seq.++ (seq.unit 5)
-                                         (seq.++ (seq.unit 6) (seq.unit 7))))))))
+[RECV] ((s64 (seq.++ (seq.unit (seq.++ (seq.unit 1) (seq.unit 2) (seq.unit 3)))
+               (seq.unit (seq.++ (seq.unit 4) (seq.unit 5) (seq.unit 6) (seq.unit 7))))))
 [SEND] (get-value (s65))
 [RECV] ((s65 "\x01\x02"))
 [SEND] (get-value (s66))
-[RECV] ((s66 (seq.++ (seq.unit (seq.++ (seq.unit #x0001)
-                                 (seq.++ (seq.unit #x0002) (seq.unit #x0003))))
-               (seq.++ (seq.unit (as seq.empty (Seq (_ BitVec 16))))
-                       (seq.unit (seq.++ (seq.unit #x0004)
-                                         (seq.++ (seq.unit #x0005) (seq.unit #x0006))))))))
+[RECV] ((s66 (seq.++ (seq.unit (seq.++ (seq.unit #x0001) (seq.unit #x0002) (seq.unit #x0003)))
+               (seq.unit (as seq.empty (Seq (_ BitVec 16))))
+               (seq.unit (seq.++ (seq.unit #x0004) (seq.unit #x0005) (seq.unit #x0006))))))
 *** Solver   : Z3
 *** Exit code: ExitSuccess
 
diff --git a/SBVTestSuite/GoldFiles/legato.gold b/SBVTestSuite/GoldFiles/legato.gold
--- a/SBVTestSuite/GoldFiles/legato.gold
+++ b/SBVTestSuite/GoldFiles/legato.gold
@@ -7,11 +7,11 @@
   s5 :: SBool, existential, aliasing "flagC"
   s6 :: SBool, existential, aliasing "flagZ"
 CONSTANTS
-  s10 = 0 :: WordN 1
+  s7 = 256 :: Word16
   s8 = 0 :: Word8
+  s10 = 0 :: WordN 1
   s14 = 128 :: Word8
   s16 = 127 :: Word8
-  s7 = 256 :: Word16
 TABLES
 ARRAYS
 UNINTERPRETED CONSTANTS
diff --git a/SBVTestSuite/GoldFiles/mapWithFailure.gold b/SBVTestSuite/GoldFiles/mapWithFailure.gold
--- a/SBVTestSuite/GoldFiles/mapWithFailure.gold
+++ b/SBVTestSuite/GoldFiles/mapWithFailure.gold
@@ -14,11 +14,11 @@
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
 [GOOD] (define-fun s2 () Int 0)
+[GOOD] (define-fun s4 () (Seq Int) (as seq.empty (Seq Int)))
 [GOOD] (define-fun s6 () Int 1)
 [GOOD] (define-fun s91 () Int 2)
 [GOOD] (define-fun s93 () Int 11)
 [GOOD] (define-fun s97 () Int 10)
-[GOOD] (define-fun s4 () (Seq Int) (as seq.empty (Seq Int)))
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (Seq Int)) ; tracks user variable "ints"
 [GOOD] ; --- constant tables ---
diff --git a/SBVTestSuite/GoldFiles/pareto2.gold b/SBVTestSuite/GoldFiles/pareto2.gold
--- a/SBVTestSuite/GoldFiles/pareto2.gold
+++ b/SBVTestSuite/GoldFiles/pareto2.gold
@@ -1,45 +1,45 @@
 Pareto front #1: Optimal model:
   x            = 0 :: Integer
-  y            = 3 :: Integer
+  y            = 0 :: Integer
   min_x        = 0 :: Integer
-  max_y        = 3 :: Integer
-  max_x_plus_y = 3 :: Integer
+  max_y        = 0 :: Integer
+  max_x_plus_y = 0 :: Integer
 Pareto front #2: Optimal model:
   x            = 0 :: Integer
-  y            = 2 :: Integer
-  min_x        = 0 :: Integer
-  max_y        = 2 :: Integer
-  max_x_plus_y = 2 :: Integer
-Pareto front #3: Optimal model:
-  x            = 0 :: Integer
   y            = 1 :: Integer
   min_x        = 0 :: Integer
   max_y        = 1 :: Integer
   max_x_plus_y = 1 :: Integer
-Pareto front #4: Optimal model:
+Pareto front #3: Optimal model:
   x            = 0 :: Integer
-  y            = 0 :: Integer
+  y            = 2 :: Integer
   min_x        = 0 :: Integer
-  max_y        = 0 :: Integer
-  max_x_plus_y = 0 :: Integer
-Pareto front #5: Optimal model:
+  max_y        = 2 :: Integer
+  max_x_plus_y = 2 :: Integer
+Pareto front #4: Optimal model:
   x            =  0 :: Integer
   y            = -1 :: Integer
   min_x        =  0 :: Integer
   max_y        = -1 :: Integer
   max_x_plus_y = -1 :: Integer
-Pareto front #6: Optimal model:
+Pareto front #5: Optimal model:
   x            =  0 :: Integer
   y            = -2 :: Integer
   min_x        =  0 :: Integer
   max_y        = -2 :: Integer
   max_x_plus_y = -2 :: Integer
-Pareto front #7: Optimal model:
+Pareto front #6: Optimal model:
   x            =  0 :: Integer
   y            = -3 :: Integer
   min_x        =  0 :: Integer
   max_y        = -3 :: Integer
   max_x_plus_y = -3 :: Integer
+Pareto front #7: Optimal model:
+  x            = 0 :: Integer
+  y            = 3 :: Integer
+  min_x        = 0 :: Integer
+  max_y        = 3 :: Integer
+  max_x_plus_y = 3 :: Integer
 Pareto front #8: Optimal model:
   x            =  0 :: Integer
   y            = -4 :: Integer
@@ -53,130 +53,130 @@
   max_y        = -5 :: Integer
   max_x_plus_y = -5 :: Integer
 Pareto front #10: Optimal model:
+  x            =  0 :: Integer
+  y            = -6 :: Integer
+  min_x        =  0 :: Integer
+  max_y        = -6 :: Integer
+  max_x_plus_y = -6 :: Integer
+Pareto front #11: Optimal model:
+  x            =  0 :: Integer
+  y            = -7 :: Integer
+  min_x        =  0 :: Integer
+  max_y        = -7 :: Integer
+  max_x_plus_y = -7 :: Integer
+Pareto front #12: Optimal model:
+  x            =  0 :: Integer
+  y            = -8 :: Integer
+  min_x        =  0 :: Integer
+  max_y        = -8 :: Integer
+  max_x_plus_y = -8 :: Integer
+Pareto front #13: Optimal model:
+  x            =  0 :: Integer
+  y            = -9 :: Integer
+  min_x        =  0 :: Integer
+  max_y        = -9 :: Integer
+  max_x_plus_y = -9 :: Integer
+Pareto front #14: Optimal model:
+  x            =   0 :: Integer
+  y            = -10 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -10 :: Integer
+  max_x_plus_y = -10 :: Integer
+Pareto front #15: Optimal model:
+  x            =   0 :: Integer
+  y            = -11 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -11 :: Integer
+  max_x_plus_y = -11 :: Integer
+Pareto front #16: Optimal model:
+  x            =   0 :: Integer
+  y            = -12 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -12 :: Integer
+  max_x_plus_y = -12 :: Integer
+Pareto front #17: Optimal model:
+  x            =   0 :: Integer
+  y            = -13 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -13 :: Integer
+  max_x_plus_y = -13 :: Integer
+Pareto front #18: Optimal model:
+  x            =   0 :: Integer
+  y            = -14 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -14 :: Integer
+  max_x_plus_y = -14 :: Integer
+Pareto front #19: Optimal model:
   x            = 0 :: Integer
   y            = 4 :: Integer
   min_x        = 0 :: Integer
   max_y        = 4 :: Integer
   max_x_plus_y = 4 :: Integer
-Pareto front #11: Optimal model:
+Pareto front #20: Optimal model:
   x            = 0 :: Integer
   y            = 5 :: Integer
   min_x        = 0 :: Integer
   max_y        = 5 :: Integer
   max_x_plus_y = 5 :: Integer
-Pareto front #12: Optimal model:
-  x            =  0 :: Integer
-  y            = -6 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = -6 :: Integer
-  max_x_plus_y = -6 :: Integer
-Pareto front #13: Optimal model:
+Pareto front #21: Optimal model:
   x            = 0 :: Integer
   y            = 6 :: Integer
   min_x        = 0 :: Integer
   max_y        = 6 :: Integer
   max_x_plus_y = 6 :: Integer
-Pareto front #14: Optimal model:
-  x            = 0 :: Integer
-  y            = 7 :: Integer
-  min_x        = 0 :: Integer
-  max_y        = 7 :: Integer
-  max_x_plus_y = 7 :: Integer
-Pareto front #15: Optimal model:
-  x            = 0 :: Integer
-  y            = 8 :: Integer
-  min_x        = 0 :: Integer
-  max_y        = 8 :: Integer
-  max_x_plus_y = 8 :: Integer
-Pareto front #16: Optimal model:
-  x            = 0 :: Integer
-  y            = 9 :: Integer
-  min_x        = 0 :: Integer
-  max_y        = 9 :: Integer
-  max_x_plus_y = 9 :: Integer
-Pareto front #17: Optimal model:
-  x            =  0 :: Integer
-  y            = 10 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 10 :: Integer
-  max_x_plus_y = 10 :: Integer
-Pareto front #18: Optimal model:
-  x            =  0 :: Integer
-  y            = 11 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 11 :: Integer
-  max_x_plus_y = 11 :: Integer
-Pareto front #19: Optimal model:
-  x            =  0 :: Integer
-  y            = 12 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 12 :: Integer
-  max_x_plus_y = 12 :: Integer
-Pareto front #20: Optimal model:
-  x            =  0 :: Integer
-  y            = 13 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 13 :: Integer
-  max_x_plus_y = 13 :: Integer
-Pareto front #21: Optimal model:
-  x            =  0 :: Integer
-  y            = 14 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 14 :: Integer
-  max_x_plus_y = 14 :: Integer
 Pareto front #22: Optimal model:
-  x            =  0 :: Integer
-  y            = 15 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 15 :: Integer
-  max_x_plus_y = 15 :: Integer
+  x            =   0 :: Integer
+  y            = -15 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -15 :: Integer
+  max_x_plus_y = -15 :: Integer
 Pareto front #23: Optimal model:
-  x            =  0 :: Integer
-  y            = 16 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 16 :: Integer
-  max_x_plus_y = 16 :: Integer
+  x            =   0 :: Integer
+  y            = -16 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -16 :: Integer
+  max_x_plus_y = -16 :: Integer
 Pareto front #24: Optimal model:
-  x            =  0 :: Integer
-  y            = -7 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = -7 :: Integer
-  max_x_plus_y = -7 :: Integer
+  x            =   0 :: Integer
+  y            = -17 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -17 :: Integer
+  max_x_plus_y = -17 :: Integer
 Pareto front #25: Optimal model:
-  x            =  0 :: Integer
-  y            = 17 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 17 :: Integer
-  max_x_plus_y = 17 :: Integer
+  x            =   0 :: Integer
+  y            = -18 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -18 :: Integer
+  max_x_plus_y = -18 :: Integer
 Pareto front #26: Optimal model:
-  x            =  0 :: Integer
-  y            = 18 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 18 :: Integer
-  max_x_plus_y = 18 :: Integer
+  x            =   0 :: Integer
+  y            = -19 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -19 :: Integer
+  max_x_plus_y = -19 :: Integer
 Pareto front #27: Optimal model:
-  x            =  0 :: Integer
-  y            = 19 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 19 :: Integer
-  max_x_plus_y = 19 :: Integer
+  x            =   0 :: Integer
+  y            = -20 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -20 :: Integer
+  max_x_plus_y = -20 :: Integer
 Pareto front #28: Optimal model:
-  x            =  0 :: Integer
-  y            = 20 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 20 :: Integer
-  max_x_plus_y = 20 :: Integer
+  x            =   0 :: Integer
+  y            = -21 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -21 :: Integer
+  max_x_plus_y = -21 :: Integer
 Pareto front #29: Optimal model:
-  x            =  0 :: Integer
-  y            = 21 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = 21 :: Integer
-  max_x_plus_y = 21 :: Integer
+  x            =   0 :: Integer
+  y            = -22 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -22 :: Integer
+  max_x_plus_y = -22 :: Integer
 Pareto front #30: Optimal model:
-  x            =  0 :: Integer
-  y            = -8 :: Integer
-  min_x        =  0 :: Integer
-  max_y        = -8 :: Integer
-  max_x_plus_y = -8 :: Integer
+  x            =   0 :: Integer
+  y            = -23 :: Integer
+  min_x        =   0 :: Integer
+  max_y        = -23 :: Integer
+  max_x_plus_y = -23 :: Integer
 *** Note: Pareto-front extraction was terminated as requested by the user.
 ***       There might be many other results!
diff --git a/SBVTestSuite/GoldFiles/query1.gold b/SBVTestSuite/GoldFiles/query1.gold
--- a/SBVTestSuite/GoldFiles/query1.gold
+++ b/SBVTestSuite/GoldFiles/query1.gold
@@ -73,7 +73,7 @@
 [SEND] (get-info :reason-unknown)
 [RECV] (:reason-unknown "state of the most recent check-sat command is not known")
 [SEND] (get-info :version)
-[RECV] (:version "4.8.7")
+[RECV] (:version "4.8.8")
 [SEND] (get-info :status)
 [RECV] (:status sat)
 [GOOD] (define-fun s16 () Int 4)
@@ -104,7 +104,7 @@
 [SEND] (get-info :reason-unknown)
 [RECV] (:reason-unknown "unknown")
 [SEND] (get-info :version)
-[RECV] (:version "4.8.7")
+[RECV] (:version "4.8.8")
 [SEND] (get-info :memory)
 [RECV] unsupported
 [SEND] (get-info :time)
diff --git a/SBVTestSuite/GoldFiles/queryArrays5.gold b/SBVTestSuite/GoldFiles/queryArrays5.gold
--- a/SBVTestSuite/GoldFiles/queryArrays5.gold
+++ b/SBVTestSuite/GoldFiles/queryArrays5.gold
@@ -20,8 +20,8 @@
 [GOOD] ; --- uninterpreted constants ---
 [GOOD] ; --- user given axioms ---
 [GOOD] ; --- formula ---
-[GOOD] (define-fun s4 () (_ BitVec 8) #x01)
 [GOOD] (define-fun s2 () (_ BitVec 8) #x01)
+[GOOD] (define-fun s4 () (_ BitVec 8) #x01)
 [GOOD] (declare-fun array_1 () (Array (_ BitVec 8) (_ BitVec 8)))
 [GOOD] (declare-fun array_2 () (Array (_ BitVec 8) (_ BitVec 8)))
 [GOOD] (define-fun s3 () (_ BitVec 8) (bvadd s1 s2))
diff --git a/SBVTestSuite/GoldFiles/query_Interpolant3.gold b/SBVTestSuite/GoldFiles/query_Interpolant3.gold
new file mode 100644
--- /dev/null
+++ b/SBVTestSuite/GoldFiles/query_Interpolant3.gold
@@ -0,0 +1,37 @@
+** Calling: z3 -nw -in -smt2
+[GOOD] ; Automatically generated by SBV. Do not edit.
+[GOOD] (set-option :print-success true)
+[GOOD] (set-option :global-declarations true)
+[GOOD] (set-option :smtlib2_compliant true)
+[GOOD] (set-option :diagnostic-output-channel "stdout")
+[GOOD] (set-option :produce-models true)
+[GOOD] (set-logic ALL) ; has unbounded values, using catch-all.
+[GOOD] ; --- uninterpreted sorts ---
+[GOOD] ; --- tuples ---
+[GOOD] ; --- sums ---
+[GOOD] ; --- literal constants ---
+[GOOD] ; --- skolem constants ---
+[GOOD] (declare-fun s0 () Int) ; tracks user variable "a"
+[GOOD] (declare-fun s1 () Int) ; tracks user variable "b"
+[GOOD] (declare-fun s2 () Int) ; tracks user variable "c"
+[GOOD] (declare-fun s3 () Int) ; tracks user variable "d"
+[GOOD] ; --- constant tables ---
+[GOOD] ; --- skolemized tables ---
+[GOOD] ; --- arrays ---
+[GOOD] ; --- uninterpreted constants ---
+[GOOD] ; --- user given axioms ---
+[GOOD] ; --- formula ---
+[GOOD] (define-fun s4 () Bool (= s0 s1))
+[GOOD] (define-fun s5 () Bool (= s0 s2))
+[GOOD] (define-fun s6 () Bool (and s4 s5))
+[GOOD] (define-fun s7 () Bool (= s1 s3))
+[GOOD] (define-fun s8 () Bool (= s2 s3))
+[GOOD] (define-fun s9 () Bool (not s8))
+[GOOD] (define-fun s10 () Bool (and s7 s9))
+[SEND] (get-interpolant s6 s10)
+[RECV] (= s2 s1)
+*** Solver   : Z3
+*** Exit code: ExitSuccess
+
+FINAL OUTPUT:
+"(= s2 s1)"
diff --git a/SBVTestSuite/GoldFiles/query_Interpolant4.gold b/SBVTestSuite/GoldFiles/query_Interpolant4.gold
new file mode 100644
--- /dev/null
+++ b/SBVTestSuite/GoldFiles/query_Interpolant4.gold
@@ -0,0 +1,45 @@
+** Calling: z3 -nw -in -smt2
+[GOOD] ; Automatically generated by SBV. Do not edit.
+[GOOD] (set-option :print-success true)
+[GOOD] (set-option :global-declarations true)
+[GOOD] (set-option :smtlib2_compliant true)
+[GOOD] (set-option :diagnostic-output-channel "stdout")
+[GOOD] (set-option :produce-models true)
+[GOOD] (set-logic ALL) ; has unbounded values, using catch-all.
+[GOOD] ; --- uninterpreted sorts ---
+[GOOD] ; --- tuples ---
+[GOOD] ; --- sums ---
+[GOOD] ; --- literal constants ---
+[GOOD] ; --- skolem constants ---
+[GOOD] (declare-fun s0 () Int) ; tracks user variable "a"
+[GOOD] (declare-fun s1 () Int) ; tracks user variable "b"
+[GOOD] (declare-fun s2 () Int) ; tracks user variable "c"
+[GOOD] (declare-fun s3 () Int) ; tracks user variable "d"
+[GOOD] ; --- constant tables ---
+[GOOD] ; --- skolemized tables ---
+[GOOD] ; --- arrays ---
+[GOOD] ; --- uninterpreted constants ---
+[GOOD] ; --- user given axioms ---
+[GOOD] ; --- formula ---
+[GOOD] (declare-fun f (Int) Int)
+[GOOD] (define-fun s4 () Int (f s0))
+[GOOD] (define-fun s5 () Bool (= s2 s4))
+[GOOD] (define-fun s6 () Int (f s1))
+[GOOD] (define-fun s7 () Bool (= s3 s6))
+[GOOD] (define-fun s8 () Bool (and s5 s7))
+[GOOD] (declare-fun g (Int) Int)
+[GOOD] (define-fun s9 () Bool (= s0 s1))
+[GOOD] (define-fun s10 () Int (g s2))
+[GOOD] (define-fun s11 () Int (g s3))
+[GOOD] (define-fun s12 () Bool (distinct s10 s11))
+[GOOD] (define-fun s13 () Bool (and s9 s12))
+[SEND] (get-interpolant s8 s13)
+[RECV] (or (and (= s1 s2) (= s1 s3))
+           (<= (+ (* (- 1) s1) s0) (- 1))
+           (<= (+ s1 (* (- 1) s0)) (- 1))
+           (= s2 s3))
+*** Solver   : Z3
+*** Exit code: ExitSuccess
+
+FINAL OUTPUT:
+"(or (and (= s1 s2) (= s1 s3)) (<= (+ (* (- 1) s1) s0) (- 1)) (<= (+ s1 (* (- 1) s0)) (- 1)) (= s2 s3))"
diff --git a/SBVTestSuite/GoldFiles/query_Lists1.gold b/SBVTestSuite/GoldFiles/query_Lists1.gold
--- a/SBVTestSuite/GoldFiles/query_Lists1.gold
+++ b/SBVTestSuite/GoldFiles/query_Lists1.gold
@@ -27,9 +27,7 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (s0))
-[RECV] ((s0 (seq.++ (seq.unit 1)
-               (seq.++ (seq.unit 2)
-                       (seq.++ (seq.unit 3) (seq.++ (seq.unit 4) (seq.unit 5)))))))
+[RECV] ((s0 (seq.++ (seq.unit 1) (seq.unit 2) (seq.unit 3) (seq.unit 4) (seq.unit 5))))
 *** Solver   : Z3
 *** Exit code: ExitSuccess
 
diff --git a/SBVTestSuite/GoldFiles/query_badOption.gold b/SBVTestSuite/GoldFiles/query_badOption.gold
--- a/SBVTestSuite/GoldFiles/query_badOption.gold
+++ b/SBVTestSuite/GoldFiles/query_badOption.gold
@@ -21,7 +21,6 @@
 ***                  memory_max_alloc_count (unsigned int) (default: 0)
 ***                  memory_max_size (unsigned int) (default: 0)
 ***                  model (bool) (default: true)
-***                  model_compress (bool) (default: true)
 ***                  model_validate (bool) (default: false)
 ***                  proof (bool) (default: false)
 ***                  rlimit (unsigned int) (default: 0)
diff --git a/SBVTestSuite/GoldFiles/query_uisatex1.gold b/SBVTestSuite/GoldFiles/query_uisatex1.gold
--- a/SBVTestSuite/GoldFiles/query_uisatex1.gold
+++ b/SBVTestSuite/GoldFiles/query_uisatex1.gold
@@ -24,27 +24,27 @@
 [GOOD] (define-fun s20 () Int 5)
 [GOOD] (define-fun s22 () Int 7)
 [GOOD] (define-fun s24 () Int 6)
-[GOOD] (define-fun s32 () Int 121)
-[GOOD] (define-fun s37 () Int 8)
-[GOOD] (define-fun s62 () Int 21)
-[GOOD] (define-fun s67 () Int 210)
 [GOOD] (define-fun s28 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 4508877.0 524288.0)))
 [GOOD] (define-fun s31 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 5033165.0 524288.0)))
+[GOOD] (define-fun s32 () Int 121)
+[GOOD] (define-fun s37 () Int 8)
 [GOOD] (define-fun s39 () (_ FloatingPoint  8 24) (_ +oo 8 24))
-[GOOD] (define-fun s44 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 78.0 1.0)))
-[GOOD] (define-fun s48 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 92.0 1.0)))
-[GOOD] (define-fun s53 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 7.0 2.0)))
 [GOOD] (define-fun s41 () (_ BitVec 8) #x63)
-[GOOD] (define-fun s50 () (_ BitVec 8) #x72)
 [GOOD] (define-fun s42 () String "hey")
+[GOOD] (define-fun s44 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 78.0 1.0)))
 [GOOD] (define-fun s46 () String "tey")
+[GOOD] (define-fun s48 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 92.0 1.0)))
+[GOOD] (define-fun s50 () (_ BitVec 8) #x72)
 [GOOD] (define-fun s51 () String "foo")
+[GOOD] (define-fun s53 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 7.0 2.0)))
 [GOOD] (define-fun s55 () (Seq Int) (seq.++ (seq.unit 1) (seq.unit 2) (seq.unit 3)))
-[GOOD] (define-fun s59 () (Seq Int) (seq.++ (seq.unit 9) (seq.unit 5)))
-[GOOD] (define-fun s64 () (Seq Int) (seq.unit 5))
 [GOOD] (define-fun s56 () (Seq (_ FloatingPoint  8 24)) (seq.++ (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 8598323.0 1048576.0))) (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 3.0 1.0)))))
+[GOOD] (define-fun s59 () (Seq Int) (seq.++ (seq.unit 9) (seq.unit 5)))
 [GOOD] (define-fun s60 () (Seq (_ FloatingPoint  8 24)) (seq.++ (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 8598323.0 1048576.0))) (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 9.0 1.0)))))
+[GOOD] (define-fun s62 () Int 21)
+[GOOD] (define-fun s64 () (Seq Int) (seq.unit 5))
 [GOOD] (define-fun s65 () (Seq (_ FloatingPoint  8 24)) (seq.++ (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 8598323.0 1048576.0))) (seq.unit (_ +zero 8 24))))
+[GOOD] (define-fun s67 () Int 210)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () Int)
 [GOOD] ; --- constant tables ---
diff --git a/SBVTestSuite/GoldFiles/query_uisatex2.gold b/SBVTestSuite/GoldFiles/query_uisatex2.gold
--- a/SBVTestSuite/GoldFiles/query_uisatex2.gold
+++ b/SBVTestSuite/GoldFiles/query_uisatex2.gold
@@ -24,27 +24,27 @@
 [GOOD] (define-fun s20 () Int 5)
 [GOOD] (define-fun s22 () Int 7)
 [GOOD] (define-fun s24 () Int 6)
-[GOOD] (define-fun s32 () Int 121)
-[GOOD] (define-fun s37 () Int 8)
-[GOOD] (define-fun s62 () Int 21)
-[GOOD] (define-fun s67 () Int 210)
 [GOOD] (define-fun s28 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 4508877.0 524288.0)))
 [GOOD] (define-fun s31 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 5033165.0 524288.0)))
+[GOOD] (define-fun s32 () Int 121)
+[GOOD] (define-fun s37 () Int 8)
 [GOOD] (define-fun s39 () (_ FloatingPoint  8 24) (_ +oo 8 24))
-[GOOD] (define-fun s44 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 78.0 1.0)))
-[GOOD] (define-fun s48 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 92.0 1.0)))
-[GOOD] (define-fun s53 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 7.0 2.0)))
 [GOOD] (define-fun s41 () (_ BitVec 8) #x63)
-[GOOD] (define-fun s50 () (_ BitVec 8) #x72)
 [GOOD] (define-fun s42 () String "hey")
+[GOOD] (define-fun s44 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 78.0 1.0)))
 [GOOD] (define-fun s46 () String "tey")
+[GOOD] (define-fun s48 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 92.0 1.0)))
+[GOOD] (define-fun s50 () (_ BitVec 8) #x72)
 [GOOD] (define-fun s51 () String "foo")
+[GOOD] (define-fun s53 () (_ FloatingPoint  8 24) ((_ to_fp 8 24) roundNearestTiesToEven (/ 7.0 2.0)))
 [GOOD] (define-fun s55 () (Seq Int) (seq.++ (seq.unit 1) (seq.unit 2) (seq.unit 3)))
-[GOOD] (define-fun s59 () (Seq Int) (seq.++ (seq.unit 9) (seq.unit 5)))
-[GOOD] (define-fun s64 () (Seq Int) (seq.unit 5))
 [GOOD] (define-fun s56 () (Seq (_ FloatingPoint  8 24)) (seq.++ (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 8598323.0 1048576.0))) (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 3.0 1.0)))))
+[GOOD] (define-fun s59 () (Seq Int) (seq.++ (seq.unit 9) (seq.unit 5)))
 [GOOD] (define-fun s60 () (Seq (_ FloatingPoint  8 24)) (seq.++ (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 8598323.0 1048576.0))) (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 9.0 1.0)))))
+[GOOD] (define-fun s62 () Int 21)
+[GOOD] (define-fun s64 () (Seq Int) (seq.unit 5))
 [GOOD] (define-fun s65 () (Seq (_ FloatingPoint  8 24)) (seq.++ (seq.unit ((_ to_fp 8 24) roundNearestTiesToEven (/ 8598323.0 1048576.0))) (seq.unit (_ +zero 8 24))))
+[GOOD] (define-fun s67 () Int 210)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () Int)
 [GOOD] ; --- constant tables ---
diff --git a/SBVTestSuite/GoldFiles/reverse.gold b/SBVTestSuite/GoldFiles/reverse.gold
--- a/SBVTestSuite/GoldFiles/reverse.gold
+++ b/SBVTestSuite/GoldFiles/reverse.gold
@@ -14,8 +14,8 @@
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
 [GOOD] (define-fun s12 () Int 0)
-[GOOD] (define-fun s15 () Int 1)
 [GOOD] (define-fun s14 () (Seq Int) (as seq.empty (Seq Int)))
+[GOOD] (define-fun s15 () Int 1)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () Int) ; tracks user variable "a"
 [GOOD] (declare-fun s1 () Int) ; tracks user variable "b"
diff --git a/SBVTestSuite/GoldFiles/reverseAlt10.gold b/SBVTestSuite/GoldFiles/reverseAlt10.gold
--- a/SBVTestSuite/GoldFiles/reverseAlt10.gold
+++ b/SBVTestSuite/GoldFiles/reverseAlt10.gold
@@ -14,8 +14,8 @@
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
 [GOOD] (define-fun s2 () Int 0)
-[GOOD] (define-fun s5 () Int 1)
 [GOOD] (define-fun s4 () (Seq Int) (as seq.empty (Seq Int)))
+[GOOD] (define-fun s5 () Int 1)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (Seq Int)) ; tracks user variable "xs"
 [GOOD] ; --- constant tables ---
diff --git a/SBVTestSuite/GoldFiles/seqExamples4.gold b/SBVTestSuite/GoldFiles/seqExamples4.gold
--- a/SBVTestSuite/GoldFiles/seqExamples4.gold
+++ b/SBVTestSuite/GoldFiles/seqExamples4.gold
@@ -13,9 +13,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s8 () Int 2)
 [GOOD] (define-fun s2 () (Seq Int) (seq.++ (seq.unit 1) (seq.unit 2) (seq.unit 3)))
 [GOOD] (define-fun s4 () (Seq Int) (seq.++ (seq.unit 3) (seq.unit 4) (seq.unit 5)))
+[GOOD] (define-fun s8 () Int 2)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (Seq Int)) ; tracks user variable "a"
 [GOOD] (declare-fun s1 () (Seq Int)) ; tracks user variable "b"
diff --git a/SBVTestSuite/GoldFiles/set_uninterp1.gold b/SBVTestSuite/GoldFiles/set_uninterp1.gold
--- a/SBVTestSuite/GoldFiles/set_uninterp1.gold
+++ b/SBVTestSuite/GoldFiles/set_uninterp1.gold
@@ -57,8 +57,8 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (s0))
-[RECV] ((s0 (store (store ((as const (Array E Bool)) false) C true) A true)))
-[GOOD] (define-fun s10 () (Array E Bool) (store (store ((as const (Array E Bool)) false) C true) A true))
+[RECV] ((s0 (store (store (store ((as const (Array E Bool)) false) C true) B true) A true)))
+[GOOD] (define-fun s10 () (Array E Bool) (store (store (store ((as const (Array E Bool)) false) C true) B true) A true))
 [GOOD] (define-fun s11 () Bool (= s0 s10))
 [GOOD] (define-fun s12 () Bool (not s11))
 [GOOD] (assert s12)
@@ -66,8 +66,8 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (s0))
-[RECV] ((s0 (store (store (store ((as const (Array E Bool)) false) C true) B true) A true)))
-[GOOD] (define-fun s13 () (Array E Bool) (store (store (store ((as const (Array E Bool)) false) C true) B true) A true))
+[RECV] ((s0 (store (store ((as const (Array E Bool)) false) C true) A true)))
+[GOOD] (define-fun s13 () (Array E Bool) (store (store ((as const (Array E Bool)) false) C true) A true))
 [GOOD] (define-fun s14 () Bool (= s0 s13))
 [GOOD] (define-fun s15 () Bool (not s14))
 [GOOD] (assert s15)
@@ -84,8 +84,8 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (s0))
-[RECV] ((s0 (store (store ((as const (Array E Bool)) false) C true) B true)))
-[GOOD] (define-fun s19 () (Array E Bool) (store (store ((as const (Array E Bool)) false) C true) B true))
+[RECV] ((s0 (lambda ((x!1 E)) (= x!1 C))))
+[GOOD] (define-fun s19 () (Array E Bool) (store ((as const (Array E Bool)) false) C true))
 [GOOD] (define-fun s20 () Bool (= s0 s19))
 [GOOD] (define-fun s21 () Bool (not s20))
 [GOOD] (assert s21)
@@ -93,8 +93,8 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (s0))
-[RECV] ((s0 (lambda ((x!1 E)) (= x!1 C))))
-[GOOD] (define-fun s22 () (Array E Bool) (store ((as const (Array E Bool)) false) C true))
+[RECV] ((s0 (store (store ((as const (Array E Bool)) false) C true) B true)))
+[GOOD] (define-fun s22 () (Array E Bool) (store (store ((as const (Array E Bool)) false) C true) B true))
 [GOOD] (define-fun s23 () Bool (= s0 s22))
 [GOOD] (define-fun s24 () Bool (not s23))
 [GOOD] (assert s24)
@@ -112,14 +112,14 @@
 Solution #3:
   s0 = {A,B} :: {E}
 Solution #4:
-  s0 = {A,C} :: {E}
-Solution #5:
   s0 = {A,B,C} :: {E}
+Solution #5:
+  s0 = {A,C} :: {E}
 Solution #6:
   s0 = {B} :: {E}
 Solution #7:
-  s0 = {B,C} :: {E}
-Solution #8:
   s0 = {C} :: {E}
+Solution #8:
+  s0 = {B,C} :: {E}
 Found 8 different solutions.
 DONE!
diff --git a/SBVTestSuite/GoldFiles/sort.gold b/SBVTestSuite/GoldFiles/sort.gold
--- a/SBVTestSuite/GoldFiles/sort.gold
+++ b/SBVTestSuite/GoldFiles/sort.gold
@@ -14,8 +14,8 @@
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
 [GOOD] (define-fun s13 () Int 0)
-[GOOD] (define-fun s16 () Int 1)
 [GOOD] (define-fun s15 () (Seq Int) (as seq.empty (Seq Int)))
+[GOOD] (define-fun s16 () Int 1)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () Int) ; tracks user variable "a"
 [GOOD] (declare-fun s1 () Int) ; tracks user variable "b"
diff --git a/SBVTestSuite/GoldFiles/strExamples13.gold b/SBVTestSuite/GoldFiles/strExamples13.gold
--- a/SBVTestSuite/GoldFiles/strExamples13.gold
+++ b/SBVTestSuite/GoldFiles/strExamples13.gold
@@ -10,8 +10,8 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s4 () Int 13)
 [GOOD] (define-fun s1 () String "13")
+[GOOD] (define-fun s4 () Int 13)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () String) ; tracks user variable "s"
 [GOOD] ; --- constant tables ---
diff --git a/SBVTestSuite/GoldFiles/strExamples4.gold b/SBVTestSuite/GoldFiles/strExamples4.gold
--- a/SBVTestSuite/GoldFiles/strExamples4.gold
+++ b/SBVTestSuite/GoldFiles/strExamples4.gold
@@ -10,9 +10,9 @@
 [GOOD] ; --- tuples ---
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s8 () Int 2)
 [GOOD] (define-fun s2 () String "abc")
 [GOOD] (define-fun s4 () String "cef")
+[GOOD] (define-fun s8 () Int 2)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () String) ; tracks user variable "a"
 [GOOD] (declare-fun s1 () String) ; tracks user variable "b"
diff --git a/SBVTestSuite/GoldFiles/sumMaybe.gold b/SBVTestSuite/GoldFiles/sumMaybe.gold
--- a/SBVTestSuite/GoldFiles/sumMaybe.gold
+++ b/SBVTestSuite/GoldFiles/sumMaybe.gold
@@ -16,9 +16,9 @@
                                            ((nothing_SBVMaybe)
                                             (just_SBVMaybe (get_just_SBVMaybe T))))))
 [GOOD] ; --- literal constants ---
+[GOOD] (define-fun s3 () (SBVMaybe Int) (as nothing_SBVMaybe (SBVMaybe Int)))
 [GOOD] (define-fun s5 () Int 1)
 [GOOD] (define-fun s15 () Int 0)
-[GOOD] (define-fun s3 () (SBVMaybe Int) (as nothing_SBVMaybe (SBVMaybe Int)))
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (SBVMaybe Int)) ; tracks user variable "x"
 [GOOD] ; --- constant tables ---
diff --git a/SBVTestSuite/GoldFiles/tuple_enum.gold b/SBVTestSuite/GoldFiles/tuple_enum.gold
--- a/SBVTestSuite/GoldFiles/tuple_enum.gold
+++ b/SBVTestSuite/GoldFiles/tuple_enum.gold
@@ -21,12 +21,12 @@
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
 [GOOD] (define-fun s3 () Int 1)
+[GOOD] (define-fun s6 () (Seq Bool) (seq.unit true))
 [GOOD] (define-fun s11 () Int 3)
 [GOOD] (define-fun s13 () Int 2)
+[GOOD] (define-fun s16 () E C)
 [GOOD] (define-fun s20 () Int 6)
 [GOOD] (define-fun s22 () Int 4)
-[GOOD] (define-fun s16 () E C)
-[GOOD] (define-fun s6 () (Seq Bool) (seq.unit true))
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (Seq (SBVTuple2 E (Seq Bool)))) ; tracks user variable "v1"
 [GOOD] (declare-fun s1 () Bool) ; tracks user variable "q"
@@ -75,15 +75,13 @@
 [RECV] sat
 [SEND] (get-value (s0))
 [RECV] ((s0 (seq.++ (seq.unit (mkSBVTuple2 B (as seq.empty (Seq Bool))))
-               (seq.++ (seq.unit (mkSBVTuple2 A
-                                              (seq.++ (seq.unit true) (seq.unit false))))
-                       (seq.unit (mkSBVTuple2 C
-                                              (seq.++ (seq.unit false)
-                                                      (seq.++ (seq.unit false)
-                                                              (seq.++ (seq.unit false)
-                                                                      (seq.++ (seq.unit false)
-                                                                              (seq.++ (seq.unit true)
-                                                                                      (seq.unit false))))))))))))
+               (seq.unit (mkSBVTuple2 A (seq.++ (seq.unit true) (seq.unit false))))
+               (seq.unit (mkSBVTuple2 C
+                                      (seq.++ (seq.unit false)
+                                              (seq.unit false)
+                                              (seq.unit false)
+                                              (seq.unit false)
+                                              (seq.++ (seq.unit true) (seq.unit false))))))))
 [SEND] (get-value (s24))
 [RECV] ((s24 (mkSBVTuple2 #x05 (mkSBVTuple3 C #x41 (fp #b0 #x82 #b00000011110101110000101)))))
 *** Solver   : Z3
diff --git a/SBVTestSuite/GoldFiles/tuple_list.gold b/SBVTestSuite/GoldFiles/tuple_list.gold
--- a/SBVTestSuite/GoldFiles/tuple_list.gold
+++ b/SBVTestSuite/GoldFiles/tuple_list.gold
@@ -19,9 +19,9 @@
 [GOOD] (define-fun s1 () Int 0)
 [GOOD] (define-fun s4 () Int 2)
 [GOOD] (define-fun s6 () Int 1)
+[GOOD] (define-fun s11 () String "foo")
 [GOOD] (define-fun s14 () Int 4)
 [GOOD] (define-fun s17 () Int 5)
-[GOOD] (define-fun s11 () String "foo")
 [GOOD] (define-fun s23 () (Seq (SBVTuple2 Int (Seq (SBVTuple2 Int String)))) (seq.++ (seq.unit (mkSBVTuple2 2 (as seq.empty (Seq (SBVTuple2 Int String))))) (seq.unit (mkSBVTuple2 1 (seq.++ (seq.unit (mkSBVTuple2 3 "foo")) (seq.unit (mkSBVTuple2 0 "bar")) (seq.unit (mkSBVTuple2 (- 1) "baz")) (seq.unit (mkSBVTuple2 (- 2) "quux")) (seq.unit (mkSBVTuple2 (- 3) "enough"))))) (seq.unit (mkSBVTuple2 (- 4) (as seq.empty (Seq (SBVTuple2 Int String))))) (seq.unit (mkSBVTuple2 (- 5) (as seq.empty (Seq (SBVTuple2 Int String)))))))
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (Seq (SBVTuple2 Int (Seq (SBVTuple2 Int String))))) ; tracks user variable "lst"
@@ -58,22 +58,16 @@
 [RECV] sat
 [SEND] (get-value (s0))
 [RECV] ((s0 (seq.++ (seq.unit (mkSBVTuple2 2 (as seq.empty (Seq (SBVTuple2 Int String)))))
-               (seq.++ (seq.unit (mkSBVTuple2 1
-                                              (seq.++ (seq.unit (mkSBVTuple2 3 "foo"))
-                                                      (seq.++ (seq.unit (mkSBVTuple2 0
-                                                                                     "bar"))
-                                                              (seq.++ (seq.unit (mkSBVTuple2 (- 1)
-                                                                                             "baz"))
-                                                                      (seq.++ (seq.unit (mkSBVTuple2 (- 2)
-                                                                                                     "quux"))
-                                                                              (seq.unit (mkSBVTuple2 (- 3)
-                                                                                                     "enough"))))))))
-                       (seq.++ (seq.unit (mkSBVTuple2 (- 4)
-                                                      (as seq.empty
-                                                          (Seq (SBVTuple2 Int String)))))
-                               (seq.unit (mkSBVTuple2 (- 5)
-                                                      (as seq.empty
-                                                          (Seq (SBVTuple2 Int String))))))))))
+               (seq.unit (mkSBVTuple2 1
+                                      (seq.++ (seq.unit (mkSBVTuple2 3 "foo"))
+                                              (seq.unit (mkSBVTuple2 0 "bar"))
+                                              (seq.unit (mkSBVTuple2 (- 1) "baz"))
+                                              (seq.unit (mkSBVTuple2 (- 2) "quux"))
+                                              (seq.unit (mkSBVTuple2 (- 3) "enough")))))
+               (seq.unit (mkSBVTuple2 (- 4)
+                                      (as seq.empty (Seq (SBVTuple2 Int String)))))
+               (seq.unit (mkSBVTuple2 (- 5)
+                                      (as seq.empty (Seq (SBVTuple2 Int String))))))))
 *** Solver   : Z3
 *** Exit code: ExitSuccess
 
diff --git a/SBVTestSuite/GoldFiles/tuple_nested.gold b/SBVTestSuite/GoldFiles/tuple_nested.gold
--- a/SBVTestSuite/GoldFiles/tuple_nested.gold
+++ b/SBVTestSuite/GoldFiles/tuple_nested.gold
@@ -16,10 +16,10 @@
                                                          (proj_2_SBVTuple2 T2))))))
 [GOOD] ; --- sums ---
 [GOOD] ; --- literal constants ---
-[GOOD] (define-fun s13 () (_ BitVec 8) #x00)
 [GOOD] (define-fun s3 () Int 1)
-[GOOD] (define-fun s10 () (_ BitVec 8) #x63)
 [GOOD] (define-fun s7 () String "foo")
+[GOOD] (define-fun s10 () (_ BitVec 8) #x63)
+[GOOD] (define-fun s13 () (_ BitVec 8) #x00)
 [GOOD] ; --- skolem constants ---
 [GOOD] (declare-fun s0 () (SBVTuple2 (SBVTuple2 Int (SBVTuple2 String (_ BitVec 8))) (_ BitVec 8))) ; tracks user variable "abcd"
 [GOOD] ; --- constant tables ---
diff --git a/SBVTestSuite/GoldFiles/uiSat_test2.gold b/SBVTestSuite/GoldFiles/uiSat_test2.gold
--- a/SBVTestSuite/GoldFiles/uiSat_test2.gold
+++ b/SBVTestSuite/GoldFiles/uiSat_test2.gold
@@ -265,11 +265,20 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) false true false) true true false)))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool))
+         (or (and (not x!2) (not x!1)) (and x!2 (not x!1))))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) true))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
 [GOOD] (define-fun q2_model13 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) false
-          (ite (and (= x!0 false) (= x!1 true)) false
-          true))
+          (ite (and (= x!0 false) (= x!1 false)) true
+          (ite (and (= x!0 true) (= x!1 false)) true
+          false))
        )
 [GOOD] (define-fun q2_model13_reject () Bool
           (exists ((x!0 Bool) (x!1 Bool))
@@ -281,9 +290,9 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) true true false)))
+[RECV] ((q2 (store ((as const Array) true) true false false)))
 [GOOD] (define-fun q2_model14 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) false
+          (ite (and (= x!0 true) (= x!1 false)) false
           true)
        )
 [GOOD] (define-fun q2_model14_reject () Bool
@@ -296,10 +305,11 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) true false false)))
+[RECV] ((q2 (store (store ((as const Array) true) true false false) true true false)))
 [GOOD] (define-fun q2_model15 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) false
           (ite (and (= x!0 true) (= x!1 false)) false
-          true)
+          true))
        )
 [GOOD] (define-fun q2_model15_reject () Bool
           (exists ((x!0 Bool) (x!1 Bool))
@@ -311,11 +321,10 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) true false false) true true false)))
+[RECV] ((q2 (store ((as const Array) true) true true false)))
 [GOOD] (define-fun q2_model16 ((x!0 Bool) (x!1 Bool)) Bool
           (ite (and (= x!0 true) (= x!1 true)) false
-          (ite (and (= x!0 true) (= x!1 false)) false
-          true))
+          true)
        )
 [GOOD] (define-fun q2_model16_reject () Bool
           (exists ((x!0 Bool) (x!1 Bool))
@@ -381,20 +390,20 @@
   q2 _     _     = True 
 Solution #13:
   q2 :: Bool -> Bool -> Bool
-  q2 True  True = False
-  q2 False True = False
-  q2 _     _    = True 
+  q2 False False = True 
+  q2 True  False = True 
+  q2 _     _     = False
 Solution #14:
   q2 :: Bool -> Bool -> Bool
-  q2 True True = False
-  q2 _    _    = True 
-Solution #15:
-  q2 :: Bool -> Bool -> Bool
   q2 True False = False
   q2 _    _     = True 
-Solution #16:
+Solution #15:
   q2 :: Bool -> Bool -> Bool
   q2 True True  = False
   q2 True False = False
   q2 _    _     = True 
+Solution #16:
+  q2 :: Bool -> Bool -> Bool
+  q2 True True = False
+  q2 _    _    = True 
 Found 16 different solutions.
diff --git a/SBVTestSuite/GoldFiles/uiSat_test3.gold b/SBVTestSuite/GoldFiles/uiSat_test3.gold
--- a/SBVTestSuite/GoldFiles/uiSat_test3.gold
+++ b/SBVTestSuite/GoldFiles/uiSat_test3.gold
@@ -308,2259 +308,2234 @@
 [SEND] (check-sat)
 [RECV] sat
 [SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) (not x!1))))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) true false false)))
-[GOOD] (define-fun q1_model10 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model10_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model10 x!0))))
-[GOOD] (define-fun q2_model10 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) false
-          true)
-       )
-[GOOD] (define-fun q2_model10_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model10 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_10 () Bool 
-               (or q1_model10_reject
-                   q2_model10_reject
-               ))
-[GOOD] (assert uiFunRejector_model_10)
-Looking for solution 11
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) true false false)))
-[GOOD] (define-fun q1_model11 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model11_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model11 x!0))))
-[GOOD] (define-fun q2_model11 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) false
-          true)
-       )
-[GOOD] (define-fun q2_model11_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model11 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_11 () Bool 
-               (or q1_model11_reject
-                   q2_model11_reject
-               ))
-[GOOD] (assert uiFunRejector_model_11)
-Looking for solution 12
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool))
-         (or (and (not x!2) x!1) (and (not x!2) (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) true))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model12 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model12_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model12 x!0))))
-[GOOD] (define-fun q2_model12 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) true
-          (ite (and (= x!0 false) (= x!1 true)) true
-          false))
-       )
-[GOOD] (define-fun q2_model12_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model12 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_12 () Bool 
-               (or q1_model12_reject
-                   q2_model12_reject
-               ))
-[GOOD] (assert uiFunRejector_model_12)
-Looking for solution 13
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 ((as const Array) true)))
-[GOOD] (define-fun q1_model13 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model13_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model13 x!0))))
-[GOOD] (define-fun q2_model13 ((x!0 Bool) (x!1 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q2_model13_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model13 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_13 () Bool 
-               (or q1_model13_reject
-                   q2_model13_reject
-               ))
-[GOOD] (assert uiFunRejector_model_13)
-Looking for solution 14
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) true true false)))
-[GOOD] (define-fun q1_model14 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model14_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model14 x!0))))
-[GOOD] (define-fun q2_model14 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) false
-          true)
-       )
-[GOOD] (define-fun q2_model14_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model14 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_14 () Bool 
-               (or q1_model14_reject
-                   q2_model14_reject
-               ))
-[GOOD] (assert uiFunRejector_model_14)
-Looking for solution 15
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) true true false)))
-[GOOD] (define-fun q1_model15 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model15_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model15 x!0))))
-[GOOD] (define-fun q2_model15 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) false
-          true)
-       )
-[GOOD] (define-fun q2_model15_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model15 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_15 () Bool 
-               (or q1_model15_reject
-                   q2_model15_reject
-               ))
-[GOOD] (assert uiFunRejector_model_15)
-Looking for solution 16
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 ((as const Array) true)))
-[GOOD] (define-fun q1_model16 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model16_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model16 x!0))))
-[GOOD] (define-fun q2_model16 ((x!0 Bool) (x!1 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q2_model16_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model16 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_16 () Bool 
-               (or q1_model16_reject
-                   q2_model16_reject
-               ))
-[GOOD] (assert uiFunRejector_model_16)
-Looking for solution 17
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) true true false) true false false)))
-[GOOD] (define-fun q1_model17 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model17_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model17 x!0))))
-[GOOD] (define-fun q2_model17 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) false
-          (ite (and (= x!0 true) (= x!1 true)) false
-          true))
-       )
-[GOOD] (define-fun q2_model17_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model17 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_17 () Bool 
-               (or q1_model17_reject
-                   q2_model17_reject
-               ))
-[GOOD] (assert uiFunRejector_model_17)
-Looking for solution 18
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) true true false) true false false)))
-[GOOD] (define-fun q1_model18 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model18_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model18 x!0))))
-[GOOD] (define-fun q2_model18 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) false
-          (ite (and (= x!0 true) (= x!1 true)) false
-          true))
-       )
-[GOOD] (define-fun q2_model18_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model18 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_18 () Bool 
-               (or q1_model18_reject
-                   q2_model18_reject
-               ))
-[GOOD] (assert uiFunRejector_model_18)
-Looking for solution 19
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) true true false)))
-[GOOD] (define-fun q1_model19 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model19_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model19 x!0))))
-[GOOD] (define-fun q2_model19 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) false
-          true)
-       )
-[GOOD] (define-fun q2_model19_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model19 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_19 () Bool 
-               (or q1_model19_reject
-                   q2_model19_reject
-               ))
-[GOOD] (assert uiFunRejector_model_19)
-Looking for solution 20
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 ((as const Array) true)))
-[GOOD] (define-fun q1_model20 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model20_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model20 x!0))))
-[GOOD] (define-fun q2_model20 ((x!0 Bool) (x!1 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q2_model20_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model20 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_20 () Bool 
-               (or q1_model20_reject
-                   q2_model20_reject
-               ))
-[GOOD] (assert uiFunRejector_model_20)
-Looking for solution 21
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) false true false)))
-[GOOD] (define-fun q1_model21 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model21_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model21 x!0))))
-[GOOD] (define-fun q2_model21 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) false
-          true)
-       )
-[GOOD] (define-fun q2_model21_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model21 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_21 () Bool 
-               (or q1_model21_reject
-                   q2_model21_reject
-               ))
-[GOOD] (assert uiFunRejector_model_21)
-Looking for solution 22
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) false true false)))
-[GOOD] (define-fun q1_model22 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model22_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model22 x!0))))
-[GOOD] (define-fun q2_model22 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) false
-          true)
-       )
-[GOOD] (define-fun q2_model22_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model22 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_22 () Bool 
-               (or q1_model22_reject
-                   q2_model22_reject
-               ))
-[GOOD] (assert uiFunRejector_model_22)
-Looking for solution 23
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) false true false) true true false)))
-[GOOD] (define-fun q1_model23 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model23_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model23 x!0))))
-[GOOD] (define-fun q2_model23 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) false
-          (ite (and (= x!0 false) (= x!1 true)) false
-          true))
-       )
-[GOOD] (define-fun q2_model23_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model23 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_23 () Bool 
-               (or q1_model23_reject
-                   q2_model23_reject
-               ))
-[GOOD] (assert uiFunRejector_model_23)
-Looking for solution 24
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and (not x!2) x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model24 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model24_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model24 x!0))))
-[GOOD] (define-fun q2_model24 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) true
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false))
-       )
-[GOOD] (define-fun q2_model24_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model24 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_24 () Bool 
-               (or q1_model24_reject
-                   q2_model24_reject
-               ))
-[GOOD] (assert uiFunRejector_model_24)
-Looking for solution 25
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) true false false) false false false)))
-[GOOD] (define-fun q1_model25 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model25_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model25 x!0))))
-[GOOD] (define-fun q2_model25 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) false
-          (ite (and (= x!0 true) (= x!1 false)) false
-          true))
-       )
-[GOOD] (define-fun q2_model25_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model25 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_25 () Bool 
-               (or q1_model25_reject
-                   q2_model25_reject
-               ))
-[GOOD] (assert uiFunRejector_model_25)
-Looking for solution 26
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) false false false)))
-[GOOD] (define-fun q1_model26 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model26_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model26 x!0))))
-[GOOD] (define-fun q2_model26 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) false
-          true)
-       )
-[GOOD] (define-fun q2_model26_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model26 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_26 () Bool 
-               (or q1_model26_reject
-                   q2_model26_reject
-               ))
-[GOOD] (assert uiFunRejector_model_26)
-Looking for solution 27
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) false false false)))
-[GOOD] (define-fun q1_model27 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model27_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model27 x!0))))
-[GOOD] (define-fun q2_model27 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) false
-          true)
-       )
-[GOOD] (define-fun q2_model27_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model27 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_27 () Bool 
-               (or q1_model27_reject
-                   q2_model27_reject
-               ))
-[GOOD] (assert uiFunRejector_model_27)
-Looking for solution 28
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) false false false)))
-[GOOD] (define-fun q1_model28 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model28_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model28 x!0))))
-[GOOD] (define-fun q2_model28 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) false
-          true)
-       )
-[GOOD] (define-fun q2_model28_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model28 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_28 () Bool 
-               (or q1_model28_reject
-                   q2_model28_reject
-               ))
-[GOOD] (assert uiFunRejector_model_28)
-Looking for solution 29
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) false false false) true true false)))
-[GOOD] (define-fun q1_model29 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model29_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model29 x!0))))
-[GOOD] (define-fun q2_model29 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) false
-          (ite (and (= x!0 false) (= x!1 false)) false
-          true))
-       )
-[GOOD] (define-fun q2_model29_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model29 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_29 () Bool 
-               (or q1_model29_reject
-                   q2_model29_reject
-               ))
-[GOOD] (assert uiFunRejector_model_29)
-Looking for solution 30
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) true true false) false true false)))
-[GOOD] (define-fun q1_model30 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model30_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model30 x!0))))
-[GOOD] (define-fun q2_model30 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) false
-          (ite (and (= x!0 true) (= x!1 true)) false
-          true))
-       )
-[GOOD] (define-fun q2_model30_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model30 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_30 () Bool 
-               (or q1_model30_reject
-                   q2_model30_reject
-               ))
-[GOOD] (assert uiFunRejector_model_30)
-Looking for solution 31
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 (not x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model31 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model31_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model31 x!0))))
-[GOOD] (define-fun q2_model31 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) true
-          false)
-       )
-[GOOD] (define-fun q2_model31_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model31 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_31 () Bool 
-               (or q1_model31_reject
-                   q2_model31_reject
-               ))
-[GOOD] (assert uiFunRejector_model_31)
-Looking for solution 32
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and x!2 (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model32 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model32_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model32 x!0))))
-[GOOD] (define-fun q2_model32 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) true
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false))
-       )
-[GOOD] (define-fun q2_model32_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model32 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_32 () Bool 
-               (or q1_model32_reject
-                   q2_model32_reject
-               ))
-[GOOD] (assert uiFunRejector_model_32)
-Looking for solution 33
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and x!2 (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model33 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model33_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model33 x!0))))
-[GOOD] (define-fun q2_model33 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) true
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false))
-       )
-[GOOD] (define-fun q2_model33_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model33 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_33 () Bool 
-               (or q1_model33_reject
-                   q2_model33_reject
-               ))
-[GOOD] (assert uiFunRejector_model_33)
-Looking for solution 34
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) x!1))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model34 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model34_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model34 x!0))))
-[GOOD] (define-fun q2_model34 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) true
-          false)
-       )
-[GOOD] (define-fun q2_model34_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model34 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_34 () Bool 
-               (or q1_model34_reject
-                   q2_model34_reject
-               ))
-[GOOD] (assert uiFunRejector_model_34)
-Looking for solution 35
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 ((as const Array) false)))
-[GOOD] (define-fun q1_model35 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model35_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model35 x!0))))
-[GOOD] (define-fun q2_model35 ((x!0 Bool) (x!1 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q2_model35_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model35 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_35 () Bool 
-               (or q1_model35_reject
-                   q2_model35_reject
-               ))
-[GOOD] (assert uiFunRejector_model_35)
-Looking for solution 36
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) false false false)))
-[GOOD] (define-fun q1_model36 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model36_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model36 x!0))))
-[GOOD] (define-fun q2_model36 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) false
-          true)
-       )
-[GOOD] (define-fun q2_model36_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model36 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_36 () Bool 
-               (or q1_model36_reject
-                   q2_model36_reject
-               ))
-[GOOD] (assert uiFunRejector_model_36)
-Looking for solution 37
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) x!1))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model37 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model37_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model37 x!0))))
-[GOOD] (define-fun q2_model37 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) true
-          false)
-       )
-[GOOD] (define-fun q2_model37_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model37 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_37 () Bool 
-               (or q1_model37_reject
-                   q2_model37_reject
-               ))
-[GOOD] (assert uiFunRejector_model_37)
-Looking for solution 38
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) false false false) true true false)))
-[GOOD] (define-fun q1_model38 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model38_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model38 x!0))))
-[GOOD] (define-fun q2_model38 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) false
-          (ite (and (= x!0 false) (= x!1 false)) false
-          true))
-       )
-[GOOD] (define-fun q2_model38_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model38 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_38 () Bool 
-               (or q1_model38_reject
-                   q2_model38_reject
-               ))
-[GOOD] (assert uiFunRejector_model_38)
-Looking for solution 39
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 ((as const Array) false)))
-[GOOD] (define-fun q1_model39 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model39_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model39 x!0))))
-[GOOD] (define-fun q2_model39 ((x!0 Bool) (x!1 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q2_model39_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model39 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_39 () Bool 
-               (or q1_model39_reject
-                   q2_model39_reject
-               ))
-[GOOD] (assert uiFunRejector_model_39)
-Looking for solution 40
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 x!1))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model40 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model40_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model40 x!0))))
-[GOOD] (define-fun q2_model40 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false)
-       )
-[GOOD] (define-fun q2_model40_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model40 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_40 () Bool 
-               (or q1_model40_reject
-                   q2_model40_reject
-               ))
-[GOOD] (assert uiFunRejector_model_40)
-Looking for solution 41
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 (not x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model41 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model41_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model41 x!0))))
-[GOOD] (define-fun q2_model41 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) true
-          false)
-       )
-[GOOD] (define-fun q2_model41_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model41 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_41 () Bool 
-               (or q1_model41_reject
-                   q2_model41_reject
-               ))
-[GOOD] (assert uiFunRejector_model_41)
-Looking for solution 42
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and (not x!2) x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model42 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model42_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model42 x!0))))
-[GOOD] (define-fun q2_model42 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) true
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false))
-       )
-[GOOD] (define-fun q2_model42_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model42 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_42 () Bool 
-               (or q1_model42_reject
-                   q2_model42_reject
-               ))
-[GOOD] (assert uiFunRejector_model_42)
-Looking for solution 43
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 x!1))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model43 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model43_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model43 x!0))))
-[GOOD] (define-fun q2_model43 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false)
-       )
-[GOOD] (define-fun q2_model43_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model43 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_43 () Bool 
-               (or q1_model43_reject
-                   q2_model43_reject
-               ))
-[GOOD] (assert uiFunRejector_model_43)
-Looking for solution 44
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 x!1))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model44 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model44_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model44 x!0))))
-[GOOD] (define-fun q2_model44 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false)
-       )
-[GOOD] (define-fun q2_model44_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model44 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_44 () Bool 
-               (or q1_model44_reject
-                   q2_model44_reject
-               ))
-[GOOD] (assert uiFunRejector_model_44)
-Looking for solution 45
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and x!2 (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model45 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model45_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model45 x!0))))
-[GOOD] (define-fun q2_model45 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) true
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false))
-       )
-[GOOD] (define-fun q2_model45_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model45 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_45 () Bool 
-               (or q1_model45_reject
-                   q2_model45_reject
-               ))
-[GOOD] (assert uiFunRejector_model_45)
-Looking for solution 46
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 (not x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model46 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model46_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model46 x!0))))
-[GOOD] (define-fun q2_model46 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) true
-          false)
-       )
-[GOOD] (define-fun q2_model46_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model46 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_46 () Bool 
-               (or q1_model46_reject
-                   q2_model46_reject
-               ))
-[GOOD] (assert uiFunRejector_model_46)
-Looking for solution 47
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and x!2 (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model47 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model47_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model47 x!0))))
-[GOOD] (define-fun q2_model47 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) true
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false))
-       )
-[GOOD] (define-fun q2_model47_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model47 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_47 () Bool 
-               (or q1_model47_reject
-                   q2_model47_reject
-               ))
-[GOOD] (assert uiFunRejector_model_47)
-Looking for solution 48
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 (not x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model48 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model48_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model48 x!0))))
-[GOOD] (define-fun q2_model48 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) true
-          false)
-       )
-[GOOD] (define-fun q2_model48_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model48 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_48 () Bool 
-               (or q1_model48_reject
-                   q2_model48_reject
-               ))
-[GOOD] (assert uiFunRejector_model_48)
-Looking for solution 49
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and (not x!2) x!1) (and x!2 (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model49 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model49_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model49 x!0))))
-[GOOD] (define-fun q2_model49 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) true
-          (ite (and (= x!0 true) (= x!1 false)) true
-          false))
-       )
-[GOOD] (define-fun q2_model49_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model49 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_49 () Bool 
-               (or q1_model49_reject
-                   q2_model49_reject
-               ))
-[GOOD] (assert uiFunRejector_model_49)
-Looking for solution 50
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and (not x!2) x!1) (and x!2 (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model50 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model50_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model50 x!0))))
-[GOOD] (define-fun q2_model50 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) true
-          (ite (and (= x!0 true) (= x!1 false)) true
-          false))
-       )
-[GOOD] (define-fun q2_model50_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model50 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_50 () Bool 
-               (or q1_model50_reject
-                   q2_model50_reject
-               ))
-[GOOD] (assert uiFunRejector_model_50)
-Looking for solution 51
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) x!1))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model51 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model51_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model51 x!0))))
-[GOOD] (define-fun q2_model51 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) true
-          false)
-       )
-[GOOD] (define-fun q2_model51_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model51 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_51 () Bool 
-               (or q1_model51_reject
-                   q2_model51_reject
-               ))
-[GOOD] (assert uiFunRejector_model_51)
-Looking for solution 52
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store (store ((as const Array) true) false false false) true false false)))
-[GOOD] (define-fun q1_model52 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model52_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model52 x!0))))
-[GOOD] (define-fun q2_model52 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 false)) false
-          (ite (and (= x!0 false) (= x!1 false)) false
-          true))
-       )
-[GOOD] (define-fun q2_model52_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model52 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_52 () Bool 
-               (or q1_model52_reject
-                   q2_model52_reject
-               ))
-[GOOD] (assert uiFunRejector_model_52)
-Looking for solution 53
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool))
-         (or (and (not x!2) (not x!1)) (and x!2 (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) true))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model53 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model53_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model53 x!0))))
-[GOOD] (define-fun q2_model53 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) true
-          (ite (and (= x!0 true) (= x!1 false)) true
-          false))
-       )
-[GOOD] (define-fun q2_model53_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model53 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_53 () Bool 
-               (or q1_model53_reject
-                   q2_model53_reject
-               ))
-[GOOD] (assert uiFunRejector_model_53)
-Looking for solution 54
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) (not x!1))))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool))
-         (or (and (not x!2) (not x!1)) (and x!2 (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) true))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) true))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model54 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model54_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model54 x!0))))
-[GOOD] (define-fun q2_model54 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) true
-          (ite (and (= x!0 true) (= x!1 false)) true
-          false))
-       )
-[GOOD] (define-fun q2_model54_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model54 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_54 () Bool 
-               (or q1_model54_reject
-                   q2_model54_reject
-               ))
-[GOOD] (assert uiFunRejector_model_54)
-Looking for solution 55
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) (not x!1))))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) false true false)))
-[GOOD] (define-fun q1_model55 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model55_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model55 x!0))))
-[GOOD] (define-fun q2_model55 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) false
-          true)
-       )
-[GOOD] (define-fun q2_model55_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model55 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_55 () Bool 
-               (or q1_model55_reject
-                   q2_model55_reject
-               ))
-[GOOD] (assert uiFunRejector_model_55)
-Looking for solution 56
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) false true false)))
-[GOOD] (define-fun q1_model56 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) true
-          false)
-       )
-[GOOD] (define-fun q1_model56_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model56 x!0))))
-[GOOD] (define-fun q2_model56 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) false
-          true)
-       )
-[GOOD] (define-fun q2_model56_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model56 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_56 () Bool 
-               (or q1_model56_reject
-                   q2_model56_reject
-               ))
-[GOOD] (assert uiFunRejector_model_56)
-Looking for solution 57
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) x!1))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model57 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model57_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model57 x!0))))
-[GOOD] (define-fun q2_model57 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 true)) true
-          false)
-       )
-[GOOD] (define-fun q2_model57_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model57 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_57 () Bool 
-               (or q1_model57_reject
-                   q2_model57_reject
-               ))
-[GOOD] (assert uiFunRejector_model_57)
-Looking for solution 58
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) (not x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) true))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model58 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model58_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model58 x!0))))
-[GOOD] (define-fun q2_model58 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) true
-          false)
-       )
-[GOOD] (define-fun q2_model58_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model58 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_58 () Bool 
-               (or q1_model58_reject
-                   q2_model58_reject
-               ))
-[GOOD] (assert uiFunRejector_model_58)
-Looking for solution 59
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 x!1))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) false))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model59 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model59_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model59 x!0))))
-[GOOD] (define-fun q2_model59 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false)
-       )
-[GOOD] (define-fun q2_model59_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model59 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_59 () Bool 
-               (or q1_model59_reject
-                   q2_model59_reject
-               ))
-[GOOD] (assert uiFunRejector_model_59)
-Looking for solution 60
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 (store ((as const Array) true) true false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) (not x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) true))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model60 ((x!0 Bool)) Bool
-          (ite (and (= x!0 true)) false
-          true)
-       )
-[GOOD] (define-fun q1_model60_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model60 x!0))))
-[GOOD] (define-fun q2_model60 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) true
-          false)
-       )
-[GOOD] (define-fun q2_model60_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model60 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_60 () Bool 
-               (or q1_model60_reject
-                   q2_model60_reject
-               ))
-[GOOD] (assert uiFunRejector_model_60)
-Looking for solution 61
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool))
-         (or (and (not x!2) (not x!1)) (and (not x!2) x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) true))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) true))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model61 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model61_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model61 x!0))))
-[GOOD] (define-fun q2_model61 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) true
-          (ite (and (= x!0 false) (= x!1 true)) true
-          false))
-       )
-[GOOD] (define-fun q2_model61_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model61 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_61 () Bool 
-               (or q1_model61_reject
-                   q2_model61_reject
-               ))
-[GOOD] (assert uiFunRejector_model_61)
-Looking for solution 62
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (store ((as const Array) true) true true false)))
-[GOOD] (define-fun q1_model62 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model62_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model62 x!0))))
-[GOOD] (define-fun q2_model62 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 true) (= x!1 true)) false
-          true)
-       )
-[GOOD] (define-fun q2_model62_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model62 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_62 () Bool 
-               (or q1_model62_reject
-                   q2_model62_reject
-               ))
-[GOOD] (assert uiFunRejector_model_62)
-Looking for solution 63
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) false)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) (not x!1)))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) true))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) false))
-[GOOD] (define-fun q1_model63 ((x!0 Bool)) Bool
-          false
-       )
-[GOOD] (define-fun q1_model63_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model63 x!0))))
-[GOOD] (define-fun q2_model63 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) true
-          false)
-       )
-[GOOD] (define-fun q2_model63_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model63 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_63 () Bool 
-               (or q1_model63_reject
-                   q2_model63_reject
-               ))
-[GOOD] (assert uiFunRejector_model_63)
-Looking for solution 64
-[SEND] (check-sat)
-[RECV] sat
-[SEND] (get-value (q1))
-[RECV] ((q1 ((as const Array) true)))
-[SEND] (get-value (q2))
-[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and (not x!2) (not x!1))))))
-[SEND] (get-value ((q2 false false)))
-[RECV] (((q2 false false) true))
-[SEND] (get-value ((q2 false true)))
-[RECV] (((q2 false true) false))
-[SEND] (get-value ((q2 true false)))
-[RECV] (((q2 true false) false))
-[SEND] (get-value ((q2 true true)))
-[RECV] (((q2 true true) true))
-[GOOD] (define-fun q1_model64 ((x!0 Bool)) Bool
-          true
-       )
-[GOOD] (define-fun q1_model64_reject () Bool
-          (exists ((x!0 Bool))
-                  (distinct (q1         x!0)
-                            (q1_model64 x!0))))
-[GOOD] (define-fun q2_model64 ((x!0 Bool) (x!1 Bool)) Bool
-          (ite (and (= x!0 false) (= x!1 false)) true
-          (ite (and (= x!0 true) (= x!1 true)) true
-          false))
-       )
-[GOOD] (define-fun q2_model64_reject () Bool
-          (exists ((x!0 Bool) (x!1 Bool))
-                  (distinct (q2         x!0 x!1)
-                            (q2_model64 x!0 x!1))))
-[GOOD] (define-fun uiFunRejector_model_64 () Bool 
-               (or q1_model64_reject
-                   q2_model64_reject
-               ))
-[GOOD] (assert uiFunRejector_model_64)
-Looking for solution 65
-[SEND] (check-sat)
-[RECV] unsat
-*** Solver   : Z3
-*** Exit code: ExitSuccess
-
-RESULT: Solution #1:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 _ _ = False
-Solution #2:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 _ _ = False
-Solution #3:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 _ _ = True
-Solution #4:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = False
-  q2 _    _     = True 
-Solution #5:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = False
-  q2 _    _     = True 
-Solution #6:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 _     _     = False
-Solution #7:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 True  True  = True 
-  q2 _     _     = False
-Solution #8:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 True  True  = True 
-  q2 _     _     = False
-Solution #9:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 True  True  = True 
-  q2 _     _     = False
-Solution #10:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = False
-  q2 _    _     = True 
-Solution #11:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = False
-  q2 _    _     = True 
-Solution #12:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 False True  = True 
-  q2 _     _     = False
-Solution #13:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 _ _ = True
-Solution #14:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True True = False
-  q2 _    _    = True 
-Solution #15:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True True = False
-  q2 _    _    = True 
-Solution #16:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 _ _ = True
-Solution #17:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = False
-  q2 True True  = False
-  q2 _    _     = True 
-Solution #18:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = False
-  q2 True True  = False
-  q2 _    _     = True 
-Solution #19:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True True = False
-  q2 _    _    = True 
-Solution #20:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 _ _ = True
-Solution #21:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = False
-  q2 _     _    = True 
-Solution #22:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = False
-  q2 _     _    = True 
-Solution #23:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True  True = False
-  q2 False True = False
-  q2 _     _    = True 
-Solution #24:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = True 
-  q2 True  True = True 
-  q2 _     _    = False
-Solution #25:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = False
-  q2 True  False = False
-  q2 _     _     = True 
-Solution #26:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = False
-  q2 _     _     = True 
-Solution #27:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = False
-  q2 _     _     = True 
-Solution #28:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = False
-  q2 _     _     = True 
-Solution #29:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True  True  = False
-  q2 False False = False
-  q2 _     _     = True 
-Solution #30:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = False
-  q2 True  True = False
-  q2 _     _    = True 
-Solution #31:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = True 
-  q2 _    _     = False
-Solution #32:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = True 
-  q2 True True  = True 
-  q2 _    _     = False
-Solution #33:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = True 
-  q2 True True  = True 
-  q2 _    _     = False
-Solution #34:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = True 
-  q2 _     _    = False
-Solution #35:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 _ _ = False
-Solution #36:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = False
-  q2 _     _     = True 
-Solution #37:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = True 
-  q2 _     _    = False
-Solution #38:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True  True  = False
-  q2 False False = False
-  q2 _     _     = True 
-Solution #39:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 _ _ = False
-Solution #40:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True True = True 
-  q2 _    _    = False
-Solution #41:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = True 
-  q2 _    _     = False
-Solution #42:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = True 
-  q2 True  True = True 
-  q2 _     _    = False
-Solution #43:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True True = True 
-  q2 _    _    = False
-Solution #44:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True True = True 
-  q2 _    _    = False
-Solution #45:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = True 
-  q2 True True  = True 
-  q2 _    _     = False
-Solution #46:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = True 
-  q2 _    _     = False
-Solution #47:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = True 
-  q2 True True  = True 
-  q2 _    _     = False
-Solution #48:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True False = True 
-  q2 _    _     = False
-Solution #49:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True  = True 
-  q2 True  False = True 
-  q2 _     _     = False
-Solution #50:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True  = True 
-  q2 True  False = True 
-  q2 _     _     = False
-Solution #51:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = True 
-  q2 _     _    = False
-Solution #52:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True  False = False
-  q2 False False = False
-  q2 _     _     = True 
-Solution #53:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 True  False = True 
-  q2 _     _     = False
-Solution #54:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 True  False = True 
-  q2 _     _     = False
-Solution #55:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = False
-  q2 _     _    = True 
-Solution #56:
-  q1 :: Bool -> Bool
-  q1 True = True 
-  q1 _    = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = False
-  q2 _     _    = True 
-Solution #57:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False True = True 
-  q2 _     _    = False
-Solution #58:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 _     _     = False
-Solution #59:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True True = True 
-  q2 _    _    = False
-Solution #60:
-  q1 :: Bool -> Bool
-  q1 True = False
-  q1 _    = True 
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 _     _     = False
-Solution #61:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 False True  = True 
-  q2 _     _     = False
-Solution #62:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 True True = False
-  q2 _    _    = True 
-Solution #63:
-  q1 :: Bool -> Bool
-  q1 _ = False
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 _     _     = False
-Solution #64:
-  q1 :: Bool -> Bool
-  q1 _ = True
-
-  q2 :: Bool -> Bool -> Bool
-  q2 False False = True 
-  q2 True  True  = True 
-  q2 _     _     = False
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) false true false)))
+[GOOD] (define-fun q1_model10 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model10_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model10 x!0))))
+[GOOD] (define-fun q2_model10 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) false
+          true)
+       )
+[GOOD] (define-fun q2_model10_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model10 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_10 () Bool 
+               (or q1_model10_reject
+                   q2_model10_reject
+               ))
+[GOOD] (assert uiFunRejector_model_10)
+Looking for solution 11
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) (not x!1))))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) false true false)))
+[GOOD] (define-fun q1_model11 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model11_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model11 x!0))))
+[GOOD] (define-fun q2_model11 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) false
+          true)
+       )
+[GOOD] (define-fun q2_model11_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model11 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_11 () Bool 
+               (or q1_model11_reject
+                   q2_model11_reject
+               ))
+[GOOD] (assert uiFunRejector_model_11)
+Looking for solution 12
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) false true false)))
+[GOOD] (define-fun q1_model12 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model12_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model12 x!0))))
+[GOOD] (define-fun q2_model12 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) false
+          true)
+       )
+[GOOD] (define-fun q2_model12_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model12 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_12 () Bool 
+               (or q1_model12_reject
+                   q2_model12_reject
+               ))
+[GOOD] (assert uiFunRejector_model_12)
+Looking for solution 13
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) false true false) true false false)))
+[GOOD] (define-fun q1_model13 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model13_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model13 x!0))))
+[GOOD] (define-fun q2_model13 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) false
+          (ite (and (= x!0 false) (= x!1 true)) false
+          true))
+       )
+[GOOD] (define-fun q2_model13_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model13 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_13 () Bool 
+               (or q1_model13_reject
+                   q2_model13_reject
+               ))
+[GOOD] (assert uiFunRejector_model_13)
+Looking for solution 14
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) false true false)))
+[GOOD] (define-fun q1_model14 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model14_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model14 x!0))))
+[GOOD] (define-fun q2_model14 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) false
+          true)
+       )
+[GOOD] (define-fun q2_model14_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model14 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_14 () Bool 
+               (or q1_model14_reject
+                   q2_model14_reject
+               ))
+[GOOD] (assert uiFunRejector_model_14)
+Looking for solution 15
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) false true false) true true false)))
+[GOOD] (define-fun q1_model15 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model15_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model15 x!0))))
+[GOOD] (define-fun q2_model15 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) false
+          (ite (and (= x!0 false) (= x!1 true)) false
+          true))
+       )
+[GOOD] (define-fun q2_model15_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model15 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_15 () Bool 
+               (or q1_model15_reject
+                   q2_model15_reject
+               ))
+[GOOD] (assert uiFunRejector_model_15)
+Looking for solution 16
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) (not x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) true))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model16 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model16_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model16 x!0))))
+[GOOD] (define-fun q2_model16 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) true
+          false)
+       )
+[GOOD] (define-fun q2_model16_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model16 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_16 () Bool 
+               (or q1_model16_reject
+                   q2_model16_reject
+               ))
+[GOOD] (assert uiFunRejector_model_16)
+Looking for solution 17
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) (not x!1))))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) (not x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) true))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model17 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model17_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model17 x!0))))
+[GOOD] (define-fun q2_model17 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) true
+          false)
+       )
+[GOOD] (define-fun q2_model17_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model17 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_17 () Bool 
+               (or q1_model17_reject
+                   q2_model17_reject
+               ))
+[GOOD] (assert uiFunRejector_model_17)
+Looking for solution 18
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) (not x!1))))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool))
+         (or (and (not x!2) (not x!1)) (and x!2 (not x!1))))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) true))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model18 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model18_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model18 x!0))))
+[GOOD] (define-fun q2_model18 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) true
+          (ite (and (= x!0 true) (= x!1 false)) true
+          false))
+       )
+[GOOD] (define-fun q2_model18_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model18 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_18 () Bool 
+               (or q1_model18_reject
+                   q2_model18_reject
+               ))
+[GOOD] (assert uiFunRejector_model_18)
+Looking for solution 19
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool))
+         (or (and (not x!2) (not x!1)) (and x!2 (not x!1))))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) true))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model19 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model19_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model19 x!0))))
+[GOOD] (define-fun q2_model19 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) true
+          (ite (and (= x!0 true) (= x!1 false)) true
+          false))
+       )
+[GOOD] (define-fun q2_model19_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model19 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_19 () Bool 
+               (or q1_model19_reject
+                   q2_model19_reject
+               ))
+[GOOD] (assert uiFunRejector_model_19)
+Looking for solution 20
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) true true false)))
+[GOOD] (define-fun q1_model20 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model20_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model20 x!0))))
+[GOOD] (define-fun q2_model20 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true)
+       )
+[GOOD] (define-fun q2_model20_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model20 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_20 () Bool 
+               (or q1_model20_reject
+                   q2_model20_reject
+               ))
+[GOOD] (assert uiFunRejector_model_20)
+Looking for solution 21
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (store ((as const Array) true) true false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) true true false)))
+[GOOD] (define-fun q1_model21 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model21_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model21 x!0))))
+[GOOD] (define-fun q2_model21 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true)
+       )
+[GOOD] (define-fun q2_model21_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model21 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_21 () Bool 
+               (or q1_model21_reject
+                   q2_model21_reject
+               ))
+[GOOD] (assert uiFunRejector_model_21)
+Looking for solution 22
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (store ((as const Array) true) true false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 ((as const Array) true)))
+[GOOD] (define-fun q1_model22 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model22_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model22 x!0))))
+[GOOD] (define-fun q2_model22 ((x!0 Bool) (x!1 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q2_model22_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model22 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_22 () Bool 
+               (or q1_model22_reject
+                   q2_model22_reject
+               ))
+[GOOD] (assert uiFunRejector_model_22)
+Looking for solution 23
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 ((as const Array) true)))
+[GOOD] (define-fun q1_model23 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model23_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model23 x!0))))
+[GOOD] (define-fun q2_model23 ((x!0 Bool) (x!1 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q2_model23_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model23 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_23 () Bool 
+               (or q1_model23_reject
+                   q2_model23_reject
+               ))
+[GOOD] (assert uiFunRejector_model_23)
+Looking for solution 24
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) true true false)))
+[GOOD] (define-fun q1_model24 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model24_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model24 x!0))))
+[GOOD] (define-fun q2_model24 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true)
+       )
+[GOOD] (define-fun q2_model24_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model24 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_24 () Bool 
+               (or q1_model24_reject
+                   q2_model24_reject
+               ))
+[GOOD] (assert uiFunRejector_model_24)
+Looking for solution 25
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) true true false)))
+[GOOD] (define-fun q1_model25 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model25_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model25 x!0))))
+[GOOD] (define-fun q2_model25 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true)
+       )
+[GOOD] (define-fun q2_model25_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model25 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_25 () Bool 
+               (or q1_model25_reject
+                   q2_model25_reject
+               ))
+[GOOD] (assert uiFunRejector_model_25)
+Looking for solution 26
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) true true false) false true false)))
+[GOOD] (define-fun q1_model26 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model26_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model26 x!0))))
+[GOOD] (define-fun q2_model26 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) false
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true))
+       )
+[GOOD] (define-fun q2_model26_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model26 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_26 () Bool 
+               (or q1_model26_reject
+                   q2_model26_reject
+               ))
+[GOOD] (assert uiFunRejector_model_26)
+Looking for solution 27
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 ((as const Array) false)))
+[GOOD] (define-fun q1_model27 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model27_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model27 x!0))))
+[GOOD] (define-fun q2_model27 ((x!0 Bool) (x!1 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q2_model27_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model27 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_27 () Bool 
+               (or q1_model27_reject
+                   q2_model27_reject
+               ))
+[GOOD] (assert uiFunRejector_model_27)
+Looking for solution 28
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 (not x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model28 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model28_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model28 x!0))))
+[GOOD] (define-fun q2_model28 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) true
+          false)
+       )
+[GOOD] (define-fun q2_model28_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model28 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_28 () Bool 
+               (or q1_model28_reject
+                   q2_model28_reject
+               ))
+[GOOD] (assert uiFunRejector_model_28)
+Looking for solution 29
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) x!1))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model29 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model29_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model29 x!0))))
+[GOOD] (define-fun q2_model29 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) true
+          false)
+       )
+[GOOD] (define-fun q2_model29_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model29 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_29 () Bool 
+               (or q1_model29_reject
+                   q2_model29_reject
+               ))
+[GOOD] (assert uiFunRejector_model_29)
+Looking for solution 30
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) false false false)))
+[GOOD] (define-fun q1_model30 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model30_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model30 x!0))))
+[GOOD] (define-fun q2_model30 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) false
+          true)
+       )
+[GOOD] (define-fun q2_model30_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model30 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_30 () Bool 
+               (or q1_model30_reject
+                   q2_model30_reject
+               ))
+[GOOD] (assert uiFunRejector_model_30)
+Looking for solution 31
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 x!1))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model31 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model31_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model31 x!0))))
+[GOOD] (define-fun q2_model31 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false)
+       )
+[GOOD] (define-fun q2_model31_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model31 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_31 () Bool 
+               (or q1_model31_reject
+                   q2_model31_reject
+               ))
+[GOOD] (assert uiFunRejector_model_31)
+Looking for solution 32
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 (not x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model32 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model32_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model32 x!0))))
+[GOOD] (define-fun q2_model32 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) true
+          false)
+       )
+[GOOD] (define-fun q2_model32_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model32 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_32 () Bool 
+               (or q1_model32_reject
+                   q2_model32_reject
+               ))
+[GOOD] (assert uiFunRejector_model_32)
+Looking for solution 33
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) x!1))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model33 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model33_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model33 x!0))))
+[GOOD] (define-fun q2_model33 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) true
+          false)
+       )
+[GOOD] (define-fun q2_model33_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model33 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_33 () Bool 
+               (or q1_model33_reject
+                   q2_model33_reject
+               ))
+[GOOD] (assert uiFunRejector_model_33)
+Looking for solution 34
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and x!2 (not x!1))))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model34 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model34_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model34 x!0))))
+[GOOD] (define-fun q2_model34 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) true
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false))
+       )
+[GOOD] (define-fun q2_model34_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model34 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_34 () Bool 
+               (or q1_model34_reject
+                   q2_model34_reject
+               ))
+[GOOD] (assert uiFunRejector_model_34)
+Looking for solution 35
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and (not x!2) x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model35 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model35_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model35 x!0))))
+[GOOD] (define-fun q2_model35 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) true
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false))
+       )
+[GOOD] (define-fun q2_model35_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model35 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_35 () Bool 
+               (or q1_model35_reject
+                   q2_model35_reject
+               ))
+[GOOD] (assert uiFunRejector_model_35)
+Looking for solution 36
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and (not x!2) x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model36 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model36_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model36 x!0))))
+[GOOD] (define-fun q2_model36 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) true
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false))
+       )
+[GOOD] (define-fun q2_model36_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model36 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_36 () Bool 
+               (or q1_model36_reject
+                   q2_model36_reject
+               ))
+[GOOD] (assert uiFunRejector_model_36)
+Looking for solution 37
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 x!1))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model37 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model37_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model37 x!0))))
+[GOOD] (define-fun q2_model37 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false)
+       )
+[GOOD] (define-fun q2_model37_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model37 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_37 () Bool 
+               (or q1_model37_reject
+                   q2_model37_reject
+               ))
+[GOOD] (assert uiFunRejector_model_37)
+Looking for solution 38
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) false false false)))
+[GOOD] (define-fun q1_model38 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model38_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model38 x!0))))
+[GOOD] (define-fun q2_model38 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) false
+          true)
+       )
+[GOOD] (define-fun q2_model38_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model38 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_38 () Bool 
+               (or q1_model38_reject
+                   q2_model38_reject
+               ))
+[GOOD] (assert uiFunRejector_model_38)
+Looking for solution 39
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) (not x!1))))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) false false false)))
+[GOOD] (define-fun q1_model39 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model39_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model39 x!0))))
+[GOOD] (define-fun q2_model39 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) false
+          true)
+       )
+[GOOD] (define-fun q2_model39_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model39 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_39 () Bool 
+               (or q1_model39_reject
+                   q2_model39_reject
+               ))
+[GOOD] (assert uiFunRejector_model_39)
+Looking for solution 40
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) (not x!1))))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) false false false) true true false)))
+[GOOD] (define-fun q1_model40 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model40_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model40 x!0))))
+[GOOD] (define-fun q2_model40 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) false
+          (ite (and (= x!0 false) (= x!1 false)) false
+          true))
+       )
+[GOOD] (define-fun q2_model40_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model40 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_40 () Bool 
+               (or q1_model40_reject
+                   q2_model40_reject
+               ))
+[GOOD] (assert uiFunRejector_model_40)
+Looking for solution 41
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and (not x!2) x!1) (and x!2 (not x!1))))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model41 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model41_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model41 x!0))))
+[GOOD] (define-fun q2_model41 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) true
+          (ite (and (= x!0 true) (= x!1 false)) true
+          false))
+       )
+[GOOD] (define-fun q2_model41_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model41 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_41 () Bool 
+               (or q1_model41_reject
+                   q2_model41_reject
+               ))
+[GOOD] (assert uiFunRejector_model_41)
+Looking for solution 42
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) false false false)))
+[GOOD] (define-fun q1_model42 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model42_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model42 x!0))))
+[GOOD] (define-fun q2_model42 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) false
+          true)
+       )
+[GOOD] (define-fun q2_model42_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model42 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_42 () Bool 
+               (or q1_model42_reject
+                   q2_model42_reject
+               ))
+[GOOD] (assert uiFunRejector_model_42)
+Looking for solution 43
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) false false false) false true false)))
+[GOOD] (define-fun q1_model43 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model43_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model43 x!0))))
+[GOOD] (define-fun q2_model43 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) false
+          (ite (and (= x!0 false) (= x!1 false)) false
+          true))
+       )
+[GOOD] (define-fun q2_model43_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model43 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_43 () Bool 
+               (or q1_model43_reject
+                   q2_model43_reject
+               ))
+[GOOD] (assert uiFunRejector_model_43)
+Looking for solution 44
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 (not x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model44 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model44_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model44 x!0))))
+[GOOD] (define-fun q2_model44 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) true
+          false)
+       )
+[GOOD] (define-fun q2_model44_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model44 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_44 () Bool 
+               (or q1_model44_reject
+                   q2_model44_reject
+               ))
+[GOOD] (assert uiFunRejector_model_44)
+Looking for solution 45
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (store ((as const Array) true) true false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 (not x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model45 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model45_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model45 x!0))))
+[GOOD] (define-fun q2_model45 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) true
+          false)
+       )
+[GOOD] (define-fun q2_model45_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model45 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_45 () Bool 
+               (or q1_model45_reject
+                   q2_model45_reject
+               ))
+[GOOD] (assert uiFunRejector_model_45)
+Looking for solution 46
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (store ((as const Array) true) true false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and x!2 (not x!1))))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) true))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model46 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model46_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model46 x!0))))
+[GOOD] (define-fun q2_model46 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) true
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false))
+       )
+[GOOD] (define-fun q2_model46_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model46 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_46 () Bool 
+               (or q1_model46_reject
+                   q2_model46_reject
+               ))
+[GOOD] (assert uiFunRejector_model_46)
+Looking for solution 47
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (store ((as const Array) true) true false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and (not x!2) x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model47 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model47_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model47 x!0))))
+[GOOD] (define-fun q2_model47 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) true
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false))
+       )
+[GOOD] (define-fun q2_model47_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model47 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_47 () Bool 
+               (or q1_model47_reject
+                   q2_model47_reject
+               ))
+[GOOD] (assert uiFunRejector_model_47)
+Looking for solution 48
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (or (and x!2 x!1) (and (not x!2) x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model48 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model48_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model48 x!0))))
+[GOOD] (define-fun q2_model48 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) true
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false))
+       )
+[GOOD] (define-fun q2_model48_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model48 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_48 () Bool 
+               (or q1_model48_reject
+                   q2_model48_reject
+               ))
+[GOOD] (assert uiFunRejector_model_48)
+Looking for solution 49
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 x!1))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model49 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model49_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model49 x!0))))
+[GOOD] (define-fun q2_model49 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false)
+       )
+[GOOD] (define-fun q2_model49_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model49 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_49 () Bool 
+               (or q1_model49_reject
+                   q2_model49_reject
+               ))
+[GOOD] (assert uiFunRejector_model_49)
+Looking for solution 50
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) (not x!1))))
+[SEND] (get-value (q2))
+[RECV] ((q2 ((as const Array) false)))
+[GOOD] (define-fun q1_model50 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model50_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model50 x!0))))
+[GOOD] (define-fun q2_model50 ((x!0 Bool) (x!1 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q2_model50_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model50 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_50 () Bool 
+               (or q1_model50_reject
+                   q2_model50_reject
+               ))
+[GOOD] (assert uiFunRejector_model_50)
+Looking for solution 51
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) (not x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) true))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model51 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model51_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model51 x!0))))
+[GOOD] (define-fun q2_model51 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) true
+          false)
+       )
+[GOOD] (define-fun q2_model51_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model51 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_51 () Bool 
+               (or q1_model51_reject
+                   q2_model51_reject
+               ))
+[GOOD] (assert uiFunRejector_model_51)
+Looking for solution 52
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool))
+         (or (and (not x!2) (not x!1)) (and (not x!2) x!1)))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) true))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model52 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model52_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model52 x!0))))
+[GOOD] (define-fun q2_model52 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) true
+          (ite (and (= x!0 false) (= x!1 true)) true
+          false))
+       )
+[GOOD] (define-fun q2_model52_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model52 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_52 () Bool 
+               (or q1_model52_reject
+                   q2_model52_reject
+               ))
+[GOOD] (assert uiFunRejector_model_52)
+Looking for solution 53
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) true true false) false false false)))
+[GOOD] (define-fun q1_model53 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model53_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model53 x!0))))
+[GOOD] (define-fun q2_model53 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) false
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true))
+       )
+[GOOD] (define-fun q2_model53_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model53 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_53 () Bool 
+               (or q1_model53_reject
+                   q2_model53_reject
+               ))
+[GOOD] (assert uiFunRejector_model_53)
+Looking for solution 54
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) true true false) false false false)))
+[GOOD] (define-fun q1_model54 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model54_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model54 x!0))))
+[GOOD] (define-fun q2_model54 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 false)) false
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true))
+       )
+[GOOD] (define-fun q2_model54_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model54 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_54 () Bool 
+               (or q1_model54_reject
+                   q2_model54_reject
+               ))
+[GOOD] (assert uiFunRejector_model_54)
+Looking for solution 55
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) x!1))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model55 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model55_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model55 x!0))))
+[GOOD] (define-fun q2_model55 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) true
+          false)
+       )
+[GOOD] (define-fun q2_model55_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model55 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_55 () Bool 
+               (or q1_model55_reject
+                   q2_model55_reject
+               ))
+[GOOD] (assert uiFunRejector_model_55)
+Looking for solution 56
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) false false false) false true false)))
+[GOOD] (define-fun q1_model56 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model56_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model56 x!0))))
+[GOOD] (define-fun q2_model56 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) false
+          (ite (and (= x!0 false) (= x!1 false)) false
+          true))
+       )
+[GOOD] (define-fun q2_model56_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model56 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_56 () Bool 
+               (or q1_model56_reject
+                   q2_model56_reject
+               ))
+[GOOD] (assert uiFunRejector_model_56)
+Looking for solution 57
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (store ((as const Array) true) true false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and x!2 x!1))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) false))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) true))
+[GOOD] (define-fun q1_model57 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model57_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model57 x!0))))
+[GOOD] (define-fun q2_model57 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 true)) true
+          false)
+       )
+[GOOD] (define-fun q2_model57_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model57 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_57 () Bool 
+               (or q1_model57_reject
+                   q2_model57_reject
+               ))
+[GOOD] (assert uiFunRejector_model_57)
+Looking for solution 58
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (store ((as const Array) true) true false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (lambda ((x!1 Bool) (x!2 Bool)) (and (not x!2) x!1))))
+[SEND] (get-value ((q2 false false)))
+[RECV] (((q2 false false) false))
+[SEND] (get-value ((q2 false true)))
+[RECV] (((q2 false true) true))
+[SEND] (get-value ((q2 true false)))
+[RECV] (((q2 true false) false))
+[SEND] (get-value ((q2 true true)))
+[RECV] (((q2 true true) false))
+[GOOD] (define-fun q1_model58 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model58_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model58 x!0))))
+[GOOD] (define-fun q2_model58 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 false) (= x!1 true)) true
+          false)
+       )
+[GOOD] (define-fun q2_model58_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model58 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_58 () Bool 
+               (or q1_model58_reject
+                   q2_model58_reject
+               ))
+[GOOD] (assert uiFunRejector_model_58)
+Looking for solution 59
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 ((as const Array) true)))
+[GOOD] (define-fun q1_model59 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model59_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model59 x!0))))
+[GOOD] (define-fun q2_model59 ((x!0 Bool) (x!1 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q2_model59_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model59 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_59 () Bool 
+               (or q1_model59_reject
+                   q2_model59_reject
+               ))
+[GOOD] (assert uiFunRejector_model_59)
+Looking for solution 60
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) true true false) true false false)))
+[GOOD] (define-fun q1_model60 ((x!0 Bool)) Bool
+          false
+       )
+[GOOD] (define-fun q1_model60_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model60 x!0))))
+[GOOD] (define-fun q2_model60 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) false
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true))
+       )
+[GOOD] (define-fun q2_model60_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model60 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_60 () Bool 
+               (or q1_model60_reject
+                   q2_model60_reject
+               ))
+[GOOD] (assert uiFunRejector_model_60)
+Looking for solution 61
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (lambda ((x!1 Bool)) x!1)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) true true false) true false false)))
+[GOOD] (define-fun q1_model61 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) true
+          false)
+       )
+[GOOD] (define-fun q1_model61_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model61 x!0))))
+[GOOD] (define-fun q2_model61 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) false
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true))
+       )
+[GOOD] (define-fun q2_model61_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model61 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_61 () Bool 
+               (or q1_model61_reject
+                   q2_model61_reject
+               ))
+[GOOD] (assert uiFunRejector_model_61)
+Looking for solution 62
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (store ((as const Array) true) true false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store (store ((as const Array) true) true true false) true false false)))
+[GOOD] (define-fun q1_model62 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model62_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model62 x!0))))
+[GOOD] (define-fun q2_model62 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) false
+          (ite (and (= x!0 true) (= x!1 true)) false
+          true))
+       )
+[GOOD] (define-fun q2_model62_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model62 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_62 () Bool 
+               (or q1_model62_reject
+                   q2_model62_reject
+               ))
+[GOOD] (assert uiFunRejector_model_62)
+Looking for solution 63
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 (store ((as const Array) true) true false)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) true false false)))
+[GOOD] (define-fun q1_model63 ((x!0 Bool)) Bool
+          (ite (and (= x!0 true)) false
+          true)
+       )
+[GOOD] (define-fun q1_model63_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model63 x!0))))
+[GOOD] (define-fun q2_model63 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) false
+          true)
+       )
+[GOOD] (define-fun q2_model63_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model63 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_63 () Bool 
+               (or q1_model63_reject
+                   q2_model63_reject
+               ))
+[GOOD] (assert uiFunRejector_model_63)
+Looking for solution 64
+[SEND] (check-sat)
+[RECV] sat
+[SEND] (get-value (q1))
+[RECV] ((q1 ((as const Array) true)))
+[SEND] (get-value (q2))
+[RECV] ((q2 (store ((as const Array) true) true false false)))
+[GOOD] (define-fun q1_model64 ((x!0 Bool)) Bool
+          true
+       )
+[GOOD] (define-fun q1_model64_reject () Bool
+          (exists ((x!0 Bool))
+                  (distinct (q1         x!0)
+                            (q1_model64 x!0))))
+[GOOD] (define-fun q2_model64 ((x!0 Bool) (x!1 Bool)) Bool
+          (ite (and (= x!0 true) (= x!1 false)) false
+          true)
+       )
+[GOOD] (define-fun q2_model64_reject () Bool
+          (exists ((x!0 Bool) (x!1 Bool))
+                  (distinct (q2         x!0 x!1)
+                            (q2_model64 x!0 x!1))))
+[GOOD] (define-fun uiFunRejector_model_64 () Bool 
+               (or q1_model64_reject
+                   q2_model64_reject
+               ))
+[GOOD] (assert uiFunRejector_model_64)
+Looking for solution 65
+[SEND] (check-sat)
+[RECV] unsat
+*** Solver   : Z3
+*** Exit code: ExitSuccess
+
+RESULT: Solution #1:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 _ _ = False
+Solution #2:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 _ _ = False
+Solution #3:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 _ _ = True
+Solution #4:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = False
+  q2 _    _     = True 
+Solution #5:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = False
+  q2 _    _     = True 
+Solution #6:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 _     _     = False
+Solution #7:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 True  True  = True 
+  q2 _     _     = False
+Solution #8:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 True  True  = True 
+  q2 _     _     = False
+Solution #9:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 True  True  = True 
+  q2 _     _     = False
+Solution #10:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = False
+  q2 _     _    = True 
+Solution #11:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = False
+  q2 _     _    = True 
+Solution #12:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = False
+  q2 _     _    = True 
+Solution #13:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True  False = False
+  q2 False True  = False
+  q2 _     _     = True 
+Solution #14:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = False
+  q2 _     _    = True 
+Solution #15:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True  True = False
+  q2 False True = False
+  q2 _     _    = True 
+Solution #16:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 _     _     = False
+Solution #17:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 _     _     = False
+Solution #18:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 True  False = True 
+  q2 _     _     = False
+Solution #19:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 True  False = True 
+  q2 _     _     = False
+Solution #20:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True True = False
+  q2 _    _    = True 
+Solution #21:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True True = False
+  q2 _    _    = True 
+Solution #22:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 _ _ = True
+Solution #23:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 _ _ = True
+Solution #24:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True True = False
+  q2 _    _    = True 
+Solution #25:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True True = False
+  q2 _    _    = True 
+Solution #26:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = False
+  q2 True  True = False
+  q2 _     _    = True 
+Solution #27:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 _ _ = False
+Solution #28:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = True 
+  q2 _    _     = False
+Solution #29:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = True 
+  q2 _     _    = False
+Solution #30:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = False
+  q2 _     _     = True 
+Solution #31:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True True = True 
+  q2 _    _    = False
+Solution #32:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = True 
+  q2 _    _     = False
+Solution #33:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = True 
+  q2 _     _    = False
+Solution #34:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = True 
+  q2 True True  = True 
+  q2 _    _     = False
+Solution #35:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = True 
+  q2 True  True = True 
+  q2 _     _    = False
+Solution #36:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = True 
+  q2 True  True = True 
+  q2 _     _    = False
+Solution #37:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True True = True 
+  q2 _    _    = False
+Solution #38:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = False
+  q2 _     _     = True 
+Solution #39:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = False
+  q2 _     _     = True 
+Solution #40:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True  True  = False
+  q2 False False = False
+  q2 _     _     = True 
+Solution #41:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True  = True 
+  q2 True  False = True 
+  q2 _     _     = False
+Solution #42:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = False
+  q2 _     _     = True 
+Solution #43:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True  = False
+  q2 False False = False
+  q2 _     _     = True 
+Solution #44:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = True 
+  q2 _    _     = False
+Solution #45:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = True 
+  q2 _    _     = False
+Solution #46:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = True 
+  q2 True True  = True 
+  q2 _    _     = False
+Solution #47:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = True 
+  q2 True  True = True 
+  q2 _     _    = False
+Solution #48:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = True 
+  q2 True  True = True 
+  q2 _     _    = False
+Solution #49:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True True = True 
+  q2 _    _    = False
+Solution #50:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 _ _ = False
+Solution #51:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 _     _     = False
+Solution #52:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = True 
+  q2 False True  = True 
+  q2 _     _     = False
+Solution #53:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = False
+  q2 True  True  = False
+  q2 _     _     = True 
+Solution #54:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False False = False
+  q2 True  True  = False
+  q2 _     _     = True 
+Solution #55:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = True 
+  q2 _     _    = False
+Solution #56:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True  = False
+  q2 False False = False
+  q2 _     _     = True 
+Solution #57:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True True = True 
+  q2 _    _    = False
+Solution #58:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 False True = True 
+  q2 _     _    = False
+Solution #59:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 _ _ = True
+Solution #60:
+  q1 :: Bool -> Bool
+  q1 _ = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = False
+  q2 True True  = False
+  q2 _    _     = True 
+Solution #61:
+  q1 :: Bool -> Bool
+  q1 True = True 
+  q1 _    = False
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = False
+  q2 True True  = False
+  q2 _    _     = True 
+Solution #62:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = False
+  q2 True True  = False
+  q2 _    _     = True 
+Solution #63:
+  q1 :: Bool -> Bool
+  q1 True = False
+  q1 _    = True 
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = False
+  q2 _    _     = True 
+Solution #64:
+  q1 :: Bool -> Bool
+  q1 _ = True
+
+  q2 :: Bool -> Bool -> Bool
+  q2 True False = False
+  q2 _    _     = True 
 Found 64 different solutions.
diff --git a/SBVTestSuite/SBVDocTest.hs b/SBVTestSuite/SBVDocTest.hs
--- a/SBVTestSuite/SBVDocTest.hs
+++ b/SBVTestSuite/SBVDocTest.hs
@@ -51,7 +51,7 @@
 
                                              doctest $ args ++ tfs
 
-         where noGood nm sl =  any (`isSuffixOf` map toLower nm) $ map (map toLower) sl
+         where noGood nm = any $ (`isSuffixOf` map toLower nm) . map toLower
 
                skipWindows nm
                  | not onWindows = False
diff --git a/SBVTestSuite/TestSuite/BitPrecise/Legato.hs b/SBVTestSuite/TestSuite/BitPrecise/Legato.hs
--- a/SBVTestSuite/TestSuite/BitPrecise/Legato.hs
+++ b/SBVTestSuite/TestSuite/BitPrecise/Legato.hs
@@ -33,7 +33,10 @@
                        flagC <- free "flagC"
                        flagZ <- free "flagZ"
                        output $ legatoIsCorrect (x, y, lo, regX, regA, flagC, flagZ)
-       legatoC = snd <$> compileToC' "legatoMult" (do
+
+       thd (_, _, r) = r
+
+       legatoC = thd <$> compileToC' "legatoMult" (do
                     cgSetDriverValues [87, 92]
                     x <- cgInput "x"
                     y <- cgInput "y"
diff --git a/SBVTestSuite/TestSuite/BitPrecise/MergeSort.hs b/SBVTestSuite/TestSuite/BitPrecise/MergeSort.hs
--- a/SBVTestSuite/TestSuite/BitPrecise/MergeSort.hs
+++ b/SBVTestSuite/TestSuite/BitPrecise/MergeSort.hs
@@ -23,7 +23,8 @@
 tests = testGroup "BitPrecise.MergeSort" [
    goldenVsStringShow "merge" mergeC
  ]
- where mergeC = snd <$> compileToC' "merge" (do
+ where thd (_, _, r) = r
+       mergeC = thd <$> compileToC' "merge" (do
                    cgSetDriverValues [10, 6, 4, 82, 71]
                    xs <- cgInputArr 5 "xs"
                    cgOutputArr "ys" (mergeSort xs))
diff --git a/SBVTestSuite/TestSuite/CodeGeneration/AddSub.hs b/SBVTestSuite/TestSuite/CodeGeneration/AddSub.hs
--- a/SBVTestSuite/TestSuite/CodeGeneration/AddSub.hs
+++ b/SBVTestSuite/TestSuite/CodeGeneration/AddSub.hs
@@ -23,7 +23,8 @@
 tests = testGroup "CodeGen.addSub" [
    goldenVsStringShow "addSub" code
  ]
- where code = snd <$> compileToC' "addSub" (do
+ where thd (_, _, r) = r
+       code = thd <$> compileToC' "addSub" (do
                 cgSetDriverValues [76, 92]
                 cgPerformRTCs True
                 x <- cgInput "x"
diff --git a/SBVTestSuite/TestSuite/CodeGeneration/CRC_USB5.hs b/SBVTestSuite/TestSuite/CodeGeneration/CRC_USB5.hs
--- a/SBVTestSuite/TestSuite/CodeGeneration/CRC_USB5.hs
+++ b/SBVTestSuite/TestSuite/CodeGeneration/CRC_USB5.hs
@@ -24,7 +24,8 @@
    goldenVsStringShow "crcUSB5_1" $ genC crcUSB
  , goldenVsStringShow "crcUSB5_2" $ genC crcUSB'
  ]
- where genC f = snd <$> compileToC' "crcUSB5" (do
+ where thd (_, _, r) = r
+       genC f = thd <$> compileToC' "crcUSB5" (do
                    cgSetDriverValues [0xFEDC]
                    msg <- cgInput "msg"
                    cgReturn $ f msg)
diff --git a/SBVTestSuite/TestSuite/CodeGeneration/CgTests.hs b/SBVTestSuite/TestSuite/CodeGeneration/CgTests.hs
--- a/SBVTestSuite/TestSuite/CodeGeneration/CgTests.hs
+++ b/SBVTestSuite/TestSuite/CodeGeneration/CgTests.hs
@@ -26,14 +26,16 @@
  , goldenVsStringShow "selUnchecked" $ genSelect False "selUnChecked"
  , goldenVsStringShow "codeGen1"       foo
  ]
- where genSelect b n = snd <$> compileToC' n (do
+ where thd (_, _, r) = r
+
+       genSelect b n = thd <$> compileToC' n (do
                          cgSetDriverValues [65]
                          cgPerformRTCs b
                          let sel :: SWord8 -> SWord8
                              sel x = select [1, x+2] 3 x
                          x <- cgInput "x"
                          cgReturn $ sel x)
-       foo = snd <$> compileToC' "foo" (do
+       foo = thd <$> compileToC' "foo" (do
                         cgSetDriverValues $ repeat 0
                         (x::SInt16)    <- cgInput "x"
                         (ys::[SInt64]) <- cgInputArr 45 "xArr"
diff --git a/SBVTestSuite/TestSuite/CodeGeneration/Fibonacci.hs b/SBVTestSuite/TestSuite/CodeGeneration/Fibonacci.hs
--- a/SBVTestSuite/TestSuite/CodeGeneration/Fibonacci.hs
+++ b/SBVTestSuite/TestSuite/CodeGeneration/Fibonacci.hs
@@ -24,7 +24,8 @@
    goldenVsStringShow "fib1" $ tst [12] "fib1" (fib1 64)
  , goldenVsStringShow "fib2" $ tst [20] "fib2" (fib2 64)
  ]
- where tst vs nm f = snd <$> compileToC' nm (do cgPerformRTCs True
+ where thd (_, _, r) = r
+       tst vs nm f = thd <$> compileToC' nm (do cgPerformRTCs True
                                                 cgSetDriverValues vs
                                                 n <- cgInput "n"
                                                 cgReturn $ f n)
diff --git a/SBVTestSuite/TestSuite/CodeGeneration/Floats.hs b/SBVTestSuite/TestSuite/CodeGeneration/Floats.hs
--- a/SBVTestSuite/TestSuite/CodeGeneration/Floats.hs
+++ b/SBVTestSuite/TestSuite/CodeGeneration/Floats.hs
@@ -22,7 +22,9 @@
 tests = testGroup "CodeGeneration.Floats" [
    goldenVsStringShow "floats_cgen" code
  ]
- where code  = snd <$> compileToCLib' "floatCodeGen" cases
+ where code  = thd <$> compileToCLib' "floatCodeGen" cases
+
+       thd (_, _, r) = r
 
        setup = do cgSRealType CgLongDouble
                   cgIntegerSize 64
diff --git a/SBVTestSuite/TestSuite/CodeGeneration/GCD.hs b/SBVTestSuite/TestSuite/CodeGeneration/GCD.hs
--- a/SBVTestSuite/TestSuite/CodeGeneration/GCD.hs
+++ b/SBVTestSuite/TestSuite/CodeGeneration/GCD.hs
@@ -23,7 +23,8 @@
 tests = testGroup "CodeGeneration.GCD" [
    goldenVsStringShow "gcd" gcdC
  ]
- where gcdC = snd <$> compileToC' "sgcd" (do
+ where thd (_, _, r) = r
+       gcdC = thd <$> compileToC' "sgcd" (do
                 cgSetDriverValues [55,154]
                 x <- cgInput "x"
                 y <- cgInput "y"
diff --git a/SBVTestSuite/TestSuite/CodeGeneration/PopulationCount.hs b/SBVTestSuite/TestSuite/CodeGeneration/PopulationCount.hs
--- a/SBVTestSuite/TestSuite/CodeGeneration/PopulationCount.hs
+++ b/SBVTestSuite/TestSuite/CodeGeneration/PopulationCount.hs
@@ -21,11 +21,12 @@
 -- Test suite
 tests :: TestTree
 tests = testGroup "CodeGeneration.PopulationCount" [
-   goldenVsStringShow "popCount1" $ snd <$> genC False
- , goldenVsStringShow "popCount2" $ snd <$> genC True
+   goldenVsStringShow "popCount1" $ thd <$> genC False
+ , goldenVsStringShow "popCount2" $ thd <$> genC True
  ]
  where genC b = compileToC' "popCount" $ do
                   cgSetDriverValues [0x0123456789ABCDEF]
                   cgPerformRTCs b
                   x <- cgInput "x"
                   cgReturn $ popCountFast x
+       thd (_, _, r) = r
diff --git a/SBVTestSuite/TestSuite/CodeGeneration/Uninterpreted.hs b/SBVTestSuite/TestSuite/CodeGeneration/Uninterpreted.hs
--- a/SBVTestSuite/TestSuite/CodeGeneration/Uninterpreted.hs
+++ b/SBVTestSuite/TestSuite/CodeGeneration/Uninterpreted.hs
@@ -23,6 +23,7 @@
 tests = testGroup "CodeGeneration.Uninterpreted" [
    goldenVsStringShow "cgUninterpret"  genC
  ]
- where genC = snd <$> compileToC' "tstShiftLeft" (do cgSetDriverValues [1, 2, 3]
+ where genC = thd <$> compileToC' "tstShiftLeft" (do cgSetDriverValues [1, 2, 3]
                                                      [x, y, z] <- cgInputArr 3 "vs"
                                                      cgReturn $ tstShiftLeft x y z)
+       thd (_, _, r) = r
diff --git a/SBVTestSuite/TestSuite/Crypto/AES.hs b/SBVTestSuite/TestSuite/Crypto/AES.hs
--- a/SBVTestSuite/TestSuite/Crypto/AES.hs
+++ b/SBVTestSuite/TestSuite/Crypto/AES.hs
@@ -21,9 +21,9 @@
 -- Test suite
 tests :: TestTree
 tests = testGroup "Crypto.AES" [
-   goldenVsStringShow "aes128Enc" $ snd <$> compileToC'    "aes128Enc" (aes128EncDec True)
- , goldenVsStringShow "aes128Dec" $ snd <$> compileToC'    "aes128Dec" (aes128EncDec False)
- , goldenVsStringShow "aes128Lib" $ snd <$> compileToCLib' "aes128Lib" aes128Comps
+   goldenVsStringShow "aes128Enc" $ thd <$> compileToC'    "aes128Enc" (aes128EncDec True)
+ , goldenVsStringShow "aes128Dec" $ thd <$> compileToC'    "aes128Dec" (aes128EncDec False)
+ , goldenVsStringShow "aes128Lib" $ thd <$> compileToCLib' "aes128Lib" aes128Comps
  ]
  where aes128EncDec d = do pt  <- cgInputArr 4 "pt"
                            key <- cgInputArr 4 "key"
@@ -34,3 +34,4 @@
                            cgOutputArr "ct" res
        aes128Comps = [(f, setVals c) | (f, c) <- aesLibComponents 128]
        setVals c = cgSetDriverValues (repeat 0) >> c
+       thd (_, _, r) = r
diff --git a/SBVTestSuite/TestSuite/Crypto/SHA.hs b/SBVTestSuite/TestSuite/Crypto/SHA.hs
--- a/SBVTestSuite/TestSuite/Crypto/SHA.hs
+++ b/SBVTestSuite/TestSuite/Crypto/SHA.hs
@@ -21,7 +21,7 @@
 -- Test suite
 tests :: TestTree
 tests = testGroup "Crypto.AES" [
-   goldenVsStringShow "sha256HashBlock" $ snd <$> compileToC' "sha256HashBlock" c
+   goldenVsStringShow "sha256HashBlock" $ (\(_, _, r) -> r) <$> compileToC' "sha256HashBlock" c
  ]
  where c = do let algorithm = sha256P
 
diff --git a/SBVTestSuite/TestSuite/Queries/Interpolants.hs b/SBVTestSuite/TestSuite/Queries/Interpolants.hs
--- a/SBVTestSuite/TestSuite/Queries/Interpolants.hs
+++ b/SBVTestSuite/TestSuite/Queries/Interpolants.hs
@@ -24,13 +24,15 @@
 tests :: TestTree
 tests =
   testGroup "Basics.QueryInterpolants"
-    [ goldenCapturedIO "query_Interpolant1" $ testQuery q1
-    , goldenCapturedIO "query_Interpolant2" $ testQuery q2
+    [ goldenCapturedIO "query_Interpolant1" $ testQuery mathSAT q1
+    , goldenCapturedIO "query_Interpolant2" $ testQuery mathSAT q2
+    , goldenCapturedIO "query_Interpolant3" $ testQuery z3      q3
+    , goldenCapturedIO "query_Interpolant4" $ testQuery z3      q4
     ]
 
-testQuery :: Show a => Symbolic a -> FilePath -> IO ()
-testQuery t rf = do r <- runSMTWith mathSAT{verbose=True, redirectVerbose=Just rf} t
-                    appendFile rf ("\nFINAL OUTPUT:\n" ++ show r ++ "\n")
+testQuery :: Show a => SMTConfig -> Symbolic a -> FilePath -> IO ()
+testQuery s t rf = do r <- runSMTWith s{verbose=True, redirectVerbose=Just rf} t
+                      appendFile rf ("\nFINAL OUTPUT:\n" ++ show r ++ "\n")
 
 iConstraint :: String -> SBool -> Symbolic ()
 iConstraint g = constrainWithAttribute [(":interpolation-group", g)]
@@ -47,7 +49,7 @@
         iConstraint "c2" $ b .== d .&& sNot (c .== d)
 
         query $ do _ <- checkSat
-                   getInterpolant ["c1"]
+                   getInterpolantMathSAT ["c1"]
 
 q2 :: Symbolic String
 q2 = do a <- sInteger "a"
@@ -65,6 +67,31 @@
         iConstraint "c2" $   a .== b .&& g c ./= g d
 
         query $ do _ <- checkSat
-                   getInterpolant ["c1"]
+                   getInterpolantMathSAT ["c1"]
+
+
+q3 :: Symbolic String
+q3 = do a <- sInteger "a"
+        b <- sInteger "b"
+        c <- sInteger "c"
+        d <- sInteger "d"
+
+        query $ getInterpolantZ3 [ a .== b .&& a .== c
+                                 , b .== d .&& sNot (c .== d)
+                                 ]
+
+q4 :: Symbolic String
+q4 = do a <- sInteger "a"
+        b <- sInteger "b"
+        c <- sInteger "c"
+        d <- sInteger "d"
+
+        let f, g :: SInteger -> SInteger
+            f = uninterpret "f"
+            g = uninterpret "g"
+
+        query $ getInterpolantZ3 [ f a .== c .&& f b .== d
+                                 ,   a .== b .&& g c ./= g d
+                                 ]
 
 {-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}
diff --git a/sbv.cabal b/sbv.cabal
--- a/sbv.cabal
+++ b/sbv.cabal
@@ -1,5 +1,5 @@
 Name:          sbv
-Version:       8.5
+Version:       8.6
 Category:      Formal Methods, Theorem Provers, Bit vectors, Symbolic Computation, Math, SMT
 Synopsis:      SMT Based Verification: Symbolic Haskell theorem prover using SMT solving.
 Description:   Express properties about Haskell programs and automatically prove them using SMT
@@ -7,7 +7,7 @@
                .
                For details, please see: <http://leventerkok.github.com/sbv/>
 
-Copyright:     Levent Erkok, 2010-2019
+Copyright:     Levent Erkok, 2010-2020
 License:       BSD3
 License-file:  LICENSE
 Stability:     Experimental
