packages feed

sbv-2.9: SBVUnitTest/TestSuite/Basics/ProofTests.hs

-----------------------------------------------------------------------------
-- |
-- Module      :  TestSuite.Basics.ProofTests
-- Copyright   :  (c) Levent Erkok
-- License     :  BSD3
-- Maintainer  :  erkokl@gmail.com
-- Stability   :  experimental
--
-- Test suite for Examples.Basics.ProofTests
-----------------------------------------------------------------------------

module TestSuite.Basics.ProofTests(testSuite)  where

import Data.SBV

import Examples.Basics.ProofTests
import SBVTest

-- Test suite
testSuite :: SBVTestSuite
testSuite = mkTestSuite $ \_ -> test [
   "proofs-1"  ~: assert       =<< isThm f1eqf2
 , "proofs-2"  ~: assert . not =<< isThm f1eqf3
 , "proofs-3"  ~: assert       =<< isThm f3eqf4
 , "proofs-4"  ~: assert       =<< isThm f1Single
 , "proofs-5"  ~: assert       =<< isSat (f1 `xyEq` f2)
 , "proofs-6"  ~: assert       =<< isSat (f1 `xyEq` f3)
 , "proofs-7"  ~: assert . not =<< isSat (exists "x" >>= \x -> return (x .== x + (1 :: SWord16)))
 , "proofs-8"  ~: assert       =<< isSat (exists "x" >>= \x -> return (x :: SBool))
 , "proofs-9"  ~: assert       =<< isSat (exists "x" >>= \x -> return x :: Predicate)
 ]
 where func1 `xyEq` func2 = do x <- exists_
                               y <- exists_
                               return $ func1 x y .== func2 x (y :: SWord8)