AERN-RnToRm-0.5: src/Data/Number/ER/RnToRm/UnitDom/Base/Tests/Properties/Reduce.hs
{-|
Module : Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Reduce
Description : (testing) properties of reduction operations
Copyright : (c) 2007-2008 Michal Konecny
License : BSD3
Maintainer : mik@konecny.aow.cz
Stability : experimental
Portability : portable
Quickcheck properties of operations that reduce the size of polynomials.
-}
module Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Reduce
where
import Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Common
import Data.Number.ER.RnToRm.UnitDom.Base.Tests.Generate
import qualified Data.Number.ER.RnToRm.UnitDom.Base as UFB
import Test.QuickCheck
prop_fbReduceTermCount_consistent sample reportFileName
(FBSize10 (n,fb), Deg5Size10 _ maxSize) =
maxSize < UFB.getSize fb ==>
fbAtKeyPointsCanBeLeq reportFileName (n, maxSize, True) fb fbUp
&&
fbAtKeyPointsCanBeLeq reportFileName (n, maxSize, False) fbDown fb
where
_ = [fb,sample]
fbUp = UFB.reduceSizeUp maxSize fb
fbDown = UFB.neg $ UFB.reduceSizeUp maxSize $ UFB.neg fb
prop_fbReduceDegree_consistent sample reportFileName
(FBSize10 (n,fb), Deg5Size10 maxDegree _) =
maxDegree < UFB.getDegree fb ==>
fbAtKeyPointsCanBeLeq reportFileName (n, maxDegree, True) fb fbUp
&&
fbAtKeyPointsCanBeLeq reportFileName (n, maxDegree, False) fbDown fb
where
_ = [fb,sample]
fbUp = UFB.reduceDegreeUp maxDegree fb
fbDown = UFB.neg $ UFB.reduceDegreeUp maxDegree $ UFB.neg fb