{-| 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