leancheck 0.7.1 → 0.7.2
raw patch · 22 files changed
+3474/−59 lines, 22 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Test.LeanCheck.Function.Listable.FunListable: (\+:/) :: [[a]] -> [[a]] -> [[a]]
- Test.LeanCheck.Function.Listable.FunListable: infixr 9 \+:/
- Test.LeanCheck.Function.Listable.FunListable: sndArgTypeOf :: b -> (a -> b -> c) -> b
- Test.LeanCheck.Function.Listable.FunListable: toMatrix :: Int -> [a] -> [[a]]
- Test.LeanCheck.Function.Listable.Periodic: functions :: Eq b => [a] -> [[b]] -> [[[(a, b)]]]
- Test.LeanCheck.Function.Listable.Periodic: functionsz :: Eq b => [[a]] -> [[b]] -> [[[(a, b)]]]
- Test.LeanCheck.Function.Listable.Periodic: isPeriod :: Eq a => [a] -> Bool
- Test.LeanCheck.Function.Listable.Periodic: isPeriodOf :: Eq a => [a] -> [a] -> Bool
- Test.LeanCheck.Function.Listable.Periodic: lsPeriodsOf :: Eq a => [[a]] -> [[[a]]]
- Test.LeanCheck.Function.Listable.Periodic: lsPeriodsOfLimit :: Eq a => [b] -> [[a]] -> [[[a]]]
- Test.LeanCheck.Function.Listable.Periodic: pairsToFunction :: Eq a => [(a, b)] -> (a -> b)
- Test.LeanCheck.Function.Listable.Periodic: tiersOfLimit :: [b] -> [[a]] -> [[[a]]]
- Test.LeanCheck.Utils.Types: [unXs] :: Xs a -> [a]
+ Test.LeanCheck.Utils.TypeBinding: natural :: Natural
+ Test.LeanCheck.Utils.TypeBinding: word1 :: Word1
+ Test.LeanCheck.Utils.TypeBinding: word2 :: Word2
+ Test.LeanCheck.Utils.TypeBinding: word3 :: Word3
+ Test.LeanCheck.Utils.TypeBinding: word4 :: Word4
+ Test.LeanCheck.Utils.Types: Natural :: Int -> Natural
+ Test.LeanCheck.Utils.Types: [unNatural] :: Natural -> Int
+ Test.LeanCheck.Utils.Types: instance GHC.Classes.Eq Test.LeanCheck.Utils.Types.Natural
+ Test.LeanCheck.Utils.Types: instance GHC.Classes.Ord Test.LeanCheck.Utils.Types.Natural
+ Test.LeanCheck.Utils.Types: instance GHC.Enum.Bounded Test.LeanCheck.Utils.Types.Nat
+ Test.LeanCheck.Utils.Types: instance GHC.Enum.Enum Test.LeanCheck.Utils.Types.Natural
+ Test.LeanCheck.Utils.Types: instance GHC.Num.Num Test.LeanCheck.Utils.Types.Natural
+ Test.LeanCheck.Utils.Types: instance GHC.Read.Read Test.LeanCheck.Utils.Types.Natural
+ Test.LeanCheck.Utils.Types: instance GHC.Read.Read a => GHC.Read.Read (Test.LeanCheck.Utils.Types.Xs a)
+ Test.LeanCheck.Utils.Types: instance GHC.Real.Integral Test.LeanCheck.Utils.Types.Natural
+ Test.LeanCheck.Utils.Types: instance GHC.Real.Real Test.LeanCheck.Utils.Types.Natural
+ Test.LeanCheck.Utils.Types: instance GHC.Show.Show Test.LeanCheck.Utils.Types.Natural
+ Test.LeanCheck.Utils.Types: instance Test.LeanCheck.Core.Listable Test.LeanCheck.Utils.Types.Natural
+ Test.LeanCheck.Utils.Types: newtype Natural
Files
- Makefile +14/−0
- README.md +1/−0
- bench/tiers.hs +11/−0
- leancheck.cabal +3/−3
- src/Test/LeanCheck/Core.hs +0/−3
- src/Test/LeanCheck/Derive.hs +8/−0
- src/Test/LeanCheck/Function/CoListable.hs +6/−0
- src/Test/LeanCheck/Function/Listable/FunListable.hs +5/−2
- src/Test/LeanCheck/Function/Listable/Periodic.hs +1/−2
- src/Test/LeanCheck/Function/ListsOfPairs.hs +2/−0
- src/Test/LeanCheck/Stats.hs +1/−1
- src/Test/LeanCheck/Utils/Operators.hs +23/−0
- src/Test/LeanCheck/Utils/TypeBinding.hs +82/−5
- src/Test/LeanCheck/Utils/Types.hs +85/−5
- tests/diff/tiers-XInt4.out +23/−0
- tests/diff/tiers-XNat7.out +17/−0
- tests/diff/tiers-XWord4.out +23/−0
- tests/diff/tiers-XsInt4.out +1045/−0
- tests/diff/tiers-XsNat7.out +1033/−0
- tests/diff/tiers-XsWord4.out +1045/−0
- tests/test-operators.hs +4/−0
- tests/test-types.hs +42/−38
Makefile view
@@ -159,6 +159,13 @@ ./bench/tiers "Map Nat Nat" | diff -rud tests/diff/tiers-MapNatNat.out - ./bench/tiers "Map Nat2 Nat2" | diff -rud tests/diff/tiers-MapNat2Nat2.out - ./bench/tiers "Map Nat3 Nat3" | diff -rud tests/diff/tiers-MapNat3Nat3.out -+ # extreme integers+ ./bench/tiers "X Int4" | diff -rud tests/diff/tiers-XInt4.out -+ ./bench/tiers "X Word4" | diff -rud tests/diff/tiers-XWord4.out -+ ./bench/tiers "X Nat7" | diff -rud tests/diff/tiers-XNat7.out -+ ./bench/tiers "Xs Int4" | diff -rud tests/diff/tiers-XsInt4.out -+ ./bench/tiers "Xs Word4" | diff -rud tests/diff/tiers-XsWord4.out -+ ./bench/tiers "Xs Nat7" | diff -rud tests/diff/tiers-XsNat7.out - update-diff-test-tiers: bench/tiers # simple types@@ -203,6 +210,13 @@ ./bench/tiers "Map Nat Nat" > tests/diff/tiers-MapNatNat.out ./bench/tiers "Map Nat2 Nat2" > tests/diff/tiers-MapNat2Nat2.out ./bench/tiers "Map Nat3 Nat3" > tests/diff/tiers-MapNat3Nat3.out+ # extreme integers+ ./bench/tiers "X Int4" > tests/diff/tiers-XInt4.out+ ./bench/tiers "X Word4" > tests/diff/tiers-XWord4.out+ ./bench/tiers "X Nat7" > tests/diff/tiers-XNat7.out+ ./bench/tiers "Xs Int4" > tests/diff/tiers-XsInt4.out+ ./bench/tiers "Xs Word4" > tests/diff/tiers-XsWord4.out+ ./bench/tiers "Xs Nat7" > tests/diff/tiers-XsNat7.out prepare-depend: bench/tiers-listsofpairs.hs \ bench/tiers-colistable.hs \
README.md view
@@ -176,6 +176,7 @@ [PhD Thesis (2017)]: https://matela.com.br/paper/rudy-phd-thesis-2017.pdf [symbol `>`]: https://www.haskell.org/haddock/doc/html/ch03s08.html#idm140354810780208+[Template Haskell]: https://wiki.haskell.org/Template_Haskell [build-status]: https://travis-ci.org/rudymatela/leancheck.svg?branch=master [build-log]: https://travis-ci.org/rudymatela/leancheck
bench/tiers.hs view
@@ -156,5 +156,16 @@ "Map Nat Nat" -> put t n (u :: Map Nat Nat ) "Map Nat2 Nat2" -> put t n (u :: Map Nat2 Nat2 ) "Map Nat3 Nat3" -> put t n (u :: Map Nat3 Nat3 )+ -- extreme integers+-- "X Int" -> put t n (u :: X Int ) -- device dependent+-- "X Word" -> put t n (u :: X Word ) -- device dependent+ "X Int4" -> put t n (u :: X Int4 )+ "X Word4" -> put t n (u :: X Word4 )+ "X Nat7" -> put t n (u :: X Nat7 )+-- "Xs Int" -> put t n (u :: Xs Int ) -- device dependent+-- "Xs Word" -> put t n (u :: Xs Word ) -- device dependent+ "Xs Int4" -> put t n (u :: Xs Int4 )+ "Xs Word4" -> put t n (u :: Xs Word4)+ "Xs Nat7" -> put t n (u :: Xs Nat7 ) -- unhandled _ -> putStrLn $ "unknown/unhandled type `" ++ t ++ "'"
leancheck.cabal view
@@ -11,8 +11,8 @@ -- this cabal file too complicated. -- Rudy name: leancheck-version: 0.7.1-synopsis: Cholesterol-free property-based testing+version: 0.7.2+synopsis: Enumerative property-based testing description: LeanCheck is a simple enumerative property-based testing library. .@@ -69,7 +69,7 @@ source-repository this type: git location: https://github.com/rudymatela/leancheck- tag: v0.7.1+ tag: v0.7.2 library exposed-modules: Test.LeanCheck
src/Test/LeanCheck/Core.hs view
@@ -183,9 +183,6 @@ Listable (a,b,c,d) where tiers = productWith (\x (y,z,w) -> (x,y,z,w)) tiers tiers --- | Instances for 'Listable' sixtuples up to 12-tuples are exported by default--- form "Test.LeanCheck" but are hidden from Haddock documentation. These--- instances are defined in "Test.LeanCheck.Basic". instance (Listable a, Listable b, Listable c, Listable d, Listable e) => Listable (a,b,c,d,e) where tiers = productWith (\x (y,z,w,v) -> (x,y,z,w,v)) tiers tiers
src/Test/LeanCheck/Derive.hs view
@@ -100,6 +100,10 @@ ] #endif +-- | Given a type 'Name', derives an expression to be placed as the result of+-- 'tiers':+--+-- > consN C1 \/ consN C2 \/ ... \/ consN CN deriveTiers :: Name -> ExpQ deriveTiers t = conse =<< typeConstructors t where@@ -108,6 +112,10 @@ [| $(varE consN) $(conE n) |] conse = foldr1 (\e1 e2 -> [| $e1 \/ $e2 |]) . map (uncurry cone) +-- | Given a type 'Name', derives an expression to be placed as the result of+-- 'list':+--+-- > concat $ consN C1 \/ consN C2 \/ ... \/ consN CN deriveList :: Name -> ExpQ deriveList t = [| concat $(deriveTiers t) |]
src/Test/LeanCheck/Function/CoListable.hs view
@@ -29,6 +29,12 @@ infixr 9 \+:/ +-- | This _does not currently work_. Its just a sketch and a stub.+--+-- Generation of 'Listable' functions using 'cotiers'.+-- This is similar to SmallCheck's coseries.+--+-- The current implementation generates repetitions. class CoListable a where cotiers :: [[b]] -> [[a -> b]]
src/Test/LeanCheck/Function/Listable/FunListable.hs view
@@ -11,8 +11,7 @@ -- of a 'FunListable' typeclass (similar to 'CoListable'). -- -- This module /does not currently work/, it it just a sketch and a stub.-module Test.LeanCheck.Function.Listable.FunListable-where+module Test.LeanCheck.Function.Listable.FunListable (FunListable (..)) where import Test.LeanCheck@@ -37,6 +36,10 @@ infixr 9 \+:/ +-- | This typeclass _does not currently work_. It is a stub and a sketch.+--+-- 'FunListable' is similar to 'CoListable' but a bit more complex to avoid+-- some repetitions. class FunListable a where validResults :: a -> [b] -> Bool validResults x = not . invalidResults x
src/Test/LeanCheck/Function/Listable/Periodic.hs view
@@ -11,8 +11,7 @@ -- functions. -- -- This module /barely works/ and is just a sketch.-module Test.LeanCheck.Function.Listable.Periodic-where+module Test.LeanCheck.Function.Listable.Periodic () where import Test.LeanCheck
src/Test/LeanCheck/Function/ListsOfPairs.hs view
@@ -21,6 +21,8 @@ import Test.LeanCheck.Tiers import Data.Maybe (fromMaybe) +-- | Given tiers of argument and result values,+-- return tiers of functional values. (-->>) :: Eq a => [[a]] -> [[b]] -> [[a->b]] xss -->> yss | finite xss = mapT ((undefined `mutate`) . zip (concat xss))
src/Test/LeanCheck/Stats.hs view
@@ -83,7 +83,7 @@ , show (100 * c `div` len) ++ "%" ] count f = length . filter f --- TODO: implement this+-- TODO: implement conditionStatsT conditionStatsT :: Listable a => Int -> [(String,a->Bool)] -> IO () conditionStatsT = error "conditionsStatsT: not implemented yet, use conditionStats for now"
src/Test/LeanCheck/Utils/Operators.hs view
@@ -56,6 +56,9 @@ ) where +-- TODO: Add examples in the haddock documentation of most functions in this+-- module.+ -- TODO: review terminology in this module. Some names aren't quite right! import Test.LeanCheck ((==>))@@ -152,26 +155,46 @@ asymmetric :: (a -> a -> Bool) -> a -> a -> Bool asymmetric r = \x y -> x `r` y ==> not (y `r` x) +-- | Is the given binary relation an equivalence?+-- Is the given relation reflexive, symmetric and transitive?+--+-- > > check (equivalence (==) :: Int -> Int -> Int -> Bool)+-- > +++ OK, passed 200 tests.+-- > > check (equivalence (<=) :: Int -> Int -> Int -> Bool)+-- > *** Failed! Falsifiable (after 3 tests):+-- > 0 1 0+--+-- Or, using "Test.LeanCheck.Utils.TypeBinding":+--+-- > > check $ equivalence (<=) -:> int+-- > *** Failed! Falsifiable (after 3 tests):+-- > 0 1 0 equivalence :: (a -> a -> Bool) -> a -> a -> a -> Bool equivalence (==) = \x y z -> reflexive (==) x && symmetric (==) x y && transitive (==) x y z +-- | Is the given binary relation a partial order?+-- Is the given relation reflexive, antisymmetric and transitive? partialOrder :: Eq a => (a -> a -> Bool) -> a -> a -> a -> Bool partialOrder (<=) = \x y z -> reflexive (<=) x && antisymmetric (<=) x y && transitive (<=) x y z +-- | Is the given binary relation a strict partial order?+-- Is the given relation irreflexive, asymmetric and transitive? strictPartialOrder :: (a -> a -> Bool) -> a -> a -> a -> Bool strictPartialOrder (<) = \x y z -> irreflexive (<) x && asymmetric (<) x y -- implied? && transitive (<) x y z +-- | Is the given binary relation a total order? totalOrder :: Eq a => (a -> a -> Bool) -> a -> a -> a -> Bool totalOrder (<=) = \x y z -> (x <= y || y <= x) && antisymmetric (<=) x y && transitive (<=) x y z +-- | Is the given binary relation a strict total order? strictTotalOrder :: Eq a => (a -> a -> Bool) -> a -> a -> a -> Bool strictTotalOrder (<) = \x y z -> (x /= y ==> x < y || y < x) && irreflexive (<) x
src/Test/LeanCheck/Utils/TypeBinding.hs view
@@ -96,11 +96,21 @@ , ordering , mayb, eith -- ** Testing types+ , natural , nat- , int1, uint1- , int2, uint2- , int3, uint3- , int4, uint4+ , int1+ , int2+ , int3+ , int4+ , word1+ , word2+ , word3+ , word4+ -- *** Deprecated testing types+ , uint1+ , uint2+ , uint3+ , uint4 ) where @@ -178,74 +188,92 @@ (->>>:) = const infixl 1 ->>>: +-- | Forces the 4th argument type. (->>>:>) :: (a -> b -> c -> d -> e) -> d -> (a -> b -> c -> d -> e) (->>>:>) = const infixl 1 ->>>:> +-- | Forces the result type of a 4-argument function. (->>>>:) :: (a -> b -> c -> d -> e) -> e -> (a -> b -> c -> d -> e) (->>>>:) = const infixl 1 ->>>>: +-- | Forces the 5th argument type. (->>>>:>) :: (a -> b -> c -> d -> e -> f) -> e -> (a -> b -> c -> d -> e -> f) (->>>>:>) = const infixl 1 ->>>>:> +-- | Forces the result type of a 5-argument function. (->>>>>:) :: (a -> b -> c -> d -> e -> f) -> f -> (a -> b -> c -> d -> e -> f) (->>>>>:) = const infixl 1 ->>>>>: +-- | Forces the 6th argument type. (->>>>>:>) :: (a->b->c->d->e->f->g) -> f -> (a->b->c->d->e->f->g) (->>>>>:>) = const infixl 1 ->>>>>:> +-- | Forces the result type of a 6-argument function. (->>>>>>:) :: (a->b->c->d->e->f->g) -> g -> (a->b->c->d->e->f->g) (->>>>>>:) = const infixl 1 ->>>>>>: +-- | Forces the 7th argument type. (->>>>>>:>) :: (a->b->c->d->e->f->g->h) -> g -> (a->b->c->d->e->f->g->h) (->>>>>>:>) = const infixl 1 ->>>>>>:> +-- | Forces the result type of a 7-argument function. (->>>>>>>:) :: (a->b->c->d->e->f->g->h) -> h -> (a->b->c->d->e->f->g->h) (->>>>>>>:) = const infixl 1 ->>>>>>>: +-- | Forces the 8th argument type. (->>>>>>>:>) :: (a->b->c->d->e->f->g->h->i) -> h -> (a->b->c->d->e->f->g->h->i) (->>>>>>>:>) = const infixl 1 ->>>>>>>:> +-- | Forces the result type of a 8-argument function. (->>>>>>>>:) :: (a->b->c->d->e->f->g->h->i) -> i -> (a->b->c->d->e->f->g->h->i) (->>>>>>>>:) = const infixl 1 ->>>>>>>>: +-- | Forces the 9th argument type. (->>>>>>>>:>) :: (a->b->c->d->e->f->g->h->i->j) -> i -> (a->b->c->d->e->f->g->h->i->j) (->>>>>>>>:>) = const infixl 1 ->>>>>>>>:> +-- | Forces the result type of a 9-argument function. (->>>>>>>>>:) :: (a->b->c->d->e->f->g->h->i->j) -> j -> (a->b->c->d->e->f->g->h->i->j) (->>>>>>>>>:) = const infixl 1 ->>>>>>>>>: +-- | Forces the type of the 10th argument. (->>>>>>>>>:>) :: (a->b->c->d->e->f->g->h->i->j->k) -> j -> (a->b->c->d->e->f->g->h->i->j->k) (->>>>>>>>>:>) = const infixl 1 ->>>>>>>>>:> +-- | Forces the result type of a 10-argument function. (->>>>>>>>>>:) :: (a->b->c->d->e->f->g->h->i->j->k) -> k -> (a->b->c->d->e->f->g->h->i->j->k) (->>>>>>>>>>:) = const infixl 1 ->>>>>>>>>>: +-- | Forces the type of the 11th argument. (->>>>>>>>>>:>) :: (a->b->c->d->e->f->g->h->i->j->k->l) -> k -> (a->b->c->d->e->f->g->h->i->j->k->l) (->>>>>>>>>>:>) = const infixl 1 ->>>>>>>>>>:> +-- | Forces the result type of a 11-argument function. (->>>>>>>>>>>:) :: (a->b->c->d->e->f->g->h->i->j->k->l) -> l -> (a->b->c->d->e->f->g->h->i->j->k->l) (->>>>>>>>>>>:) = const infixl 1 ->>>>>>>>>>>: +-- | Forces the type of the 12th argument. (->>>>>>>>>>>:>) :: (a->b->c->d->e->f->g->h->i->j->k->l->m) -> m -> (a->b->c->d->e->f->g->h->i->j->k->l->m) (->>>>>>>>>>>:>) = const infixl 1 ->>>>>>>>>>>:> +-- | Forces the result type of a 12-argument function. (->>>>>>>>>>>>:) :: (a->b->c->d->e->f->g->h->i->j->k->l->m) -> m -> (a->b->c->d->e->f->g->h->i->j->k->l->m) (->>>>>>>>>>>>:) = const infixl 1 ->>>>>>>>>>>>:@@ -271,66 +299,115 @@ und :: a und = undefinedOf "und" +-- | Undefined 'Int' value for use with type binding operators.+--+-- > check $ (\x y -> x + y == y + x) ->:> int int :: Int int = undefinedOf "int" +-- | Undefined 'Integer' value for use with type binding operators.+--+-- > check $ (\x y -> x + y == y + x) ->:> integer integer :: Integer integer = undefinedOf "integer" +-- | Undefined 'Float' value for use with type binding operators. float :: Float float = undefinedOf "float" +-- | Undefined 'Double' value for use with type binding operators. double :: Double double = undefinedOf "double" +-- | Undefined 'Rational' value for use with type binding operators. rational :: Rational rational = undefinedOf "rational" +-- | Undefined 'Bool' value. bool :: Bool bool = undefinedOf "bool" +-- | Undefined 'Char' value. char :: Char char = undefinedOf "char" +-- | Undefined 'String' value. string :: String string = undefinedOf "string" +-- | Undefined 'Ordering' value. ordering :: Ordering ordering = undefinedOf "ordering" --- | It might be better to just use 'Just'+-- | Undefined 'Maybe' value. Uses the type of the given value as the argument+-- type. For use with type binding operators.+--+-- To check a property with the first argument bound to 'Maybe' 'Int', do:+--+-- > check $ prop -:> mayb int mayb :: a -> Maybe a mayb = undefinedOf "mayb" +-- | Undefined 'Either' value. Uses the types of the given values as the+-- argument types. For use with type binding operators. eith :: a -> b -> Either a b eith = undefinedOf "eith" -- Dummy values of Test.LeanCheck.Types's types: +-- | Undefined 'Natural' value.+natural :: Natural+natural = undefinedOf "natural"++-- | Undefined 'Nat' value. nat :: Nat nat = undefinedOf "nat" +-- | Undefined 'Int1' value. int1 :: Int1 int1 = undefinedOf "int1" +-- | Undefined 'Int2' value. int2 :: Int2 int2 = undefinedOf "int2" +-- | Undefined 'Int3' value. int3 :: Int3 int3 = undefinedOf "int3" +-- | Undefined 'Int4' value. int4 :: Int4 int4 = undefinedOf "int4" +-- | Undefined 'Word1' value.+word1 :: Word1+word1 = undefinedOf "word1"++-- | Undefined 'Word2' value.+word2 :: Word2+word2 = undefinedOf "word2"++-- | Undefined 'Word3' value.+word3 :: Word3+word3 = undefinedOf "word3"++-- | Undefined 'Word4' value.+word4 :: Word4+word4 = undefinedOf "word4"++-- | Deprecated. Use 'word1'. uint1 :: UInt1 uint1 = undefinedOf "uint1" +-- | Deprecated. Use 'word2'. uint2 :: UInt2 uint2 = undefinedOf "uint2" +-- | Deprecated. Use 'word3'. uint3 :: UInt3 uint3 = undefinedOf "uint3" +-- | Deprecated. Use 'word4'. uint4 :: UInt4 uint4 = undefinedOf "uint4"
src/Test/LeanCheck/Utils/Types.hs view
@@ -43,6 +43,7 @@ , Nat5 (..) , Nat6 (..) , Nat7 (..)+ , Natural (..) -- ** Aliases to word types (deprecated) , UInt1@@ -131,6 +132,15 @@ -- | Natural numbers (including 0): 0, 1, 2, 3, 4, 5, 6, 7, ... --+-- Internally, this type is represented as an 'Integer'+-- allowing for an infinity of possible values.+--+-- Its 'Enum' and 'Listable' instances only produce non-negative values.+-- Negatives can still be generated by 'negate' or subtraction.+newtype Natural = Natural { unNatural :: Int } deriving (Eq, Ord)++-- | Natural numbers (including 0): 0, 1, 2, 3, 4, 5, 6, 7, ...+-- -- Internally, this type is represented as an 'Int'. -- So, it is limited by the 'maxBound' of 'Int'. newtype Nat = Nat { unNat :: Int } deriving (Eq, Ord)@@ -188,6 +198,8 @@ oNat5 ::(Int->Int->Int)->(Nat5->Nat5->Nat5) ; oNat5 = oNewtype nat5 unNat5 oNat6 ::(Int->Int->Int)->(Nat6->Nat6->Nat6) ; oNat6 = oNewtype nat6 unNat6 oNat7 ::(Int->Int->Int)->(Nat7->Nat7->Nat7) ; oNat7 = oNewtype nat7 unNat7+oNatural :: (Int->Int->Int) -> (Natural->Natural->Natural)+oNatural = oNewtype Natural unNatural fInt1 :: (Int->Int) -> (Int1->Int1) ; fInt1 = fNewtype int1 unInt1 fInt2 :: (Int->Int) -> (Int2->Int2) ; fInt2 = fNewtype int2 unInt2@@ -205,6 +217,8 @@ fNat5 :: (Int->Int) -> (Nat5->Nat5) ; fNat5 = fNewtype nat5 unNat5 fNat6 :: (Int->Int) -> (Nat6->Nat6) ; fNat6 = fNewtype nat6 unNat6 fNat7 :: (Int->Int) -> (Nat7->Nat7) ; fNat7 = fNewtype nat7 unNat7+fNatural :: (Int->Int) -> (Natural->Natural)+fNatural = fNewtype Natural unNatural instance Show Int1 where show = show . unInt1 instance Show Int2 where show = show . unInt2@@ -222,6 +236,7 @@ instance Show Nat5 where show = show . unNat5 instance Show Nat6 where show = show . unNat6 instance Show Nat7 where show = show . unNat7+instance Show Natural where show (Natural x) = show x instance Read Int1 where readsPrec = readsPrecNewtype int1 instance Read Int2 where readsPrec = readsPrecNewtype int2@@ -239,6 +254,7 @@ instance Read Nat5 where readsPrec = readsPrecNewtype nat5 instance Read Nat6 where readsPrec = readsPrecNewtype nat6 instance Read Nat7 where readsPrec = readsPrecNewtype nat7+instance Read Natural where readsPrec = readsPrecNewtype Natural instance Num Int1 where (+) = oInt1 (+); abs = fInt1 abs@@ -305,7 +321,12 @@ (-) = oNat7 (-); signum = fNat7 signum (*) = oNat7 (*); fromInteger = nat7 . fromInteger +instance Num Natural where+ (+) = oNatural (+); abs = fNatural abs+ (-) = oNatural (-); signum = fNatural signum+ (*) = oNatural (*); fromInteger = Natural . fromInteger + instance Real Int1 where toRational (Int1 x) = fromIntegral x % 1 instance Real Int2 where toRational (Int2 x) = fromIntegral x % 1 instance Real Int3 where toRational (Int3 x) = fromIntegral x % 1@@ -322,6 +343,7 @@ instance Real Nat5 where toRational (Nat5 x) = fromIntegral x % 1 instance Real Nat6 where toRational (Nat6 x) = fromIntegral x % 1 instance Real Nat7 where toRational (Nat7 x) = fromIntegral x % 1+instance Real Natural where toRational (Natural x) = fromIntegral x % 1 instance Integral Int1 where quotRem = otNewtype int1 unInt1 quotRem toInteger = toInteger . unInt1@@ -371,6 +393,9 @@ instance Integral Nat7 where quotRem = otNewtype nat7 unNat7 quotRem toInteger = toInteger . unNat7 +instance Integral Natural where quotRem = otNewtype Natural unNatural quotRem+ toInteger = toInteger . unNatural+ instance Bounded Int1 where maxBound = Int1 0; minBound = Int1 (-1) instance Bounded Int2 where maxBound = Int2 1; minBound = Int2 (-2) instance Bounded Int3 where maxBound = Int3 3; minBound = Int3 (-4)@@ -379,6 +404,7 @@ instance Bounded Word2 where maxBound = Word2 3; minBound = Word2 0 instance Bounded Word3 where maxBound = Word3 7; minBound = Word3 0 instance Bounded Word4 where maxBound = Word4 15; minBound = Word4 0+instance Bounded Nat where maxBound = Nat maxBound; minBound = Nat 0 instance Bounded Nat1 where maxBound = Nat1 0; minBound = Nat1 0 instance Bounded Nat2 where maxBound = Nat2 1; minBound = Nat2 0 instance Bounded Nat3 where maxBound = Nat3 2; minBound = Nat3 0@@ -411,9 +437,8 @@ instance Enum Word4 where toEnum = word4; enumFrom = boundedEnumFrom fromEnum = unWord4; enumFromThen = boundedEnumFromThen -instance Enum Nat where- toEnum = Nat; enumFrom (Nat x) = map Nat [x..]- fromEnum = unNat; enumFromThen (Nat x) (Nat s) = map Nat [x,s..]+instance Enum Nat where toEnum = Nat; enumFrom = boundedEnumFrom+ fromEnum = unNat; enumFromThen = boundedEnumFromThen instance Enum Nat1 where toEnum = nat1; enumFrom = boundedEnumFrom fromEnum = unNat1; enumFromThen = boundedEnumFromThen@@ -436,6 +461,12 @@ instance Enum Nat7 where toEnum = nat7; enumFrom = boundedEnumFrom fromEnum = unNat7; enumFromThen = boundedEnumFromThen +instance Enum Natural where+ toEnum = Natural+ fromEnum = unNatural;+ enumFrom (Natural x) = map Natural [x..]+ enumFromThen (Natural x) (Natural s) = map Natural [x,s..]+ instance Listable Int1 where list = [0,minBound] instance Listable Int2 where list = listIntegral instance Listable Int3 where list = listIntegral@@ -452,15 +483,56 @@ instance Listable Nat5 where list = [0..] instance Listable Nat6 where list = [0..] instance Listable Nat7 where list = [0..]+instance Listable Natural where list = [0..] +-- | Deprecated. Use 'Word1'. type UInt1 = Word1++-- | Deprecated. Use 'Word2'. type UInt2 = Word2++-- | Deprecated. Use 'Word3'. type UInt3 = Word3++-- | Deprecated. Use 'Word4'. type UInt4 = Word4 +-- | Lists without repeated elements.+--+-- > > take 6 $ list :: [NoDup Nat]+-- > [NoDup [],NoDup [0],NoDup [1],NoDup [0,1],NoDup [1,0],NoDup [2]]+--+-- Example, checking the property that @nub@ is an identity:+--+-- > import Data.List (nub)+-- > > check $ \xs -> nub xs == (xs :: [Int])+-- > *** Failed! Falsifiable (after 3 tests):+-- > [0,0]+-- > > check $ \(NoDup xs) -> nub xs == (xs :: [Int])+-- > +++ OK, passed 200 tests. newtype NoDup a = NoDup [a] deriving (Show, Read, Eq, Ord)++-- | Lists representing bags (multisets).+-- The 'Listable' 'tiers' enumeration will not have repeated bags.+--+-- > > take 6 (list :: [Bag Nat])+-- > [Bag [],Bag [0],Bag [0,0],Bag [1],Bag [0,0,0],Bag [0,1]]+--+-- See also: 'bagsOf' and 'bagCons'. newtype Bag a = Bag [a] deriving (Show, Read, Eq, Ord)++-- | Lists representing sets.+-- The 'Listable' 'tiers' enumeration will not have repeated sets.+--+-- > > take 6 (list :: [Set Nat])+-- > [Set [],Set [0],Set [1],Set [0,1],Set [2],Set [0,2]] newtype Set a = Set [a] deriving (Show, Read, Eq, Ord)++-- | Lists of pairs representing maps.+-- The 'Listable' 'tiers' enumeration will not have repeated maps.+--+-- > > take 6 (list :: [Map Nat Nat])+-- > [Map [],Map [(0,0)],Map [(0,1)],Map [(1,0)],Map [(0,2)],Map [(1,1)]] newtype Map a b = Map [(a,b)] deriving (Show, Read, Eq, Ord) instance Listable a => Listable (NoDup a) where tiers = noDupListCons NoDup@@ -533,8 +605,16 @@ (x:x':xs) ++| (y:ys) = x:x':y:(xs ++| ys) infixr 5 ++| -newtype Xs a = Xs {unXs :: [a]} deriving (Eq, Ord)-instance Show a => Show (Xs a) where show (Xs xs) = show xs+-- | Wrap around lists of integers for an enumeration containing e-'X'-treme+-- integer values.+--+-- > > check $ \xs -> all (>=0) xs ==> sum (take 1 xs :: [Int]) <= sum xs+-- > +++ OK, passed 200 tests.+--+-- > > check $ \(Xs xs) -> all (>=0) xs ==> sum (take 1 xs :: [Int]) <= sum xs+-- > *** Failed! Falsifiable (after 56 tests):+-- > [1,9223372036854775807]+newtype Xs a = Xs [a] deriving (Eq, Ord, Show, Read) instance (Integral a, Bounded a) => Listable (Xs a) where tiers = cons1 (Xs . map unX) -- ^ Lists with elements of the 'X' type.
+ tests/diff/tiers-XInt4.out view
@@ -0,0 +1,23 @@+map length (tiers :: [[ X Int4 ]]) = [1,1,1,1,1,1,1,1,1,1,1,1,...]++length (list :: [ X Int4 ]) = Infinity++allUnique (list :: [ X Int4 ]) = True++ratioRepetitions (list :: [ X Int4 ]) = 0 % 1++tiers :: [X Int4] =+ [ [0]+ , [1]+ , [-1]+ , [7]+ , [-8]+ , [2]+ , [-2]+ , [6]+ , [-7]+ , [3]+ , [-3]+ , [5]+ , ...+ ]
+ tests/diff/tiers-XNat7.out view
@@ -0,0 +1,17 @@+map length (tiers :: [[ X Nat7 ]]) = [1,1,1,1,1,1,1]++length (list :: [ X Nat7 ]) = 7++allUnique (list :: [ X Nat7 ]) = True++ratioRepetitions (list :: [ X Nat7 ]) = 0 % 1++tiers :: [X Nat7] =+ [ [0]+ , [1]+ , [2]+ , [6]+ , [3]+ , [4]+ , [5]+ ]
+ tests/diff/tiers-XWord4.out view
@@ -0,0 +1,23 @@+map length (tiers :: [[ X Word4 ]]) = [1,1,1,1,1,1,1,1,1,1,1,1,...]++length (list :: [ X Word4 ]) = Infinity++allUnique (list :: [ X Word4 ]) = True++ratioRepetitions (list :: [ X Word4 ]) = 0 % 1++tiers :: [X Word4] =+ [ [0]+ , [1]+ , [2]+ , [15]+ , [3]+ , [4]+ , [14]+ , [5]+ , [6]+ , [13]+ , [7]+ , [8]+ , ...+ ]
+ tests/diff/tiers-XsInt4.out view
@@ -0,0 +1,1045 @@+map length (tiers :: [[ Xs Int4 ]]) = [0,1,1,2,4,8,16,32,64,128,256,512,...]++length (list :: [ Xs Int4 ]) = Infinity++allUnique (list :: [ Xs Int4 ]) = True++ratioRepetitions (list :: [ Xs Int4 ]) = 0 % 1++tiers :: [Xs Int4] =+ [ []+ , [Xs []]+ , [Xs [0]]+ , [ Xs [0,0]+ , Xs [1]+ ]+ , [ Xs [0,0,0]+ , Xs [0,1]+ , Xs [1,0]+ , Xs [-1]+ ]+ , [ Xs [0,0,0,0]+ , Xs [0,0,1]+ , Xs [0,1,0]+ , Xs [0,-1]+ , Xs [1,0,0]+ , Xs [1,1]+ , Xs [-1,0]+ , Xs [7]+ ]+ , [ Xs [0,0,0,0,0]+ , Xs [0,0,0,1]+ , Xs [0,0,1,0]+ , Xs [0,0,-1]+ , Xs [0,1,0,0]+ , Xs [0,1,1]+ , Xs [0,-1,0]+ , Xs [0,7]+ , Xs [1,0,0,0]+ , Xs [1,0,1]+ , Xs [1,1,0]+ , Xs [1,-1]+ , Xs [-1,0,0]+ , Xs [-1,1]+ , Xs [7,0]+ , Xs [-8]+ ]+ , [ Xs [0,0,0,0,0,0]+ , Xs [0,0,0,0,1]+ , Xs [0,0,0,1,0]+ , Xs [0,0,0,-1]+ , Xs [0,0,1,0,0]+ , Xs [0,0,1,1]+ , Xs [0,0,-1,0]+ , Xs [0,0,7]+ , Xs [0,1,0,0,0]+ , Xs [0,1,0,1]+ , Xs [0,1,1,0]+ , Xs [0,1,-1]+ , Xs [0,-1,0,0]+ , Xs [0,-1,1]+ , Xs [0,7,0]+ , Xs [0,-8]+ , Xs [1,0,0,0,0]+ , Xs [1,0,0,1]+ , Xs [1,0,1,0]+ , Xs [1,0,-1]+ , Xs [1,1,0,0]+ , Xs [1,1,1]+ , Xs [1,-1,0]+ , Xs [1,7]+ , Xs [-1,0,0,0]+ , Xs [-1,0,1]+ , Xs [-1,1,0]+ , Xs [-1,-1]+ , Xs [7,0,0]+ , Xs [7,1]+ , Xs [-8,0]+ , Xs [2]+ ]+ , [ Xs [0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,1]+ , Xs [0,0,0,0,1,0]+ , Xs [0,0,0,0,-1]+ , Xs [0,0,0,1,0,0]+ , Xs [0,0,0,1,1]+ , Xs [0,0,0,-1,0]+ , Xs [0,0,0,7]+ , Xs [0,0,1,0,0,0]+ , Xs [0,0,1,0,1]+ , Xs [0,0,1,1,0]+ , Xs [0,0,1,-1]+ , Xs [0,0,-1,0,0]+ , Xs [0,0,-1,1]+ , Xs [0,0,7,0]+ , Xs [0,0,-8]+ , Xs [0,1,0,0,0,0]+ , Xs [0,1,0,0,1]+ , Xs [0,1,0,1,0]+ , Xs [0,1,0,-1]+ , Xs [0,1,1,0,0]+ , Xs [0,1,1,1]+ , Xs [0,1,-1,0]+ , Xs [0,1,7]+ , Xs [0,-1,0,0,0]+ , Xs [0,-1,0,1]+ , Xs [0,-1,1,0]+ , Xs [0,-1,-1]+ , Xs [0,7,0,0]+ , Xs [0,7,1]+ , Xs [0,-8,0]+ , Xs [0,2]+ , Xs [1,0,0,0,0,0]+ , Xs [1,0,0,0,1]+ , Xs [1,0,0,1,0]+ , Xs [1,0,0,-1]+ , Xs [1,0,1,0,0]+ , Xs [1,0,1,1]+ , Xs [1,0,-1,0]+ , Xs [1,0,7]+ , Xs [1,1,0,0,0]+ , Xs [1,1,0,1]+ , Xs [1,1,1,0]+ , Xs [1,1,-1]+ , Xs [1,-1,0,0]+ , Xs [1,-1,1]+ , Xs [1,7,0]+ , Xs [1,-8]+ , Xs [-1,0,0,0,0]+ , Xs [-1,0,0,1]+ , Xs [-1,0,1,0]+ , Xs [-1,0,-1]+ , Xs [-1,1,0,0]+ , Xs [-1,1,1]+ , Xs [-1,-1,0]+ , Xs [-1,7]+ , Xs [7,0,0,0]+ , Xs [7,0,1]+ , Xs [7,1,0]+ , Xs [7,-1]+ , Xs [-8,0,0]+ , Xs [-8,1]+ , Xs [2,0]+ , Xs [-2]+ ]+ , [ Xs [0,0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,0,1]+ , Xs [0,0,0,0,0,1,0]+ , Xs [0,0,0,0,0,-1]+ , Xs [0,0,0,0,1,0,0]+ , Xs [0,0,0,0,1,1]+ , Xs [0,0,0,0,-1,0]+ , Xs [0,0,0,0,7]+ , Xs [0,0,0,1,0,0,0]+ , Xs [0,0,0,1,0,1]+ , Xs [0,0,0,1,1,0]+ , Xs [0,0,0,1,-1]+ , Xs [0,0,0,-1,0,0]+ , Xs [0,0,0,-1,1]+ , Xs [0,0,0,7,0]+ , Xs [0,0,0,-8]+ , Xs [0,0,1,0,0,0,0]+ , Xs [0,0,1,0,0,1]+ , Xs [0,0,1,0,1,0]+ , Xs [0,0,1,0,-1]+ , Xs [0,0,1,1,0,0]+ , Xs [0,0,1,1,1]+ , Xs [0,0,1,-1,0]+ , Xs [0,0,1,7]+ , Xs [0,0,-1,0,0,0]+ , Xs [0,0,-1,0,1]+ , Xs [0,0,-1,1,0]+ , Xs [0,0,-1,-1]+ , Xs [0,0,7,0,0]+ , Xs [0,0,7,1]+ , Xs [0,0,-8,0]+ , Xs [0,0,2]+ , Xs [0,1,0,0,0,0,0]+ , Xs [0,1,0,0,0,1]+ , Xs [0,1,0,0,1,0]+ , Xs [0,1,0,0,-1]+ , Xs [0,1,0,1,0,0]+ , Xs [0,1,0,1,1]+ , Xs [0,1,0,-1,0]+ , Xs [0,1,0,7]+ , Xs [0,1,1,0,0,0]+ , Xs [0,1,1,0,1]+ , Xs [0,1,1,1,0]+ , Xs [0,1,1,-1]+ , Xs [0,1,-1,0,0]+ , Xs [0,1,-1,1]+ , Xs [0,1,7,0]+ , Xs [0,1,-8]+ , Xs [0,-1,0,0,0,0]+ , Xs [0,-1,0,0,1]+ , Xs [0,-1,0,1,0]+ , Xs [0,-1,0,-1]+ , Xs [0,-1,1,0,0]+ , Xs [0,-1,1,1]+ , Xs [0,-1,-1,0]+ , Xs [0,-1,7]+ , Xs [0,7,0,0,0]+ , Xs [0,7,0,1]+ , Xs [0,7,1,0]+ , Xs [0,7,-1]+ , Xs [0,-8,0,0]+ , Xs [0,-8,1]+ , Xs [0,2,0]+ , Xs [0,-2]+ , Xs [1,0,0,0,0,0,0]+ , Xs [1,0,0,0,0,1]+ , Xs [1,0,0,0,1,0]+ , Xs [1,0,0,0,-1]+ , Xs [1,0,0,1,0,0]+ , Xs [1,0,0,1,1]+ , Xs [1,0,0,-1,0]+ , Xs [1,0,0,7]+ , Xs [1,0,1,0,0,0]+ , Xs [1,0,1,0,1]+ , Xs [1,0,1,1,0]+ , Xs [1,0,1,-1]+ , Xs [1,0,-1,0,0]+ , Xs [1,0,-1,1]+ , Xs [1,0,7,0]+ , Xs [1,0,-8]+ , Xs [1,1,0,0,0,0]+ , Xs [1,1,0,0,1]+ , Xs [1,1,0,1,0]+ , Xs [1,1,0,-1]+ , Xs [1,1,1,0,0]+ , Xs [1,1,1,1]+ , Xs [1,1,-1,0]+ , Xs [1,1,7]+ , Xs [1,-1,0,0,0]+ , Xs [1,-1,0,1]+ , Xs [1,-1,1,0]+ , Xs [1,-1,-1]+ , Xs [1,7,0,0]+ , Xs [1,7,1]+ , Xs [1,-8,0]+ , Xs [1,2]+ , Xs [-1,0,0,0,0,0]+ , Xs [-1,0,0,0,1]+ , Xs [-1,0,0,1,0]+ , Xs [-1,0,0,-1]+ , Xs [-1,0,1,0,0]+ , Xs [-1,0,1,1]+ , Xs [-1,0,-1,0]+ , Xs [-1,0,7]+ , Xs [-1,1,0,0,0]+ , Xs [-1,1,0,1]+ , Xs [-1,1,1,0]+ , Xs [-1,1,-1]+ , Xs [-1,-1,0,0]+ , Xs [-1,-1,1]+ , Xs [-1,7,0]+ , Xs [-1,-8]+ , Xs [7,0,0,0,0]+ , Xs [7,0,0,1]+ , Xs [7,0,1,0]+ , Xs [7,0,-1]+ , Xs [7,1,0,0]+ , Xs [7,1,1]+ , Xs [7,-1,0]+ , Xs [7,7]+ , Xs [-8,0,0,0]+ , Xs [-8,0,1]+ , Xs [-8,1,0]+ , Xs [-8,-1]+ , Xs [2,0,0]+ , Xs [2,1]+ , Xs [-2,0]+ , Xs [6]+ ]+ , [ Xs [0,0,0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,0,0,1]+ , Xs [0,0,0,0,0,0,1,0]+ , Xs [0,0,0,0,0,0,-1]+ , Xs [0,0,0,0,0,1,0,0]+ , Xs [0,0,0,0,0,1,1]+ , Xs [0,0,0,0,0,-1,0]+ , Xs [0,0,0,0,0,7]+ , Xs [0,0,0,0,1,0,0,0]+ , Xs [0,0,0,0,1,0,1]+ , Xs [0,0,0,0,1,1,0]+ , Xs [0,0,0,0,1,-1]+ , Xs [0,0,0,0,-1,0,0]+ , Xs [0,0,0,0,-1,1]+ , Xs [0,0,0,0,7,0]+ , Xs [0,0,0,0,-8]+ , Xs [0,0,0,1,0,0,0,0]+ , Xs [0,0,0,1,0,0,1]+ , Xs [0,0,0,1,0,1,0]+ , Xs [0,0,0,1,0,-1]+ , Xs [0,0,0,1,1,0,0]+ , Xs [0,0,0,1,1,1]+ , Xs [0,0,0,1,-1,0]+ , Xs [0,0,0,1,7]+ , Xs [0,0,0,-1,0,0,0]+ , Xs [0,0,0,-1,0,1]+ , Xs [0,0,0,-1,1,0]+ , Xs [0,0,0,-1,-1]+ , Xs [0,0,0,7,0,0]+ , Xs [0,0,0,7,1]+ , Xs [0,0,0,-8,0]+ , Xs [0,0,0,2]+ , Xs [0,0,1,0,0,0,0,0]+ , Xs [0,0,1,0,0,0,1]+ , Xs [0,0,1,0,0,1,0]+ , Xs [0,0,1,0,0,-1]+ , Xs [0,0,1,0,1,0,0]+ , Xs [0,0,1,0,1,1]+ , Xs [0,0,1,0,-1,0]+ , Xs [0,0,1,0,7]+ , Xs [0,0,1,1,0,0,0]+ , Xs [0,0,1,1,0,1]+ , Xs [0,0,1,1,1,0]+ , Xs [0,0,1,1,-1]+ , Xs [0,0,1,-1,0,0]+ , Xs [0,0,1,-1,1]+ , Xs [0,0,1,7,0]+ , Xs [0,0,1,-8]+ , Xs [0,0,-1,0,0,0,0]+ , Xs [0,0,-1,0,0,1]+ , Xs [0,0,-1,0,1,0]+ , Xs [0,0,-1,0,-1]+ , Xs [0,0,-1,1,0,0]+ , Xs [0,0,-1,1,1]+ , Xs [0,0,-1,-1,0]+ , Xs [0,0,-1,7]+ , Xs [0,0,7,0,0,0]+ , Xs [0,0,7,0,1]+ , Xs [0,0,7,1,0]+ , Xs [0,0,7,-1]+ , Xs [0,0,-8,0,0]+ , Xs [0,0,-8,1]+ , Xs [0,0,2,0]+ , Xs [0,0,-2]+ , Xs [0,1,0,0,0,0,0,0]+ , Xs [0,1,0,0,0,0,1]+ , Xs [0,1,0,0,0,1,0]+ , Xs [0,1,0,0,0,-1]+ , Xs [0,1,0,0,1,0,0]+ , Xs [0,1,0,0,1,1]+ , Xs [0,1,0,0,-1,0]+ , Xs [0,1,0,0,7]+ , Xs [0,1,0,1,0,0,0]+ , Xs [0,1,0,1,0,1]+ , Xs [0,1,0,1,1,0]+ , Xs [0,1,0,1,-1]+ , Xs [0,1,0,-1,0,0]+ , Xs [0,1,0,-1,1]+ , Xs [0,1,0,7,0]+ , Xs [0,1,0,-8]+ , Xs [0,1,1,0,0,0,0]+ , Xs [0,1,1,0,0,1]+ , Xs [0,1,1,0,1,0]+ , Xs [0,1,1,0,-1]+ , Xs [0,1,1,1,0,0]+ , Xs [0,1,1,1,1]+ , Xs [0,1,1,-1,0]+ , Xs [0,1,1,7]+ , Xs [0,1,-1,0,0,0]+ , Xs [0,1,-1,0,1]+ , Xs [0,1,-1,1,0]+ , Xs [0,1,-1,-1]+ , Xs [0,1,7,0,0]+ , Xs [0,1,7,1]+ , Xs [0,1,-8,0]+ , Xs [0,1,2]+ , Xs [0,-1,0,0,0,0,0]+ , Xs [0,-1,0,0,0,1]+ , Xs [0,-1,0,0,1,0]+ , Xs [0,-1,0,0,-1]+ , Xs [0,-1,0,1,0,0]+ , Xs [0,-1,0,1,1]+ , Xs [0,-1,0,-1,0]+ , Xs [0,-1,0,7]+ , Xs [0,-1,1,0,0,0]+ , Xs [0,-1,1,0,1]+ , Xs [0,-1,1,1,0]+ , Xs [0,-1,1,-1]+ , Xs [0,-1,-1,0,0]+ , Xs [0,-1,-1,1]+ , Xs [0,-1,7,0]+ , Xs [0,-1,-8]+ , Xs [0,7,0,0,0,0]+ , Xs [0,7,0,0,1]+ , Xs [0,7,0,1,0]+ , Xs [0,7,0,-1]+ , Xs [0,7,1,0,0]+ , Xs [0,7,1,1]+ , Xs [0,7,-1,0]+ , Xs [0,7,7]+ , Xs [0,-8,0,0,0]+ , Xs [0,-8,0,1]+ , Xs [0,-8,1,0]+ , Xs [0,-8,-1]+ , Xs [0,2,0,0]+ , Xs [0,2,1]+ , Xs [0,-2,0]+ , Xs [0,6]+ , Xs [1,0,0,0,0,0,0,0]+ , Xs [1,0,0,0,0,0,1]+ , Xs [1,0,0,0,0,1,0]+ , Xs [1,0,0,0,0,-1]+ , Xs [1,0,0,0,1,0,0]+ , Xs [1,0,0,0,1,1]+ , Xs [1,0,0,0,-1,0]+ , Xs [1,0,0,0,7]+ , Xs [1,0,0,1,0,0,0]+ , Xs [1,0,0,1,0,1]+ , Xs [1,0,0,1,1,0]+ , Xs [1,0,0,1,-1]+ , Xs [1,0,0,-1,0,0]+ , Xs [1,0,0,-1,1]+ , Xs [1,0,0,7,0]+ , Xs [1,0,0,-8]+ , Xs [1,0,1,0,0,0,0]+ , Xs [1,0,1,0,0,1]+ , Xs [1,0,1,0,1,0]+ , Xs [1,0,1,0,-1]+ , Xs [1,0,1,1,0,0]+ , Xs [1,0,1,1,1]+ , Xs [1,0,1,-1,0]+ , Xs [1,0,1,7]+ , Xs [1,0,-1,0,0,0]+ , Xs [1,0,-1,0,1]+ , Xs [1,0,-1,1,0]+ , Xs [1,0,-1,-1]+ , Xs [1,0,7,0,0]+ , Xs [1,0,7,1]+ , Xs [1,0,-8,0]+ , Xs [1,0,2]+ , Xs [1,1,0,0,0,0,0]+ , Xs [1,1,0,0,0,1]+ , Xs [1,1,0,0,1,0]+ , Xs [1,1,0,0,-1]+ , Xs [1,1,0,1,0,0]+ , Xs [1,1,0,1,1]+ , Xs [1,1,0,-1,0]+ , Xs [1,1,0,7]+ , Xs [1,1,1,0,0,0]+ , Xs [1,1,1,0,1]+ , Xs [1,1,1,1,0]+ , Xs [1,1,1,-1]+ , Xs [1,1,-1,0,0]+ , Xs [1,1,-1,1]+ , Xs [1,1,7,0]+ , Xs [1,1,-8]+ , Xs [1,-1,0,0,0,0]+ , Xs [1,-1,0,0,1]+ , Xs [1,-1,0,1,0]+ , Xs [1,-1,0,-1]+ , Xs [1,-1,1,0,0]+ , Xs [1,-1,1,1]+ , Xs [1,-1,-1,0]+ , Xs [1,-1,7]+ , Xs [1,7,0,0,0]+ , Xs [1,7,0,1]+ , Xs [1,7,1,0]+ , Xs [1,7,-1]+ , Xs [1,-8,0,0]+ , Xs [1,-8,1]+ , Xs [1,2,0]+ , Xs [1,-2]+ , Xs [-1,0,0,0,0,0,0]+ , Xs [-1,0,0,0,0,1]+ , Xs [-1,0,0,0,1,0]+ , Xs [-1,0,0,0,-1]+ , Xs [-1,0,0,1,0,0]+ , Xs [-1,0,0,1,1]+ , Xs [-1,0,0,-1,0]+ , Xs [-1,0,0,7]+ , Xs [-1,0,1,0,0,0]+ , Xs [-1,0,1,0,1]+ , Xs [-1,0,1,1,0]+ , Xs [-1,0,1,-1]+ , Xs [-1,0,-1,0,0]+ , Xs [-1,0,-1,1]+ , Xs [-1,0,7,0]+ , Xs [-1,0,-8]+ , Xs [-1,1,0,0,0,0]+ , Xs [-1,1,0,0,1]+ , Xs [-1,1,0,1,0]+ , Xs [-1,1,0,-1]+ , Xs [-1,1,1,0,0]+ , Xs [-1,1,1,1]+ , Xs [-1,1,-1,0]+ , Xs [-1,1,7]+ , Xs [-1,-1,0,0,0]+ , Xs [-1,-1,0,1]+ , Xs [-1,-1,1,0]+ , Xs [-1,-1,-1]+ , Xs [-1,7,0,0]+ , Xs [-1,7,1]+ , Xs [-1,-8,0]+ , Xs [-1,2]+ , Xs [7,0,0,0,0,0]+ , Xs [7,0,0,0,1]+ , Xs [7,0,0,1,0]+ , Xs [7,0,0,-1]+ , Xs [7,0,1,0,0]+ , Xs [7,0,1,1]+ , Xs [7,0,-1,0]+ , Xs [7,0,7]+ , Xs [7,1,0,0,0]+ , Xs [7,1,0,1]+ , Xs [7,1,1,0]+ , Xs [7,1,-1]+ , Xs [7,-1,0,0]+ , Xs [7,-1,1]+ , Xs [7,7,0]+ , Xs [7,-8]+ , Xs [-8,0,0,0,0]+ , Xs [-8,0,0,1]+ , Xs [-8,0,1,0]+ , Xs [-8,0,-1]+ , Xs [-8,1,0,0]+ , Xs [-8,1,1]+ , Xs [-8,-1,0]+ , Xs [-8,7]+ , Xs [2,0,0,0]+ , Xs [2,0,1]+ , Xs [2,1,0]+ , Xs [2,-1]+ , Xs [-2,0,0]+ , Xs [-2,1]+ , Xs [6,0]+ , Xs [-7]+ ]+ , [ Xs [0,0,0,0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,0,0,0,1]+ , Xs [0,0,0,0,0,0,0,1,0]+ , Xs [0,0,0,0,0,0,0,-1]+ , Xs [0,0,0,0,0,0,1,0,0]+ , Xs [0,0,0,0,0,0,1,1]+ , Xs [0,0,0,0,0,0,-1,0]+ , Xs [0,0,0,0,0,0,7]+ , Xs [0,0,0,0,0,1,0,0,0]+ , Xs [0,0,0,0,0,1,0,1]+ , Xs [0,0,0,0,0,1,1,0]+ , Xs [0,0,0,0,0,1,-1]+ , Xs [0,0,0,0,0,-1,0,0]+ , Xs [0,0,0,0,0,-1,1]+ , Xs [0,0,0,0,0,7,0]+ , Xs [0,0,0,0,0,-8]+ , Xs [0,0,0,0,1,0,0,0,0]+ , Xs [0,0,0,0,1,0,0,1]+ , Xs [0,0,0,0,1,0,1,0]+ , Xs [0,0,0,0,1,0,-1]+ , Xs [0,0,0,0,1,1,0,0]+ , Xs [0,0,0,0,1,1,1]+ , Xs [0,0,0,0,1,-1,0]+ , Xs [0,0,0,0,1,7]+ , Xs [0,0,0,0,-1,0,0,0]+ , Xs [0,0,0,0,-1,0,1]+ , Xs [0,0,0,0,-1,1,0]+ , Xs [0,0,0,0,-1,-1]+ , Xs [0,0,0,0,7,0,0]+ , Xs [0,0,0,0,7,1]+ , Xs [0,0,0,0,-8,0]+ , Xs [0,0,0,0,2]+ , Xs [0,0,0,1,0,0,0,0,0]+ , Xs [0,0,0,1,0,0,0,1]+ , Xs [0,0,0,1,0,0,1,0]+ , Xs [0,0,0,1,0,0,-1]+ , Xs [0,0,0,1,0,1,0,0]+ , Xs [0,0,0,1,0,1,1]+ , Xs [0,0,0,1,0,-1,0]+ , Xs [0,0,0,1,0,7]+ , Xs [0,0,0,1,1,0,0,0]+ , Xs [0,0,0,1,1,0,1]+ , Xs [0,0,0,1,1,1,0]+ , Xs [0,0,0,1,1,-1]+ , Xs [0,0,0,1,-1,0,0]+ , Xs [0,0,0,1,-1,1]+ , Xs [0,0,0,1,7,0]+ , Xs [0,0,0,1,-8]+ , Xs [0,0,0,-1,0,0,0,0]+ , Xs [0,0,0,-1,0,0,1]+ , Xs [0,0,0,-1,0,1,0]+ , Xs [0,0,0,-1,0,-1]+ , Xs [0,0,0,-1,1,0,0]+ , Xs [0,0,0,-1,1,1]+ , Xs [0,0,0,-1,-1,0]+ , Xs [0,0,0,-1,7]+ , Xs [0,0,0,7,0,0,0]+ , Xs [0,0,0,7,0,1]+ , Xs [0,0,0,7,1,0]+ , Xs [0,0,0,7,-1]+ , Xs [0,0,0,-8,0,0]+ , Xs [0,0,0,-8,1]+ , Xs [0,0,0,2,0]+ , Xs [0,0,0,-2]+ , Xs [0,0,1,0,0,0,0,0,0]+ , Xs [0,0,1,0,0,0,0,1]+ , Xs [0,0,1,0,0,0,1,0]+ , Xs [0,0,1,0,0,0,-1]+ , Xs [0,0,1,0,0,1,0,0]+ , Xs [0,0,1,0,0,1,1]+ , Xs [0,0,1,0,0,-1,0]+ , Xs [0,0,1,0,0,7]+ , Xs [0,0,1,0,1,0,0,0]+ , Xs [0,0,1,0,1,0,1]+ , Xs [0,0,1,0,1,1,0]+ , Xs [0,0,1,0,1,-1]+ , Xs [0,0,1,0,-1,0,0]+ , Xs [0,0,1,0,-1,1]+ , Xs [0,0,1,0,7,0]+ , Xs [0,0,1,0,-8]+ , Xs [0,0,1,1,0,0,0,0]+ , Xs [0,0,1,1,0,0,1]+ , Xs [0,0,1,1,0,1,0]+ , Xs [0,0,1,1,0,-1]+ , Xs [0,0,1,1,1,0,0]+ , Xs [0,0,1,1,1,1]+ , Xs [0,0,1,1,-1,0]+ , Xs [0,0,1,1,7]+ , Xs [0,0,1,-1,0,0,0]+ , Xs [0,0,1,-1,0,1]+ , Xs [0,0,1,-1,1,0]+ , Xs [0,0,1,-1,-1]+ , Xs [0,0,1,7,0,0]+ , Xs [0,0,1,7,1]+ , Xs [0,0,1,-8,0]+ , Xs [0,0,1,2]+ , Xs [0,0,-1,0,0,0,0,0]+ , Xs [0,0,-1,0,0,0,1]+ , Xs [0,0,-1,0,0,1,0]+ , Xs [0,0,-1,0,0,-1]+ , Xs [0,0,-1,0,1,0,0]+ , Xs [0,0,-1,0,1,1]+ , Xs [0,0,-1,0,-1,0]+ , Xs [0,0,-1,0,7]+ , Xs [0,0,-1,1,0,0,0]+ , Xs [0,0,-1,1,0,1]+ , Xs [0,0,-1,1,1,0]+ , Xs [0,0,-1,1,-1]+ , Xs [0,0,-1,-1,0,0]+ , Xs [0,0,-1,-1,1]+ , Xs [0,0,-1,7,0]+ , Xs [0,0,-1,-8]+ , Xs [0,0,7,0,0,0,0]+ , Xs [0,0,7,0,0,1]+ , Xs [0,0,7,0,1,0]+ , Xs [0,0,7,0,-1]+ , Xs [0,0,7,1,0,0]+ , Xs [0,0,7,1,1]+ , Xs [0,0,7,-1,0]+ , Xs [0,0,7,7]+ , Xs [0,0,-8,0,0,0]+ , Xs [0,0,-8,0,1]+ , Xs [0,0,-8,1,0]+ , Xs [0,0,-8,-1]+ , Xs [0,0,2,0,0]+ , Xs [0,0,2,1]+ , Xs [0,0,-2,0]+ , Xs [0,0,6]+ , Xs [0,1,0,0,0,0,0,0,0]+ , Xs [0,1,0,0,0,0,0,1]+ , Xs [0,1,0,0,0,0,1,0]+ , Xs [0,1,0,0,0,0,-1]+ , Xs [0,1,0,0,0,1,0,0]+ , Xs [0,1,0,0,0,1,1]+ , Xs [0,1,0,0,0,-1,0]+ , Xs [0,1,0,0,0,7]+ , Xs [0,1,0,0,1,0,0,0]+ , Xs [0,1,0,0,1,0,1]+ , Xs [0,1,0,0,1,1,0]+ , Xs [0,1,0,0,1,-1]+ , Xs [0,1,0,0,-1,0,0]+ , Xs [0,1,0,0,-1,1]+ , Xs [0,1,0,0,7,0]+ , Xs [0,1,0,0,-8]+ , Xs [0,1,0,1,0,0,0,0]+ , Xs [0,1,0,1,0,0,1]+ , Xs [0,1,0,1,0,1,0]+ , Xs [0,1,0,1,0,-1]+ , Xs [0,1,0,1,1,0,0]+ , Xs [0,1,0,1,1,1]+ , Xs [0,1,0,1,-1,0]+ , Xs [0,1,0,1,7]+ , Xs [0,1,0,-1,0,0,0]+ , Xs [0,1,0,-1,0,1]+ , Xs [0,1,0,-1,1,0]+ , Xs [0,1,0,-1,-1]+ , Xs [0,1,0,7,0,0]+ , Xs [0,1,0,7,1]+ , Xs [0,1,0,-8,0]+ , Xs [0,1,0,2]+ , Xs [0,1,1,0,0,0,0,0]+ , Xs [0,1,1,0,0,0,1]+ , Xs [0,1,1,0,0,1,0]+ , Xs [0,1,1,0,0,-1]+ , Xs [0,1,1,0,1,0,0]+ , Xs [0,1,1,0,1,1]+ , Xs [0,1,1,0,-1,0]+ , Xs [0,1,1,0,7]+ , Xs [0,1,1,1,0,0,0]+ , Xs [0,1,1,1,0,1]+ , Xs [0,1,1,1,1,0]+ , Xs [0,1,1,1,-1]+ , Xs [0,1,1,-1,0,0]+ , Xs [0,1,1,-1,1]+ , Xs [0,1,1,7,0]+ , Xs [0,1,1,-8]+ , Xs [0,1,-1,0,0,0,0]+ , Xs [0,1,-1,0,0,1]+ , Xs [0,1,-1,0,1,0]+ , Xs [0,1,-1,0,-1]+ , Xs [0,1,-1,1,0,0]+ , Xs [0,1,-1,1,1]+ , Xs [0,1,-1,-1,0]+ , Xs [0,1,-1,7]+ , Xs [0,1,7,0,0,0]+ , Xs [0,1,7,0,1]+ , Xs [0,1,7,1,0]+ , Xs [0,1,7,-1]+ , Xs [0,1,-8,0,0]+ , Xs [0,1,-8,1]+ , Xs [0,1,2,0]+ , Xs [0,1,-2]+ , Xs [0,-1,0,0,0,0,0,0]+ , Xs [0,-1,0,0,0,0,1]+ , Xs [0,-1,0,0,0,1,0]+ , Xs [0,-1,0,0,0,-1]+ , Xs [0,-1,0,0,1,0,0]+ , Xs [0,-1,0,0,1,1]+ , Xs [0,-1,0,0,-1,0]+ , Xs [0,-1,0,0,7]+ , Xs [0,-1,0,1,0,0,0]+ , Xs [0,-1,0,1,0,1]+ , Xs [0,-1,0,1,1,0]+ , Xs [0,-1,0,1,-1]+ , Xs [0,-1,0,-1,0,0]+ , Xs [0,-1,0,-1,1]+ , Xs [0,-1,0,7,0]+ , Xs [0,-1,0,-8]+ , Xs [0,-1,1,0,0,0,0]+ , Xs [0,-1,1,0,0,1]+ , Xs [0,-1,1,0,1,0]+ , Xs [0,-1,1,0,-1]+ , Xs [0,-1,1,1,0,0]+ , Xs [0,-1,1,1,1]+ , Xs [0,-1,1,-1,0]+ , Xs [0,-1,1,7]+ , Xs [0,-1,-1,0,0,0]+ , Xs [0,-1,-1,0,1]+ , Xs [0,-1,-1,1,0]+ , Xs [0,-1,-1,-1]+ , Xs [0,-1,7,0,0]+ , Xs [0,-1,7,1]+ , Xs [0,-1,-8,0]+ , Xs [0,-1,2]+ , Xs [0,7,0,0,0,0,0]+ , Xs [0,7,0,0,0,1]+ , Xs [0,7,0,0,1,0]+ , Xs [0,7,0,0,-1]+ , Xs [0,7,0,1,0,0]+ , Xs [0,7,0,1,1]+ , Xs [0,7,0,-1,0]+ , Xs [0,7,0,7]+ , Xs [0,7,1,0,0,0]+ , Xs [0,7,1,0,1]+ , Xs [0,7,1,1,0]+ , Xs [0,7,1,-1]+ , Xs [0,7,-1,0,0]+ , Xs [0,7,-1,1]+ , Xs [0,7,7,0]+ , Xs [0,7,-8]+ , Xs [0,-8,0,0,0,0]+ , Xs [0,-8,0,0,1]+ , Xs [0,-8,0,1,0]+ , Xs [0,-8,0,-1]+ , Xs [0,-8,1,0,0]+ , Xs [0,-8,1,1]+ , Xs [0,-8,-1,0]+ , Xs [0,-8,7]+ , Xs [0,2,0,0,0]+ , Xs [0,2,0,1]+ , Xs [0,2,1,0]+ , Xs [0,2,-1]+ , Xs [0,-2,0,0]+ , Xs [0,-2,1]+ , Xs [0,6,0]+ , Xs [0,-7]+ , Xs [1,0,0,0,0,0,0,0,0]+ , Xs [1,0,0,0,0,0,0,1]+ , Xs [1,0,0,0,0,0,1,0]+ , Xs [1,0,0,0,0,0,-1]+ , Xs [1,0,0,0,0,1,0,0]+ , Xs [1,0,0,0,0,1,1]+ , Xs [1,0,0,0,0,-1,0]+ , Xs [1,0,0,0,0,7]+ , Xs [1,0,0,0,1,0,0,0]+ , Xs [1,0,0,0,1,0,1]+ , Xs [1,0,0,0,1,1,0]+ , Xs [1,0,0,0,1,-1]+ , Xs [1,0,0,0,-1,0,0]+ , Xs [1,0,0,0,-1,1]+ , Xs [1,0,0,0,7,0]+ , Xs [1,0,0,0,-8]+ , Xs [1,0,0,1,0,0,0,0]+ , Xs [1,0,0,1,0,0,1]+ , Xs [1,0,0,1,0,1,0]+ , Xs [1,0,0,1,0,-1]+ , Xs [1,0,0,1,1,0,0]+ , Xs [1,0,0,1,1,1]+ , Xs [1,0,0,1,-1,0]+ , Xs [1,0,0,1,7]+ , Xs [1,0,0,-1,0,0,0]+ , Xs [1,0,0,-1,0,1]+ , Xs [1,0,0,-1,1,0]+ , Xs [1,0,0,-1,-1]+ , Xs [1,0,0,7,0,0]+ , Xs [1,0,0,7,1]+ , Xs [1,0,0,-8,0]+ , Xs [1,0,0,2]+ , Xs [1,0,1,0,0,0,0,0]+ , Xs [1,0,1,0,0,0,1]+ , Xs [1,0,1,0,0,1,0]+ , Xs [1,0,1,0,0,-1]+ , Xs [1,0,1,0,1,0,0]+ , Xs [1,0,1,0,1,1]+ , Xs [1,0,1,0,-1,0]+ , Xs [1,0,1,0,7]+ , Xs [1,0,1,1,0,0,0]+ , Xs [1,0,1,1,0,1]+ , Xs [1,0,1,1,1,0]+ , Xs [1,0,1,1,-1]+ , Xs [1,0,1,-1,0,0]+ , Xs [1,0,1,-1,1]+ , Xs [1,0,1,7,0]+ , Xs [1,0,1,-8]+ , Xs [1,0,-1,0,0,0,0]+ , Xs [1,0,-1,0,0,1]+ , Xs [1,0,-1,0,1,0]+ , Xs [1,0,-1,0,-1]+ , Xs [1,0,-1,1,0,0]+ , Xs [1,0,-1,1,1]+ , Xs [1,0,-1,-1,0]+ , Xs [1,0,-1,7]+ , Xs [1,0,7,0,0,0]+ , Xs [1,0,7,0,1]+ , Xs [1,0,7,1,0]+ , Xs [1,0,7,-1]+ , Xs [1,0,-8,0,0]+ , Xs [1,0,-8,1]+ , Xs [1,0,2,0]+ , Xs [1,0,-2]+ , Xs [1,1,0,0,0,0,0,0]+ , Xs [1,1,0,0,0,0,1]+ , Xs [1,1,0,0,0,1,0]+ , Xs [1,1,0,0,0,-1]+ , Xs [1,1,0,0,1,0,0]+ , Xs [1,1,0,0,1,1]+ , Xs [1,1,0,0,-1,0]+ , Xs [1,1,0,0,7]+ , Xs [1,1,0,1,0,0,0]+ , Xs [1,1,0,1,0,1]+ , Xs [1,1,0,1,1,0]+ , Xs [1,1,0,1,-1]+ , Xs [1,1,0,-1,0,0]+ , Xs [1,1,0,-1,1]+ , Xs [1,1,0,7,0]+ , Xs [1,1,0,-8]+ , Xs [1,1,1,0,0,0,0]+ , Xs [1,1,1,0,0,1]+ , Xs [1,1,1,0,1,0]+ , Xs [1,1,1,0,-1]+ , Xs [1,1,1,1,0,0]+ , Xs [1,1,1,1,1]+ , Xs [1,1,1,-1,0]+ , Xs [1,1,1,7]+ , Xs [1,1,-1,0,0,0]+ , Xs [1,1,-1,0,1]+ , Xs [1,1,-1,1,0]+ , Xs [1,1,-1,-1]+ , Xs [1,1,7,0,0]+ , Xs [1,1,7,1]+ , Xs [1,1,-8,0]+ , Xs [1,1,2]+ , Xs [1,-1,0,0,0,0,0]+ , Xs [1,-1,0,0,0,1]+ , Xs [1,-1,0,0,1,0]+ , Xs [1,-1,0,0,-1]+ , Xs [1,-1,0,1,0,0]+ , Xs [1,-1,0,1,1]+ , Xs [1,-1,0,-1,0]+ , Xs [1,-1,0,7]+ , Xs [1,-1,1,0,0,0]+ , Xs [1,-1,1,0,1]+ , Xs [1,-1,1,1,0]+ , Xs [1,-1,1,-1]+ , Xs [1,-1,-1,0,0]+ , Xs [1,-1,-1,1]+ , Xs [1,-1,7,0]+ , Xs [1,-1,-8]+ , Xs [1,7,0,0,0,0]+ , Xs [1,7,0,0,1]+ , Xs [1,7,0,1,0]+ , Xs [1,7,0,-1]+ , Xs [1,7,1,0,0]+ , Xs [1,7,1,1]+ , Xs [1,7,-1,0]+ , Xs [1,7,7]+ , Xs [1,-8,0,0,0]+ , Xs [1,-8,0,1]+ , Xs [1,-8,1,0]+ , Xs [1,-8,-1]+ , Xs [1,2,0,0]+ , Xs [1,2,1]+ , Xs [1,-2,0]+ , Xs [1,6]+ , Xs [-1,0,0,0,0,0,0,0]+ , Xs [-1,0,0,0,0,0,1]+ , Xs [-1,0,0,0,0,1,0]+ , Xs [-1,0,0,0,0,-1]+ , Xs [-1,0,0,0,1,0,0]+ , Xs [-1,0,0,0,1,1]+ , Xs [-1,0,0,0,-1,0]+ , Xs [-1,0,0,0,7]+ , Xs [-1,0,0,1,0,0,0]+ , Xs [-1,0,0,1,0,1]+ , Xs [-1,0,0,1,1,0]+ , Xs [-1,0,0,1,-1]+ , Xs [-1,0,0,-1,0,0]+ , Xs [-1,0,0,-1,1]+ , Xs [-1,0,0,7,0]+ , Xs [-1,0,0,-8]+ , Xs [-1,0,1,0,0,0,0]+ , Xs [-1,0,1,0,0,1]+ , Xs [-1,0,1,0,1,0]+ , Xs [-1,0,1,0,-1]+ , Xs [-1,0,1,1,0,0]+ , Xs [-1,0,1,1,1]+ , Xs [-1,0,1,-1,0]+ , Xs [-1,0,1,7]+ , Xs [-1,0,-1,0,0,0]+ , Xs [-1,0,-1,0,1]+ , Xs [-1,0,-1,1,0]+ , Xs [-1,0,-1,-1]+ , Xs [-1,0,7,0,0]+ , Xs [-1,0,7,1]+ , Xs [-1,0,-8,0]+ , Xs [-1,0,2]+ , Xs [-1,1,0,0,0,0,0]+ , Xs [-1,1,0,0,0,1]+ , Xs [-1,1,0,0,1,0]+ , Xs [-1,1,0,0,-1]+ , Xs [-1,1,0,1,0,0]+ , Xs [-1,1,0,1,1]+ , Xs [-1,1,0,-1,0]+ , Xs [-1,1,0,7]+ , Xs [-1,1,1,0,0,0]+ , Xs [-1,1,1,0,1]+ , Xs [-1,1,1,1,0]+ , Xs [-1,1,1,-1]+ , Xs [-1,1,-1,0,0]+ , Xs [-1,1,-1,1]+ , Xs [-1,1,7,0]+ , Xs [-1,1,-8]+ , Xs [-1,-1,0,0,0,0]+ , Xs [-1,-1,0,0,1]+ , Xs [-1,-1,0,1,0]+ , Xs [-1,-1,0,-1]+ , Xs [-1,-1,1,0,0]+ , Xs [-1,-1,1,1]+ , Xs [-1,-1,-1,0]+ , Xs [-1,-1,7]+ , Xs [-1,7,0,0,0]+ , Xs [-1,7,0,1]+ , Xs [-1,7,1,0]+ , Xs [-1,7,-1]+ , Xs [-1,-8,0,0]+ , Xs [-1,-8,1]+ , Xs [-1,2,0]+ , Xs [-1,-2]+ , Xs [7,0,0,0,0,0,0]+ , Xs [7,0,0,0,0,1]+ , Xs [7,0,0,0,1,0]+ , Xs [7,0,0,0,-1]+ , Xs [7,0,0,1,0,0]+ , Xs [7,0,0,1,1]+ , Xs [7,0,0,-1,0]+ , Xs [7,0,0,7]+ , Xs [7,0,1,0,0,0]+ , Xs [7,0,1,0,1]+ , Xs [7,0,1,1,0]+ , Xs [7,0,1,-1]+ , Xs [7,0,-1,0,0]+ , Xs [7,0,-1,1]+ , Xs [7,0,7,0]+ , Xs [7,0,-8]+ , Xs [7,1,0,0,0,0]+ , Xs [7,1,0,0,1]+ , Xs [7,1,0,1,0]+ , Xs [7,1,0,-1]+ , Xs [7,1,1,0,0]+ , Xs [7,1,1,1]+ , Xs [7,1,-1,0]+ , Xs [7,1,7]+ , Xs [7,-1,0,0,0]+ , Xs [7,-1,0,1]+ , Xs [7,-1,1,0]+ , Xs [7,-1,-1]+ , Xs [7,7,0,0]+ , Xs [7,7,1]+ , Xs [7,-8,0]+ , Xs [7,2]+ , Xs [-8,0,0,0,0,0]+ , Xs [-8,0,0,0,1]+ , Xs [-8,0,0,1,0]+ , Xs [-8,0,0,-1]+ , Xs [-8,0,1,0,0]+ , Xs [-8,0,1,1]+ , Xs [-8,0,-1,0]+ , Xs [-8,0,7]+ , Xs [-8,1,0,0,0]+ , Xs [-8,1,0,1]+ , Xs [-8,1,1,0]+ , Xs [-8,1,-1]+ , Xs [-8,-1,0,0]+ , Xs [-8,-1,1]+ , Xs [-8,7,0]+ , Xs [-8,-8]+ , Xs [2,0,0,0,0]+ , Xs [2,0,0,1]+ , Xs [2,0,1,0]+ , Xs [2,0,-1]+ , Xs [2,1,0,0]+ , Xs [2,1,1]+ , Xs [2,-1,0]+ , Xs [2,7]+ , Xs [-2,0,0,0]+ , Xs [-2,0,1]+ , Xs [-2,1,0]+ , Xs [-2,-1]+ , Xs [6,0,0]+ , Xs [6,1]+ , Xs [-7,0]+ , Xs [3]+ ]+ , ...+ ]
+ tests/diff/tiers-XsNat7.out view
@@ -0,0 +1,1033 @@+map length (tiers :: [[ Xs Nat7 ]]) = [0,1,1,2,4,8,16,32,64,127,253,504,...]++length (list :: [ Xs Nat7 ]) = Infinity++allUnique (list :: [ Xs Nat7 ]) = True++ratioRepetitions (list :: [ Xs Nat7 ]) = 0 % 1++tiers :: [Xs Nat7] =+ [ []+ , [Xs []]+ , [Xs [0]]+ , [ Xs [0,0]+ , Xs [1]+ ]+ , [ Xs [0,0,0]+ , Xs [0,1]+ , Xs [1,0]+ , Xs [2]+ ]+ , [ Xs [0,0,0,0]+ , Xs [0,0,1]+ , Xs [0,1,0]+ , Xs [0,2]+ , Xs [1,0,0]+ , Xs [1,1]+ , Xs [2,0]+ , Xs [6]+ ]+ , [ Xs [0,0,0,0,0]+ , Xs [0,0,0,1]+ , Xs [0,0,1,0]+ , Xs [0,0,2]+ , Xs [0,1,0,0]+ , Xs [0,1,1]+ , Xs [0,2,0]+ , Xs [0,6]+ , Xs [1,0,0,0]+ , Xs [1,0,1]+ , Xs [1,1,0]+ , Xs [1,2]+ , Xs [2,0,0]+ , Xs [2,1]+ , Xs [6,0]+ , Xs [3]+ ]+ , [ Xs [0,0,0,0,0,0]+ , Xs [0,0,0,0,1]+ , Xs [0,0,0,1,0]+ , Xs [0,0,0,2]+ , Xs [0,0,1,0,0]+ , Xs [0,0,1,1]+ , Xs [0,0,2,0]+ , Xs [0,0,6]+ , Xs [0,1,0,0,0]+ , Xs [0,1,0,1]+ , Xs [0,1,1,0]+ , Xs [0,1,2]+ , Xs [0,2,0,0]+ , Xs [0,2,1]+ , Xs [0,6,0]+ , Xs [0,3]+ , Xs [1,0,0,0,0]+ , Xs [1,0,0,1]+ , Xs [1,0,1,0]+ , Xs [1,0,2]+ , Xs [1,1,0,0]+ , Xs [1,1,1]+ , Xs [1,2,0]+ , Xs [1,6]+ , Xs [2,0,0,0]+ , Xs [2,0,1]+ , Xs [2,1,0]+ , Xs [2,2]+ , Xs [6,0,0]+ , Xs [6,1]+ , Xs [3,0]+ , Xs [4]+ ]+ , [ Xs [0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,1]+ , Xs [0,0,0,0,1,0]+ , Xs [0,0,0,0,2]+ , Xs [0,0,0,1,0,0]+ , Xs [0,0,0,1,1]+ , Xs [0,0,0,2,0]+ , Xs [0,0,0,6]+ , Xs [0,0,1,0,0,0]+ , Xs [0,0,1,0,1]+ , Xs [0,0,1,1,0]+ , Xs [0,0,1,2]+ , Xs [0,0,2,0,0]+ , Xs [0,0,2,1]+ , Xs [0,0,6,0]+ , Xs [0,0,3]+ , Xs [0,1,0,0,0,0]+ , Xs [0,1,0,0,1]+ , Xs [0,1,0,1,0]+ , Xs [0,1,0,2]+ , Xs [0,1,1,0,0]+ , Xs [0,1,1,1]+ , Xs [0,1,2,0]+ , Xs [0,1,6]+ , Xs [0,2,0,0,0]+ , Xs [0,2,0,1]+ , Xs [0,2,1,0]+ , Xs [0,2,2]+ , Xs [0,6,0,0]+ , Xs [0,6,1]+ , Xs [0,3,0]+ , Xs [0,4]+ , Xs [1,0,0,0,0,0]+ , Xs [1,0,0,0,1]+ , Xs [1,0,0,1,0]+ , Xs [1,0,0,2]+ , Xs [1,0,1,0,0]+ , Xs [1,0,1,1]+ , Xs [1,0,2,0]+ , Xs [1,0,6]+ , Xs [1,1,0,0,0]+ , Xs [1,1,0,1]+ , Xs [1,1,1,0]+ , Xs [1,1,2]+ , Xs [1,2,0,0]+ , Xs [1,2,1]+ , Xs [1,6,0]+ , Xs [1,3]+ , Xs [2,0,0,0,0]+ , Xs [2,0,0,1]+ , Xs [2,0,1,0]+ , Xs [2,0,2]+ , Xs [2,1,0,0]+ , Xs [2,1,1]+ , Xs [2,2,0]+ , Xs [2,6]+ , Xs [6,0,0,0]+ , Xs [6,0,1]+ , Xs [6,1,0]+ , Xs [6,2]+ , Xs [3,0,0]+ , Xs [3,1]+ , Xs [4,0]+ , Xs [5]+ ]+ , [ Xs [0,0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,0,1]+ , Xs [0,0,0,0,0,1,0]+ , Xs [0,0,0,0,0,2]+ , Xs [0,0,0,0,1,0,0]+ , Xs [0,0,0,0,1,1]+ , Xs [0,0,0,0,2,0]+ , Xs [0,0,0,0,6]+ , Xs [0,0,0,1,0,0,0]+ , Xs [0,0,0,1,0,1]+ , Xs [0,0,0,1,1,0]+ , Xs [0,0,0,1,2]+ , Xs [0,0,0,2,0,0]+ , Xs [0,0,0,2,1]+ , Xs [0,0,0,6,0]+ , Xs [0,0,0,3]+ , Xs [0,0,1,0,0,0,0]+ , Xs [0,0,1,0,0,1]+ , Xs [0,0,1,0,1,0]+ , Xs [0,0,1,0,2]+ , Xs [0,0,1,1,0,0]+ , Xs [0,0,1,1,1]+ , Xs [0,0,1,2,0]+ , Xs [0,0,1,6]+ , Xs [0,0,2,0,0,0]+ , Xs [0,0,2,0,1]+ , Xs [0,0,2,1,0]+ , Xs [0,0,2,2]+ , Xs [0,0,6,0,0]+ , Xs [0,0,6,1]+ , Xs [0,0,3,0]+ , Xs [0,0,4]+ , Xs [0,1,0,0,0,0,0]+ , Xs [0,1,0,0,0,1]+ , Xs [0,1,0,0,1,0]+ , Xs [0,1,0,0,2]+ , Xs [0,1,0,1,0,0]+ , Xs [0,1,0,1,1]+ , Xs [0,1,0,2,0]+ , Xs [0,1,0,6]+ , Xs [0,1,1,0,0,0]+ , Xs [0,1,1,0,1]+ , Xs [0,1,1,1,0]+ , Xs [0,1,1,2]+ , Xs [0,1,2,0,0]+ , Xs [0,1,2,1]+ , Xs [0,1,6,0]+ , Xs [0,1,3]+ , Xs [0,2,0,0,0,0]+ , Xs [0,2,0,0,1]+ , Xs [0,2,0,1,0]+ , Xs [0,2,0,2]+ , Xs [0,2,1,0,0]+ , Xs [0,2,1,1]+ , Xs [0,2,2,0]+ , Xs [0,2,6]+ , Xs [0,6,0,0,0]+ , Xs [0,6,0,1]+ , Xs [0,6,1,0]+ , Xs [0,6,2]+ , Xs [0,3,0,0]+ , Xs [0,3,1]+ , Xs [0,4,0]+ , Xs [0,5]+ , Xs [1,0,0,0,0,0,0]+ , Xs [1,0,0,0,0,1]+ , Xs [1,0,0,0,1,0]+ , Xs [1,0,0,0,2]+ , Xs [1,0,0,1,0,0]+ , Xs [1,0,0,1,1]+ , Xs [1,0,0,2,0]+ , Xs [1,0,0,6]+ , Xs [1,0,1,0,0,0]+ , Xs [1,0,1,0,1]+ , Xs [1,0,1,1,0]+ , Xs [1,0,1,2]+ , Xs [1,0,2,0,0]+ , Xs [1,0,2,1]+ , Xs [1,0,6,0]+ , Xs [1,0,3]+ , Xs [1,1,0,0,0,0]+ , Xs [1,1,0,0,1]+ , Xs [1,1,0,1,0]+ , Xs [1,1,0,2]+ , Xs [1,1,1,0,0]+ , Xs [1,1,1,1]+ , Xs [1,1,2,0]+ , Xs [1,1,6]+ , Xs [1,2,0,0,0]+ , Xs [1,2,0,1]+ , Xs [1,2,1,0]+ , Xs [1,2,2]+ , Xs [1,6,0,0]+ , Xs [1,6,1]+ , Xs [1,3,0]+ , Xs [1,4]+ , Xs [2,0,0,0,0,0]+ , Xs [2,0,0,0,1]+ , Xs [2,0,0,1,0]+ , Xs [2,0,0,2]+ , Xs [2,0,1,0,0]+ , Xs [2,0,1,1]+ , Xs [2,0,2,0]+ , Xs [2,0,6]+ , Xs [2,1,0,0,0]+ , Xs [2,1,0,1]+ , Xs [2,1,1,0]+ , Xs [2,1,2]+ , Xs [2,2,0,0]+ , Xs [2,2,1]+ , Xs [2,6,0]+ , Xs [2,3]+ , Xs [6,0,0,0,0]+ , Xs [6,0,0,1]+ , Xs [6,0,1,0]+ , Xs [6,0,2]+ , Xs [6,1,0,0]+ , Xs [6,1,1]+ , Xs [6,2,0]+ , Xs [6,6]+ , Xs [3,0,0,0]+ , Xs [3,0,1]+ , Xs [3,1,0]+ , Xs [3,2]+ , Xs [4,0,0]+ , Xs [4,1]+ , Xs [5,0]+ ]+ , [ Xs [0,0,0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,0,0,1]+ , Xs [0,0,0,0,0,0,1,0]+ , Xs [0,0,0,0,0,0,2]+ , Xs [0,0,0,0,0,1,0,0]+ , Xs [0,0,0,0,0,1,1]+ , Xs [0,0,0,0,0,2,0]+ , Xs [0,0,0,0,0,6]+ , Xs [0,0,0,0,1,0,0,0]+ , Xs [0,0,0,0,1,0,1]+ , Xs [0,0,0,0,1,1,0]+ , Xs [0,0,0,0,1,2]+ , Xs [0,0,0,0,2,0,0]+ , Xs [0,0,0,0,2,1]+ , Xs [0,0,0,0,6,0]+ , Xs [0,0,0,0,3]+ , Xs [0,0,0,1,0,0,0,0]+ , Xs [0,0,0,1,0,0,1]+ , Xs [0,0,0,1,0,1,0]+ , Xs [0,0,0,1,0,2]+ , Xs [0,0,0,1,1,0,0]+ , Xs [0,0,0,1,1,1]+ , Xs [0,0,0,1,2,0]+ , Xs [0,0,0,1,6]+ , Xs [0,0,0,2,0,0,0]+ , Xs [0,0,0,2,0,1]+ , Xs [0,0,0,2,1,0]+ , Xs [0,0,0,2,2]+ , Xs [0,0,0,6,0,0]+ , Xs [0,0,0,6,1]+ , Xs [0,0,0,3,0]+ , Xs [0,0,0,4]+ , Xs [0,0,1,0,0,0,0,0]+ , Xs [0,0,1,0,0,0,1]+ , Xs [0,0,1,0,0,1,0]+ , Xs [0,0,1,0,0,2]+ , Xs [0,0,1,0,1,0,0]+ , Xs [0,0,1,0,1,1]+ , Xs [0,0,1,0,2,0]+ , Xs [0,0,1,0,6]+ , Xs [0,0,1,1,0,0,0]+ , Xs [0,0,1,1,0,1]+ , Xs [0,0,1,1,1,0]+ , Xs [0,0,1,1,2]+ , Xs [0,0,1,2,0,0]+ , Xs [0,0,1,2,1]+ , Xs [0,0,1,6,0]+ , Xs [0,0,1,3]+ , Xs [0,0,2,0,0,0,0]+ , Xs [0,0,2,0,0,1]+ , Xs [0,0,2,0,1,0]+ , Xs [0,0,2,0,2]+ , Xs [0,0,2,1,0,0]+ , Xs [0,0,2,1,1]+ , Xs [0,0,2,2,0]+ , Xs [0,0,2,6]+ , Xs [0,0,6,0,0,0]+ , Xs [0,0,6,0,1]+ , Xs [0,0,6,1,0]+ , Xs [0,0,6,2]+ , Xs [0,0,3,0,0]+ , Xs [0,0,3,1]+ , Xs [0,0,4,0]+ , Xs [0,0,5]+ , Xs [0,1,0,0,0,0,0,0]+ , Xs [0,1,0,0,0,0,1]+ , Xs [0,1,0,0,0,1,0]+ , Xs [0,1,0,0,0,2]+ , Xs [0,1,0,0,1,0,0]+ , Xs [0,1,0,0,1,1]+ , Xs [0,1,0,0,2,0]+ , Xs [0,1,0,0,6]+ , Xs [0,1,0,1,0,0,0]+ , Xs [0,1,0,1,0,1]+ , Xs [0,1,0,1,1,0]+ , Xs [0,1,0,1,2]+ , Xs [0,1,0,2,0,0]+ , Xs [0,1,0,2,1]+ , Xs [0,1,0,6,0]+ , Xs [0,1,0,3]+ , Xs [0,1,1,0,0,0,0]+ , Xs [0,1,1,0,0,1]+ , Xs [0,1,1,0,1,0]+ , Xs [0,1,1,0,2]+ , Xs [0,1,1,1,0,0]+ , Xs [0,1,1,1,1]+ , Xs [0,1,1,2,0]+ , Xs [0,1,1,6]+ , Xs [0,1,2,0,0,0]+ , Xs [0,1,2,0,1]+ , Xs [0,1,2,1,0]+ , Xs [0,1,2,2]+ , Xs [0,1,6,0,0]+ , Xs [0,1,6,1]+ , Xs [0,1,3,0]+ , Xs [0,1,4]+ , Xs [0,2,0,0,0,0,0]+ , Xs [0,2,0,0,0,1]+ , Xs [0,2,0,0,1,0]+ , Xs [0,2,0,0,2]+ , Xs [0,2,0,1,0,0]+ , Xs [0,2,0,1,1]+ , Xs [0,2,0,2,0]+ , Xs [0,2,0,6]+ , Xs [0,2,1,0,0,0]+ , Xs [0,2,1,0,1]+ , Xs [0,2,1,1,0]+ , Xs [0,2,1,2]+ , Xs [0,2,2,0,0]+ , Xs [0,2,2,1]+ , Xs [0,2,6,0]+ , Xs [0,2,3]+ , Xs [0,6,0,0,0,0]+ , Xs [0,6,0,0,1]+ , Xs [0,6,0,1,0]+ , Xs [0,6,0,2]+ , Xs [0,6,1,0,0]+ , Xs [0,6,1,1]+ , Xs [0,6,2,0]+ , Xs [0,6,6]+ , Xs [0,3,0,0,0]+ , Xs [0,3,0,1]+ , Xs [0,3,1,0]+ , Xs [0,3,2]+ , Xs [0,4,0,0]+ , Xs [0,4,1]+ , Xs [0,5,0]+ , Xs [1,0,0,0,0,0,0,0]+ , Xs [1,0,0,0,0,0,1]+ , Xs [1,0,0,0,0,1,0]+ , Xs [1,0,0,0,0,2]+ , Xs [1,0,0,0,1,0,0]+ , Xs [1,0,0,0,1,1]+ , Xs [1,0,0,0,2,0]+ , Xs [1,0,0,0,6]+ , Xs [1,0,0,1,0,0,0]+ , Xs [1,0,0,1,0,1]+ , Xs [1,0,0,1,1,0]+ , Xs [1,0,0,1,2]+ , Xs [1,0,0,2,0,0]+ , Xs [1,0,0,2,1]+ , Xs [1,0,0,6,0]+ , Xs [1,0,0,3]+ , Xs [1,0,1,0,0,0,0]+ , Xs [1,0,1,0,0,1]+ , Xs [1,0,1,0,1,0]+ , Xs [1,0,1,0,2]+ , Xs [1,0,1,1,0,0]+ , Xs [1,0,1,1,1]+ , Xs [1,0,1,2,0]+ , Xs [1,0,1,6]+ , Xs [1,0,2,0,0,0]+ , Xs [1,0,2,0,1]+ , Xs [1,0,2,1,0]+ , Xs [1,0,2,2]+ , Xs [1,0,6,0,0]+ , Xs [1,0,6,1]+ , Xs [1,0,3,0]+ , Xs [1,0,4]+ , Xs [1,1,0,0,0,0,0]+ , Xs [1,1,0,0,0,1]+ , Xs [1,1,0,0,1,0]+ , Xs [1,1,0,0,2]+ , Xs [1,1,0,1,0,0]+ , Xs [1,1,0,1,1]+ , Xs [1,1,0,2,0]+ , Xs [1,1,0,6]+ , Xs [1,1,1,0,0,0]+ , Xs [1,1,1,0,1]+ , Xs [1,1,1,1,0]+ , Xs [1,1,1,2]+ , Xs [1,1,2,0,0]+ , Xs [1,1,2,1]+ , Xs [1,1,6,0]+ , Xs [1,1,3]+ , Xs [1,2,0,0,0,0]+ , Xs [1,2,0,0,1]+ , Xs [1,2,0,1,0]+ , Xs [1,2,0,2]+ , Xs [1,2,1,0,0]+ , Xs [1,2,1,1]+ , Xs [1,2,2,0]+ , Xs [1,2,6]+ , Xs [1,6,0,0,0]+ , Xs [1,6,0,1]+ , Xs [1,6,1,0]+ , Xs [1,6,2]+ , Xs [1,3,0,0]+ , Xs [1,3,1]+ , Xs [1,4,0]+ , Xs [1,5]+ , Xs [2,0,0,0,0,0,0]+ , Xs [2,0,0,0,0,1]+ , Xs [2,0,0,0,1,0]+ , Xs [2,0,0,0,2]+ , Xs [2,0,0,1,0,0]+ , Xs [2,0,0,1,1]+ , Xs [2,0,0,2,0]+ , Xs [2,0,0,6]+ , Xs [2,0,1,0,0,0]+ , Xs [2,0,1,0,1]+ , Xs [2,0,1,1,0]+ , Xs [2,0,1,2]+ , Xs [2,0,2,0,0]+ , Xs [2,0,2,1]+ , Xs [2,0,6,0]+ , Xs [2,0,3]+ , Xs [2,1,0,0,0,0]+ , Xs [2,1,0,0,1]+ , Xs [2,1,0,1,0]+ , Xs [2,1,0,2]+ , Xs [2,1,1,0,0]+ , Xs [2,1,1,1]+ , Xs [2,1,2,0]+ , Xs [2,1,6]+ , Xs [2,2,0,0,0]+ , Xs [2,2,0,1]+ , Xs [2,2,1,0]+ , Xs [2,2,2]+ , Xs [2,6,0,0]+ , Xs [2,6,1]+ , Xs [2,3,0]+ , Xs [2,4]+ , Xs [6,0,0,0,0,0]+ , Xs [6,0,0,0,1]+ , Xs [6,0,0,1,0]+ , Xs [6,0,0,2]+ , Xs [6,0,1,0,0]+ , Xs [6,0,1,1]+ , Xs [6,0,2,0]+ , Xs [6,0,6]+ , Xs [6,1,0,0,0]+ , Xs [6,1,0,1]+ , Xs [6,1,1,0]+ , Xs [6,1,2]+ , Xs [6,2,0,0]+ , Xs [6,2,1]+ , Xs [6,6,0]+ , Xs [6,3]+ , Xs [3,0,0,0,0]+ , Xs [3,0,0,1]+ , Xs [3,0,1,0]+ , Xs [3,0,2]+ , Xs [3,1,0,0]+ , Xs [3,1,1]+ , Xs [3,2,0]+ , Xs [3,6]+ , Xs [4,0,0,0]+ , Xs [4,0,1]+ , Xs [4,1,0]+ , Xs [4,2]+ , Xs [5,0,0]+ , Xs [5,1]+ ]+ , [ Xs [0,0,0,0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,0,0,0,1]+ , Xs [0,0,0,0,0,0,0,1,0]+ , Xs [0,0,0,0,0,0,0,2]+ , Xs [0,0,0,0,0,0,1,0,0]+ , Xs [0,0,0,0,0,0,1,1]+ , Xs [0,0,0,0,0,0,2,0]+ , Xs [0,0,0,0,0,0,6]+ , Xs [0,0,0,0,0,1,0,0,0]+ , Xs [0,0,0,0,0,1,0,1]+ , Xs [0,0,0,0,0,1,1,0]+ , Xs [0,0,0,0,0,1,2]+ , Xs [0,0,0,0,0,2,0,0]+ , Xs [0,0,0,0,0,2,1]+ , Xs [0,0,0,0,0,6,0]+ , Xs [0,0,0,0,0,3]+ , Xs [0,0,0,0,1,0,0,0,0]+ , Xs [0,0,0,0,1,0,0,1]+ , Xs [0,0,0,0,1,0,1,0]+ , Xs [0,0,0,0,1,0,2]+ , Xs [0,0,0,0,1,1,0,0]+ , Xs [0,0,0,0,1,1,1]+ , Xs [0,0,0,0,1,2,0]+ , Xs [0,0,0,0,1,6]+ , Xs [0,0,0,0,2,0,0,0]+ , Xs [0,0,0,0,2,0,1]+ , Xs [0,0,0,0,2,1,0]+ , Xs [0,0,0,0,2,2]+ , Xs [0,0,0,0,6,0,0]+ , Xs [0,0,0,0,6,1]+ , Xs [0,0,0,0,3,0]+ , Xs [0,0,0,0,4]+ , Xs [0,0,0,1,0,0,0,0,0]+ , Xs [0,0,0,1,0,0,0,1]+ , Xs [0,0,0,1,0,0,1,0]+ , Xs [0,0,0,1,0,0,2]+ , Xs [0,0,0,1,0,1,0,0]+ , Xs [0,0,0,1,0,1,1]+ , Xs [0,0,0,1,0,2,0]+ , Xs [0,0,0,1,0,6]+ , Xs [0,0,0,1,1,0,0,0]+ , Xs [0,0,0,1,1,0,1]+ , Xs [0,0,0,1,1,1,0]+ , Xs [0,0,0,1,1,2]+ , Xs [0,0,0,1,2,0,0]+ , Xs [0,0,0,1,2,1]+ , Xs [0,0,0,1,6,0]+ , Xs [0,0,0,1,3]+ , Xs [0,0,0,2,0,0,0,0]+ , Xs [0,0,0,2,0,0,1]+ , Xs [0,0,0,2,0,1,0]+ , Xs [0,0,0,2,0,2]+ , Xs [0,0,0,2,1,0,0]+ , Xs [0,0,0,2,1,1]+ , Xs [0,0,0,2,2,0]+ , Xs [0,0,0,2,6]+ , Xs [0,0,0,6,0,0,0]+ , Xs [0,0,0,6,0,1]+ , Xs [0,0,0,6,1,0]+ , Xs [0,0,0,6,2]+ , Xs [0,0,0,3,0,0]+ , Xs [0,0,0,3,1]+ , Xs [0,0,0,4,0]+ , Xs [0,0,0,5]+ , Xs [0,0,1,0,0,0,0,0,0]+ , Xs [0,0,1,0,0,0,0,1]+ , Xs [0,0,1,0,0,0,1,0]+ , Xs [0,0,1,0,0,0,2]+ , Xs [0,0,1,0,0,1,0,0]+ , Xs [0,0,1,0,0,1,1]+ , Xs [0,0,1,0,0,2,0]+ , Xs [0,0,1,0,0,6]+ , Xs [0,0,1,0,1,0,0,0]+ , Xs [0,0,1,0,1,0,1]+ , Xs [0,0,1,0,1,1,0]+ , Xs [0,0,1,0,1,2]+ , Xs [0,0,1,0,2,0,0]+ , Xs [0,0,1,0,2,1]+ , Xs [0,0,1,0,6,0]+ , Xs [0,0,1,0,3]+ , Xs [0,0,1,1,0,0,0,0]+ , Xs [0,0,1,1,0,0,1]+ , Xs [0,0,1,1,0,1,0]+ , Xs [0,0,1,1,0,2]+ , Xs [0,0,1,1,1,0,0]+ , Xs [0,0,1,1,1,1]+ , Xs [0,0,1,1,2,0]+ , Xs [0,0,1,1,6]+ , Xs [0,0,1,2,0,0,0]+ , Xs [0,0,1,2,0,1]+ , Xs [0,0,1,2,1,0]+ , Xs [0,0,1,2,2]+ , Xs [0,0,1,6,0,0]+ , Xs [0,0,1,6,1]+ , Xs [0,0,1,3,0]+ , Xs [0,0,1,4]+ , Xs [0,0,2,0,0,0,0,0]+ , Xs [0,0,2,0,0,0,1]+ , Xs [0,0,2,0,0,1,0]+ , Xs [0,0,2,0,0,2]+ , Xs [0,0,2,0,1,0,0]+ , Xs [0,0,2,0,1,1]+ , Xs [0,0,2,0,2,0]+ , Xs [0,0,2,0,6]+ , Xs [0,0,2,1,0,0,0]+ , Xs [0,0,2,1,0,1]+ , Xs [0,0,2,1,1,0]+ , Xs [0,0,2,1,2]+ , Xs [0,0,2,2,0,0]+ , Xs [0,0,2,2,1]+ , Xs [0,0,2,6,0]+ , Xs [0,0,2,3]+ , Xs [0,0,6,0,0,0,0]+ , Xs [0,0,6,0,0,1]+ , Xs [0,0,6,0,1,0]+ , Xs [0,0,6,0,2]+ , Xs [0,0,6,1,0,0]+ , Xs [0,0,6,1,1]+ , Xs [0,0,6,2,0]+ , Xs [0,0,6,6]+ , Xs [0,0,3,0,0,0]+ , Xs [0,0,3,0,1]+ , Xs [0,0,3,1,0]+ , Xs [0,0,3,2]+ , Xs [0,0,4,0,0]+ , Xs [0,0,4,1]+ , Xs [0,0,5,0]+ , Xs [0,1,0,0,0,0,0,0,0]+ , Xs [0,1,0,0,0,0,0,1]+ , Xs [0,1,0,0,0,0,1,0]+ , Xs [0,1,0,0,0,0,2]+ , Xs [0,1,0,0,0,1,0,0]+ , Xs [0,1,0,0,0,1,1]+ , Xs [0,1,0,0,0,2,0]+ , Xs [0,1,0,0,0,6]+ , Xs [0,1,0,0,1,0,0,0]+ , Xs [0,1,0,0,1,0,1]+ , Xs [0,1,0,0,1,1,0]+ , Xs [0,1,0,0,1,2]+ , Xs [0,1,0,0,2,0,0]+ , Xs [0,1,0,0,2,1]+ , Xs [0,1,0,0,6,0]+ , Xs [0,1,0,0,3]+ , Xs [0,1,0,1,0,0,0,0]+ , Xs [0,1,0,1,0,0,1]+ , Xs [0,1,0,1,0,1,0]+ , Xs [0,1,0,1,0,2]+ , Xs [0,1,0,1,1,0,0]+ , Xs [0,1,0,1,1,1]+ , Xs [0,1,0,1,2,0]+ , Xs [0,1,0,1,6]+ , Xs [0,1,0,2,0,0,0]+ , Xs [0,1,0,2,0,1]+ , Xs [0,1,0,2,1,0]+ , Xs [0,1,0,2,2]+ , Xs [0,1,0,6,0,0]+ , Xs [0,1,0,6,1]+ , Xs [0,1,0,3,0]+ , Xs [0,1,0,4]+ , Xs [0,1,1,0,0,0,0,0]+ , Xs [0,1,1,0,0,0,1]+ , Xs [0,1,1,0,0,1,0]+ , Xs [0,1,1,0,0,2]+ , Xs [0,1,1,0,1,0,0]+ , Xs [0,1,1,0,1,1]+ , Xs [0,1,1,0,2,0]+ , Xs [0,1,1,0,6]+ , Xs [0,1,1,1,0,0,0]+ , Xs [0,1,1,1,0,1]+ , Xs [0,1,1,1,1,0]+ , Xs [0,1,1,1,2]+ , Xs [0,1,1,2,0,0]+ , Xs [0,1,1,2,1]+ , Xs [0,1,1,6,0]+ , Xs [0,1,1,3]+ , Xs [0,1,2,0,0,0,0]+ , Xs [0,1,2,0,0,1]+ , Xs [0,1,2,0,1,0]+ , Xs [0,1,2,0,2]+ , Xs [0,1,2,1,0,0]+ , Xs [0,1,2,1,1]+ , Xs [0,1,2,2,0]+ , Xs [0,1,2,6]+ , Xs [0,1,6,0,0,0]+ , Xs [0,1,6,0,1]+ , Xs [0,1,6,1,0]+ , Xs [0,1,6,2]+ , Xs [0,1,3,0,0]+ , Xs [0,1,3,1]+ , Xs [0,1,4,0]+ , Xs [0,1,5]+ , Xs [0,2,0,0,0,0,0,0]+ , Xs [0,2,0,0,0,0,1]+ , Xs [0,2,0,0,0,1,0]+ , Xs [0,2,0,0,0,2]+ , Xs [0,2,0,0,1,0,0]+ , Xs [0,2,0,0,1,1]+ , Xs [0,2,0,0,2,0]+ , Xs [0,2,0,0,6]+ , Xs [0,2,0,1,0,0,0]+ , Xs [0,2,0,1,0,1]+ , Xs [0,2,0,1,1,0]+ , Xs [0,2,0,1,2]+ , Xs [0,2,0,2,0,0]+ , Xs [0,2,0,2,1]+ , Xs [0,2,0,6,0]+ , Xs [0,2,0,3]+ , Xs [0,2,1,0,0,0,0]+ , Xs [0,2,1,0,0,1]+ , Xs [0,2,1,0,1,0]+ , Xs [0,2,1,0,2]+ , Xs [0,2,1,1,0,0]+ , Xs [0,2,1,1,1]+ , Xs [0,2,1,2,0]+ , Xs [0,2,1,6]+ , Xs [0,2,2,0,0,0]+ , Xs [0,2,2,0,1]+ , Xs [0,2,2,1,0]+ , Xs [0,2,2,2]+ , Xs [0,2,6,0,0]+ , Xs [0,2,6,1]+ , Xs [0,2,3,0]+ , Xs [0,2,4]+ , Xs [0,6,0,0,0,0,0]+ , Xs [0,6,0,0,0,1]+ , Xs [0,6,0,0,1,0]+ , Xs [0,6,0,0,2]+ , Xs [0,6,0,1,0,0]+ , Xs [0,6,0,1,1]+ , Xs [0,6,0,2,0]+ , Xs [0,6,0,6]+ , Xs [0,6,1,0,0,0]+ , Xs [0,6,1,0,1]+ , Xs [0,6,1,1,0]+ , Xs [0,6,1,2]+ , Xs [0,6,2,0,0]+ , Xs [0,6,2,1]+ , Xs [0,6,6,0]+ , Xs [0,6,3]+ , Xs [0,3,0,0,0,0]+ , Xs [0,3,0,0,1]+ , Xs [0,3,0,1,0]+ , Xs [0,3,0,2]+ , Xs [0,3,1,0,0]+ , Xs [0,3,1,1]+ , Xs [0,3,2,0]+ , Xs [0,3,6]+ , Xs [0,4,0,0,0]+ , Xs [0,4,0,1]+ , Xs [0,4,1,0]+ , Xs [0,4,2]+ , Xs [0,5,0,0]+ , Xs [0,5,1]+ , Xs [1,0,0,0,0,0,0,0,0]+ , Xs [1,0,0,0,0,0,0,1]+ , Xs [1,0,0,0,0,0,1,0]+ , Xs [1,0,0,0,0,0,2]+ , Xs [1,0,0,0,0,1,0,0]+ , Xs [1,0,0,0,0,1,1]+ , Xs [1,0,0,0,0,2,0]+ , Xs [1,0,0,0,0,6]+ , Xs [1,0,0,0,1,0,0,0]+ , Xs [1,0,0,0,1,0,1]+ , Xs [1,0,0,0,1,1,0]+ , Xs [1,0,0,0,1,2]+ , Xs [1,0,0,0,2,0,0]+ , Xs [1,0,0,0,2,1]+ , Xs [1,0,0,0,6,0]+ , Xs [1,0,0,0,3]+ , Xs [1,0,0,1,0,0,0,0]+ , Xs [1,0,0,1,0,0,1]+ , Xs [1,0,0,1,0,1,0]+ , Xs [1,0,0,1,0,2]+ , Xs [1,0,0,1,1,0,0]+ , Xs [1,0,0,1,1,1]+ , Xs [1,0,0,1,2,0]+ , Xs [1,0,0,1,6]+ , Xs [1,0,0,2,0,0,0]+ , Xs [1,0,0,2,0,1]+ , Xs [1,0,0,2,1,0]+ , Xs [1,0,0,2,2]+ , Xs [1,0,0,6,0,0]+ , Xs [1,0,0,6,1]+ , Xs [1,0,0,3,0]+ , Xs [1,0,0,4]+ , Xs [1,0,1,0,0,0,0,0]+ , Xs [1,0,1,0,0,0,1]+ , Xs [1,0,1,0,0,1,0]+ , Xs [1,0,1,0,0,2]+ , Xs [1,0,1,0,1,0,0]+ , Xs [1,0,1,0,1,1]+ , Xs [1,0,1,0,2,0]+ , Xs [1,0,1,0,6]+ , Xs [1,0,1,1,0,0,0]+ , Xs [1,0,1,1,0,1]+ , Xs [1,0,1,1,1,0]+ , Xs [1,0,1,1,2]+ , Xs [1,0,1,2,0,0]+ , Xs [1,0,1,2,1]+ , Xs [1,0,1,6,0]+ , Xs [1,0,1,3]+ , Xs [1,0,2,0,0,0,0]+ , Xs [1,0,2,0,0,1]+ , Xs [1,0,2,0,1,0]+ , Xs [1,0,2,0,2]+ , Xs [1,0,2,1,0,0]+ , Xs [1,0,2,1,1]+ , Xs [1,0,2,2,0]+ , Xs [1,0,2,6]+ , Xs [1,0,6,0,0,0]+ , Xs [1,0,6,0,1]+ , Xs [1,0,6,1,0]+ , Xs [1,0,6,2]+ , Xs [1,0,3,0,0]+ , Xs [1,0,3,1]+ , Xs [1,0,4,0]+ , Xs [1,0,5]+ , Xs [1,1,0,0,0,0,0,0]+ , Xs [1,1,0,0,0,0,1]+ , Xs [1,1,0,0,0,1,0]+ , Xs [1,1,0,0,0,2]+ , Xs [1,1,0,0,1,0,0]+ , Xs [1,1,0,0,1,1]+ , Xs [1,1,0,0,2,0]+ , Xs [1,1,0,0,6]+ , Xs [1,1,0,1,0,0,0]+ , Xs [1,1,0,1,0,1]+ , Xs [1,1,0,1,1,0]+ , Xs [1,1,0,1,2]+ , Xs [1,1,0,2,0,0]+ , Xs [1,1,0,2,1]+ , Xs [1,1,0,6,0]+ , Xs [1,1,0,3]+ , Xs [1,1,1,0,0,0,0]+ , Xs [1,1,1,0,0,1]+ , Xs [1,1,1,0,1,0]+ , Xs [1,1,1,0,2]+ , Xs [1,1,1,1,0,0]+ , Xs [1,1,1,1,1]+ , Xs [1,1,1,2,0]+ , Xs [1,1,1,6]+ , Xs [1,1,2,0,0,0]+ , Xs [1,1,2,0,1]+ , Xs [1,1,2,1,0]+ , Xs [1,1,2,2]+ , Xs [1,1,6,0,0]+ , Xs [1,1,6,1]+ , Xs [1,1,3,0]+ , Xs [1,1,4]+ , Xs [1,2,0,0,0,0,0]+ , Xs [1,2,0,0,0,1]+ , Xs [1,2,0,0,1,0]+ , Xs [1,2,0,0,2]+ , Xs [1,2,0,1,0,0]+ , Xs [1,2,0,1,1]+ , Xs [1,2,0,2,0]+ , Xs [1,2,0,6]+ , Xs [1,2,1,0,0,0]+ , Xs [1,2,1,0,1]+ , Xs [1,2,1,1,0]+ , Xs [1,2,1,2]+ , Xs [1,2,2,0,0]+ , Xs [1,2,2,1]+ , Xs [1,2,6,0]+ , Xs [1,2,3]+ , Xs [1,6,0,0,0,0]+ , Xs [1,6,0,0,1]+ , Xs [1,6,0,1,0]+ , Xs [1,6,0,2]+ , Xs [1,6,1,0,0]+ , Xs [1,6,1,1]+ , Xs [1,6,2,0]+ , Xs [1,6,6]+ , Xs [1,3,0,0,0]+ , Xs [1,3,0,1]+ , Xs [1,3,1,0]+ , Xs [1,3,2]+ , Xs [1,4,0,0]+ , Xs [1,4,1]+ , Xs [1,5,0]+ , Xs [2,0,0,0,0,0,0,0]+ , Xs [2,0,0,0,0,0,1]+ , Xs [2,0,0,0,0,1,0]+ , Xs [2,0,0,0,0,2]+ , Xs [2,0,0,0,1,0,0]+ , Xs [2,0,0,0,1,1]+ , Xs [2,0,0,0,2,0]+ , Xs [2,0,0,0,6]+ , Xs [2,0,0,1,0,0,0]+ , Xs [2,0,0,1,0,1]+ , Xs [2,0,0,1,1,0]+ , Xs [2,0,0,1,2]+ , Xs [2,0,0,2,0,0]+ , Xs [2,0,0,2,1]+ , Xs [2,0,0,6,0]+ , Xs [2,0,0,3]+ , Xs [2,0,1,0,0,0,0]+ , Xs [2,0,1,0,0,1]+ , Xs [2,0,1,0,1,0]+ , Xs [2,0,1,0,2]+ , Xs [2,0,1,1,0,0]+ , Xs [2,0,1,1,1]+ , Xs [2,0,1,2,0]+ , Xs [2,0,1,6]+ , Xs [2,0,2,0,0,0]+ , Xs [2,0,2,0,1]+ , Xs [2,0,2,1,0]+ , Xs [2,0,2,2]+ , Xs [2,0,6,0,0]+ , Xs [2,0,6,1]+ , Xs [2,0,3,0]+ , Xs [2,0,4]+ , Xs [2,1,0,0,0,0,0]+ , Xs [2,1,0,0,0,1]+ , Xs [2,1,0,0,1,0]+ , Xs [2,1,0,0,2]+ , Xs [2,1,0,1,0,0]+ , Xs [2,1,0,1,1]+ , Xs [2,1,0,2,0]+ , Xs [2,1,0,6]+ , Xs [2,1,1,0,0,0]+ , Xs [2,1,1,0,1]+ , Xs [2,1,1,1,0]+ , Xs [2,1,1,2]+ , Xs [2,1,2,0,0]+ , Xs [2,1,2,1]+ , Xs [2,1,6,0]+ , Xs [2,1,3]+ , Xs [2,2,0,0,0,0]+ , Xs [2,2,0,0,1]+ , Xs [2,2,0,1,0]+ , Xs [2,2,0,2]+ , Xs [2,2,1,0,0]+ , Xs [2,2,1,1]+ , Xs [2,2,2,0]+ , Xs [2,2,6]+ , Xs [2,6,0,0,0]+ , Xs [2,6,0,1]+ , Xs [2,6,1,0]+ , Xs [2,6,2]+ , Xs [2,3,0,0]+ , Xs [2,3,1]+ , Xs [2,4,0]+ , Xs [2,5]+ , Xs [6,0,0,0,0,0,0]+ , Xs [6,0,0,0,0,1]+ , Xs [6,0,0,0,1,0]+ , Xs [6,0,0,0,2]+ , Xs [6,0,0,1,0,0]+ , Xs [6,0,0,1,1]+ , Xs [6,0,0,2,0]+ , Xs [6,0,0,6]+ , Xs [6,0,1,0,0,0]+ , Xs [6,0,1,0,1]+ , Xs [6,0,1,1,0]+ , Xs [6,0,1,2]+ , Xs [6,0,2,0,0]+ , Xs [6,0,2,1]+ , Xs [6,0,6,0]+ , Xs [6,0,3]+ , Xs [6,1,0,0,0,0]+ , Xs [6,1,0,0,1]+ , Xs [6,1,0,1,0]+ , Xs [6,1,0,2]+ , Xs [6,1,1,0,0]+ , Xs [6,1,1,1]+ , Xs [6,1,2,0]+ , Xs [6,1,6]+ , Xs [6,2,0,0,0]+ , Xs [6,2,0,1]+ , Xs [6,2,1,0]+ , Xs [6,2,2]+ , Xs [6,6,0,0]+ , Xs [6,6,1]+ , Xs [6,3,0]+ , Xs [6,4]+ , Xs [3,0,0,0,0,0]+ , Xs [3,0,0,0,1]+ , Xs [3,0,0,1,0]+ , Xs [3,0,0,2]+ , Xs [3,0,1,0,0]+ , Xs [3,0,1,1]+ , Xs [3,0,2,0]+ , Xs [3,0,6]+ , Xs [3,1,0,0,0]+ , Xs [3,1,0,1]+ , Xs [3,1,1,0]+ , Xs [3,1,2]+ , Xs [3,2,0,0]+ , Xs [3,2,1]+ , Xs [3,6,0]+ , Xs [3,3]+ , Xs [4,0,0,0,0]+ , Xs [4,0,0,1]+ , Xs [4,0,1,0]+ , Xs [4,0,2]+ , Xs [4,1,0,0]+ , Xs [4,1,1]+ , Xs [4,2,0]+ , Xs [4,6]+ , Xs [5,0,0,0]+ , Xs [5,0,1]+ , Xs [5,1,0]+ , Xs [5,2]+ ]+ , ...+ ]
+ tests/diff/tiers-XsWord4.out view
@@ -0,0 +1,1045 @@+map length (tiers :: [[ Xs Word4 ]]) = [0,1,1,2,4,8,16,32,64,128,256,512,...]++length (list :: [ Xs Word4 ]) = Infinity++allUnique (list :: [ Xs Word4 ]) = True++ratioRepetitions (list :: [ Xs Word4 ]) = 0 % 1++tiers :: [Xs Word4] =+ [ []+ , [Xs []]+ , [Xs [0]]+ , [ Xs [0,0]+ , Xs [1]+ ]+ , [ Xs [0,0,0]+ , Xs [0,1]+ , Xs [1,0]+ , Xs [2]+ ]+ , [ Xs [0,0,0,0]+ , Xs [0,0,1]+ , Xs [0,1,0]+ , Xs [0,2]+ , Xs [1,0,0]+ , Xs [1,1]+ , Xs [2,0]+ , Xs [15]+ ]+ , [ Xs [0,0,0,0,0]+ , Xs [0,0,0,1]+ , Xs [0,0,1,0]+ , Xs [0,0,2]+ , Xs [0,1,0,0]+ , Xs [0,1,1]+ , Xs [0,2,0]+ , Xs [0,15]+ , Xs [1,0,0,0]+ , Xs [1,0,1]+ , Xs [1,1,0]+ , Xs [1,2]+ , Xs [2,0,0]+ , Xs [2,1]+ , Xs [15,0]+ , Xs [3]+ ]+ , [ Xs [0,0,0,0,0,0]+ , Xs [0,0,0,0,1]+ , Xs [0,0,0,1,0]+ , Xs [0,0,0,2]+ , Xs [0,0,1,0,0]+ , Xs [0,0,1,1]+ , Xs [0,0,2,0]+ , Xs [0,0,15]+ , Xs [0,1,0,0,0]+ , Xs [0,1,0,1]+ , Xs [0,1,1,0]+ , Xs [0,1,2]+ , Xs [0,2,0,0]+ , Xs [0,2,1]+ , Xs [0,15,0]+ , Xs [0,3]+ , Xs [1,0,0,0,0]+ , Xs [1,0,0,1]+ , Xs [1,0,1,0]+ , Xs [1,0,2]+ , Xs [1,1,0,0]+ , Xs [1,1,1]+ , Xs [1,2,0]+ , Xs [1,15]+ , Xs [2,0,0,0]+ , Xs [2,0,1]+ , Xs [2,1,0]+ , Xs [2,2]+ , Xs [15,0,0]+ , Xs [15,1]+ , Xs [3,0]+ , Xs [4]+ ]+ , [ Xs [0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,1]+ , Xs [0,0,0,0,1,0]+ , Xs [0,0,0,0,2]+ , Xs [0,0,0,1,0,0]+ , Xs [0,0,0,1,1]+ , Xs [0,0,0,2,0]+ , Xs [0,0,0,15]+ , Xs [0,0,1,0,0,0]+ , Xs [0,0,1,0,1]+ , Xs [0,0,1,1,0]+ , Xs [0,0,1,2]+ , Xs [0,0,2,0,0]+ , Xs [0,0,2,1]+ , Xs [0,0,15,0]+ , Xs [0,0,3]+ , Xs [0,1,0,0,0,0]+ , Xs [0,1,0,0,1]+ , Xs [0,1,0,1,0]+ , Xs [0,1,0,2]+ , Xs [0,1,1,0,0]+ , Xs [0,1,1,1]+ , Xs [0,1,2,0]+ , Xs [0,1,15]+ , Xs [0,2,0,0,0]+ , Xs [0,2,0,1]+ , Xs [0,2,1,0]+ , Xs [0,2,2]+ , Xs [0,15,0,0]+ , Xs [0,15,1]+ , Xs [0,3,0]+ , Xs [0,4]+ , Xs [1,0,0,0,0,0]+ , Xs [1,0,0,0,1]+ , Xs [1,0,0,1,0]+ , Xs [1,0,0,2]+ , Xs [1,0,1,0,0]+ , Xs [1,0,1,1]+ , Xs [1,0,2,0]+ , Xs [1,0,15]+ , Xs [1,1,0,0,0]+ , Xs [1,1,0,1]+ , Xs [1,1,1,0]+ , Xs [1,1,2]+ , Xs [1,2,0,0]+ , Xs [1,2,1]+ , Xs [1,15,0]+ , Xs [1,3]+ , Xs [2,0,0,0,0]+ , Xs [2,0,0,1]+ , Xs [2,0,1,0]+ , Xs [2,0,2]+ , Xs [2,1,0,0]+ , Xs [2,1,1]+ , Xs [2,2,0]+ , Xs [2,15]+ , Xs [15,0,0,0]+ , Xs [15,0,1]+ , Xs [15,1,0]+ , Xs [15,2]+ , Xs [3,0,0]+ , Xs [3,1]+ , Xs [4,0]+ , Xs [14]+ ]+ , [ Xs [0,0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,0,1]+ , Xs [0,0,0,0,0,1,0]+ , Xs [0,0,0,0,0,2]+ , Xs [0,0,0,0,1,0,0]+ , Xs [0,0,0,0,1,1]+ , Xs [0,0,0,0,2,0]+ , Xs [0,0,0,0,15]+ , Xs [0,0,0,1,0,0,0]+ , Xs [0,0,0,1,0,1]+ , Xs [0,0,0,1,1,0]+ , Xs [0,0,0,1,2]+ , Xs [0,0,0,2,0,0]+ , Xs [0,0,0,2,1]+ , Xs [0,0,0,15,0]+ , Xs [0,0,0,3]+ , Xs [0,0,1,0,0,0,0]+ , Xs [0,0,1,0,0,1]+ , Xs [0,0,1,0,1,0]+ , Xs [0,0,1,0,2]+ , Xs [0,0,1,1,0,0]+ , Xs [0,0,1,1,1]+ , Xs [0,0,1,2,0]+ , Xs [0,0,1,15]+ , Xs [0,0,2,0,0,0]+ , Xs [0,0,2,0,1]+ , Xs [0,0,2,1,0]+ , Xs [0,0,2,2]+ , Xs [0,0,15,0,0]+ , Xs [0,0,15,1]+ , Xs [0,0,3,0]+ , Xs [0,0,4]+ , Xs [0,1,0,0,0,0,0]+ , Xs [0,1,0,0,0,1]+ , Xs [0,1,0,0,1,0]+ , Xs [0,1,0,0,2]+ , Xs [0,1,0,1,0,0]+ , Xs [0,1,0,1,1]+ , Xs [0,1,0,2,0]+ , Xs [0,1,0,15]+ , Xs [0,1,1,0,0,0]+ , Xs [0,1,1,0,1]+ , Xs [0,1,1,1,0]+ , Xs [0,1,1,2]+ , Xs [0,1,2,0,0]+ , Xs [0,1,2,1]+ , Xs [0,1,15,0]+ , Xs [0,1,3]+ , Xs [0,2,0,0,0,0]+ , Xs [0,2,0,0,1]+ , Xs [0,2,0,1,0]+ , Xs [0,2,0,2]+ , Xs [0,2,1,0,0]+ , Xs [0,2,1,1]+ , Xs [0,2,2,0]+ , Xs [0,2,15]+ , Xs [0,15,0,0,0]+ , Xs [0,15,0,1]+ , Xs [0,15,1,0]+ , Xs [0,15,2]+ , Xs [0,3,0,0]+ , Xs [0,3,1]+ , Xs [0,4,0]+ , Xs [0,14]+ , Xs [1,0,0,0,0,0,0]+ , Xs [1,0,0,0,0,1]+ , Xs [1,0,0,0,1,0]+ , Xs [1,0,0,0,2]+ , Xs [1,0,0,1,0,0]+ , Xs [1,0,0,1,1]+ , Xs [1,0,0,2,0]+ , Xs [1,0,0,15]+ , Xs [1,0,1,0,0,0]+ , Xs [1,0,1,0,1]+ , Xs [1,0,1,1,0]+ , Xs [1,0,1,2]+ , Xs [1,0,2,0,0]+ , Xs [1,0,2,1]+ , Xs [1,0,15,0]+ , Xs [1,0,3]+ , Xs [1,1,0,0,0,0]+ , Xs [1,1,0,0,1]+ , Xs [1,1,0,1,0]+ , Xs [1,1,0,2]+ , Xs [1,1,1,0,0]+ , Xs [1,1,1,1]+ , Xs [1,1,2,0]+ , Xs [1,1,15]+ , Xs [1,2,0,0,0]+ , Xs [1,2,0,1]+ , Xs [1,2,1,0]+ , Xs [1,2,2]+ , Xs [1,15,0,0]+ , Xs [1,15,1]+ , Xs [1,3,0]+ , Xs [1,4]+ , Xs [2,0,0,0,0,0]+ , Xs [2,0,0,0,1]+ , Xs [2,0,0,1,0]+ , Xs [2,0,0,2]+ , Xs [2,0,1,0,0]+ , Xs [2,0,1,1]+ , Xs [2,0,2,0]+ , Xs [2,0,15]+ , Xs [2,1,0,0,0]+ , Xs [2,1,0,1]+ , Xs [2,1,1,0]+ , Xs [2,1,2]+ , Xs [2,2,0,0]+ , Xs [2,2,1]+ , Xs [2,15,0]+ , Xs [2,3]+ , Xs [15,0,0,0,0]+ , Xs [15,0,0,1]+ , Xs [15,0,1,0]+ , Xs [15,0,2]+ , Xs [15,1,0,0]+ , Xs [15,1,1]+ , Xs [15,2,0]+ , Xs [15,15]+ , Xs [3,0,0,0]+ , Xs [3,0,1]+ , Xs [3,1,0]+ , Xs [3,2]+ , Xs [4,0,0]+ , Xs [4,1]+ , Xs [14,0]+ , Xs [5]+ ]+ , [ Xs [0,0,0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,0,0,1]+ , Xs [0,0,0,0,0,0,1,0]+ , Xs [0,0,0,0,0,0,2]+ , Xs [0,0,0,0,0,1,0,0]+ , Xs [0,0,0,0,0,1,1]+ , Xs [0,0,0,0,0,2,0]+ , Xs [0,0,0,0,0,15]+ , Xs [0,0,0,0,1,0,0,0]+ , Xs [0,0,0,0,1,0,1]+ , Xs [0,0,0,0,1,1,0]+ , Xs [0,0,0,0,1,2]+ , Xs [0,0,0,0,2,0,0]+ , Xs [0,0,0,0,2,1]+ , Xs [0,0,0,0,15,0]+ , Xs [0,0,0,0,3]+ , Xs [0,0,0,1,0,0,0,0]+ , Xs [0,0,0,1,0,0,1]+ , Xs [0,0,0,1,0,1,0]+ , Xs [0,0,0,1,0,2]+ , Xs [0,0,0,1,1,0,0]+ , Xs [0,0,0,1,1,1]+ , Xs [0,0,0,1,2,0]+ , Xs [0,0,0,1,15]+ , Xs [0,0,0,2,0,0,0]+ , Xs [0,0,0,2,0,1]+ , Xs [0,0,0,2,1,0]+ , Xs [0,0,0,2,2]+ , Xs [0,0,0,15,0,0]+ , Xs [0,0,0,15,1]+ , Xs [0,0,0,3,0]+ , Xs [0,0,0,4]+ , Xs [0,0,1,0,0,0,0,0]+ , Xs [0,0,1,0,0,0,1]+ , Xs [0,0,1,0,0,1,0]+ , Xs [0,0,1,0,0,2]+ , Xs [0,0,1,0,1,0,0]+ , Xs [0,0,1,0,1,1]+ , Xs [0,0,1,0,2,0]+ , Xs [0,0,1,0,15]+ , Xs [0,0,1,1,0,0,0]+ , Xs [0,0,1,1,0,1]+ , Xs [0,0,1,1,1,0]+ , Xs [0,0,1,1,2]+ , Xs [0,0,1,2,0,0]+ , Xs [0,0,1,2,1]+ , Xs [0,0,1,15,0]+ , Xs [0,0,1,3]+ , Xs [0,0,2,0,0,0,0]+ , Xs [0,0,2,0,0,1]+ , Xs [0,0,2,0,1,0]+ , Xs [0,0,2,0,2]+ , Xs [0,0,2,1,0,0]+ , Xs [0,0,2,1,1]+ , Xs [0,0,2,2,0]+ , Xs [0,0,2,15]+ , Xs [0,0,15,0,0,0]+ , Xs [0,0,15,0,1]+ , Xs [0,0,15,1,0]+ , Xs [0,0,15,2]+ , Xs [0,0,3,0,0]+ , Xs [0,0,3,1]+ , Xs [0,0,4,0]+ , Xs [0,0,14]+ , Xs [0,1,0,0,0,0,0,0]+ , Xs [0,1,0,0,0,0,1]+ , Xs [0,1,0,0,0,1,0]+ , Xs [0,1,0,0,0,2]+ , Xs [0,1,0,0,1,0,0]+ , Xs [0,1,0,0,1,1]+ , Xs [0,1,0,0,2,0]+ , Xs [0,1,0,0,15]+ , Xs [0,1,0,1,0,0,0]+ , Xs [0,1,0,1,0,1]+ , Xs [0,1,0,1,1,0]+ , Xs [0,1,0,1,2]+ , Xs [0,1,0,2,0,0]+ , Xs [0,1,0,2,1]+ , Xs [0,1,0,15,0]+ , Xs [0,1,0,3]+ , Xs [0,1,1,0,0,0,0]+ , Xs [0,1,1,0,0,1]+ , Xs [0,1,1,0,1,0]+ , Xs [0,1,1,0,2]+ , Xs [0,1,1,1,0,0]+ , Xs [0,1,1,1,1]+ , Xs [0,1,1,2,0]+ , Xs [0,1,1,15]+ , Xs [0,1,2,0,0,0]+ , Xs [0,1,2,0,1]+ , Xs [0,1,2,1,0]+ , Xs [0,1,2,2]+ , Xs [0,1,15,0,0]+ , Xs [0,1,15,1]+ , Xs [0,1,3,0]+ , Xs [0,1,4]+ , Xs [0,2,0,0,0,0,0]+ , Xs [0,2,0,0,0,1]+ , Xs [0,2,0,0,1,0]+ , Xs [0,2,0,0,2]+ , Xs [0,2,0,1,0,0]+ , Xs [0,2,0,1,1]+ , Xs [0,2,0,2,0]+ , Xs [0,2,0,15]+ , Xs [0,2,1,0,0,0]+ , Xs [0,2,1,0,1]+ , Xs [0,2,1,1,0]+ , Xs [0,2,1,2]+ , Xs [0,2,2,0,0]+ , Xs [0,2,2,1]+ , Xs [0,2,15,0]+ , Xs [0,2,3]+ , Xs [0,15,0,0,0,0]+ , Xs [0,15,0,0,1]+ , Xs [0,15,0,1,0]+ , Xs [0,15,0,2]+ , Xs [0,15,1,0,0]+ , Xs [0,15,1,1]+ , Xs [0,15,2,0]+ , Xs [0,15,15]+ , Xs [0,3,0,0,0]+ , Xs [0,3,0,1]+ , Xs [0,3,1,0]+ , Xs [0,3,2]+ , Xs [0,4,0,0]+ , Xs [0,4,1]+ , Xs [0,14,0]+ , Xs [0,5]+ , Xs [1,0,0,0,0,0,0,0]+ , Xs [1,0,0,0,0,0,1]+ , Xs [1,0,0,0,0,1,0]+ , Xs [1,0,0,0,0,2]+ , Xs [1,0,0,0,1,0,0]+ , Xs [1,0,0,0,1,1]+ , Xs [1,0,0,0,2,0]+ , Xs [1,0,0,0,15]+ , Xs [1,0,0,1,0,0,0]+ , Xs [1,0,0,1,0,1]+ , Xs [1,0,0,1,1,0]+ , Xs [1,0,0,1,2]+ , Xs [1,0,0,2,0,0]+ , Xs [1,0,0,2,1]+ , Xs [1,0,0,15,0]+ , Xs [1,0,0,3]+ , Xs [1,0,1,0,0,0,0]+ , Xs [1,0,1,0,0,1]+ , Xs [1,0,1,0,1,0]+ , Xs [1,0,1,0,2]+ , Xs [1,0,1,1,0,0]+ , Xs [1,0,1,1,1]+ , Xs [1,0,1,2,0]+ , Xs [1,0,1,15]+ , Xs [1,0,2,0,0,0]+ , Xs [1,0,2,0,1]+ , Xs [1,0,2,1,0]+ , Xs [1,0,2,2]+ , Xs [1,0,15,0,0]+ , Xs [1,0,15,1]+ , Xs [1,0,3,0]+ , Xs [1,0,4]+ , Xs [1,1,0,0,0,0,0]+ , Xs [1,1,0,0,0,1]+ , Xs [1,1,0,0,1,0]+ , Xs [1,1,0,0,2]+ , Xs [1,1,0,1,0,0]+ , Xs [1,1,0,1,1]+ , Xs [1,1,0,2,0]+ , Xs [1,1,0,15]+ , Xs [1,1,1,0,0,0]+ , Xs [1,1,1,0,1]+ , Xs [1,1,1,1,0]+ , Xs [1,1,1,2]+ , Xs [1,1,2,0,0]+ , Xs [1,1,2,1]+ , Xs [1,1,15,0]+ , Xs [1,1,3]+ , Xs [1,2,0,0,0,0]+ , Xs [1,2,0,0,1]+ , Xs [1,2,0,1,0]+ , Xs [1,2,0,2]+ , Xs [1,2,1,0,0]+ , Xs [1,2,1,1]+ , Xs [1,2,2,0]+ , Xs [1,2,15]+ , Xs [1,15,0,0,0]+ , Xs [1,15,0,1]+ , Xs [1,15,1,0]+ , Xs [1,15,2]+ , Xs [1,3,0,0]+ , Xs [1,3,1]+ , Xs [1,4,0]+ , Xs [1,14]+ , Xs [2,0,0,0,0,0,0]+ , Xs [2,0,0,0,0,1]+ , Xs [2,0,0,0,1,0]+ , Xs [2,0,0,0,2]+ , Xs [2,0,0,1,0,0]+ , Xs [2,0,0,1,1]+ , Xs [2,0,0,2,0]+ , Xs [2,0,0,15]+ , Xs [2,0,1,0,0,0]+ , Xs [2,0,1,0,1]+ , Xs [2,0,1,1,0]+ , Xs [2,0,1,2]+ , Xs [2,0,2,0,0]+ , Xs [2,0,2,1]+ , Xs [2,0,15,0]+ , Xs [2,0,3]+ , Xs [2,1,0,0,0,0]+ , Xs [2,1,0,0,1]+ , Xs [2,1,0,1,0]+ , Xs [2,1,0,2]+ , Xs [2,1,1,0,0]+ , Xs [2,1,1,1]+ , Xs [2,1,2,0]+ , Xs [2,1,15]+ , Xs [2,2,0,0,0]+ , Xs [2,2,0,1]+ , Xs [2,2,1,0]+ , Xs [2,2,2]+ , Xs [2,15,0,0]+ , Xs [2,15,1]+ , Xs [2,3,0]+ , Xs [2,4]+ , Xs [15,0,0,0,0,0]+ , Xs [15,0,0,0,1]+ , Xs [15,0,0,1,0]+ , Xs [15,0,0,2]+ , Xs [15,0,1,0,0]+ , Xs [15,0,1,1]+ , Xs [15,0,2,0]+ , Xs [15,0,15]+ , Xs [15,1,0,0,0]+ , Xs [15,1,0,1]+ , Xs [15,1,1,0]+ , Xs [15,1,2]+ , Xs [15,2,0,0]+ , Xs [15,2,1]+ , Xs [15,15,0]+ , Xs [15,3]+ , Xs [3,0,0,0,0]+ , Xs [3,0,0,1]+ , Xs [3,0,1,0]+ , Xs [3,0,2]+ , Xs [3,1,0,0]+ , Xs [3,1,1]+ , Xs [3,2,0]+ , Xs [3,15]+ , Xs [4,0,0,0]+ , Xs [4,0,1]+ , Xs [4,1,0]+ , Xs [4,2]+ , Xs [14,0,0]+ , Xs [14,1]+ , Xs [5,0]+ , Xs [6]+ ]+ , [ Xs [0,0,0,0,0,0,0,0,0,0]+ , Xs [0,0,0,0,0,0,0,0,1]+ , Xs [0,0,0,0,0,0,0,1,0]+ , Xs [0,0,0,0,0,0,0,2]+ , Xs [0,0,0,0,0,0,1,0,0]+ , Xs [0,0,0,0,0,0,1,1]+ , Xs [0,0,0,0,0,0,2,0]+ , Xs [0,0,0,0,0,0,15]+ , Xs [0,0,0,0,0,1,0,0,0]+ , Xs [0,0,0,0,0,1,0,1]+ , Xs [0,0,0,0,0,1,1,0]+ , Xs [0,0,0,0,0,1,2]+ , Xs [0,0,0,0,0,2,0,0]+ , Xs [0,0,0,0,0,2,1]+ , Xs [0,0,0,0,0,15,0]+ , Xs [0,0,0,0,0,3]+ , Xs [0,0,0,0,1,0,0,0,0]+ , Xs [0,0,0,0,1,0,0,1]+ , Xs [0,0,0,0,1,0,1,0]+ , Xs [0,0,0,0,1,0,2]+ , Xs [0,0,0,0,1,1,0,0]+ , Xs [0,0,0,0,1,1,1]+ , Xs [0,0,0,0,1,2,0]+ , Xs [0,0,0,0,1,15]+ , Xs [0,0,0,0,2,0,0,0]+ , Xs [0,0,0,0,2,0,1]+ , Xs [0,0,0,0,2,1,0]+ , Xs [0,0,0,0,2,2]+ , Xs [0,0,0,0,15,0,0]+ , Xs [0,0,0,0,15,1]+ , Xs [0,0,0,0,3,0]+ , Xs [0,0,0,0,4]+ , Xs [0,0,0,1,0,0,0,0,0]+ , Xs [0,0,0,1,0,0,0,1]+ , Xs [0,0,0,1,0,0,1,0]+ , Xs [0,0,0,1,0,0,2]+ , Xs [0,0,0,1,0,1,0,0]+ , Xs [0,0,0,1,0,1,1]+ , Xs [0,0,0,1,0,2,0]+ , Xs [0,0,0,1,0,15]+ , Xs [0,0,0,1,1,0,0,0]+ , Xs [0,0,0,1,1,0,1]+ , Xs [0,0,0,1,1,1,0]+ , Xs [0,0,0,1,1,2]+ , Xs [0,0,0,1,2,0,0]+ , Xs [0,0,0,1,2,1]+ , Xs [0,0,0,1,15,0]+ , Xs [0,0,0,1,3]+ , Xs [0,0,0,2,0,0,0,0]+ , Xs [0,0,0,2,0,0,1]+ , Xs [0,0,0,2,0,1,0]+ , Xs [0,0,0,2,0,2]+ , Xs [0,0,0,2,1,0,0]+ , Xs [0,0,0,2,1,1]+ , Xs [0,0,0,2,2,0]+ , Xs [0,0,0,2,15]+ , Xs [0,0,0,15,0,0,0]+ , Xs [0,0,0,15,0,1]+ , Xs [0,0,0,15,1,0]+ , Xs [0,0,0,15,2]+ , Xs [0,0,0,3,0,0]+ , Xs [0,0,0,3,1]+ , Xs [0,0,0,4,0]+ , Xs [0,0,0,14]+ , Xs [0,0,1,0,0,0,0,0,0]+ , Xs [0,0,1,0,0,0,0,1]+ , Xs [0,0,1,0,0,0,1,0]+ , Xs [0,0,1,0,0,0,2]+ , Xs [0,0,1,0,0,1,0,0]+ , Xs [0,0,1,0,0,1,1]+ , Xs [0,0,1,0,0,2,0]+ , Xs [0,0,1,0,0,15]+ , Xs [0,0,1,0,1,0,0,0]+ , Xs [0,0,1,0,1,0,1]+ , Xs [0,0,1,0,1,1,0]+ , Xs [0,0,1,0,1,2]+ , Xs [0,0,1,0,2,0,0]+ , Xs [0,0,1,0,2,1]+ , Xs [0,0,1,0,15,0]+ , Xs [0,0,1,0,3]+ , Xs [0,0,1,1,0,0,0,0]+ , Xs [0,0,1,1,0,0,1]+ , Xs [0,0,1,1,0,1,0]+ , Xs [0,0,1,1,0,2]+ , Xs [0,0,1,1,1,0,0]+ , Xs [0,0,1,1,1,1]+ , Xs [0,0,1,1,2,0]+ , Xs [0,0,1,1,15]+ , Xs [0,0,1,2,0,0,0]+ , Xs [0,0,1,2,0,1]+ , Xs [0,0,1,2,1,0]+ , Xs [0,0,1,2,2]+ , Xs [0,0,1,15,0,0]+ , Xs [0,0,1,15,1]+ , Xs [0,0,1,3,0]+ , Xs [0,0,1,4]+ , Xs [0,0,2,0,0,0,0,0]+ , Xs [0,0,2,0,0,0,1]+ , Xs [0,0,2,0,0,1,0]+ , Xs [0,0,2,0,0,2]+ , Xs [0,0,2,0,1,0,0]+ , Xs [0,0,2,0,1,1]+ , Xs [0,0,2,0,2,0]+ , Xs [0,0,2,0,15]+ , Xs [0,0,2,1,0,0,0]+ , Xs [0,0,2,1,0,1]+ , Xs [0,0,2,1,1,0]+ , Xs [0,0,2,1,2]+ , Xs [0,0,2,2,0,0]+ , Xs [0,0,2,2,1]+ , Xs [0,0,2,15,0]+ , Xs [0,0,2,3]+ , Xs [0,0,15,0,0,0,0]+ , Xs [0,0,15,0,0,1]+ , Xs [0,0,15,0,1,0]+ , Xs [0,0,15,0,2]+ , Xs [0,0,15,1,0,0]+ , Xs [0,0,15,1,1]+ , Xs [0,0,15,2,0]+ , Xs [0,0,15,15]+ , Xs [0,0,3,0,0,0]+ , Xs [0,0,3,0,1]+ , Xs [0,0,3,1,0]+ , Xs [0,0,3,2]+ , Xs [0,0,4,0,0]+ , Xs [0,0,4,1]+ , Xs [0,0,14,0]+ , Xs [0,0,5]+ , Xs [0,1,0,0,0,0,0,0,0]+ , Xs [0,1,0,0,0,0,0,1]+ , Xs [0,1,0,0,0,0,1,0]+ , Xs [0,1,0,0,0,0,2]+ , Xs [0,1,0,0,0,1,0,0]+ , Xs [0,1,0,0,0,1,1]+ , Xs [0,1,0,0,0,2,0]+ , Xs [0,1,0,0,0,15]+ , Xs [0,1,0,0,1,0,0,0]+ , Xs [0,1,0,0,1,0,1]+ , Xs [0,1,0,0,1,1,0]+ , Xs [0,1,0,0,1,2]+ , Xs [0,1,0,0,2,0,0]+ , Xs [0,1,0,0,2,1]+ , Xs [0,1,0,0,15,0]+ , Xs [0,1,0,0,3]+ , Xs [0,1,0,1,0,0,0,0]+ , Xs [0,1,0,1,0,0,1]+ , Xs [0,1,0,1,0,1,0]+ , Xs [0,1,0,1,0,2]+ , Xs [0,1,0,1,1,0,0]+ , Xs [0,1,0,1,1,1]+ , Xs [0,1,0,1,2,0]+ , Xs [0,1,0,1,15]+ , Xs [0,1,0,2,0,0,0]+ , Xs [0,1,0,2,0,1]+ , Xs [0,1,0,2,1,0]+ , Xs [0,1,0,2,2]+ , Xs [0,1,0,15,0,0]+ , Xs [0,1,0,15,1]+ , Xs [0,1,0,3,0]+ , Xs [0,1,0,4]+ , Xs [0,1,1,0,0,0,0,0]+ , Xs [0,1,1,0,0,0,1]+ , Xs [0,1,1,0,0,1,0]+ , Xs [0,1,1,0,0,2]+ , Xs [0,1,1,0,1,0,0]+ , Xs [0,1,1,0,1,1]+ , Xs [0,1,1,0,2,0]+ , Xs [0,1,1,0,15]+ , Xs [0,1,1,1,0,0,0]+ , Xs [0,1,1,1,0,1]+ , Xs [0,1,1,1,1,0]+ , Xs [0,1,1,1,2]+ , Xs [0,1,1,2,0,0]+ , Xs [0,1,1,2,1]+ , Xs [0,1,1,15,0]+ , Xs [0,1,1,3]+ , Xs [0,1,2,0,0,0,0]+ , Xs [0,1,2,0,0,1]+ , Xs [0,1,2,0,1,0]+ , Xs [0,1,2,0,2]+ , Xs [0,1,2,1,0,0]+ , Xs [0,1,2,1,1]+ , Xs [0,1,2,2,0]+ , Xs [0,1,2,15]+ , Xs [0,1,15,0,0,0]+ , Xs [0,1,15,0,1]+ , Xs [0,1,15,1,0]+ , Xs [0,1,15,2]+ , Xs [0,1,3,0,0]+ , Xs [0,1,3,1]+ , Xs [0,1,4,0]+ , Xs [0,1,14]+ , Xs [0,2,0,0,0,0,0,0]+ , Xs [0,2,0,0,0,0,1]+ , Xs [0,2,0,0,0,1,0]+ , Xs [0,2,0,0,0,2]+ , Xs [0,2,0,0,1,0,0]+ , Xs [0,2,0,0,1,1]+ , Xs [0,2,0,0,2,0]+ , Xs [0,2,0,0,15]+ , Xs [0,2,0,1,0,0,0]+ , Xs [0,2,0,1,0,1]+ , Xs [0,2,0,1,1,0]+ , Xs [0,2,0,1,2]+ , Xs [0,2,0,2,0,0]+ , Xs [0,2,0,2,1]+ , Xs [0,2,0,15,0]+ , Xs [0,2,0,3]+ , Xs [0,2,1,0,0,0,0]+ , Xs [0,2,1,0,0,1]+ , Xs [0,2,1,0,1,0]+ , Xs [0,2,1,0,2]+ , Xs [0,2,1,1,0,0]+ , Xs [0,2,1,1,1]+ , Xs [0,2,1,2,0]+ , Xs [0,2,1,15]+ , Xs [0,2,2,0,0,0]+ , Xs [0,2,2,0,1]+ , Xs [0,2,2,1,0]+ , Xs [0,2,2,2]+ , Xs [0,2,15,0,0]+ , Xs [0,2,15,1]+ , Xs [0,2,3,0]+ , Xs [0,2,4]+ , Xs [0,15,0,0,0,0,0]+ , Xs [0,15,0,0,0,1]+ , Xs [0,15,0,0,1,0]+ , Xs [0,15,0,0,2]+ , Xs [0,15,0,1,0,0]+ , Xs [0,15,0,1,1]+ , Xs [0,15,0,2,0]+ , Xs [0,15,0,15]+ , Xs [0,15,1,0,0,0]+ , Xs [0,15,1,0,1]+ , Xs [0,15,1,1,0]+ , Xs [0,15,1,2]+ , Xs [0,15,2,0,0]+ , Xs [0,15,2,1]+ , Xs [0,15,15,0]+ , Xs [0,15,3]+ , Xs [0,3,0,0,0,0]+ , Xs [0,3,0,0,1]+ , Xs [0,3,0,1,0]+ , Xs [0,3,0,2]+ , Xs [0,3,1,0,0]+ , Xs [0,3,1,1]+ , Xs [0,3,2,0]+ , Xs [0,3,15]+ , Xs [0,4,0,0,0]+ , Xs [0,4,0,1]+ , Xs [0,4,1,0]+ , Xs [0,4,2]+ , Xs [0,14,0,0]+ , Xs [0,14,1]+ , Xs [0,5,0]+ , Xs [0,6]+ , Xs [1,0,0,0,0,0,0,0,0]+ , Xs [1,0,0,0,0,0,0,1]+ , Xs [1,0,0,0,0,0,1,0]+ , Xs [1,0,0,0,0,0,2]+ , Xs [1,0,0,0,0,1,0,0]+ , Xs [1,0,0,0,0,1,1]+ , Xs [1,0,0,0,0,2,0]+ , Xs [1,0,0,0,0,15]+ , Xs [1,0,0,0,1,0,0,0]+ , Xs [1,0,0,0,1,0,1]+ , Xs [1,0,0,0,1,1,0]+ , Xs [1,0,0,0,1,2]+ , Xs [1,0,0,0,2,0,0]+ , Xs [1,0,0,0,2,1]+ , Xs [1,0,0,0,15,0]+ , Xs [1,0,0,0,3]+ , Xs [1,0,0,1,0,0,0,0]+ , Xs [1,0,0,1,0,0,1]+ , Xs [1,0,0,1,0,1,0]+ , Xs [1,0,0,1,0,2]+ , Xs [1,0,0,1,1,0,0]+ , Xs [1,0,0,1,1,1]+ , Xs [1,0,0,1,2,0]+ , Xs [1,0,0,1,15]+ , Xs [1,0,0,2,0,0,0]+ , Xs [1,0,0,2,0,1]+ , Xs [1,0,0,2,1,0]+ , Xs [1,0,0,2,2]+ , Xs [1,0,0,15,0,0]+ , Xs [1,0,0,15,1]+ , Xs [1,0,0,3,0]+ , Xs [1,0,0,4]+ , Xs [1,0,1,0,0,0,0,0]+ , Xs [1,0,1,0,0,0,1]+ , Xs [1,0,1,0,0,1,0]+ , Xs [1,0,1,0,0,2]+ , Xs [1,0,1,0,1,0,0]+ , Xs [1,0,1,0,1,1]+ , Xs [1,0,1,0,2,0]+ , Xs [1,0,1,0,15]+ , Xs [1,0,1,1,0,0,0]+ , Xs [1,0,1,1,0,1]+ , Xs [1,0,1,1,1,0]+ , Xs [1,0,1,1,2]+ , Xs [1,0,1,2,0,0]+ , Xs [1,0,1,2,1]+ , Xs [1,0,1,15,0]+ , Xs [1,0,1,3]+ , Xs [1,0,2,0,0,0,0]+ , Xs [1,0,2,0,0,1]+ , Xs [1,0,2,0,1,0]+ , Xs [1,0,2,0,2]+ , Xs [1,0,2,1,0,0]+ , Xs [1,0,2,1,1]+ , Xs [1,0,2,2,0]+ , Xs [1,0,2,15]+ , Xs [1,0,15,0,0,0]+ , Xs [1,0,15,0,1]+ , Xs [1,0,15,1,0]+ , Xs [1,0,15,2]+ , Xs [1,0,3,0,0]+ , Xs [1,0,3,1]+ , Xs [1,0,4,0]+ , Xs [1,0,14]+ , Xs [1,1,0,0,0,0,0,0]+ , Xs [1,1,0,0,0,0,1]+ , Xs [1,1,0,0,0,1,0]+ , Xs [1,1,0,0,0,2]+ , Xs [1,1,0,0,1,0,0]+ , Xs [1,1,0,0,1,1]+ , Xs [1,1,0,0,2,0]+ , Xs [1,1,0,0,15]+ , Xs [1,1,0,1,0,0,0]+ , Xs [1,1,0,1,0,1]+ , Xs [1,1,0,1,1,0]+ , Xs [1,1,0,1,2]+ , Xs [1,1,0,2,0,0]+ , Xs [1,1,0,2,1]+ , Xs [1,1,0,15,0]+ , Xs [1,1,0,3]+ , Xs [1,1,1,0,0,0,0]+ , Xs [1,1,1,0,0,1]+ , Xs [1,1,1,0,1,0]+ , Xs [1,1,1,0,2]+ , Xs [1,1,1,1,0,0]+ , Xs [1,1,1,1,1]+ , Xs [1,1,1,2,0]+ , Xs [1,1,1,15]+ , Xs [1,1,2,0,0,0]+ , Xs [1,1,2,0,1]+ , Xs [1,1,2,1,0]+ , Xs [1,1,2,2]+ , Xs [1,1,15,0,0]+ , Xs [1,1,15,1]+ , Xs [1,1,3,0]+ , Xs [1,1,4]+ , Xs [1,2,0,0,0,0,0]+ , Xs [1,2,0,0,0,1]+ , Xs [1,2,0,0,1,0]+ , Xs [1,2,0,0,2]+ , Xs [1,2,0,1,0,0]+ , Xs [1,2,0,1,1]+ , Xs [1,2,0,2,0]+ , Xs [1,2,0,15]+ , Xs [1,2,1,0,0,0]+ , Xs [1,2,1,0,1]+ , Xs [1,2,1,1,0]+ , Xs [1,2,1,2]+ , Xs [1,2,2,0,0]+ , Xs [1,2,2,1]+ , Xs [1,2,15,0]+ , Xs [1,2,3]+ , Xs [1,15,0,0,0,0]+ , Xs [1,15,0,0,1]+ , Xs [1,15,0,1,0]+ , Xs [1,15,0,2]+ , Xs [1,15,1,0,0]+ , Xs [1,15,1,1]+ , Xs [1,15,2,0]+ , Xs [1,15,15]+ , Xs [1,3,0,0,0]+ , Xs [1,3,0,1]+ , Xs [1,3,1,0]+ , Xs [1,3,2]+ , Xs [1,4,0,0]+ , Xs [1,4,1]+ , Xs [1,14,0]+ , Xs [1,5]+ , Xs [2,0,0,0,0,0,0,0]+ , Xs [2,0,0,0,0,0,1]+ , Xs [2,0,0,0,0,1,0]+ , Xs [2,0,0,0,0,2]+ , Xs [2,0,0,0,1,0,0]+ , Xs [2,0,0,0,1,1]+ , Xs [2,0,0,0,2,0]+ , Xs [2,0,0,0,15]+ , Xs [2,0,0,1,0,0,0]+ , Xs [2,0,0,1,0,1]+ , Xs [2,0,0,1,1,0]+ , Xs [2,0,0,1,2]+ , Xs [2,0,0,2,0,0]+ , Xs [2,0,0,2,1]+ , Xs [2,0,0,15,0]+ , Xs [2,0,0,3]+ , Xs [2,0,1,0,0,0,0]+ , Xs [2,0,1,0,0,1]+ , Xs [2,0,1,0,1,0]+ , Xs [2,0,1,0,2]+ , Xs [2,0,1,1,0,0]+ , Xs [2,0,1,1,1]+ , Xs [2,0,1,2,0]+ , Xs [2,0,1,15]+ , Xs [2,0,2,0,0,0]+ , Xs [2,0,2,0,1]+ , Xs [2,0,2,1,0]+ , Xs [2,0,2,2]+ , Xs [2,0,15,0,0]+ , Xs [2,0,15,1]+ , Xs [2,0,3,0]+ , Xs [2,0,4]+ , Xs [2,1,0,0,0,0,0]+ , Xs [2,1,0,0,0,1]+ , Xs [2,1,0,0,1,0]+ , Xs [2,1,0,0,2]+ , Xs [2,1,0,1,0,0]+ , Xs [2,1,0,1,1]+ , Xs [2,1,0,2,0]+ , Xs [2,1,0,15]+ , Xs [2,1,1,0,0,0]+ , Xs [2,1,1,0,1]+ , Xs [2,1,1,1,0]+ , Xs [2,1,1,2]+ , Xs [2,1,2,0,0]+ , Xs [2,1,2,1]+ , Xs [2,1,15,0]+ , Xs [2,1,3]+ , Xs [2,2,0,0,0,0]+ , Xs [2,2,0,0,1]+ , Xs [2,2,0,1,0]+ , Xs [2,2,0,2]+ , Xs [2,2,1,0,0]+ , Xs [2,2,1,1]+ , Xs [2,2,2,0]+ , Xs [2,2,15]+ , Xs [2,15,0,0,0]+ , Xs [2,15,0,1]+ , Xs [2,15,1,0]+ , Xs [2,15,2]+ , Xs [2,3,0,0]+ , Xs [2,3,1]+ , Xs [2,4,0]+ , Xs [2,14]+ , Xs [15,0,0,0,0,0,0]+ , Xs [15,0,0,0,0,1]+ , Xs [15,0,0,0,1,0]+ , Xs [15,0,0,0,2]+ , Xs [15,0,0,1,0,0]+ , Xs [15,0,0,1,1]+ , Xs [15,0,0,2,0]+ , Xs [15,0,0,15]+ , Xs [15,0,1,0,0,0]+ , Xs [15,0,1,0,1]+ , Xs [15,0,1,1,0]+ , Xs [15,0,1,2]+ , Xs [15,0,2,0,0]+ , Xs [15,0,2,1]+ , Xs [15,0,15,0]+ , Xs [15,0,3]+ , Xs [15,1,0,0,0,0]+ , Xs [15,1,0,0,1]+ , Xs [15,1,0,1,0]+ , Xs [15,1,0,2]+ , Xs [15,1,1,0,0]+ , Xs [15,1,1,1]+ , Xs [15,1,2,0]+ , Xs [15,1,15]+ , Xs [15,2,0,0,0]+ , Xs [15,2,0,1]+ , Xs [15,2,1,0]+ , Xs [15,2,2]+ , Xs [15,15,0,0]+ , Xs [15,15,1]+ , Xs [15,3,0]+ , Xs [15,4]+ , Xs [3,0,0,0,0,0]+ , Xs [3,0,0,0,1]+ , Xs [3,0,0,1,0]+ , Xs [3,0,0,2]+ , Xs [3,0,1,0,0]+ , Xs [3,0,1,1]+ , Xs [3,0,2,0]+ , Xs [3,0,15]+ , Xs [3,1,0,0,0]+ , Xs [3,1,0,1]+ , Xs [3,1,1,0]+ , Xs [3,1,2]+ , Xs [3,2,0,0]+ , Xs [3,2,1]+ , Xs [3,15,0]+ , Xs [3,3]+ , Xs [4,0,0,0,0]+ , Xs [4,0,0,1]+ , Xs [4,0,1,0]+ , Xs [4,0,2]+ , Xs [4,1,0,0]+ , Xs [4,1,1]+ , Xs [4,2,0]+ , Xs [4,15]+ , Xs [14,0,0,0]+ , Xs [14,0,1]+ , Xs [14,1,0]+ , Xs [14,2]+ , Xs [5,0,0]+ , Xs [5,1]+ , Xs [6,0]+ , Xs [13]+ ]+ , ...+ ]
tests/test-operators.hs view
@@ -109,6 +109,8 @@ , holds n $ okEqOrd -:> float -- fails if NaN is included in enumeration , holds n $ okEqOrd -:> double -- fails if NaN is included in enumeration , holds n $ okEqOrd -:> rational+ , holds n $ okEqOrd -:> nat+ , holds n $ okEqOrd -:> natural , holds n $ okNum -:> int , holds n $ okNum -:> integer@@ -116,6 +118,8 @@ --, holds n $ \x y z -> none isInfinite [x,y,z] ==> okNum x y (z -: float) --, holds n $ \x y z -> none isInfinite [x,y,z] ==> okNum x y (z -: double) , holds n $ okNum -:> rational+ , holds n $ okNum -:> nat+ , holds n $ okNum -:> natural , holds n $ idempotent id -:> int , holds n $ idempotent abs -:> int
tests/test-types.hs view
@@ -26,7 +26,6 @@ tests = [ True - , list `permutation` [minBound..maxBound :: Int1] , list `permutation` [minBound..maxBound :: Int2] , list `permutation` [minBound..maxBound :: Int3]@@ -45,49 +44,49 @@ , list `permutation` [minBound..maxBound :: Nat6] , list `permutation` [minBound..maxBound :: Nat7] - , map (unX) list `permutation` [minBound..maxBound :: Int8]- , map (unX) list `permutation` [minBound..maxBound :: Int4]- , map (unX) list `permutation` [minBound..maxBound :: Int3]+ , map unX list `permutation` [minBound..maxBound :: Int8]+ , map unX list `permutation` [minBound..maxBound :: Int4]+ , map unX list `permutation` [minBound..maxBound :: Int3] -- TODO: make the following commented tests pass:---, map (unX) list `permutation` [minBound..maxBound :: Int2]---, map (unX) list `permutation` [minBound..maxBound :: Int1]- , map (unX) list `permutation` [minBound..maxBound :: Word8]- , map (unX) list `permutation` [minBound..maxBound :: Word4]- , map (unX) list `permutation` [minBound..maxBound :: Word3]- , map (unX) list `permutation` [minBound..maxBound :: Word2]- , map (unX) list `permutation` [minBound..maxBound :: Word1]- , map (unX) list `permutation` [minBound..maxBound :: Nat7]- , map (unX) list `permutation` [minBound..maxBound :: Nat6]- , map (unX) list `permutation` [minBound..maxBound :: Nat5]- , map (unX) list `permutation` [minBound..maxBound :: Nat4]+--, map unX list `permutation` [minBound..maxBound :: Int2]+--, map unX list `permutation` [minBound..maxBound :: Int1]+ , map unX list `permutation` [minBound..maxBound :: Word8]+ , map unX list `permutation` [minBound..maxBound :: Word4]+ , map unX list `permutation` [minBound..maxBound :: Word3]+ , map unX list `permutation` [minBound..maxBound :: Word2]+ , map unX list `permutation` [minBound..maxBound :: Word1]+ , map unX list `permutation` [minBound..maxBound :: Nat7]+ , map unX list `permutation` [minBound..maxBound :: Nat6]+ , map unX list `permutation` [minBound..maxBound :: Nat5]+ , map unX list `permutation` [minBound..maxBound :: Nat4] -- TODO: make the following commented tests pass:---, map (unX) list `permutation` [minBound..maxBound :: Nat3]---, map (unX) list `permutation` [minBound..maxBound :: Nat2]---, map (unX) list `permutation` [minBound..maxBound :: Nat1]+--, map unX list `permutation` [minBound..maxBound :: Nat3]+--, map unX list `permutation` [minBound..maxBound :: Nat2]+--, map unX list `permutation` [minBound..maxBound :: Nat1] - , (prefiX :: [Int8]) `isPrefixOf` map (unX) list- , (prefiX :: [Int16]) `isPrefixOf` map (unX) list- , (prefiX :: [Int32]) `isPrefixOf` map (unX) list- , (prefiX :: [Int64]) `isPrefixOf` map (unX) list- , (prefiX :: [Int]) `isPrefixOf` map (unX) list+ , (prefiX :: [Int8]) `isPrefixOf` map unX list+ , (prefiX :: [Int16]) `isPrefixOf` map unX list+ , (prefiX :: [Int32]) `isPrefixOf` map unX list+ , (prefiX :: [Int64]) `isPrefixOf` map unX list+ , (prefiX :: [Int]) `isPrefixOf` map unX list - , (prefiXN :: [Word8]) `isPrefixOf` map (unX) list- , (prefiXN :: [Word16]) `isPrefixOf` map (unX) list- , (prefiXN :: [Word32]) `isPrefixOf` map (unX) list- , (prefiXN :: [Word64]) `isPrefixOf` map (unX) list- , (prefiXN :: [Word]) `isPrefixOf` map (unX) list+ , (prefiXN :: [Word8]) `isPrefixOf` map unX list+ , (prefiXN :: [Word16]) `isPrefixOf` map unX list+ , (prefiXN :: [Word32]) `isPrefixOf` map unX list+ , (prefiXN :: [Word64]) `isPrefixOf` map unX list+ , (prefiXN :: [Word]) `isPrefixOf` map unX list - , (prefiXs :: [[Int8]]) `isPrefixOf` map (unXs) list- , (prefiXs :: [[Int16]]) `isPrefixOf` map (unXs) list- , (prefiXs :: [[Int32]]) `isPrefixOf` map (unXs) list- , (prefiXs :: [[Int64]]) `isPrefixOf` map (unXs) list- , (prefiXs :: [[Int]]) `isPrefixOf` map (unXs) list+ , (prefiXs :: [[Int8]]) `isPrefixOf` map unXs list+ , (prefiXs :: [[Int16]]) `isPrefixOf` map unXs list+ , (prefiXs :: [[Int32]]) `isPrefixOf` map unXs list+ , (prefiXs :: [[Int64]]) `isPrefixOf` map unXs list+ , (prefiXs :: [[Int]]) `isPrefixOf` map unXs list - , (prefiXNs :: [[Word8]]) `isPrefixOf` map (unXs) list- , (prefiXNs :: [[Word16]]) `isPrefixOf` map (unXs) list- , (prefiXNs :: [[Word32]]) `isPrefixOf` map (unXs) list- , (prefiXNs :: [[Word64]]) `isPrefixOf` map (unXs) list- , (prefiXNs :: [[Word]]) `isPrefixOf` map (unXs) list+ , (prefiXNs :: [[Word8]]) `isPrefixOf` map unXs list+ , (prefiXNs :: [[Word16]]) `isPrefixOf` map unXs list+ , (prefiXNs :: [[Word32]]) `isPrefixOf` map unXs list+ , (prefiXNs :: [[Word64]]) `isPrefixOf` map unXs list+ , (prefiXNs :: [[Word]]) `isPrefixOf` map unXs list , [minBound..maxBound :: Int1] == signedRange 1@@ -112,7 +111,12 @@ , fails 100 (\i -> i + 1 < (i::Int2)) , fails 100 (\i -> i + 1 < (i::Int3)) , fails 100 (\i -> i + 1 < (i::Int4))++ , holds 100 (\(Nat n) -> n >= 0)+ , holds 100 (\(Natural n) -> n >= 0) ]+ where+ unXs (Xs xs) = xs prefiX :: (Bounded a, Integral a) => [a]