sbv-14.1: SBVBenchSuite/BenchSuite/Uninterpreted/Deduce.hs
-----------------------------------------------------------------------------
-- |
-- Module : BenchSuite.Uninterpreted.Deduce
-- Copyright : (c) Jeffrey Young
-- Levent Erkok
-- License : BSD3
-- Maintainer: erkokl@gmail.com
-- Stability : experimental
--
-- Bench suite for Documentation.SBV.Examples.Uninterpreted.Deduce
-----------------------------------------------------------------------------
{-# OPTIONS_GHC -Wall -Werror -Wno-orphans #-}
{-# LANGUAGE ScopedTypeVariables #-}
module BenchSuite.Uninterpreted.Deduce(benchmarks) where
import Documentation.SBV.Examples.Uninterpreted.Deduce
import Data.SBV
import Prelude hiding (not, or, and)
import BenchSuite.Bench.Bench
benchmarks :: Runner
benchmarks = rGroup
[ run "test" t `using` runner proveWith
]
where t = do constrain $ \(Forall p) (Forall q) (Forall r) -> (p `or` q) `and` (p `or` r) .== p `or` (q `and` r)
constrain $ \(Forall p) (Forall q) -> not (p `or` q) .== not p `and` not q
constrain $ \(Forall p) -> not (not p) .== p
p <- free "p"
q <- free "q"
r <- free "r"
return $ not (p `or` (q `and` r))
.== (not p `and` not q) `or` (not p `and` not r)
{- HLint ignore module "Redundant lambda" -}
{- HLint ignore module "Redundant not" -}