sbv-8.7: SBVBenchSuite/BenchSuite/WeakestPreconditions/Basics.hs
-----------------------------------------------------------------------------
-- |
-- Module : BenchSuite.WeakestPreconditions.Basics
-- Copyright : (c) Jeffrey Young
-- Levent Erkok
-- License : BSD3
-- Maintainer: erkokl@gmail.com
-- Stability : experimental
--
-- Bench suite for Documentation.SBV.Examples.WeakestPreconditions.Basics
-----------------------------------------------------------------------------
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE NamedFieldPuns #-}
module BenchSuite.WeakestPreconditions.Basics(benchmarks) where
import Documentation.SBV.Examples.WeakestPreconditions.Basics
import Data.SBV
import Data.SBV.Tools.WeakestPreconditions
import Control.DeepSeq
import BenchSuite.Bench.Bench
import BenchSuite.WeakestPreconditions.Instances()
instance NFData a => NFData (IncS a)
benchmarks :: Runner
benchmarks = rGroup
[ runIO "Correctness.Basics skip" (correctness Skip Skip)
, runIO "Correctness.Basics y+1" (correctness Skip $ Assign $ \st@IncS{y} -> st{y = y+1})
, runIO "Correctness.Basics x>0" $ correctness (assert "x > 0" (\st@IncS{x} -> x .> 0)) Skip
, runIO "Correctness.Basics x>-5" $ correctness (assert "x > -5" (\st@IncS{x} -> x .> -5)) Skip
, runIO "Correctness.Basics y is even" $ correctness Skip (assert "y is even" (\st@IncS{y} -> y `sMod` 2 .== 0))
, runIO "Correctness.Basics y > x" $ correctness Skip (assert "y > x" (\st@IncS{x, y} -> y .> x))
, runIO "Correctness.Basics skip-assign" $ correctness Skip (Assign $ \st -> st{x = 10, y = 11})
]