packages feed

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