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