sbv 8.5 → 8.6
raw patch · 141 files changed
+2947/−2695 lines, 141 files
Files
- CHANGES.md +35/−1
- COPYRIGHT +1/−1
- Data/SBV.hs +1/−1
- Data/SBV/Compilers/C.hs +17/−8
- Data/SBV/Compilers/CodeGen.hs +3/−3
- Data/SBV/Control.hs +2/−2
- Data/SBV/Control/BaseIO.hs +50/−7
- Data/SBV/Control/Query.hs +26/−7
- Data/SBV/Control/Utils.hs +5/−6
- Data/SBV/Core/Data.hs +1/−1
- Data/SBV/Core/Floating.hs +4/−4
- Data/SBV/Core/Model.hs +9/−9
- Data/SBV/Core/Symbolic.hs +21/−12
- Data/SBV/List.hs +1/−1
- Data/SBV/RegExp.hs +1/−1
- Data/SBV/SMT/SMT.hs +6/−4
- Data/SBV/SMT/SMTLib2.hs +2/−1
- Data/SBV/Set.hs +2/−2
- Data/SBV/String.hs +1/−1
- Data/SBV/Trans.hs +6/−2
- Data/SBV/Trans/Control.hs +1/−1
- Documentation/SBV/Examples/BitPrecise/BrokenSearch.hs +4/−4
- Documentation/SBV/Examples/Crypto/AES.hs +3/−1
- Documentation/SBV/Examples/Existentials/CRCPolynomial.hs +1/−1
- Documentation/SBV/Examples/Lists/BoundedMutex.hs +2/−1
- Documentation/SBV/Examples/Lists/Nested.hs +2/−1
- Documentation/SBV/Examples/Misc/Floating.hs +15/−15
- Documentation/SBV/Examples/ProofTools/BMC.hs +1/−1
- Documentation/SBV/Examples/Puzzles/Counts.hs +4/−3
- Documentation/SBV/Examples/Puzzles/Euler185.hs +1/−1
- Documentation/SBV/Examples/Puzzles/MagicSquare.hs +1/−1
- Documentation/SBV/Examples/Puzzles/NQueens.hs +1/−1
- Documentation/SBV/Examples/Puzzles/Sudoku.hs +1/−1
- Documentation/SBV/Examples/Puzzles/U2Bridge.hs +1/−8
- Documentation/SBV/Examples/Queries/Interpolants.hs +48/−7
- LICENSE +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word16.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word32.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word64.gold +1/−1
- SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word8.gold +1/−1
- SBVTestSuite/GoldFiles/ccitt.gold +3/−3
- SBVTestSuite/GoldFiles/freshVars.gold +6/−10
- SBVTestSuite/GoldFiles/legato.gold +2/−2
- SBVTestSuite/GoldFiles/mapWithFailure.gold +1/−1
- SBVTestSuite/GoldFiles/pareto2.gold +117/−117
- SBVTestSuite/GoldFiles/query1.gold +2/−2
- SBVTestSuite/GoldFiles/queryArrays5.gold +1/−1
- SBVTestSuite/GoldFiles/query_Interpolant3.gold +37/−0
- SBVTestSuite/GoldFiles/query_Interpolant4.gold +45/−0
- SBVTestSuite/GoldFiles/query_Lists1.gold +1/−3
- SBVTestSuite/GoldFiles/query_badOption.gold +0/−1
- SBVTestSuite/GoldFiles/query_uisatex1.gold +10/−10
- SBVTestSuite/GoldFiles/query_uisatex2.gold +10/−10
- SBVTestSuite/GoldFiles/reverse.gold +1/−1
- SBVTestSuite/GoldFiles/reverseAlt10.gold +1/−1
- SBVTestSuite/GoldFiles/seqExamples4.gold +1/−1
- SBVTestSuite/GoldFiles/set_uninterp1.gold +12/−12
- SBVTestSuite/GoldFiles/sort.gold +1/−1
- SBVTestSuite/GoldFiles/strExamples13.gold +1/−1
- SBVTestSuite/GoldFiles/strExamples4.gold +1/−1
- SBVTestSuite/GoldFiles/sumMaybe.gold +1/−1
- SBVTestSuite/GoldFiles/tuple_enum.gold +9/−11
- SBVTestSuite/GoldFiles/tuple_list.gold +11/−17
- SBVTestSuite/GoldFiles/tuple_nested.gold +2/−2
- SBVTestSuite/GoldFiles/uiSat_test2.gold +28/−19
- SBVTestSuite/GoldFiles/uiSat_test3.gold +2230/−2255
- SBVTestSuite/SBVDocTest.hs +1/−1
- SBVTestSuite/TestSuite/BitPrecise/Legato.hs +4/−1
- SBVTestSuite/TestSuite/BitPrecise/MergeSort.hs +2/−1
- SBVTestSuite/TestSuite/CodeGeneration/AddSub.hs +2/−1
- SBVTestSuite/TestSuite/CodeGeneration/CRC_USB5.hs +2/−1
- SBVTestSuite/TestSuite/CodeGeneration/CgTests.hs +4/−2
- SBVTestSuite/TestSuite/CodeGeneration/Fibonacci.hs +2/−1
- SBVTestSuite/TestSuite/CodeGeneration/Floats.hs +3/−1
- SBVTestSuite/TestSuite/CodeGeneration/GCD.hs +2/−1
- SBVTestSuite/TestSuite/CodeGeneration/PopulationCount.hs +3/−2
- SBVTestSuite/TestSuite/CodeGeneration/Uninterpreted.hs +2/−1
- SBVTestSuite/TestSuite/Crypto/AES.hs +4/−3
- SBVTestSuite/TestSuite/Crypto/SHA.hs +1/−1
- SBVTestSuite/TestSuite/Queries/Interpolants.hs +34/−7
- sbv.cabal +2/−2
CHANGES.md view
@@ -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
COPYRIGHT view
@@ -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
Data/SBV.hs view
@@ -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
Data/SBV/Compilers/C.hs view
@@ -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
Data/SBV/Compilers/CodeGen.hs view
@@ -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 ()
Data/SBV/Control.hs view
@@ -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
Data/SBV/Control/BaseIO.hs view
@@ -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
Data/SBV/Control/Query.hs view
@@ -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
Data/SBV/Control/Utils.hs view
@@ -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 ()
Data/SBV/Core/Data.hs view
@@ -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 ()
Data/SBV/Core/Floating.hs view
@@ -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
Data/SBV/Core/Model.hs view
@@ -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
Data/SBV/Core/Symbolic.hs view
@@ -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)
Data/SBV/List.hs view
@@ -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
Data/SBV/RegExp.hs view
@@ -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
Data/SBV/SMT/SMT.hs view
@@ -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
Data/SBV/SMT/SMTLib2.hs view
@@ -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 _ -> ""
Data/SBV/Set.hs view
@@ -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.
Data/SBV/String.hs view
@@ -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
Data/SBV/Trans.hs view
@@ -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(..))
Data/SBV/Trans/Control.hs view
@@ -37,7 +37,7 @@ , getProof -- ** Extracting interpolants- , getInterpolant+ , getInterpolantMathSAT, getInterpolantZ3 -- ** Extracting assertions , getAssertions
Documentation/SBV/Examples/BitPrecise/BrokenSearch.hs view
@@ -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
Documentation/SBV/Examples/Crypto/AES.hs view
@@ -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"
Documentation/SBV/Examples/Existentials/CRCPolynomial.hs view
@@ -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
Documentation/SBV/Examples/Lists/BoundedMutex.hs view
@@ -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
Documentation/SBV/Examples/Lists/Nested.hs view
@@ -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"
Documentation/SBV/Examples/Misc/Floating.hs view
@@ -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
Documentation/SBV/Examples/ProofTools/BMC.hs view
@@ -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
Documentation/SBV/Examples/Puzzles/Counts.hs view
@@ -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
Documentation/SBV/Examples/Puzzles/Euler185.hs view
@@ -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])
Documentation/SBV/Examples/Puzzles/MagicSquare.hs view
@@ -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)
Documentation/SBV/Examples/Puzzles/NQueens.hs view
@@ -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
Documentation/SBV/Examples/Puzzles/Sudoku.hs view
@@ -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
Documentation/SBV/Examples/Puzzles/U2Bridge.hs view
@@ -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:
Documentation/SBV/Examples/Queries/Interpolants.hs view
@@ -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]
LICENSE view
@@ -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
SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int16_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int32_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int64_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Int8_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word16_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word32_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word64_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Left_Word8_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int16_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int32_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int64_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Int8_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word16_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word32_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word64_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word16.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word32.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word64.gold view
@@ -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))
SBVTestSuite/GoldFiles/barrelRotate_Right_Word8_Word8.gold view
@@ -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))
SBVTestSuite/GoldFiles/ccitt.gold view
@@ -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
SBVTestSuite/GoldFiles/freshVars.gold view
@@ -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
SBVTestSuite/GoldFiles/legato.gold view
@@ -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
SBVTestSuite/GoldFiles/mapWithFailure.gold view
@@ -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 ---
SBVTestSuite/GoldFiles/pareto2.gold view
@@ -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!
SBVTestSuite/GoldFiles/query1.gold view
@@ -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)
SBVTestSuite/GoldFiles/queryArrays5.gold view
@@ -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))
+ SBVTestSuite/GoldFiles/query_Interpolant3.gold view
@@ -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)"
+ SBVTestSuite/GoldFiles/query_Interpolant4.gold view
@@ -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))"
SBVTestSuite/GoldFiles/query_Lists1.gold view
@@ -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
SBVTestSuite/GoldFiles/query_badOption.gold view
@@ -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)
SBVTestSuite/GoldFiles/query_uisatex1.gold view
@@ -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 ---
SBVTestSuite/GoldFiles/query_uisatex2.gold view
@@ -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 ---
SBVTestSuite/GoldFiles/reverse.gold view
@@ -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"
SBVTestSuite/GoldFiles/reverseAlt10.gold view
@@ -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 ---
SBVTestSuite/GoldFiles/seqExamples4.gold view
@@ -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"
SBVTestSuite/GoldFiles/set_uninterp1.gold view
@@ -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!
SBVTestSuite/GoldFiles/sort.gold view
@@ -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"
SBVTestSuite/GoldFiles/strExamples13.gold view
@@ -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 ---
SBVTestSuite/GoldFiles/strExamples4.gold view
@@ -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"
SBVTestSuite/GoldFiles/sumMaybe.gold view
@@ -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 ---
SBVTestSuite/GoldFiles/tuple_enum.gold view
@@ -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
SBVTestSuite/GoldFiles/tuple_list.gold view
@@ -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
SBVTestSuite/GoldFiles/tuple_nested.gold view
@@ -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 ---
SBVTestSuite/GoldFiles/uiSat_test2.gold view
@@ -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.
SBVTestSuite/GoldFiles/uiSat_test3.gold view
@@ -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.
SBVTestSuite/SBVDocTest.hs view
@@ -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
SBVTestSuite/TestSuite/BitPrecise/Legato.hs view
@@ -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"
SBVTestSuite/TestSuite/BitPrecise/MergeSort.hs view
@@ -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))
SBVTestSuite/TestSuite/CodeGeneration/AddSub.hs view
@@ -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"
SBVTestSuite/TestSuite/CodeGeneration/CRC_USB5.hs view
@@ -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)
SBVTestSuite/TestSuite/CodeGeneration/CgTests.hs view
@@ -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"
SBVTestSuite/TestSuite/CodeGeneration/Fibonacci.hs view
@@ -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)
SBVTestSuite/TestSuite/CodeGeneration/Floats.hs view
@@ -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
SBVTestSuite/TestSuite/CodeGeneration/GCD.hs view
@@ -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"
SBVTestSuite/TestSuite/CodeGeneration/PopulationCount.hs view
@@ -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
SBVTestSuite/TestSuite/CodeGeneration/Uninterpreted.hs view
@@ -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
SBVTestSuite/TestSuite/Crypto/AES.hs view
@@ -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
SBVTestSuite/TestSuite/Crypto/SHA.hs view
@@ -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
SBVTestSuite/TestSuite/Queries/Interpolants.hs view
@@ -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) #-}
sbv.cabal view
@@ -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