atp-0.1.0.0: test/Property/Modifiers/Simplified.hs
{-# LANGUAGE DeriveTraversable #-}
{-|
Module : Property.Modifiers.Simplified
Description : QuickCheck generators of simplified first-order expressions.
Copyright : (c) Evgenii Kotelnikov, 2019-2021
License : GPL-3
Maintainer : evgeny.kotelnikov@gmail.com
Stability : experimental
-}
module Property.Modifiers.Simplified (
Simplified(..)
) where
import Test.QuickCheck (Arbitrary(..))
import Property.Generators ()
import ATP.FOL
newtype Simplified a = Simplified { getSimplified :: a }
deriving (Show, Eq, Ord, Functor, Foldable, Traversable)
instance (Simplify e, Arbitrary e) => Arbitrary (Simplified e) where
arbitrary = Simplified . simplify <$> arbitrary
shrink = traverse (fmap simplify . shrink)