Blob Blame History Raw
{-# LANGUAGE ScopedTypeVariables, TemplateHaskell #-}
module Main where

--------------------------------------------------------------------------
-- imports

import Test.QuickCheck

--------------------------------------------------------------------------
-- example 1

allEqual  x y z = x == y && y == z
allEqual' x y z = 2*x == y + z

prop_SimonThompson x y (z :: Int) =
  allEqual x y z == allEqual' x y z

--------------------------------------------------------------------------
-- example 2

prop_ReverseReverse :: Eq a => [a] -> Bool
prop_ReverseReverse xs =
  reverse (reverse xs) == xs

prop_Reverse xs =
  reverse xs == xs

--------------------------------------------------------------------------
-- example 3

prop_Error (x,y) =
  2*x <= 5*y

--------------------------------------------------------------------------
-- main

return []
prop_conj = counterexample "Simon Thompson" $(monomorphic 'prop_SimonThompson) .&&.
            counterexample "reverse" $(monomorphic 'prop_Reverse)
prop_disj = counterexample "reverse" $(monomorphic 'prop_Reverse) .||.
            counterexample "Simon Thompson" $(monomorphic 'prop_SimonThompson)
return []
main = $quickCheckAll

--------------------------------------------------------------------------
-- the end.