diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -12,29 +12,36 @@
 *.hi
 *.dyn_hi
 *.dyn_o
-tests/test-main
-tests/test-derive
-tests/test-error
-tests/test-fun
-tests/test-funshow
-tests/test-generic
-tests/test-io
-tests/test-most
-tests/test-operators
-tests/test-tiers
-tests/test-types
-tests/test-stats
+TAGS
+tags
+test/main
+test/derive
+test/error
+test/fun
+test/funshow
+test/generic
+test/io
+test/most
+test/operators
+test/tiers
+test/types
+test/stats
 bench/tiers
 bench/tiers-colistable
 bench/tiers-colistable.hs
 bench/tiers-listsofpairs
 bench/tiers-listsofpairs.hs
+bench/tiers-default
+bench/tiers-default.hs
 bench/tiers-funlistable
 bench/tiers-funlistable.hs
 bench/tiers-mixed
 bench/tiers-mixed.hs
+bench/tiers-4cases
+bench/tiers-4cases.hs
 eg/test-sort
 eg/test-bool
+eg/test-float
 eg/test-list
 eg/higher-order
 eg/overflow
diff --git a/.travis.yml b/.travis.yml
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,6 +22,7 @@
 - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
 - ghc --version
 - cabal --version
+- haddock --version
 # Download and unpack the stack executable
 # "Once Travis whitelists the stack.dev files," simply include stack in the
 # addons section. -- https://docs.haskellstack.org/en/stable/travis_ci/
@@ -68,6 +69,7 @@
     - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
     - ghc --version
     - cabal --version
+    - haddock --version
     script:
     - make && make test
     - make haddock HADDOCKFLAGS=
@@ -80,6 +82,7 @@
     - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
     - ghc --version
     - cabal --version
+    - haddock --version
     script:
     - make && make test
     - make haddock HADDOCKFLAGS=
@@ -92,6 +95,7 @@
     - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
     - ghc --version
     - cabal --version
+    - haddock --version
     script:
     - make && make test
     - make haddock HADDOCKFLAGS=
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -3,90 +3,91 @@
 # Copyright:   (c) 2015-2018 Rudy Matela
 # License:     3-Clause BSD  (see the file LICENSE)
 # Maintainer:  Rudy Matela <rudy@matela.com.br>
-TESTS = tests/test-main      \
-        tests/test-derive    \
-        tests/test-error     \
-        tests/test-fun       \
-        tests/test-funshow   \
-        tests/test-generic   \
-        tests/test-io        \
-        tests/test-operators \
-        tests/test-tiers     \
-        tests/test-stats     \
-        tests/test-types
+TESTS = test/main      \
+        test/derive    \
+        test/error     \
+        test/fun       \
+        test/funshow   \
+        test/generic   \
+        test/io        \
+        test/operators \
+        test/tiers     \
+        test/stats     \
+        test/types
 EGS = \
 	eg/overflow \
 	eg/higher-order \
 	eg/test-bool \
+	eg/test-float \
 	eg/test-list \
 	eg/test-sort
 BENCHS = \
-	bench/tiers-colistable \
-	bench/tiers-funlistable \
-	bench/tiers-listsofpairs \
-	bench/tiers-mixed \
+	bench/tiers-default \
+	bench/tiers-4cases \
 	bench/tiers
-GHCIMPORTDIRS = src:tests
-# -dynamic is needed only for src/Test/LeanCheck/Derive.hs and tests/test-derive.hs
+GHCIMPORTDIRS = src:test
+# -dynamic is needed only for src/Test/LeanCheck/Derive.hs and test/derive.hs
 GHCFLAGS = -O2 $(shell grep -q "Arch Linux" /etc/lsb-release && echo -dynamic)
 HADDOCKFLAGS = --no-print-missing-docs
-HUGSIMPORTDIRS = .:./src:./tests:./etc/hugs-backports:/usr/lib/hugs/packages/*
+HUGSIMPORTDIRS = .:./src:./test:./etc/hugs-backports:/usr/lib/hugs/packages/*
 HUGSFLAGS = -98 -h32M
 
 all: mk/toplibs
 
 all-all: mk/All.o
 
-test: $(patsubst %,%.test,$(TESTS)) diff-test
+test: $(patsubst %,%.run,$(TESTS)) diff-test test-sdist
 
 diff-test: diff-test-tiers diff-test-funtiers $(patsubst %,%.diff-test,$(EGS))
 
 update-diff-test: update-diff-test-tiers update-diff-test-funtiers $(patsubst %,%.update-diff-test,$(EGS))
 
-%.test: %
+%.run: %
 	./$<
 
 eg/%.diff-test: eg/%
-	./$< | diff -rud tests/diff/$<.out -
+	./$< | diff -rud test/diff/$<.out -
 
 eg/%.update-diff-test: eg/%
-	./$< >           tests/diff/$<.out
+	./$< >           test/diff/$<.out
 
 # Evaluation order changed from GHC 8.4 to GHC 8.6, so we need to skip the
 # contents of the exception for test-list.diff-test.
 eg/test-list.diff-test: eg/test-list
-	./$< | sed -e "s/Exception '[^']*'/Exception '...'/" | diff -rud tests/diff/$<.out -
+	./$< | sed -e "s/Exception '[^']*'/Exception '...'/" | diff -rud test/diff/$<.out -
 
 eg/test-list.update-diff-test: eg/test-list
-	./$< | sed -e "s/Exception '[^']*'/Exception '...'/" >           tests/diff/$<.out
+	./$< | sed -e "s/Exception '[^']*'/Exception '...'/" >           test/diff/$<.out
 
 clean: clean-hi-o clean-haddock
-	rm -f bench/tiers-colistable.hs
-	rm -f bench/tiers-listsofpairs.hs
-	rm -f bench/tiers-funlistable.hs
-	rm -f bench/tiers-mixed.hs
+	rm -f bench/tiers-default.hs
+	rm -f bench/tiers-4cases.hs
 	rm -f $(TESTS) $(BENCHS) $(EGS) mk/toplibs
 
+full-clean: clean
+	rm -rf .stack-work
+	rm -f tags TAGS
+
 ghci: mk/All.ghci
 
 hugs: src/Test/LeanCheck.hugs
 
 hugs-test: \
-  tests/test-fun.runhugs \
-  tests/test-io.runhugs \
-  tests/test-operators.runhugs \
-  tests/test-stats.runhugs \
-  tests/test-tiers.runhugs \
-  tests/test-main.runhugs
-# tests/test-error.runhugs    # TODO: make this pass
-# tests/test-funshow.runhugs  # TODO: make this pass
-# tests/test-types.runhugs    # TODO: make this pass
+  test/fun.runhugs \
+  test/io.runhugs \
+  test/operators.runhugs \
+  test/stats.runhugs \
+  test/tiers.runhugs \
+  test/main.runhugs
+# test/error.runhugs    # TODO: make this pass
+# test/funshow.runhugs  # TODO: make this pass
+# test/types.runhugs    # TODO: make this pass
 
 install:
 	@echo "use \`cabal install' instead"
 
 test-sdist:
-	./tests/test-sdist
+	./test/sdist
 
 test-via-cabal:
 	cabal test
@@ -130,195 +131,199 @@
 
 diff-test-tiers: bench/tiers
 	# simple types
-	./bench/tiers "()"               | diff -rud tests/diff/tiers.out             -
-	./bench/tiers "Int"              | diff -rud tests/diff/tiers-Int.out         -
-	./bench/tiers "Nat"              | diff -rud tests/diff/tiers-Nat.out         -
-	./bench/tiers "Integer"          | diff -rud tests/diff/tiers-Integer.out     -
-	./bench/tiers "Bool"             | diff -rud tests/diff/tiers-Bool.out        -
-	./bench/tiers "Char"             | diff -rud tests/diff/tiers-Char.out        -
+	./bench/tiers "()"               | diff -rud test/diff/tiers.out             -
+	./bench/tiers "Int"              | diff -rud test/diff/tiers-Int.out         -
+	./bench/tiers "Nat"              | diff -rud test/diff/tiers-Nat.out         -
+	./bench/tiers "Integer"          | diff -rud test/diff/tiers-Integer.out     -
+	./bench/tiers "Bool"             | diff -rud test/diff/tiers-Bool.out        -
+	./bench/tiers "Char"             | diff -rud test/diff/tiers-Char.out        -
+	./bench/tiers "Float"            | diff -rud test/diff/tiers-Float.out       -
+	./bench/tiers "Double"           | diff -rud test/diff/tiers-Double.out      -
+	./bench/tiers "Rational"         | diff -rud test/diff/tiers-Rational.out    -
 	# list s
-	./bench/tiers "[()]"             | diff -rud tests/diff/tiers-Us.out          -
-	./bench/tiers "[Int]"          6 | diff -rud tests/diff/tiers-Ints.out        -
-	./bench/tiers "[Nat]"          6 | diff -rud tests/diff/tiers-Nats.out        -
-	./bench/tiers "[Bool]"         6 | diff -rud tests/diff/tiers-Bools.out       -
-	./bench/tiers "String"         6 | diff -rud tests/diff/tiers-String.out      -
+	./bench/tiers "[()]"             | diff -rud test/diff/tiers-Us.out          -
+	./bench/tiers "[Int]"          6 | diff -rud test/diff/tiers-Ints.out        -
+	./bench/tiers "[Nat]"          6 | diff -rud test/diff/tiers-Nats.out        -
+	./bench/tiers "[Bool]"         6 | diff -rud test/diff/tiers-Bools.out       -
+	./bench/tiers "String"         6 | diff -rud test/diff/tiers-String.out      -
 	# pairs
-	./bench/tiers "(Int,Int)"        | diff -rud tests/diff/tiers-Int,Int.out     -
-	./bench/tiers "(Nat,Nat)"        | diff -rud tests/diff/tiers-Nat,Nat.out     -
-	./bench/tiers "(Int,Int,Int)"  6 | diff -rud tests/diff/tiers-Int,Int,Int.out -
-	./bench/tiers "(Nat,Nat,Nat)"  6 | diff -rud tests/diff/tiers-Nat,Nat,Nat.out -
+	./bench/tiers "(Int,Int)"        | diff -rud test/diff/tiers-Int,Int.out     -
+	./bench/tiers "(Nat,Nat)"        | diff -rud test/diff/tiers-Nat,Nat.out     -
+	./bench/tiers "(Int,Int,Int)"  6 | diff -rud test/diff/tiers-Int,Int,Int.out -
+	./bench/tiers "(Nat,Nat,Nat)"  6 | diff -rud test/diff/tiers-Nat,Nat,Nat.out -
 	# lists & pairs
-	./bench/tiers "[((),())]"        | diff -rud tests/diff/tiers-U,Us.out        -
-	./bench/tiers "([()],[()])"      | diff -rud tests/diff/tiers-Us,Us.out       -
+	./bench/tiers "[((),())]"        | diff -rud test/diff/tiers-U,Us.out        -
+	./bench/tiers "([()],[()])"      | diff -rud test/diff/tiers-Us,Us.out       -
 	# special lists
-	./bench/tiers "Set Bool"         | diff -rud tests/diff/tiers-SetBool.out     -
-	./bench/tiers "Set ()"           | diff -rud tests/diff/tiers-SetU.out        -
-	./bench/tiers "Set Nat"          | diff -rud tests/diff/tiers-SetNat.out      -
-	./bench/tiers "Set Nat2"         | diff -rud tests/diff/tiers-SetNat2.out     -
-	./bench/tiers "Set Nat3"         | diff -rud tests/diff/tiers-SetNat3.out     -
-	./bench/tiers "Bag Bool"         | diff -rud tests/diff/tiers-BagBool.out     -
-	./bench/tiers "Bag ()"           | diff -rud tests/diff/tiers-BagU.out        -
-	./bench/tiers "Bag Nat"          | diff -rud tests/diff/tiers-BagNat.out      -
-	./bench/tiers "Bag Nat2"         | diff -rud tests/diff/tiers-BagNat2.out     -
-	./bench/tiers "Bag Nat3"         | diff -rud tests/diff/tiers-BagNat3.out     -
-	./bench/tiers "NoDup Bool"       | diff -rud tests/diff/tiers-NoDupBool.out   -
-	./bench/tiers "NoDup ()"         | diff -rud tests/diff/tiers-NoDupU.out      -
-	./bench/tiers "NoDup Nat"        | diff -rud tests/diff/tiers-NoDupNat.out    -
-	./bench/tiers "NoDup Nat2"       | diff -rud tests/diff/tiers-NoDupNat2.out   -
-	./bench/tiers "NoDup Nat3"       | diff -rud tests/diff/tiers-NoDupNat3.out   -
-	./bench/tiers "Map Bool Bool"    | diff -rud tests/diff/tiers-MapBoolBool.out -
-	./bench/tiers "Map () ()"        | diff -rud tests/diff/tiers-MapUU.out       -
-	./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 -
+	./bench/tiers "Set Bool"         | diff -rud test/diff/tiers-SetBool.out     -
+	./bench/tiers "Set ()"           | diff -rud test/diff/tiers-SetU.out        -
+	./bench/tiers "Set Nat"          | diff -rud test/diff/tiers-SetNat.out      -
+	./bench/tiers "Set Nat2"         | diff -rud test/diff/tiers-SetNat2.out     -
+	./bench/tiers "Set Nat3"         | diff -rud test/diff/tiers-SetNat3.out     -
+	./bench/tiers "Bag Bool"         | diff -rud test/diff/tiers-BagBool.out     -
+	./bench/tiers "Bag ()"           | diff -rud test/diff/tiers-BagU.out        -
+	./bench/tiers "Bag Nat"          | diff -rud test/diff/tiers-BagNat.out      -
+	./bench/tiers "Bag Nat2"         | diff -rud test/diff/tiers-BagNat2.out     -
+	./bench/tiers "Bag Nat3"         | diff -rud test/diff/tiers-BagNat3.out     -
+	./bench/tiers "NoDup Bool"       | diff -rud test/diff/tiers-NoDupBool.out   -
+	./bench/tiers "NoDup ()"         | diff -rud test/diff/tiers-NoDupU.out      -
+	./bench/tiers "NoDup Nat"        | diff -rud test/diff/tiers-NoDupNat.out    -
+	./bench/tiers "NoDup Nat2"       | diff -rud test/diff/tiers-NoDupNat2.out   -
+	./bench/tiers "NoDup Nat3"       | diff -rud test/diff/tiers-NoDupNat3.out   -
+	./bench/tiers "Map Bool Bool"    | diff -rud test/diff/tiers-MapBoolBool.out -
+	./bench/tiers "Map () ()"        | diff -rud test/diff/tiers-MapUU.out       -
+	./bench/tiers "Map Nat Nat"      | diff -rud test/diff/tiers-MapNatNat.out   -
+	./bench/tiers "Map Nat2 Nat2"    | diff -rud test/diff/tiers-MapNat2Nat2.out -
+	./bench/tiers "Map Nat3 Nat3"    | diff -rud test/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      -
+	./bench/tiers "X Int4"           | diff -rud test/diff/tiers-XInt4.out       -
+	./bench/tiers "X Word4"          | diff -rud test/diff/tiers-XWord4.out      -
+	./bench/tiers "X Nat7"           | diff -rud test/diff/tiers-XNat7.out       -
+	./bench/tiers "Xs Int4"          | diff -rud test/diff/tiers-XsInt4.out      -
+	./bench/tiers "Xs Word4"         | diff -rud test/diff/tiers-XsWord4.out     -
+	./bench/tiers "Xs Nat7"          | diff -rud test/diff/tiers-XsNat7.out      -
 
 update-diff-test-tiers: bench/tiers
 	# simple types
-	./bench/tiers "()"               > tests/diff/tiers.out
-	./bench/tiers "Int"              > tests/diff/tiers-Int.out
-	./bench/tiers "Nat"              > tests/diff/tiers-Nat.out
-	./bench/tiers "Integer"          > tests/diff/tiers-Integer.out
-	./bench/tiers "Bool"             > tests/diff/tiers-Bool.out
-	./bench/tiers "Char"             > tests/diff/tiers-Char.out
+	./bench/tiers "()"               > test/diff/tiers.out
+	./bench/tiers "Int"              > test/diff/tiers-Int.out
+	./bench/tiers "Nat"              > test/diff/tiers-Nat.out
+	./bench/tiers "Integer"          > test/diff/tiers-Integer.out
+	./bench/tiers "Bool"             > test/diff/tiers-Bool.out
+	./bench/tiers "Char"             > test/diff/tiers-Char.out
+	./bench/tiers "Float"            > test/diff/tiers-Float.out
+	./bench/tiers "Double"           > test/diff/tiers-Double.out
+	./bench/tiers "Rational"         > test/diff/tiers-Rational.out
 	# lists
-	./bench/tiers "[()]"             > tests/diff/tiers-Us.out
-	./bench/tiers "[Int]"          6 > tests/diff/tiers-Ints.out
-	./bench/tiers "[Nat]"          6 > tests/diff/tiers-Nats.out
-	./bench/tiers "[Bool]"         6 > tests/diff/tiers-Bools.out
-	./bench/tiers "String"         6 > tests/diff/tiers-String.out
+	./bench/tiers "[()]"             > test/diff/tiers-Us.out
+	./bench/tiers "[Int]"          6 > test/diff/tiers-Ints.out
+	./bench/tiers "[Nat]"          6 > test/diff/tiers-Nats.out
+	./bench/tiers "[Bool]"         6 > test/diff/tiers-Bools.out
+	./bench/tiers "String"         6 > test/diff/tiers-String.out
 	# pairs
-	./bench/tiers "(Int,Int)"        > tests/diff/tiers-Int,Int.out
-	./bench/tiers "(Nat,Nat)"        > tests/diff/tiers-Nat,Nat.out
-	./bench/tiers "(Int,Int,Int)"  6 > tests/diff/tiers-Int,Int,Int.out
-	./bench/tiers "(Nat,Nat,Nat)"  6 > tests/diff/tiers-Nat,Nat,Nat.out
+	./bench/tiers "(Int,Int)"        > test/diff/tiers-Int,Int.out
+	./bench/tiers "(Nat,Nat)"        > test/diff/tiers-Nat,Nat.out
+	./bench/tiers "(Int,Int,Int)"  6 > test/diff/tiers-Int,Int,Int.out
+	./bench/tiers "(Nat,Nat,Nat)"  6 > test/diff/tiers-Nat,Nat,Nat.out
 	# lists & pairs
-	./bench/tiers "[((),())]"        > tests/diff/tiers-U,Us.out
-	./bench/tiers "([()],[()])"      > tests/diff/tiers-Us,Us.out
+	./bench/tiers "[((),())]"        > test/diff/tiers-U,Us.out
+	./bench/tiers "([()],[()])"      > test/diff/tiers-Us,Us.out
 	# special lists
-	./bench/tiers "Set Bool"         > tests/diff/tiers-SetBool.out
-	./bench/tiers "Set ()"           > tests/diff/tiers-SetU.out
-	./bench/tiers "Set Nat"          > tests/diff/tiers-SetNat.out
-	./bench/tiers "Set Nat2"         > tests/diff/tiers-SetNat2.out
-	./bench/tiers "Set Nat3"         > tests/diff/tiers-SetNat3.out
-	./bench/tiers "Bag Bool"         > tests/diff/tiers-BagBool.out
-	./bench/tiers "Bag ()"           > tests/diff/tiers-BagU.out
-	./bench/tiers "Bag Nat"          > tests/diff/tiers-BagNat.out
-	./bench/tiers "Bag Nat2"         > tests/diff/tiers-BagNat2.out
-	./bench/tiers "Bag Nat3"         > tests/diff/tiers-BagNat3.out
-	./bench/tiers "NoDup Bool"       > tests/diff/tiers-NoDupBool.out
-	./bench/tiers "NoDup ()"         > tests/diff/tiers-NoDupU.out
-	./bench/tiers "NoDup Nat"        > tests/diff/tiers-NoDupNat.out
-	./bench/tiers "NoDup Nat2"       > tests/diff/tiers-NoDupNat2.out
-	./bench/tiers "NoDup Nat3"       > tests/diff/tiers-NoDupNat3.out
-	./bench/tiers "Map Bool Bool"    > tests/diff/tiers-MapBoolBool.out
-	./bench/tiers "Map () ()"        > tests/diff/tiers-MapUU.out
-	./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
+	./bench/tiers "Set Bool"         > test/diff/tiers-SetBool.out
+	./bench/tiers "Set ()"           > test/diff/tiers-SetU.out
+	./bench/tiers "Set Nat"          > test/diff/tiers-SetNat.out
+	./bench/tiers "Set Nat2"         > test/diff/tiers-SetNat2.out
+	./bench/tiers "Set Nat3"         > test/diff/tiers-SetNat3.out
+	./bench/tiers "Bag Bool"         > test/diff/tiers-BagBool.out
+	./bench/tiers "Bag ()"           > test/diff/tiers-BagU.out
+	./bench/tiers "Bag Nat"          > test/diff/tiers-BagNat.out
+	./bench/tiers "Bag Nat2"         > test/diff/tiers-BagNat2.out
+	./bench/tiers "Bag Nat3"         > test/diff/tiers-BagNat3.out
+	./bench/tiers "NoDup Bool"       > test/diff/tiers-NoDupBool.out
+	./bench/tiers "NoDup ()"         > test/diff/tiers-NoDupU.out
+	./bench/tiers "NoDup Nat"        > test/diff/tiers-NoDupNat.out
+	./bench/tiers "NoDup Nat2"       > test/diff/tiers-NoDupNat2.out
+	./bench/tiers "NoDup Nat3"       > test/diff/tiers-NoDupNat3.out
+	./bench/tiers "Map Bool Bool"    > test/diff/tiers-MapBoolBool.out
+	./bench/tiers "Map () ()"        > test/diff/tiers-MapUU.out
+	./bench/tiers "Map Nat Nat"      > test/diff/tiers-MapNatNat.out
+	./bench/tiers "Map Nat2 Nat2"    > test/diff/tiers-MapNat2Nat2.out
+	./bench/tiers "Map Nat3 Nat3"    > test/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
+	./bench/tiers "X Int4"           > test/diff/tiers-XInt4.out
+	./bench/tiers "X Word4"          > test/diff/tiers-XWord4.out
+	./bench/tiers "X Nat7"           > test/diff/tiers-XNat7.out
+	./bench/tiers "Xs Int4"          > test/diff/tiers-XsInt4.out
+	./bench/tiers "Xs Word4"         > test/diff/tiers-XsWord4.out
+	./bench/tiers "Xs Nat7"          > test/diff/tiers-XsNat7.out
 
-prepare-depend: bench/tiers-listsofpairs.hs \
-                bench/tiers-colistable.hs \
-                bench/tiers-funlistable.hs \
-                bench/tiers-mixed.hs
+prepare-depend: bench/tiers-default.hs \
+                bench/tiers-4cases.hs
 
 prepare-depend-and-depend: prepare-depend
 	make depend
 
 TLF = "import\ Test.LeanCheck.Function"
 
-bench/tiers-listsofpairs.hs: bench/tiers.hs
-	sed -e "s/$(TLF)$$/$(TLF).Listable.ListsOfPairs\n$(TLF).Show/" $< > $@
-
-bench/tiers-colistable.hs: bench/tiers.hs
-	sed -e "s/$(TLF)$$/$(TLF).Listable.CoListable\n$(TLF).Show/" $< > $@
-
-bench/tiers-funlistable.hs: bench/tiers.hs
-	sed -e "s/$(TLF)$$/$(TLF).Listable.FunListable\n$(TLF).Show/" $< > $@
-
-bench/tiers-mixed.hs: bench/tiers.hs
-	sed -e "s/$(TLF)$$/$(TLF).Listable.Mixed\n$(TLF).Show/" $< > $@
-
-bench/tiers-colistable:   bench/tiers-colistable.hs   src/Test/LeanCheck/Function/Listable/CoListable.hs
+bench/tiers-default.hs: bench/tiers.hs
+	cp $< $@
 
-bench/tiers-listsofpairs: bench/tiers-listsofpairs.hs src/Test/LeanCheck/Function/Listable/ListsOfPairs.hs
+bench/tiers-4cases.hs: bench/tiers.hs
+	sed -e "s/$(TLF)$$/$(TLF).Listable\n$(TLF).Show.FourCases/" $< > $@
 
-bench/tiers-funlistable:  bench/tiers-funlistable.hs  src/Test/LeanCheck/Function/Listable/FunListable.hs
+bench/tiers-default: bench/tiers-default.hs src/Test/LeanCheck/Function/Listable/ListsOfPairs.hs
 
-bench/tiers-mixed:        bench/tiers-mixed.hs        src/Test/LeanCheck/Function/Listable/Mixed.hs
+bench/tiers-4cases: bench/tiers-4cases.hs
 
-diff-test-funtiers: bench/tiers-listsofpairs.diff-test \
-                    bench/tiers-funlistable.diff-test \
-                    bench/tiers-colistable.diff-test \
-                    bench/tiers-mixed.diff-test
+diff-test-funtiers: bench/tiers-default.diff-test \
+                    bench/tiers-4cases.diff-test
 
-update-diff-test-funtiers: bench/tiers-listsofpairs.update-diff-test \
-                           bench/tiers-funlistable.update-diff-test \
-                           bench/tiers-colistable.update-diff-test \
-                           bench/tiers-mixed.update-diff-test
+update-diff-test-funtiers: bench/tiers-default.update-diff-test \
+                           bench/tiers-4cases.update-diff-test
 
 bench/tiers-%.diff-test: bench/tiers-%
 	# functions
-	$< "()->()"           | diff -rud tests/diff/tiers-$*-U-U.out         -
-	$< "Bool->Bool"       | diff -rud tests/diff/tiers-$*-Bool-Bool.out   -
-	$< "Bool->()"         | diff -rud tests/diff/tiers-$*-Bool-U.out      -
-	$< "()->Bool"         | diff -rud tests/diff/tiers-$*-U-Bool.out      -
-	$< "Int->Int"       6 | diff -rud tests/diff/tiers-$*-Int-Int.out     -
-	$< "Nat->Nat"       6 | diff -rud tests/diff/tiers-$*-Nat-Nat.out     -
-	$< "()->Nat"        6 | diff -rud tests/diff/tiers-$*-U-Nat.out       -
-	$< "Nat->()"        6 | diff -rud tests/diff/tiers-$*-Nat-U.out       -
-	$< "Int->Int->Int"  4 | diff -rud tests/diff/tiers-$*-Int-Int-Int.out -
-	$< "Nat->Nat->Nat"  4 | diff -rud tests/diff/tiers-$*-Nat-Nat-Nat.out -
-	$< "(Nat,Nat)->Nat" 4 | diff -rud tests/diff/tiers-$*-Nat,Nat-Nat.out -
-	$< "Maybe Bool->Bool" | diff -rud tests/diff/tiers-$*-MBool-Bool.out  -
-	$< "Bool->Maybe Bool" | diff -rud tests/diff/tiers-$*-Bool-MBool.out  -
-	$< "Maybe Bool->Maybe Bool" | diff -rud tests/diff/tiers-$*-MBool-MBool.out -
+	$< "()->()"           | diff -rud test/diff/tiers-$*-U-U.out         -
+	$< "Bool->Bool"       | diff -rud test/diff/tiers-$*-Bool-Bool.out   -
+	$< "Bool->Bool->Bool" | diff -rud test/diff/tiers-$*-Bool-Bool-Bool.out -
+	$< "Bool->()"         | diff -rud test/diff/tiers-$*-Bool-U.out      -
+	$< "()->Bool"         | diff -rud test/diff/tiers-$*-U-Bool.out      -
+	$< "Int->Int"       9 | diff -rud test/diff/tiers-$*-Int-Int.out     -
+	$< "Nat->Nat"       9 | diff -rud test/diff/tiers-$*-Nat-Nat.out     -
+	$< "()->Nat"        6 | diff -rud test/diff/tiers-$*-U-Nat.out       -
+	$< "Nat->()"        6 | diff -rud test/diff/tiers-$*-Nat-U.out       -
+	$< "Int->Int->Int"  6 | diff -rud test/diff/tiers-$*-Int-Int-Int.out -
+	$< "Nat->Nat->Nat"  6 | diff -rud test/diff/tiers-$*-Nat-Nat-Nat.out -
+	$< "(Nat,Nat)->Nat" 6 | diff -rud test/diff/tiers-$*-Nat,Nat-Nat.out -
+	$< "Maybe Bool->Bool" | diff -rud test/diff/tiers-$*-MBool-Bool.out  -
+	$< "Bool->Maybe Bool" | diff -rud test/diff/tiers-$*-Bool-MBool.out  -
+	$< "Maybe Bool->Maybe Bool" | diff -rud test/diff/tiers-$*-MBool-MBool.out -
+	# functions with mixed arguments
+	$< "Bool->Int->Bool" 6 | diff -rud test/diff/tiers-$*-Bool-Int-Bool.out -
+	$< "Int->Bool->Bool" 6 | diff -rud test/diff/tiers-$*-Int-Bool-Bool.out -
+	# functions with 3 arguments
+	$< "Int->Int->Int->Int"     4 | diff -rud test/diff/tiers-$*-Int-Int-Int-Int.out -
+	$< "Bool->Bool->Bool->Bool"   | diff -rud test/diff/tiers-$*-Bool-Bool-Bool-Bool.out -
 	# functions of lists
-	$< "[Bool]->[Bool]" 4 | diff -rud tests/diff/tiers-$*-Bools-Bools.out -
-	$< "[Nat]->[Nat]"   4 | diff -rud tests/diff/tiers-$*-Nats-Nats.out   -
-	$< "[Int]->[Int]"   4 | diff -rud tests/diff/tiers-$*-Ints-Ints.out   -
+	$< "[Bool]->[Bool]" 6 | diff -rud test/diff/tiers-$*-Bools-Bools.out -
+	$< "[Nat]->[Nat]"   6 | diff -rud test/diff/tiers-$*-Nats-Nats.out   -
+	$< "[Int]->[Int]"   6 | diff -rud test/diff/tiers-$*-Ints-Ints.out   -
 	# more functions
-	$< "Nat2->Nat2"       | diff -rud tests/diff/tiers-$*-Nat2-Nat2.out   -
-	$< "Nat2->Nat3"       | diff -rud tests/diff/tiers-$*-Nat2-Nat3.out   -
-	$< "Nat3->Nat2"       | diff -rud tests/diff/tiers-$*-Nat3-Nat2.out   -
-	$< "Nat3->Nat3"       | diff -rud tests/diff/tiers-$*-Nat3-Nat3.out   -
+	$< "Nat2->Nat2"       | diff -rud test/diff/tiers-$*-Nat2-Nat2.out   -
+	$< "Nat2->Nat3"       | diff -rud test/diff/tiers-$*-Nat2-Nat3.out   -
+	$< "Nat3->Nat2"       | diff -rud test/diff/tiers-$*-Nat3-Nat2.out   -
+	$< "Nat3->Nat3"       | diff -rud test/diff/tiers-$*-Nat3-Nat3.out   -
 
 bench/tiers-%.update-diff-test: bench/tiers-%
 	# functions
-	$< "()->()"           > tests/diff/tiers-$*-U-U.out
-	$< "Bool->Bool"       > tests/diff/tiers-$*-Bool-Bool.out
-	$< "Bool->()"         > tests/diff/tiers-$*-Bool-U.out
-	$< "()->Bool"         > tests/diff/tiers-$*-U-Bool.out
-	$< "Int->Int"       6 > tests/diff/tiers-$*-Int-Int.out
-	$< "Nat->Nat"       6 > tests/diff/tiers-$*-Nat-Nat.out
-	$< "Nat->()"        6 > tests/diff/tiers-$*-Nat-U.out
-	$< "()->Nat"        6 > tests/diff/tiers-$*-U-Nat.out
-	$< "Int->Int->Int"  4 > tests/diff/tiers-$*-Int-Int-Int.out
-	$< "Nat->Nat->Nat"  4 > tests/diff/tiers-$*-Nat-Nat-Nat.out
-	$< "(Nat,Nat)->Nat" 4 > tests/diff/tiers-$*-Nat,Nat-Nat.out
-	$< "Maybe Bool->Bool" > tests/diff/tiers-$*-MBool-Bool.out
-	$< "Bool->Maybe Bool" > tests/diff/tiers-$*-Bool-MBool.out
-	$< "Maybe Bool->Maybe Bool" > tests/diff/tiers-$*-MBool-MBool.out
+	$< "()->()"           > test/diff/tiers-$*-U-U.out
+	$< "Bool->Bool"       > test/diff/tiers-$*-Bool-Bool.out
+	$< "Bool->Bool->Bool" > test/diff/tiers-$*-Bool-Bool-Bool.out
+	$< "Bool->()"         > test/diff/tiers-$*-Bool-U.out
+	$< "()->Bool"         > test/diff/tiers-$*-U-Bool.out
+	$< "Int->Int"       9 > test/diff/tiers-$*-Int-Int.out
+	$< "Nat->Nat"       9 > test/diff/tiers-$*-Nat-Nat.out
+	$< "Nat->()"        6 > test/diff/tiers-$*-Nat-U.out
+	$< "()->Nat"        6 > test/diff/tiers-$*-U-Nat.out
+	$< "Int->Int->Int"  6 > test/diff/tiers-$*-Int-Int-Int.out
+	$< "Nat->Nat->Nat"  6 > test/diff/tiers-$*-Nat-Nat-Nat.out
+	$< "(Nat,Nat)->Nat" 6 > test/diff/tiers-$*-Nat,Nat-Nat.out
+	$< "Maybe Bool->Bool" > test/diff/tiers-$*-MBool-Bool.out
+	$< "Bool->Maybe Bool" > test/diff/tiers-$*-Bool-MBool.out
+	$< "Maybe Bool->Maybe Bool" > test/diff/tiers-$*-MBool-MBool.out
+	# functions with mixed arguments
+	$< "Bool->Int->Bool" 6 > test/diff/tiers-$*-Bool-Int-Bool.out
+	$< "Int->Bool->Bool" 6 > test/diff/tiers-$*-Int-Bool-Bool.out
+	# functions with 3 arguments
+	$< "Int->Int->Int->Int"     4 > test/diff/tiers-$*-Int-Int-Int-Int.out
+	$< "Bool->Bool->Bool->Bool"   > test/diff/tiers-$*-Bool-Bool-Bool-Bool.out
 	# functions of lists
-	$< "[()]->[()]"     4 > tests/diff/tiers-$*-Us-Us.out
-	$< "[Bool]->[Bool]" 4 > tests/diff/tiers-$*-Bools-Bools.out
-	$< "[Nat]->[Nat]"   4 > tests/diff/tiers-$*-Nats-Nats.out
-	$< "[Int]->[Int]"   4 > tests/diff/tiers-$*-Ints-Ints.out
+	$< "[()]->[()]"     6 > test/diff/tiers-$*-Us-Us.out
+	$< "[Bool]->[Bool]" 6 > test/diff/tiers-$*-Bools-Bools.out
+	$< "[Nat]->[Nat]"   6 > test/diff/tiers-$*-Nats-Nats.out
+	$< "[Int]->[Int]"   6 > test/diff/tiers-$*-Ints-Ints.out
 	# more functions
-	$< "Nat2->Nat2"       > tests/diff/tiers-$*-Nat2-Nat2.out
-	$< "Nat2->Nat3"       > tests/diff/tiers-$*-Nat2-Nat3.out
-	$< "Nat3->Nat2"       > tests/diff/tiers-$*-Nat3-Nat2.out
-	$< "Nat3->Nat3"       > tests/diff/tiers-$*-Nat3-Nat3.out
+	$< "Nat2->Nat2"       > test/diff/tiers-$*-Nat2-Nat2.out
+	$< "Nat2->Nat3"       > test/diff/tiers-$*-Nat2-Nat3.out
+	$< "Nat3->Nat2"       > test/diff/tiers-$*-Nat3-Nat2.out
+	$< "Nat3->Nat3"       > test/diff/tiers-$*-Nat3-Nat3.out
diff --git a/TODO.md b/TODO.md
--- a/TODO.md
+++ b/TODO.md
@@ -18,50 +18,8 @@
 * on data-invariant.md, write missing section;
 
 
+
 other improvements
 ------------------
 
 * implement `conditionStatsT` (see `classStatsT`)
-
-
-later
------
-
-* implement stub `Test.LeanCheck.Function.*` modules;
-
-* somehow, improve the improve the enumeration of `Char`s:
-
-   list = [ ['a'], ['b','c'], ['d','e','f'], ... ]
-      ||| [ [' '], ['\n'] ]
-      ||| [ ['0'], ['1'], ['2'], ...]
-      ||| ...
-     where
-     ||| is something that interleaves tiers of different lists...
-
-* further improve showing of functions, indead of showing:
-
-    \p q -> case (p,q) of
-            (False,False) -> False
-            (False,True)  -> False
-            (True,False)  -> True
-            (True,True)   -> False
-
-  actually show just:
-
-    \p q -> case (p,q) of
-            (True,False)  -> True
-            _             -> False
-
-  Some thinking may have to be done for:
-
-    \x y -> case (x,y) of
-            (0,0) -> 0
-            (0,1) -> 0
-            (1,1) -> 1
-            (1,0) -> 1
-            (0,2) -> 0
-            (1,1) -> 1
-            (2,0) -> 1
-            ...
-
-  Where: `const (const 1) ->/ [(1,const 0)]`.
diff --git a/bench/tiers.hs b/bench/tiers.hs
--- a/bench/tiers.hs
+++ b/bench/tiers.hs
@@ -83,6 +83,9 @@
     "Integer"          -> put t n (u :: Integer              )
     "Bool"             -> put t n (u :: Bool                 )
     "Char"             -> put t n (u :: Char                 )
+    "Float"            -> put t n (u :: Float                )
+    "Double"           -> put t n (u :: Double               )
+    "Rational"         -> put t n (u :: Rational             )
     -- lists
     "[()]"             -> put t n (u :: [()]                 )
     "[Int]"            -> put t n (u :: [Int]                )
@@ -135,6 +138,12 @@
     "Nat2->Nat3"       -> put t n (u :: Nat2 -> Nat3         )
     "Nat3->Nat2"       -> put t n (u :: Nat3 -> Nat2         )
     "Nat3->Nat3"       -> put t n (u :: Nat3 -> Nat3         )
+    -- functions with mixed arguments
+    "Bool->Int->Bool"  -> put t n (u :: Bool -> Int -> Bool  )
+    "Int->Bool->Bool"  -> put t n (u :: Int -> Bool -> Bool  )
+    -- functions with 3 arguments
+    "Int->Int->Int->Int"     -> put t n (u :: Int -> Int -> Int -> Int)
+    "Bool->Bool->Bool->Bool" -> put t n (u :: Bool -> Bool -> Bool -> Bool)
     -- special lists
     "Set Bool"         -> put t n (u :: Set Bool             )
     "Set ()"           -> put t n (u :: Set ()               )
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,6 +1,21 @@
 Changelog for LeanCheck
 =======================
 
+v0.8.0
+------
+
+* export `tiersFractional` from `Core` and main module;
+* improve `Listable` instance for `Float`s and `Double`s;
+* improve `Show` instance for functions;
+* improve Haddock documentation;
+* remove experimental function enumeration modules,
+  in favour of the working `ListsOfPairs` enumeration;
+* add special `String` and `Char` types to `Utils.Types`;
+* fix bug in the `Natural` type of the `Utils.Types` modules;
+* force non-negativity in `Natural` and `Nat` types from `Utils.Types`;
+* rename some exported symbols in the `ShowFunction` module;
+* improve tests of LeanCheck itself.
+
 
 v0.7.7
 ------
diff --git a/eg/higher-order.hs b/eg/higher-order.hs
--- a/eg/higher-order.hs
+++ b/eg/higher-order.hs
@@ -3,18 +3,18 @@
 
 type A = Int
 
-prop_foldlFoldr :: (A -> A -> A) -> A -> [A] -> Bool
-prop_foldlFoldr f z xs  =  foldr f z xs == foldl f z xs
+prop_foldlr :: (A -> A -> A) -> A -> [A] -> Bool
+prop_foldlr f z xs  =  foldr f z xs == foldl f z xs
 
-prop_foldl1Foldr1Reverse :: (A -> A -> A) -> [A] -> Bool
-prop_foldl1Foldr1Reverse f xs  =
-  not (null xs) ==> foldl1 f xs ==  foldr1 f (reverse xs)
+-- correct version of the property above
+prop_foldlr' :: (A -> A -> A) -> A -> [A] -> Bool
+prop_foldlr' f z xs  =  foldl (flip f) z (reverse xs) == foldr f z xs
 
 prop_mapFilter :: (A -> A) -> (A -> Bool) -> [A] -> Bool
 prop_mapFilter f p xs  =  filter p (map f xs) == map f (filter p xs)
 
 main :: IO ()
 main = do
-  check prop_foldlFoldr
-  check prop_foldl1Foldr1Reverse
+  check prop_foldlr
+  check prop_foldlr'
   check prop_mapFilter
diff --git a/eg/test-float.hs b/eg/test-float.hs
new file mode 100644
--- /dev/null
+++ b/eg/test-float.hs
@@ -0,0 +1,24 @@
+-- test-list.hs -- example program, testing Float using LeanCheck
+--
+-- Copyright (c) 2017-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test.LeanCheck
+
+main :: IO ()
+main = do
+  -- identities on floats
+  -- some of these properties fail due to rounding errors
+  checkFor n $ \x y -> not (isInfinite y) ==> x - y + y == (x::Float)
+  checkFor n $ \x y -> not (isInfinite y) ==> x + y - y == (x::Float)
+  checkFor n $ \x y -> y /= 0 && not (isInfinite y) ==> x * y / y == (x::Float)
+  checkFor n $ \x y -> y /= 0 && not (isInfinite y) ==> x / y * y == (x::Float)
+  checkFor n $ \x -> x + x == x * (2::Float)
+  checkFor n $ \x -> x + x + x == x * (3::Float)
+  checkFor n $ \x -> x + x + x + x == x * (4::Float)
+  checkFor n $ \x -> x + x + x + x + x == x * (5::Float)
+  checkFor n $ \x -> x + x + x + x + x + x == x * (6::Float)
+  checkFor n $ \() -> 0.1 + 0.1 + 0.1 == 0.3
+  checkFor n $ \x -> x >= 0 ==> (x ** 2) ** 0.5 == (x::Float)
+  checkFor n $ \x -> x >= 0 ==> (x ** 0.5) ** 2 == (x::Float)
+  where
+  n = 10000
diff --git a/leancheck.cabal b/leancheck.cabal
--- a/leancheck.cabal
+++ b/leancheck.cabal
@@ -11,7 +11,7 @@
 -- this cabal file too complicated.  -- Rudy
 
 name:                leancheck
-version:             0.7.7
+version:             0.8.0
 synopsis:            Enumerative property-based testing
 description:
   LeanCheck is a simple enumerative property-based testing library.
@@ -48,6 +48,7 @@
                   , eg/higher-order.hs
                   , eg/overflow.hs
                   , eg/test-bool.hs
+                  , eg/test-float.hs
                   , eg/test-list.hs
                   , eg/test-sort.hs
                   , etc/hugs-backports/Data/Function.hs
@@ -58,9 +59,9 @@
                   , mk/haddock-i
                   , mk/haskell.mk
                   , stack.yaml
-                  , tests/diff/*.out
-                  , tests/diff/eg/*.out
-                  , tests/test-sdist
+                  , test/diff/*.out
+                  , test/diff/eg/*.out
+                  , test/sdist
 tested-with: GHC==8.4, GHC==8.2, GHC==8.0, GHC==7.10, GHC==7.8, GHC==7.6, GHC==7.4
 
 
@@ -71,7 +72,7 @@
 source-repository this
   type:            git
   location:        https://github.com/rudymatela/leancheck
-  tag:             v0.7.7
+  tag:             v0.8.0
 
 library
   exposed-modules: Test.LeanCheck
@@ -90,14 +91,11 @@
                  , Test.LeanCheck.Function
                  , Test.LeanCheck.Function.Eq
                  , Test.LeanCheck.Function.Show
+                 , Test.LeanCheck.Function.Show.EightLines
+                 , Test.LeanCheck.Function.Show.FourCases
                  , Test.LeanCheck.Function.Listable
                  , Test.LeanCheck.Function.Listable.ListsOfPairs
-                 , Test.LeanCheck.Function.Listable.FunListable
-                 , Test.LeanCheck.Function.Listable.CoListable
-                 , Test.LeanCheck.Function.Listable.Periodic
-                 , Test.LeanCheck.Function.Listable.Mixed
                  , Test.LeanCheck.Function.ListsOfPairs
-                 , Test.LeanCheck.Function.CoListable
                  , Test.LeanCheck.Function.ShowFunction
   hs-source-dirs:      src
   build-depends:     base >= 4 && < 5, template-haskell
@@ -107,57 +105,57 @@
 
 test-suite main
   type:                exitcode-stdio-1.0
-  main-is:             test-main.hs
+  main-is:             main.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
 
 test-suite types
   type:                exitcode-stdio-1.0
-  main-is:             test-types.hs
+  main-is:             types.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
 
 test-suite tiers
   type:                exitcode-stdio-1.0
-  main-is:             test-tiers.hs
+  main-is:             tiers.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
 
 test-suite operators
   type:                exitcode-stdio-1.0
-  main-is:             test-operators.hs
+  main-is:             operators.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
 
 test-suite derive
   type:                exitcode-stdio-1.0
-  main-is:             test-derive.hs
+  main-is:             derive.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
 
 test-suite error
   type:                exitcode-stdio-1.0
-  main-is:             test-error.hs
+  main-is:             error.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
 
 test-suite generic
   type:                exitcode-stdio-1.0
-  main-is:             test-generic.hs
+  main-is:             generic.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   if impl(ghc < 7.6)
     build-depends:     ghc-prim
@@ -165,32 +163,32 @@
 
 test-suite io
   type:                exitcode-stdio-1.0
-  main-is:             test-io.hs
+  main-is:             io.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
 
 test-suite fun
   type:                exitcode-stdio-1.0
-  main-is:             test-fun.hs
+  main-is:             fun.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
 
 test-suite funshow
   type:                exitcode-stdio-1.0
-  main-is:             test-funshow.hs
+  main-is:             funshow.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
 
 test-suite stats
   type:                exitcode-stdio-1.0
-  main-is:             test-stats.hs
+  main-is:             stats.hs
   other-modules:       Test
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, leancheck
   default-language:    Haskell2010
diff --git a/mk/All.hs b/mk/All.hs
--- a/mk/All.hs
+++ b/mk/All.hs
@@ -5,6 +5,7 @@
   , module Test.LeanCheck.Utils
   , module Test.LeanCheck.Tiers
   , module Test.LeanCheck.Generic
+  , module Test.LeanCheck.Function
   )
 where
 
@@ -14,3 +15,4 @@
 import Test.LeanCheck.Utils
 import Test.LeanCheck.Tiers
 import Test.LeanCheck.Generic
+import Test.LeanCheck.Function
diff --git a/mk/depend.mk b/mk/depend.mk
--- a/mk/depend.mk
+++ b/mk/depend.mk
@@ -1,97 +1,57 @@
-bench/tiers: \
-  bench/tiers.hs \
-  mk/toplibs
-bench/tiers-colistable: \
-  bench/tiers-colistable.hs \
+bench/tiers-4cases: \
+  bench/tiers-4cases.hs \
   mk/toplibs
-bench/tiers-colistable.o: \
+bench/tiers-4cases.o: \
   src/Test/LeanCheck/Utils/Types.hs \
-  src/Test/LeanCheck/Utils/TypeBinding.hs \
-  src/Test/LeanCheck/Utils.hs \
-  src/Test/LeanCheck/Utils/Operators.hs \
   src/Test/LeanCheck/Tiers.hs \
   src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
-  src/Test/LeanCheck/Function/Show.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
-  src/Test/LeanCheck/Function/Listable/CoListable.hs \
-  src/Test/LeanCheck/Function/Eq.hs \
-  src/Test/LeanCheck/Function/CoListable.hs \
-  src/Test/LeanCheck/Error.hs \
-  src/Test/LeanCheck/Derive.hs \
-  src/Test/LeanCheck/Core.hs \
-  src/Test/LeanCheck/Basic.hs \
-  bench/tiers-colistable.hs
-bench/tiers-funlistable: \
-  bench/tiers-funlistable.hs \
-  mk/toplibs
-bench/tiers-funlistable.o: \
-  src/Test/LeanCheck/Utils/Types.hs \
-  src/Test/LeanCheck/Utils/TypeBinding.hs \
-  src/Test/LeanCheck/Utils.hs \
-  src/Test/LeanCheck/Utils/Operators.hs \
-  src/Test/LeanCheck/Tiers.hs \
-  src/Test/LeanCheck/Stats.hs \
-  src/Test/LeanCheck.hs \
-  src/Test/LeanCheck/IO.hs \
-  src/Test/LeanCheck/Function/Show.hs \
-  src/Test/LeanCheck/Function/ShowFunction.hs \
-  src/Test/LeanCheck/Function/Listable/FunListable.hs \
-  src/Test/LeanCheck/Function/Eq.hs \
-  src/Test/LeanCheck/Error.hs \
-  src/Test/LeanCheck/Derive.hs \
-  src/Test/LeanCheck/Core.hs \
-  src/Test/LeanCheck/Basic.hs \
-  bench/tiers-funlistable.hs
-bench/tiers-listsofpairs: \
-  bench/tiers-listsofpairs.hs \
-  mk/toplibs
-bench/tiers-listsofpairs.o: \
-  src/Test/LeanCheck/Utils/Types.hs \
-  src/Test/LeanCheck/Tiers.hs \
-  src/Test/LeanCheck.hs \
-  src/Test/LeanCheck/IO.hs \
-  src/Test/LeanCheck/Function/Show.hs \
-  src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/FourCases.hs \
   src/Test/LeanCheck/Function/ListsOfPairs.hs \
+  src/Test/LeanCheck/Function/Listable.hs \
   src/Test/LeanCheck/Function/Listable/ListsOfPairs.hs \
   src/Test/LeanCheck/Function/Eq.hs \
   src/Test/LeanCheck/Error.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs \
-  bench/tiers-listsofpairs.hs
-bench/tiers-mixed: \
-  bench/tiers-mixed.hs \
+  bench/tiers-4cases.hs
+bench/tiers: \
+  bench/tiers.hs \
   mk/toplibs
-bench/tiers-mixed.o: \
+bench/tiers-default: \
+  bench/tiers-default.hs \
+  mk/toplibs
+bench/tiers-default.o: \
   src/Test/LeanCheck/Utils/Types.hs \
-  src/Test/LeanCheck/Utils/TypeBinding.hs \
-  src/Test/LeanCheck/Utils.hs \
-  src/Test/LeanCheck/Utils/Operators.hs \
   src/Test/LeanCheck/Tiers.hs \
   src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Function/Show.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
+  src/Test/LeanCheck/Function.hs \
   src/Test/LeanCheck/Function/ListsOfPairs.hs \
-  src/Test/LeanCheck/Function/Listable/Mixed.hs \
+  src/Test/LeanCheck/Function/Listable.hs \
+  src/Test/LeanCheck/Function/Listable/ListsOfPairs.hs \
   src/Test/LeanCheck/Function/Eq.hs \
-  src/Test/LeanCheck/Function/CoListable.hs \
   src/Test/LeanCheck/Error.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs \
-  bench/tiers-mixed.hs
+  bench/tiers-default.hs
 bench/tiers.o: \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Function/Show.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
   src/Test/LeanCheck/Function.hs \
   src/Test/LeanCheck/Function/ListsOfPairs.hs \
   src/Test/LeanCheck/Function/Listable.hs \
@@ -108,10 +68,12 @@
 eg/higher-order.o: \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Function/Show.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
   src/Test/LeanCheck/Function.hs \
   src/Test/LeanCheck/Function/ListsOfPairs.hs \
   src/Test/LeanCheck/Function/Listable.hs \
@@ -151,6 +113,7 @@
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Function/Show.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
   src/Test/LeanCheck/Function.hs \
   src/Test/LeanCheck/Function/ListsOfPairs.hs \
   src/Test/LeanCheck/Function/Listable.hs \
@@ -160,6 +123,17 @@
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs \
   eg/test-bool.hs
+eg/test-float: \
+  eg/test-float.hs \
+  mk/toplibs
+eg/test-float.o: \
+  src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck.hs \
+  src/Test/LeanCheck/IO.hs \
+  src/Test/LeanCheck/Derive.hs \
+  src/Test/LeanCheck/Core.hs \
+  src/Test/LeanCheck/Basic.hs \
+  eg/test-float.hs
 eg/test-list: \
   eg/test-list.hs \
   mk/toplibs
@@ -194,6 +168,14 @@
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Generic.hs \
+  src/Test/LeanCheck/Function/Show.hs \
+  src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
+  src/Test/LeanCheck/Function.hs \
+  src/Test/LeanCheck/Function/ListsOfPairs.hs \
+  src/Test/LeanCheck/Function/Listable.hs \
+  src/Test/LeanCheck/Function/Listable/ListsOfPairs.hs \
+  src/Test/LeanCheck/Error.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs \
@@ -210,6 +192,7 @@
   src/Test/LeanCheck/Generic.hs \
   src/Test/LeanCheck/Function/Show.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
   src/Test/LeanCheck/Function.hs \
   src/Test/LeanCheck/Function/ListsOfPairs.hs \
   src/Test/LeanCheck/Function/Listable.hs \
@@ -241,117 +224,83 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-src/Test/LeanCheck/Function/CoListable.o: \
-  src/Test/LeanCheck/Utils/Types.hs \
-  src/Test/LeanCheck/Utils/TypeBinding.hs \
-  src/Test/LeanCheck/Utils.hs \
-  src/Test/LeanCheck/Utils/Operators.hs \
-  src/Test/LeanCheck/Tiers.hs \
-  src/Test/LeanCheck/Stats.hs \
-  src/Test/LeanCheck.hs \
-  src/Test/LeanCheck/IO.hs \
-  src/Test/LeanCheck/Function/CoListable.hs \
-  src/Test/LeanCheck/Derive.hs \
-  src/Test/LeanCheck/Core.hs \
-  src/Test/LeanCheck/Basic.hs
 src/Test/LeanCheck/Function/Eq.o: \
   src/Test/LeanCheck/Function/Eq.hs \
   src/Test/LeanCheck/Core.hs
-src/Test/LeanCheck/Function/Listable/CoListable.o: \
-  src/Test/LeanCheck/Utils/Types.hs \
-  src/Test/LeanCheck/Utils/TypeBinding.hs \
-  src/Test/LeanCheck/Utils.hs \
-  src/Test/LeanCheck/Utils/Operators.hs \
+src/Test/LeanCheck/Function/Listable/ListsOfPairs.o: \
   src/Test/LeanCheck/Tiers.hs \
-  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
-  src/Test/LeanCheck/Function/Listable/CoListable.hs \
-  src/Test/LeanCheck/Function/CoListable.hs \
-  src/Test/LeanCheck/Derive.hs \
-  src/Test/LeanCheck/Core.hs \
-  src/Test/LeanCheck/Basic.hs
-src/Test/LeanCheck/Function/Listable/FunListable.o: \
-  src/Test/LeanCheck/Utils/Types.hs \
-  src/Test/LeanCheck/Utils/TypeBinding.hs \
-  src/Test/LeanCheck/Utils.hs \
-  src/Test/LeanCheck/Utils/Operators.hs \
-  src/Test/LeanCheck/Tiers.hs \
-  src/Test/LeanCheck/Stats.hs \
-  src/Test/LeanCheck.hs \
-  src/Test/LeanCheck/IO.hs \
-  src/Test/LeanCheck/Function/Listable/FunListable.hs \
+  src/Test/LeanCheck/Function/ListsOfPairs.hs \
+  src/Test/LeanCheck/Function/Listable/ListsOfPairs.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-src/Test/LeanCheck/Function/Listable/ListsOfPairs.o: \
+src/Test/LeanCheck/Function/Listable.o: \
   src/Test/LeanCheck/Tiers.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Function/ListsOfPairs.hs \
+  src/Test/LeanCheck/Function/Listable.hs \
   src/Test/LeanCheck/Function/Listable/ListsOfPairs.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-src/Test/LeanCheck/Function/Listable/Mixed.o: \
-  src/Test/LeanCheck/Utils/Types.hs \
-  src/Test/LeanCheck/Utils/TypeBinding.hs \
-  src/Test/LeanCheck/Utils.hs \
-  src/Test/LeanCheck/Utils/Operators.hs \
+src/Test/LeanCheck/Function/ListsOfPairs.o: \
   src/Test/LeanCheck/Tiers.hs \
-  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Function/ListsOfPairs.hs \
-  src/Test/LeanCheck/Function/Listable/Mixed.hs \
-  src/Test/LeanCheck/Function/CoListable.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-src/Test/LeanCheck/Function/Listable.o: \
+src/Test/LeanCheck/Function.o: \
+  src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
+  src/Test/LeanCheck/Function/Show.hs \
+  src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
+  src/Test/LeanCheck/Function.hs \
   src/Test/LeanCheck/Function/ListsOfPairs.hs \
   src/Test/LeanCheck/Function/Listable.hs \
   src/Test/LeanCheck/Function/Listable/ListsOfPairs.hs \
-  src/Test/LeanCheck/Derive.hs \
-  src/Test/LeanCheck/Core.hs \
-  src/Test/LeanCheck/Basic.hs
-src/Test/LeanCheck/Function/Listable/Periodic.o: \
-  src/Test/LeanCheck/Tiers.hs \
-  src/Test/LeanCheck.hs \
-  src/Test/LeanCheck/IO.hs \
-  src/Test/LeanCheck/Function/Listable/Periodic.hs \
+  src/Test/LeanCheck/Error.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-src/Test/LeanCheck/Function/ListsOfPairs.o: \
+src/Test/LeanCheck/Function/Show/EightLines.o: \
+  src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
-  src/Test/LeanCheck/Function/ListsOfPairs.hs \
+  src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
+  src/Test/LeanCheck/Error.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-src/Test/LeanCheck/Function.o: \
+src/Test/LeanCheck/Function/Show/FourCases.o: \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
-  src/Test/LeanCheck/Function/Show.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
-  src/Test/LeanCheck/Function.hs \
-  src/Test/LeanCheck/Function/ListsOfPairs.hs \
-  src/Test/LeanCheck/Function/Listable.hs \
-  src/Test/LeanCheck/Function/Listable/ListsOfPairs.hs \
+  src/Test/LeanCheck/Function/Show/FourCases.hs \
   src/Test/LeanCheck/Error.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
+src/Test/LeanCheck/Function/ShowFunction: \
+  mk/toplibs
 src/Test/LeanCheck/Function/ShowFunction.o: \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
@@ -362,10 +311,12 @@
 src/Test/LeanCheck/Function/Show.o: \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Function/Show.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
   src/Test/LeanCheck/Error.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
@@ -427,9 +378,9 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-derive.o: \
-  tests/Test.hs \
-  tests/test-derive.hs \
+test/derive.o: \
+  test/Test.hs \
+  test/derive.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Utils/Operators.hs \
   src/Test/LeanCheck/Tiers.hs \
@@ -438,13 +389,13 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-derive: \
-  tests/Test.hs \
-  tests/test-derive.hs \
+test/derive: \
+  test/Test.hs \
+  test/derive.hs \
   mk/toplibs
-tests/test-error.o: \
-  tests/Test.hs \
-  tests/test-error.hs \
+test/error.o: \
+  test/Test.hs \
+  test/error.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
   src/Test/LeanCheck.hs \
@@ -453,13 +404,13 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-error: \
-  tests/Test.hs \
-  tests/test-error.hs \
+test/error: \
+  test/Test.hs \
+  test/error.hs \
   mk/toplibs
-tests/test-fun.o: \
-  tests/Test.hs \
-  tests/test-fun.hs \
+test/fun.o: \
+  test/Test.hs \
+  test/fun.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Utils/TypeBinding.hs \
   src/Test/LeanCheck/Utils.hs \
@@ -472,31 +423,33 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-funshow.o: \
-  tests/Test.hs \
-  tests/test-funshow.hs \
+test/funshow.o: \
+  test/Test.hs \
+  test/funshow.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Utils/TypeBinding.hs \
   src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Function/Show.hs \
   src/Test/LeanCheck/Function/ShowFunction.hs \
+  src/Test/LeanCheck/Function/Show/EightLines.hs \
   src/Test/LeanCheck/Error.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-funshow: \
-  tests/Test.hs \
-  tests/test-funshow.hs \
+test/funshow: \
+  test/Test.hs \
+  test/funshow.hs \
   mk/toplibs
-tests/test-fun: \
-  tests/Test.hs \
-  tests/test-fun.hs \
+test/fun: \
+  test/Test.hs \
+  test/fun.hs \
   mk/toplibs
-tests/test-generic.o: \
-  tests/Test.hs \
-  tests/test-generic.hs \
+test/generic.o: \
+  test/Test.hs \
+  test/generic.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Utils/Operators.hs \
   src/Test/LeanCheck/Tiers.hs \
@@ -506,13 +459,13 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-generic: \
-  tests/Test.hs \
-  tests/test-generic.hs \
+test/generic: \
+  test/Test.hs \
+  test/generic.hs \
   mk/toplibs
-tests/test-io.o: \
-  tests/Test.hs \
-  tests/test-io.hs \
+test/io.o: \
+  test/Test.hs \
+  test/io.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
   src/Test/LeanCheck.hs \
@@ -520,13 +473,13 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-io: \
-  tests/Test.hs \
-  tests/test-io.hs \
+test/io: \
+  test/Test.hs \
+  test/io.hs \
   mk/toplibs
-tests/test-main.o: \
-  tests/Test.hs \
-  tests/test-main.hs \
+test/main.o: \
+  test/Test.hs \
+  test/main.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Utils/TypeBinding.hs \
   src/Test/LeanCheck/Utils.hs \
@@ -538,13 +491,13 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-main: \
-  tests/Test.hs \
-  tests/test-main.hs \
+test/main: \
+  test/Test.hs \
+  test/main.hs \
   mk/toplibs
-tests/test-operators.o: \
-  tests/Test.hs \
-  tests/test-operators.hs \
+test/operators.o: \
+  test/Test.hs \
+  test/operators.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Utils/TypeBinding.hs \
   src/Test/LeanCheck/Utils.hs \
@@ -556,37 +509,37 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-operators: \
-  tests/Test.hs \
-  tests/test-operators.hs \
+test/operators: \
+  test/Test.hs \
+  test/operators.hs \
   mk/toplibs
-tests/Test.o: \
-  tests/Test.hs \
+test/stats.o: \
+  test/Test.hs \
+  test/stats.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
+  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-stats.o: \
-  tests/test-stats.hs \
-  tests/Test.hs \
+test/stats: \
+  test/Test.hs \
+  test/stats.hs \
+  mk/toplibs
+test/Test.o: \
+  test/Test.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
-  src/Test/LeanCheck/Stats.hs \
   src/Test/LeanCheck.hs \
   src/Test/LeanCheck/IO.hs \
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-stats: \
-  tests/test-stats.hs \
-  tests/Test.hs \
-  mk/toplibs
-tests/test-tiers.o: \
-  tests/test-tiers.hs \
-  tests/Test.hs \
+test/tiers.o: \
+  test/tiers.hs \
+  test/Test.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Utils/TypeBinding.hs \
   src/Test/LeanCheck/Utils.hs \
@@ -598,13 +551,13 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-tiers: \
-  tests/test-tiers.hs \
-  tests/Test.hs \
+test/tiers: \
+  test/tiers.hs \
+  test/Test.hs \
   mk/toplibs
-tests/test-types.o: \
-  tests/test-types.hs \
-  tests/Test.hs \
+test/types.o: \
+  test/types.hs \
+  test/Test.hs \
   src/Test/LeanCheck/Utils/Types.hs \
   src/Test/LeanCheck/Tiers.hs \
   src/Test/LeanCheck.hs \
@@ -612,7 +565,7 @@
   src/Test/LeanCheck/Derive.hs \
   src/Test/LeanCheck/Core.hs \
   src/Test/LeanCheck/Basic.hs
-tests/test-types: \
-  tests/test-types.hs \
-  tests/Test.hs \
+test/types: \
+  test/types.hs \
+  test/Test.hs \
   mk/toplibs
diff --git a/mk/haskell.mk b/mk/haskell.mk
--- a/mk/haskell.mk
+++ b/mk/haskell.mk
@@ -44,6 +44,12 @@
 ALL_HSS ?= $(shell $(LIST_ALL_HSS))
 
 PKGNAME = $(shell cat *.cabal | grep "^name:"    | sed -e "s/name: *//")
+HADDOCK_VERSION = $(shell haddock --version | grep version | sed -e 's/.*version //;s/,.*//')
+HADDOCK_MAJOR = $(shell echo $(HADDOCK_VERSION) | sed -e 's/\..*//')
+HADDOCK_MINOR = $(shell echo $(HADDOCK_VERSION) | sed -e 's/[0-9]*\.\([0-9]*\).[0-9]*/\1/')
+HADDOCK_PKG_NAME = $(shell [ $(HADDOCK_MAJOR) -gt 2 ] \
+                        || [ $(HADDOCK_MAJOR) -eq 2 -a $(HADDOCK_MINOR) -ge 20 ] \
+                        && echo "--package-name=$(PKGNAME)")
 
 
 # Implicit rules
@@ -94,7 +100,7 @@
 
 doc/index.html: $(LIB_HSS)
 	./mk/haddock-i base template-haskell | xargs \
-	haddock --html -odoc $(LIB_HSS) $(HADDOCKFLAGS) --title=$(PKGNAME)
+	haddock --html -odoc $(LIB_HSS) $(HADDOCKFLAGS) --title=$(PKGNAME) $(HADDOCK_PKG_NAME)
 
 # lists all Haskell source files
 list-all-hss:
diff --git a/src/Test/LeanCheck.hs b/src/Test/LeanCheck.hs
--- a/src/Test/LeanCheck.hs
+++ b/src/Test/LeanCheck.hs
@@ -117,6 +117,7 @@
   , listsOfLength
 
   -- ** Listing values
+  , tiersFloating
   , tiersFractional
   , listIntegral
   , (+|)
diff --git a/src/Test/LeanCheck/Basic.hs b/src/Test/LeanCheck/Basic.hs
--- a/src/Test/LeanCheck/Basic.hs
+++ b/src/Test/LeanCheck/Basic.hs
@@ -144,28 +144,73 @@
           -> (a,b,c,d,e,f,g,h,i,j,k,l) -> m
 uncurry12 f (x,y,z,w,v,u,r,s,t,o,p,q) = f x y z w v u r s t o p q
 
+-- | > list :: [Rational] =
+--   >   [   0  % 1
+--   >   ,   1  % 1
+--   >   , (-1) % 1
+--   >   ,   1  % 2,   2  % 1
+--   >   , (-1) % 2, (-2) % 1
+--   >   ,   1  % 3,   3  % 1
+--   >   , (-1) % 3, (-3) % 1
+--   >   ,   1  % 4,   2  % 3,   3  % 2,   4  % 1
+--   >   , (-1) % 4, (-2) % 3, (-3) % 2, (-4) % 1
+--   >   ,   1  % 5,   5  % 1
+--   >   , (-1) % 5, (-5) % 1
+--   >   , ...
+--   >   ]
 instance (Integral a, Listable a) => Listable (Ratio a) where
   tiers = mapT (uncurry (%)) . reset
         $ tiers `suchThat` (\(n,d) -> d > 0 && n `gcd` d == 1)
 
+-- | > list :: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...]
 instance Listable Word where
-  list = [0..]
+  list = listIntegral
 
--- | Resets the weight of a constructor (or tiers)
--- Typically used as an infix constructor when defining Listable instances:
+-- | Resets the weight of a constructor or tiers.
 --
--- > cons<N> `ofWeight` <W>
+-- > > [ [], [], ..., xs, ys, zs, ... ] `ofWeight` 1
+-- > [ [], xs, ys, zs, ... ]
 --
--- Be careful: do not apply @`ofWeight` 0@ to recursive data structure
+-- > > [ xs, ys, zs, ... ] `ofWeight` 2
+-- > [ [], [], xs, ys, zs, ... ]
+--
+-- > > [ [], xs, ys, zs, ... ] `ofWeight` 3
+-- > [ [], [], [], xs, ys, zs, ... ]
+--
+-- Typically used as an infix operator when defining 'Listable' instances:
+--
+-- > instance Listable <Type> where
+-- >   tiers  =  ...
+-- >          \/ cons<N> <Cons>  `ofWeight`  <W>
+-- >          \/ ...
+--
+-- /Warning:/ do not apply @ \`ofWeight\` 0 @ to recursive data structure
 -- constructors.  In general this will make the list of size 0 infinite,
 -- breaking the tier invariant (each tier must be finite).
 --
--- 'ofWeight' is closely related to 'reset'.
+-- @ \`ofWeight\` /n/ @ is equivalent to 'reset' followed
+-- by @/n/@ applications of 'delay'.
 ofWeight :: [[a]] -> Int -> [[a]]
 ofWeight xss w = dropWhile null xss `addWeight` w
 
--- | Adds to the weight of tiers of a constructor
+-- | Adds to the weight of a constructor or tiers.
 --
--- 'addWeight' is closely related to 'delay'.
+-- > instance Listable <Type> where
+-- >   tiers  =  ...
+-- >          \/ cons<N> <Cons>  `addWeight`  <W>
+-- >          \/ ...
+--
+-- Typically used as an infix operator when defining 'Listable' instances:
+--
+-- > > [ xs, ys, zs, ... ] `addWeight` 1
+-- > [ [], xs, ys, zs, ... ]
+--
+-- > > [ xs, ys, zs, ... ] `addWeight` 2
+-- > [ [], [], xs, ys, zs, ... ]
+--
+-- > > [ [], xs, ys, zs, ... ] `addWeight` 3
+-- > [ [], [], [], [], xs, ys, zs, ... ]
+--
+-- @ \`addWeight\` /n/ @ is equivalent to @/n/@ applications of 'delay'.
 addWeight :: [[a]] -> Int -> [[a]]
 addWeight xss w = replicate w [] ++ xss
diff --git a/src/Test/LeanCheck/Core.hs b/src/Test/LeanCheck/Core.hs
--- a/src/Test/LeanCheck/Core.hs
+++ b/src/Test/LeanCheck/Core.hs
@@ -77,6 +77,7 @@
   , (+|)
   , listIntegral
   , tiersFractional
+  , tiersFloating
   )
 where
 
@@ -102,6 +103,28 @@
 --
 -- where @N@ is the number of arguments of each constructor @A...Z@.
 --
+-- Here is a datatype with 4 constructors and its listable instance:
+--
+-- > data MyType  =  MyConsA
+-- >              |  MyConsB Int
+-- >              |  MyConsC Int Char
+-- >              |  MyConsD String
+-- >
+-- > instance Listable MyType where
+-- >   tiers =  cons0 MyConsA
+-- >         \/ cons1 MyConsB
+-- >         \/ cons2 MyConsC
+-- >         \/ cons1 MyConsD
+--
+-- The instance for Hutton's Razor is given by:
+--
+-- > data Expr  =  Val Int
+-- >            |  Add Expr Expr
+-- >
+-- > instance Listable Expr where
+-- >   tiers  =  cons1 Val
+-- >          \/ cons2 Add
+--
 -- Instances can be alternatively defined by 'list'.
 -- In this case, each sub-list in 'tiers' is a singleton list
 -- (each succeeding element of 'list' has +1 size).
@@ -122,26 +145,50 @@
 -- | Takes a list of values @xs@ and transform it into tiers on which each
 --   tier is occupied by a single element from @xs@.
 --
+-- > > toTiers [x, y, z, ...]
+-- > [ [x], [y], [z], ...]
+--
 -- To convert back to a list, just 'concat'.
 toTiers :: [a] -> [[a]]
 toTiers = map (:[])
 
+-- | > list :: [()]  =  [()]
+--   > tiers :: [[()]]  =  [[()]]
 instance Listable () where
   list = [()]
 
 -- | Tiers of 'Integral' values.
 --   Can be used as a default implementation of 'list' for 'Integral' types.
-listIntegral :: (Enum a, Num a) => [a]
-listIntegral = [0,-1..] +| [1..]
+--
+-- For types with negative values, like 'Int',
+-- the list starts with 0 then intercalates between positives and negatives.
+--
+-- > listIntegral  =  [0, 1, -1, 2, -2, 3, -3, 4, -4, ...]
+--
+-- For types without negative values, like 'Word',
+-- the list starts with 0 followed by positives of increasing magnitude.
+--
+-- > listIntegral  =  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...]
+--
+-- This function will not work for types that throw errors when the result of
+-- an arithmetic operation is negative such as 'GHC.Natural'.  For these, use
+-- @[0..]@ as the 'list' implementation.
+listIntegral :: (Ord a, Num a) => [a]
+listIntegral = 0 : positives +| negatives
+  where
+  positives = takeWhile (>0) $ iterate (+1) 1  -- stop generating on overflow
+  negatives = takeWhile (<0) $ iterate (subtract 1) (-1)
 
 -- | > tiers :: [[Int]] = [[0], [1], [-1], [2], [-2], [3], [-3], ...]
 --   > list :: [Int] = [0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 6, ...]
 instance Listable Int where
   list = listIntegral
 
+-- | > list :: [Int] = [0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 6, ...]
 instance Listable Integer where
   list = listIntegral
 
+-- | > list :: [Char] = ['a', ' ', 'b', 'A', 'c', '\', 'n', 'd', ...]
 instance Listable Char where
   list = ['a'..'z']
       +| [' ','\n']
@@ -163,6 +210,13 @@
 instance Listable a => Listable (Maybe a) where
   tiers = cons0 Nothing \/ cons1 Just
 
+-- | > tiers :: [[Either Bool Bool]] =
+--   >   [[Left False, Right False, Left True, Right True]]
+--   > tiers :: [[Either Int Int]] = [ [Left 0, Right 0]
+--   >                               , [Left 1, Right 1]
+--   >                               , [Left (-1), Right (-1)]
+--   >                               , [Left 2, Right 2]
+--   >                               , ... ]
 instance (Listable a, Listable b) => Listable (Either a b) where
   tiers = reset (cons1 Left)
      \\// reset (cons1 Right)
@@ -176,6 +230,7 @@
 instance (Listable a, Listable b) => Listable (a,b) where
   tiers = tiers >< tiers
 
+-- | > list :: [(Int,Int,Int)] = [ (0,0,0), (0,0,1), (0,1,0), ...]
 instance (Listable a, Listable b, Listable c) => Listable (a,b,c) where
   tiers = productWith (\x (y,z) -> (x,y,z)) tiers tiers
 
@@ -199,33 +254,92 @@
 
 -- | Tiers of 'Fractional' values.
 --   This can be used as the implementation of 'tiers' for 'Fractional' types.
+--
+-- > tiersFractional :: [[Rational]]  =
+-- >   [ [  0  % 1]
+-- >   , [  1  % 1]
+-- >   , [(-1) % 1]
+-- >   , [  1  % 2,   2  % 1]
+-- >   , [(-1) % 2, (-2) % 1]
+-- >   , [  1  % 3,   3  % 1]
+-- >   , [(-1) % 3, (-3) % 1]
+-- >   , [  1  % 4,   2  % 3,   3  % 2,   4  % 1]
+-- >   , [(-1) % 4, (-2) % 3, (-3) % 2, (-4) % 1]
+-- >   , [  1  % 5,   5  % 1]
+-- >   , [(-1) % 5, (-5) % 1]
+-- >   , [  1  % 6,   2 % 5,    3  % 4,   4  % 3,   5  % 2,   6  % 1]
+-- >   , [(-1) % 6, (-2) % 5, (-3) % 4, (-4) % 3, (-5) % 2, (-6) % 1]
+-- >   , ...
+-- >   ]
 tiersFractional :: Fractional a => [[a]]
-tiersFractional = productWith (+) tiersFractionalParts
-                                  (mapT fromIntegral (tiers::[[Integer]]))
-               \/ [ [], [], [1/0], [-1/0] {- , [-0], [0/0] -} ]
-  where tiersFractionalParts :: Fractional a => [[a]]
-        tiersFractionalParts = [0]
-                             : [ [fromIntegral a / fromIntegral b]
-                               | b <- iterate (*2) 2, a <- [1::Integer,3..b] ]
--- The position of Infinity in the above enumeration is arbitrary.
+tiersFractional = mapT (\(x,y) -> fromInteger x / fromInteger y) . reset
+                $ tiers `suchThat` \(n,d) -> d > 0 && n `gcd` d == 1
 
--- Note that this instance ignores NaN's.
+-- | Tiers of 'Floating' values.
+--   This can be used as the implementation of 'tiers' for 'Floating' types.
+--
+--   This function is equivalent to 'tiersFractional'
+--   with positive and negative infinities included: 1/0 and -1/0.
+--
+-- > tiersFloating :: [[Float]] =
+-- >   [ [0.0]
+-- >   , [1.0]
+-- >   , [-1.0, Infinity]
+-- >   , [ 0.5,  2.0, -Infinity]
+-- >   , [-0.5, -2.0]
+-- >   , [ 0.33333334,  3.0]
+-- >   , [-0.33333334, -3.0]
+-- >   , [ 0.25,  0.6666667,  1.5,  4.0]
+-- >   , [-0.25, -0.6666667, -1.5, -4.0]
+-- >   , [ 0.2,  5.0]
+-- >   , [-0.2, -5.0]
+-- >   , [ 0.16666667,  0.4,  0.75,  1.3333334,  2.5,  6.0]
+-- >   , [-0.16666667, -0.4, -0.75, -1.3333334, -2.5, -6.0]
+-- >   , ...
+-- >   ]
+--
+--   @NaN@ and @-0@ are excluded from this enumeration.
+tiersFloating :: Fractional a => [[a]]
+tiersFloating = tiersFractional \/ [ [], [], [1/0], [-1/0] {- , [-0], [0/0] -} ]
+
+-- | @NaN@ and @-0@ are not included in the list of 'Float's.
+--
+-- > list :: [Float] =
+-- >   [ 0.0
+-- >   , 1.0, -1.0, Infinity
+-- >   , 0.5, 2.0, -Infinity, -0.5, -2.0
+-- >   , 0.33333334, 3.0, -0.33333334, -3.0
+-- >   , 0.25, 0.6666667, 1.5, 4.0, -0.25, -0.6666667, -1.5, -4.0
+-- >   , ...
+-- >   ]
 instance Listable Float where
-  tiers = tiersFractional
+  tiers = tiersFloating
 
+-- | @NaN@ and @-0@ are not included in the list of 'Double's.
+--
+-- > list :: [Double]  =  [0.0, 1.0, -1.0, Infinity, 0.5, 2.0, ...]
 instance Listable Double where
-  tiers = tiersFractional
+  tiers = tiersFloating
 
+-- | > list :: [Ordering]  = [LT, EQ, GT]
 instance Listable Ordering where
   tiers = cons0 LT
        \/ cons0 EQ
        \/ cons0 GT
 
 -- | 'map' over tiers
+--
+-- > mapT f [[x], [y,z], [w,...], ...]  =  [[f x], [f y, f z], [f w, ...], ...]
+--
+-- > mapT f [xs, ys, zs, ...]  =  [map f xs, map f ys, map f zs]
 mapT :: (a -> b) -> [[a]] -> [[b]]
 mapT = map . map
 
 -- | 'filter' tiers
+--
+-- > filterT p [xs, yz, zs, ...]  =  [filter p xs, filter p ys, filter p zs]
+--
+-- > filterT odd tiers  =  [[], [1], [-1], [], [], [3], [-3], [], [], [5], ...]
 filterT :: (a -> Bool) -> [[a]] -> [[a]]
 filterT f = map (filter f)
 
@@ -280,35 +394,68 @@
 
 -- | Delays the enumeration of 'tiers'.
 -- Conceptually this function adds to the weight of a constructor.
+--
+-- > delay [xs, ys, zs, ... ]  =  [[], xs, ys, zs, ...]
+--
+-- > delay [[x,...], [y,...], ...]  =  [[], [x,...], [y,...], ...]
+--
 -- Typically used when defining 'Listable' instances:
 --
--- > delay (cons<N> <Constr>)
+-- > instance Listable <Type> where
+-- >   tiers  =  ...
+-- >          \/ delay (cons<N> <Constructor>)
+-- >          \/ ...
 delay :: [[a]] -> [[a]]
 delay = ([]:)
 
 -- | Resets any delays in a list-of 'tiers'.
 -- Conceptually this function makes a constructor "weightless",
 -- assuring the first tier is non-empty.
--- Typically used when defining Listable instances:
 --
--- > reset (cons<N> <Constr>)
+-- > reset [[], [], ..., xs, ys, zs, ...]  =  [xs, ys, zs, ...]
 --
+-- > reset [[], xs, ys, zs, ...]  =  [xs, ys, zs, ...]
+--
+-- > reset [[], [], ..., [x], [y], [z], ...]  =  [[x], [y], [z], ...]
+--
+-- Typically used when defining 'Listable' instances:
+--
+-- > instance Listable <Type> where
+-- >   tiers  =  ...
+-- >          \/ reset (cons<N> <Constructor>)
+-- >          \/ ...
+--
 -- Be careful: do not apply @reset@ to recursive data structure
 -- constructors.  In general this will make the list of size 0 infinite,
 -- breaking the 'tiers' invariant (each tier must be finite).
 reset :: [[a]] -> [[a]]
 reset = dropWhile null
 
--- | Tiers of values that follow a property
+-- | Tiers of values that follow a property.
 --
--- > cons<N> `suchThat` condition
+-- Typically used in the definition of 'Listable' tiers:
+--
+-- > instance Listable <Type> where
+-- >   tiers  =  ...
+-- >          \/ cons<N> `suchThat` <condition>
+-- >          \/ ...
+--
+-- Examples:
+--
+-- > > tiers `suchThat` odd
+-- > [[], [1], [-1], [], [], [3], [-3], [], [], [5], ...]
+--
+-- > > tiers `suchThat` even
+-- > [[0], [], [], [2], [-2], [], [], [4], [-4], [], ...]
+--
+-- This function is just a 'flip'ped version of `filterT`.
 suchThat :: [[a]] -> (a->Bool) -> [[a]]
 suchThat = flip filterT
 
 -- | Lazily interleaves two lists, switching between elements of the two.
 --   Union/sum of the elements in the lists.
 --
--- > [x,y,z] +| [a,b,c] == [x,a,y,b,z,c]
+-- > [x,y,z,...] +| [a,b,c,...]  =  [x,a,y,b,z,c,...]
 (+|) :: [a] -> [a] -> [a]
 []     +| ys = ys
 (x:xs) +| ys = x:(ys +| xs)
@@ -316,7 +463,7 @@
 
 -- | Append tiers --- sum of two tiers enumerations.
 --
--- > [xs,ys,zs,...] \/ [as,bs,cs,...] = [xs++as,ys++bs,zs++cs,...]
+-- > [xs,ys,zs,...] \/ [as,bs,cs,...]  =  [xs++as, ys++bs, zs++cs, ...]
 (\/) :: [[a]] -> [[a]] -> [[a]]
 xss \/ []  = xss
 []  \/ yss = yss
@@ -326,7 +473,7 @@
 -- | Interleave tiers --- sum of two tiers enumerations.
 --   When in doubt, use '\/' instead.
 --
--- > [xs,ys,zs,...] \/ [as,bs,cs,...] = [xs+|as,ys+|bs,zs+|cs,...]
+-- > [xs,ys,zs,...] \/ [as,bs,cs,...]  =  [xs+|as, ys+|bs, zs+|cs, ...]
 (\\//) :: [[a]] -> [[a]] -> [[a]]
 xss \\// []  = xss
 []  \\// yss = yss
@@ -335,23 +482,23 @@
 
 -- | Take a tiered product of lists of tiers.
 --
--- > [t0,t1,t2,...] >< [u0,u1,u2,...] =
--- > [ t0**u0
--- > , t0**u1 ++ t1**u0
--- > , t0**u2 ++ t1**u1 ++ t2**u0
--- > , ...       ...       ...       ...
--- > ]
--- > where xs ** ys = [(x,y) | x <- xs, y <- ys]
+-- > [t0,t1,t2,...] >< [u0,u1,u2,...]  =
+-- >   [ t0**u0
+-- >   , t0**u1 ++ t1**u0
+-- >   , t0**u2 ++ t1**u1 ++ t2**u0
+-- >   , ...       ...       ...       ...
+-- >   ]
+-- >   where xs ** ys = [(x,y) | x <- xs, y <- ys]
 --
 -- Example:
 --
--- > [[0],[1],[2],...] >< [[0],[1],[2],...]
--- > == [  [(0,0)]
--- >    ,  [(1,0),(0,1)]
--- >    ,  [(2,0),(1,1),(0,2)]
--- >    ,  [(3,0),(2,1),(1,2),(0,3)]
--- >    ...
--- >    ]
+-- > [[0],[1],[2],...] >< [[0],[1],[2],...]  =
+-- >   [ [(0,0)]
+-- >   , [(1,0),(0,1)]
+-- >   , [(2,0),(1,1),(0,2)]
+-- >   , [(3,0),(2,1),(1,2),(0,3)]
+-- >   , ...
+-- >   ]
 (><) :: [[a]] -> [[b]] -> [[(a,b)]]
 (><) = productWith (,)
 infixr 8 ><
@@ -359,7 +506,7 @@
 -- | Take a tiered product of lists of tiers.
 --   'productWith' can be defined by '><', as:
 --
--- > productWith f xss yss = map (uncurry f) $ xss >< yss
+-- > productWith f xss yss  =  map (uncurry f) $ xss >< yss
 productWith :: (a->b->c) -> [[a]] -> [[b]] -> [[c]]
 productWith _ _ [] = []
 productWith _ [] _ = []
@@ -368,12 +515,16 @@
   where xs ** ys = [x `f` y | x <- xs, y <- ys]
 
 -- | 'Testable' values are functions
---   of 'Listable' arguments that return boolean values,
---   e.g.:
+--   of 'Listable' arguments that return boolean values.
 --
 -- * @ Bool @
 -- * @ Listable a => a -> Bool @
--- * @ Listable a => a -> a -> Bool @
+-- * @ (Listable a, Listable b) => a -> b -> Bool @
+-- * @ (Listable a, Listable b, Listable c) => a -> b -> c -> Bool @
+-- * @ (Listable a, Listable b, Listable c, ...) => a -> b -> c -> ... -> Bool @
+--
+-- For example:
+--
 -- * @ Int -> Bool @
 -- * @ String -> [Int] -> Bool @
 class Testable a where
@@ -393,10 +544,34 @@
 -- argument values for the property.  Each boolean paired with such a list
 -- indicates whether the property holds for this choice.  The outer list is
 -- potentially infinite and lazily evaluated.
+--
+-- > > results (<)
+-- > [ (["0","0"],    False)
+-- > , (["0","1"],    True)
+-- > , (["1","0"],    False)
+-- > , (["0","(-1)"], False)
+-- > , (["1","1"],    False)
+-- > , (["(-1)","0"], True)
+-- > , (["0","2"],    True)
+-- > , (["1","(-1)"], False)
+-- > , ...
+-- > ]
+--
+-- > > take 10 $ results (\xs -> xs == nub (xs :: [Int]))
+-- > [ (["[]"],      True)
+-- > , (["[0]"],     True)
+-- > , (["[0,0]"],   False)
+-- > , (["[1]"],     True)
+-- > , (["[0,0,0]"], False)
+-- > , ...
+-- > ]
 results :: Testable a => a -> [([String],Bool)]
 results = concat . resultiers
 
 -- | Lists all counter-examples for a number of tests to a property,
+--
+-- > > counterExamples 12 $ \xs -> xs == nub (xs :: [Int])
+-- > [["[0,0]"],["[0,0,0]"],["[0,0,0,0]"],["[0,0,1]"],["[0,1,0]"]]
 counterExamples :: Testable a => Int -> a -> [[String]]
 counterExamples n p = [as | (as,False) <- take n (results p)]
 
@@ -404,18 +579,24 @@
 --   returns 'Just' the first counter-example
 --   or 'Nothing' if there is none.
 --
--- > counterExample 100 $ \xs -> [] `union` xs == (xs::[Int])
--- > -- > Just ["[0,0]"]
+-- > > counterExample 100 $ \xs -> [] `union` xs == (xs::[Int])
+-- > Just ["[0,0]"]
 counterExample :: Testable a => Int -> a -> Maybe [String]
 counterExample n = listToMaybe . counterExamples n
 
--- | Lists all witnesses up to a number of tests to a property,
+-- | Lists all witnesses up to a number of tests to a property.
+--
+-- > > witnesses 1000 (\x -> x > 1 && x < 77 && 77 `rem` x == 0)
+-- > [["7"],["11"]]
 witnesses :: Testable a => Int -> a -> [[String]]
 witnesses n p = [as | (as,True) <- take n (results p)]
 
 -- | Up to a number of tests to a property,
 --   returns 'Just' the first witness
 --   or 'Nothing' if there is none.
+--
+-- > > witness 1000 (\x -> x > 1 && x < 77 && 77 `rem` x == 0)
+-- > Just ["7"]
 witness :: Testable a => Int -> a -> Maybe [String]
 witness n = listToMaybe . witnesses n
 
@@ -450,6 +631,12 @@
 -- | Boolean implication operator.  Useful for defining conditional properties:
 --
 -- > prop_something x y = condition x y ==> something x y
+--
+-- Examples:
+--
+-- > > prop_addMonotonic x y  =  y > 0 ==> x + y > x
+-- > > check prop_addMonotonic
+-- > +++ OK, passed 200 tests.
 (==>) :: Bool -> Bool -> Bool
 False ==> _ = True
 True  ==> p = p
diff --git a/src/Test/LeanCheck/Function.hs b/src/Test/LeanCheck/Function.hs
--- a/src/Test/LeanCheck/Function.hs
+++ b/src/Test/LeanCheck/Function.hs
@@ -11,8 +11,36 @@
 -- These can be useful for testing higher-order properties --- properties that
 -- take functions as arguments.
 --
+-- > > import Test.LeanCheck
+-- > > import Test.LeanCheck.Function
+--
+-- > > check $ \f p xs -> filter p (map f xs) == map f (filter p xs :: [Int])
+-- > *** Failed! Falsifiable (after 36 tests):
+-- > \_ -> 0
+-- > \x -> case x of
+-- >       0 -> True
+-- >       _ -> False
+-- > [1]
+--
+-- > > check $ \f p xs -> filter p (map f xs) == map f (filter p xs :: [Bool])
+-- > *** Failed! Falsifiable (after 20 tests):
+-- > \_ -> False
+-- > \x -> case x of
+-- >       False -> False
+-- >       True -> True
+-- > [True]
+--
+-- > > check $ \f z xs -> foldr f z xs == foldl f z (xs :: [Int])
+-- > *** Failed! Falsifiable (after 75 tests):
+-- > \x _ -> case x of
+-- >         0 -> 1
+-- >         _ -> 0
+-- > 0
+-- > [0,0]
+--
 -- Warning: this is only intended to be used in testing modules.  Avoid
 -- importing this on modules that are used as libraries.
 module Test.LeanCheck.Function () where
+import Test.LeanCheck.Core (Listable) -- for Haddock
 import Test.LeanCheck.Function.Listable ()
 import Test.LeanCheck.Function.Show ()
diff --git a/src/Test/LeanCheck/Function/CoListable.hs b/src/Test/LeanCheck/Function/CoListable.hs
deleted file mode 100644
--- a/src/Test/LeanCheck/Function/CoListable.hs
+++ /dev/null
@@ -1,108 +0,0 @@
--- |
--- Module      : Test.LeanCheck.Function.CoListable
--- Copyright   : (c) 2015-2018 Rudy Matela
--- License     : 3-Clause BSD  (see the file LICENSE)
--- Maintainer  : Rudy Matela <rudy@matela.com.br>
---
--- This module is part of LeanCheck,
--- a simple enumerative property-based testing library.
---
--- This module exports functions to define a 'Listable' instance for function
--- enumeration by means of a 'CoListable' typeclass.  This is very similar to
--- the coseries enumeration of SmallCheck.
---
--- This module /does not currently work/, it it just a sketch and a stub.
-module Test.LeanCheck.Function.CoListable
-  ( CoListable (..)
-  )
-where
-
-
-import Test.LeanCheck
-import Test.LeanCheck.Tiers
-import Test.LeanCheck.Utils (Nat(..), Nat2(..), Nat3(..))
-import Data.Maybe (fromMaybe)
-
-
-(\+:/) :: [[a]] -> [[a]] -> [[a]]
-xss \+:/ yss = xss \/ ([]:yss)
-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]]
-
-
-instance CoListable () where
-  cotiers rs = mapT (\r  () -> r) rs
-
-
-instance CoListable Bool where
-  cotiers rs = productWith (\r1 r2  b -> if b then r1 else r2) rs rs
-
-
-instance CoListable a => CoListable (Maybe a) where
-  cotiers rs = productWith (\z f  m -> case m of
-                                         Nothing -> z
-                                         Just x  -> f x) rs (cotiers rs)
-
-
-instance (CoListable a, CoListable b) => CoListable (Either a b) where
-  cotiers rs = productWith (\f g  e -> case e of
-                                         Left x  -> f x
-                                         Right x -> g x) (cotiers rs) (cotiers rs)
-
-
-instance (CoListable a) => CoListable [a] where
-  cotiers rss = mapT const rss
-           \+:/ productWith
-                  (\y f  xs -> case xs of
-                                 []      -> y
-                                 (x:xs') -> f x xs')
-                  rss
-                  (cotiers (cotiers rss))
-
-
-instance (CoListable a, CoListable b) => CoListable (a,b) where
-  cotiers = mapT uncurry . cotiers . cotiers
-
-
-instance CoListable Int where
-  cotiers rss = mapT const rss
-           \+:/ productWith
-                  (\f g  i -> if i >= 0 then f (i-1) else g (i+1))
-                  (cotiers rss) (cotiers rss)
-
-instance CoListable Nat where
-  cotiers rss = mapT const rss
-           \+:/ productWith
-                  (\f g  i -> if even i then f (i`div`2) else g (i`div`2))
-                  (cotiers rss) (cotiers rss)
-
-instance CoListable Nat2 where
-  cotiers rss = (\rs x -> rs !! fromIntegral x) `mapT` products [rss,rss]
-
-instance CoListable Nat3 where
-  cotiers rss = (\rs x -> rs !! fromIntegral x) `mapT` products [rss,rss,rss]
-
-
-alts0 :: [[a]] -> [[a]]
-alts0 = id
-
-alts1 :: CoListable a => [[b]] -> [[a->b]]
-alts1 bs = cotiers bs
-
-alts2 :: (CoListable a, CoListable b) => [[c]] -> [[a->b->c]]
-alts2 cs = cotiers (cotiers cs)
-
-alts3 :: (CoListable a, CoListable b, CoListable c) => [[d]] -> [[a->b->c->d]]
-alts3 ds = cotiers (cotiers (cotiers ds))
-
-ftiers :: (CoListable a, Listable b) => [[a->b]]
-ftiers = cotiers tiers
diff --git a/src/Test/LeanCheck/Function/Listable.hs b/src/Test/LeanCheck/Function/Listable.hs
--- a/src/Test/LeanCheck/Function/Listable.hs
+++ b/src/Test/LeanCheck/Function/Listable.hs
@@ -9,23 +9,14 @@
 --
 -- This module exports a 'Listable' instance for functions.
 --
--- LeanCheck provides several alternative definitions of 'Listable' functions:
+-- LeanCheck provides one definition of 'Listable' functions:
 --
 -- * "Test.LeanCheck.Function.Listable.ListsOfPairs":
 --   considers functions as a finite list of exceptional input-output cases to
 --   a default value (list of pairs of arguments and results).
 --   This is the LeanCheck default, and is the one exported by this module.
 --
--- * "Test.LeanCheck.Function.Listable.CoListable":
---   declares a 'CoListable' typeclass similar to SmallCheck's @CoSerial@.
---   Currently a stub.
---
--- * "Test.LeanCheck.Function.Listable.Periodic":
---   similar to ListsOfPairs, but instead of having a default value, functions
---   are periodic.
---
--- Take care: all the above 'Listable' instances are __experimental__.  Only
--- one of the above can be imported at a time.
+-- In the future, alternative instances could be provided in sub-modules.
 --
 -- Warning: this is only intended to be used in testing modules.  Avoid
 -- importing this on modules that are used as libraries.
diff --git a/src/Test/LeanCheck/Function/Listable/CoListable.hs b/src/Test/LeanCheck/Function/Listable/CoListable.hs
deleted file mode 100644
--- a/src/Test/LeanCheck/Function/Listable/CoListable.hs
+++ /dev/null
@@ -1,21 +0,0 @@
--- |
--- Module      : Test.LeanCheck.Function.Listable.CoListable
--- Copyright   : (c) 2015-2018 Rudy Matela
--- License     : 3-Clause BSD  (see the file LICENSE)
--- Maintainer  : Rudy Matela <rudy@matela.com.br>
---
--- This module is part of LeanCheck,
--- a simple enumerative property-based testing library.
---
--- This module exports a 'Listable' instance for function enumeration by means
--- of a 'CoListable' typeclass.  This is very similar to the coseries
--- enumeration of SmallCheck.
---
--- This module /does not currently work/, it it just a sketch and a stub.
-module Test.LeanCheck.Function.Listable.CoListable () where
-
-import Test.LeanCheck.Core
-import Test.LeanCheck.Function.CoListable
-
-instance (CoListable a, Listable b) => Listable (a -> b) where
-  tiers = cotiers tiers
diff --git a/src/Test/LeanCheck/Function/Listable/FunListable.hs b/src/Test/LeanCheck/Function/Listable/FunListable.hs
deleted file mode 100644
--- a/src/Test/LeanCheck/Function/Listable/FunListable.hs
+++ /dev/null
@@ -1,136 +0,0 @@
--- |
--- Module      : Test.LeanCheck.FunListable
--- Copyright   : (c) 2015-2018 Rudy Matela
--- License     : 3-Clause BSD  (see the file LICENSE)
--- Maintainer  : Rudy Matela <rudy@matela.com.br>
---
--- This module is part of LeanCheck,
--- a simple enumerative property-based testing library.
---
--- This module exports a 'Listable' instance for function enumeration by means
--- 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 (FunListable (..)) where
-
-
-import Test.LeanCheck
-import Test.LeanCheck.Tiers
-import Test.LeanCheck.Utils (Nat(..), Nat2(..), Nat3(..))
-import Data.Maybe (fromMaybe)
-
-
-sndArgTypeOf :: b -> (a -> b -> c) -> b
-x `sndArgTypeOf` _ = x
-
-
-instance (FunListable a, Listable b) => Listable (a -> b) where
-  tiers = concatMapT mkfss funtiers
-    where
-    mkfss (n, mkf) = mapT mkf (products (replicate n tiers)
-                    `suchThat` validResults (undefined `sndArgTypeOf` mkf))
-
-
-(\+:/) :: [[a]] -> [[a]] -> [[a]]
-xss \+:/ yss = xss \/ ([]:yss)
-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
-  invalidResults :: a -> [b] -> Bool
-  invalidResults x  =  not .   validResults x
-  funtiers :: [[ (Int, [b] -> (a -> b)) ]]
-
--- maybe the other function FunListable needs is a okResults that checks if
--- results follow required pattern for each type:
---   * for lists, there shouldnt be repeated element suffix
---        a,a,a,a,a,b is ok
---        a,b,c,d,e,e is not ok.
---   * for integers, there shouldnt be adjacent repeated elements
---        a,b,a,b,a,b,a,b is ok
---        a,b,c,d,e,f,f,g is not ok
---        of course, this for the enumeration where I have the points.
---   * for pairs, apply the invariants accordingly in the matrix (is that
---     possible?)
---        I think it is.  Apply one invariant to columns, the other to lines.
-
-instance FunListable () where
-  validResults _ _ = True
-  funtiers = [[ (1, \[r]  () -> r) ]]
-
-
-instance FunListable Bool where
-  validResults _ _ = True
-  funtiers = [[ (2, \[r1,r2]  b -> if b then r1 else r2) ]]
-
--- have funtiers = [[ (1, \[r1]  b -> r1) ]
---                  ,[ (1, \[r1]  b -> if b then r1 else not r1 ]
---                  ]
-
-
-instance FunListable a => FunListable (Maybe a) where
-  validResults _ _   =  True
-  funtiers = mapT (\(n, mkf) -> (n+1, \(r:rs)  m -> case m of
-                                                       Nothing -> r
-                                                       Just x  -> mkf rs x)) funtiers
-
-
-instance (FunListable a, FunListable b) => FunListable (Either a b) where
-  validResults _ _  =  True
-  funtiers = productWith
-                (\(nf, mf) (ng, mg) -> (nf + ng, \rs  e -> case e of
-                                                             Left  x -> mf (take nf rs) x
-                                                             Right y -> mg (drop nf rs) y))
-                funtiers
-                funtiers
-
-
--- NOTE: big problem: adding r1 == r2 below instroduces an Eq restriction on
--- the result type.  Which does not exist for (a->b).  Maybe create a new
--- typeclass: FunResult, then rename FunListable to FunArg.  This way we can
--- have the equality check (or any other special checks) for types that have
--- equality and ignore it for types that don't.
-instance (FunListable a) => FunListable [a] where
-  validResults _ [r1,r2]  {- -- | r1 == r2 -} =  False  -- The results cannot end with repetitions
-  validResults x (r:rs)   =  validResults x rs
-  validResults _ _        =  True
-  funtiers = [[ (1, \[r]  xs -> r) ]]
-         \+:/ mapT (\(n, f) -> (1 + n, \(r:rs)  xs -> case xs of
-                                                        []     -> r
-                                                        (x:xs) -> f rs (x,xs))) funtiers
-
-
-instance (FunListable a, FunListable b) => FunListable (a,b) where
-  validResults _ _  =  True  -- TODO: check lines and columns
-  funtiers = productWith (\(n, f)  (m, g)
-                            -> (n*m, \rs  (x,y) -> toMatrix m rs
-                                                !! f [0..(n-1)] x
-                                                !! g [0..(m-1)] y))
-                funtiers
-                funtiers
-
-
-toMatrix :: Int -> [a] -> [[a]]
-toMatrix n [] = []
-toMatrix n xs = take n xs
-              : toMatrix n (drop n xs)
-
-
-instance FunListable Int where
-  funtiers = [[]] -- TODO: implement funtiers :: [[...Int...]]
-  -- mapT (... findInterval something ...) tiers
-
-instance FunListable Nat where
-  funtiers = [[]] -- TODO: implement funtiers :: [[...Nat...]]
-
-instance FunListable Nat2 where
-  funtiers = [[]] -- TODO: implement funtiers :: [[...Nat2...]]
-
-instance FunListable Nat3 where
-  funtiers = [[]] -- TODO: implement funtiers :: [[...Nat3...]]
diff --git a/src/Test/LeanCheck/Function/Listable/Mixed.hs b/src/Test/LeanCheck/Function/Listable/Mixed.hs
deleted file mode 100644
--- a/src/Test/LeanCheck/Function/Listable/Mixed.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- |
--- Module      : Test.LeanCheck.Function.Mixed
--- Copyright   : (c) 2015-2018 Rudy Matela
--- License     : 3-Clause BSD  (see the file LICENSE)
--- Maintainer  : Rudy Matela <rudy@matela.com.br>
---
--- This module is part of LeanCheck,
--- a simple enumerative property-based testing library.
---
--- This module exports a 'Listable' instance for function enumeration
--- by combining several enumeration strategies.
-module Test.LeanCheck.Function.Listable.Mixed () where
-
-import Test.LeanCheck.Core
-import Test.LeanCheck.Function.ListsOfPairs
-import Test.LeanCheck.Function.CoListable
-
-instance (Eq a, Listable a, CoListable a, Listable b) => Listable (a -> b) where
-  tiers = tiers -->> tiers
-       \/ cotiers tiers
diff --git a/src/Test/LeanCheck/Function/Listable/Periodic.hs b/src/Test/LeanCheck/Function/Listable/Periodic.hs
deleted file mode 100644
--- a/src/Test/LeanCheck/Function/Listable/Periodic.hs
+++ /dev/null
@@ -1,56 +0,0 @@
--- |
--- Module      : Test.LeanCheck.Function.Periodic
--- Copyright   : (c) 2015-2018 Rudy Matela
--- License     : 3-Clause BSD  (see the file LICENSE)
--- Maintainer  : Rudy Matela <rudy@matela.com.br>
---
--- This module is part of LeanCheck,
--- a simple enumerative property-based testing library.
---
--- This module exports a 'Listable' instance for enumeration of periodic
--- functions.
---
--- This module /barely works/ and is just a sketch.
-module Test.LeanCheck.Function.Listable.Periodic () where
-
-
-import Test.LeanCheck
-import Data.List (inits)
-
-
-instance (Eq a, Eq b, Listable a, Listable b) => Listable (a -> b) where
-  tiers = mapT pairsToFunction $ functions list tiers
-
-functions :: Eq b => [a] -> [[b]] -> [[[(a,b)]]]
-functions xs yss = mapT (zip xs . cycle) $ lsPeriodsOfLimit xs yss
-
-functionsz :: Eq b => [[a]] -> [[b]] -> [[[(a,b)]]]
-functionsz xss = functions (concat xss)
-
-
-lsPeriodsOf :: Eq a => [[a]] -> [[[a]]]
-lsPeriodsOf xss = map (filter isPeriod) (listsOf xss)
-
-lsPeriodsOfLimit :: Eq a => [b] -> [[a]] -> [[[a]]]
-lsPeriodsOfLimit ys xss = map (filter isPeriod) (tiersOfLimit ys xss)
-
-
-isPeriod :: Eq a => [a] -> Bool
-isPeriod [] = False
-isPeriod [x] = True
-isPeriod xs = not $ any (`isPeriodOf` xs) $ (tail . init . inits) xs
-
-isPeriodOf :: Eq a => [a] -> [a] -> Bool
-xs `isPeriodOf` ys = length ys `mod` length xs == 0
-                  && and (zipWith (==) (cycle xs) ys)
-
-
-tiersOfLimit :: [b] -> [[a]] -> [[[a]]]
-tiersOfLimit     [] xss = [[[]]]
-tiersOfLimit (_:ys) xss = [[[]]] ++ productWith (:) xss (tiersOfLimit ys xss)
-
-
-pairsToFunction :: Eq a => [(a,b)] -> (a -> b)
-pairsToFunction ((x,y):ps) x' =  if x' == x
-                                   then y
-                                   else pairsToFunction ps x'
diff --git a/src/Test/LeanCheck/Function/Show.hs b/src/Test/LeanCheck/Function/Show.hs
--- a/src/Test/LeanCheck/Function/Show.hs
+++ b/src/Test/LeanCheck/Function/Show.hs
@@ -7,14 +7,69 @@
 -- This module is part of LeanCheck,
 -- a simple enumerative property-based testing library.
 --
--- A 'Show' instance for functions.
+-- This module exports an orphan 'Show' instance for functions.
+-- It shows functions as up to 8 case distinctions, one per line.
 --
--- Warning: this is only intended to be used in testing modules.  Avoid
--- importing this on modules that are used as libraries.
+-- /Warning: this is only intended to be used in testing modules./
+-- /Avoid importing this on modules that are used as libraries./
+--
+-- This is intended to 'Show' functions generated by the 'Listable' instance
+-- for functions defined in "Test.LeanCheck.Function.Listable": functions that
+-- have finite exceptions to a constant function.  It does work on other types
+-- of functions, albeit using @"..."@.
+--
+-- > > print (&&)
+-- > \x y -> case (x,y) of
+-- >         (True,True) -> True
+-- >         _ -> False
+--
+-- > > print (==>)
+-- > \x y -> case (x,y) of
+-- >         (True,False) -> False
+-- >         _ -> True
+--
+-- > > print (==2)
+-- > \x -> case x of
+-- >       2 -> True
+-- >       _ -> False
+--
+-- > > print (\x -> abs x < 2)
+-- > \x -> case x of
+-- >       0 -> True
+-- >       1 -> True
+-- >       -1 -> True
+-- >       _ -> False
+--
+-- When the function cannot be defined by finite exceptions to a constant
+-- function using 8 case-patterns, the rest of the function is represented by
+-- @"..."@.
+--
+-- > > print (+)
+-- > \x y -> case (x,y) of
+-- >         (0,0) -> 0
+-- >         (0,1) -> 1
+-- >         (1,0) -> 1
+-- >         (0,-1) -> -1
+-- >         (1,1) -> 2
+-- >         (-1,0) -> -1
+-- >         (0,2) -> 2
+-- >         (1,-1) -> 0
+-- >         ...
+--
+-- The exported orphan 'Show' '->' instance is actually defined in
+-- "Test.LeanCheck.Function.Show.EightLines".  An alternative is provided in
+-- "Test.LeanCheck.Function.Show.FourCases".
+--
+-- The exported 'Show' instance only works for functions whose ultimate return
+-- types are instances of 'Test.LeanCheck.Function.ShowFunction.ShowFunction'.
+-- For user-defined algebraic datatypes that are instances of 'Show', their
+-- ShowFunction instance can be defined by using
+-- 'Test.LeanCheck.Function.ShowFunction.bindtiersShow':
+--
+-- > import Test.LeanCheck.Function.ShowFunction
+-- >
+-- > instance ShowFunction Ty where
+-- >   bindtiers = bindtiersShow
 module Test.LeanCheck.Function.Show () where
 
-import Test.LeanCheck.Function.ShowFunction
-
-instance (Show a, Listable a, ShowFunction b) => Show (a->b) where
-  showsPrec _ = (++) . showFunction 8
-
+import Test.LeanCheck.Function.Show.EightLines ()
diff --git a/src/Test/LeanCheck/Function/Show/EightLines.hs b/src/Test/LeanCheck/Function/Show/EightLines.hs
new file mode 100644
--- /dev/null
+++ b/src/Test/LeanCheck/Function/Show/EightLines.hs
@@ -0,0 +1,72 @@
+-- |
+-- Module      : Test.LeanCheck.Function.Show.EightLines
+-- Copyright   : (c) 2015-2018 Rudy Matela
+-- License     : 3-Clause BSD  (see the file LICENSE)
+-- Maintainer  : Rudy Matela <rudy@matela.com.br>
+--
+-- This module is part of LeanCheck,
+-- a simple enumerative property-based testing library.
+--
+-- This module exports an orphan 'Show' instance for functions.
+-- It shows functions as up to 8 case distinctions, one per line.
+--
+-- Please see "Test.LeanCheck.Function.Show.FourCases" for an alternative that
+-- shows functions as up to 4 case distinctions in a single line.
+--
+-- The 'Show' '->' instance only works for functions of which ultimate return
+-- types are instances of the 'ShowFunction' typeclass.  Please see
+-- "Test.LeanCheck.Function.ShowFunction" for how to define these instances for
+-- your user-defined algebraic datatypes.
+--
+-- Warning: this is only intended to be used in testing modules.  Avoid
+-- importing this on modules that are used as libraries.
+module Test.LeanCheck.Function.Show.EightLines () where
+
+import Test.LeanCheck.Function.ShowFunction
+
+-- | A multi-line show instance for functions.
+--
+-- This is intended to 'Show' functions generated by the 'Listable' instance
+-- for functions defined in "Test.LeanCheck.Function.Listable": functions that
+-- have finite exceptions to a constant function.  It does work on other types
+-- of functions, albeit using @"..."@.
+--
+-- > > print (&&)
+-- > \x y -> case (x,y) of
+-- >         (True,True) -> True
+-- >         _ -> False
+--
+-- > > print (==>)
+-- > \x y -> case (x,y) of
+-- >         (True,False) -> False
+-- >         _ -> True
+--
+-- > > print (==2)
+-- > \x -> case x of
+-- >       2 -> True
+-- >       _ -> False
+--
+-- > > print (\x -> abs x < 2)
+-- > \x -> case x of
+-- >       0 -> True
+-- >       1 -> True
+-- >       -1 -> True
+-- >       _ -> False
+--
+-- When the function cannot be defined by finite exceptions to a constant
+-- function using 8 case-patterns, the rest of the function is represented by
+-- @"..."@.
+--
+-- > > print (+)
+-- > \x y -> case (x,y) of
+-- >         (0,0) -> 0
+-- >         (0,1) -> 1
+-- >         (1,0) -> 1
+-- >         (0,-1) -> -1
+-- >         (1,1) -> 2
+-- >         (-1,0) -> -1
+-- >         (0,2) -> 2
+-- >         (1,-1) -> 0
+-- >         ...
+instance (Show a, Listable a, ShowFunction b) => Show (a->b) where
+  showsPrec _ = (++) . showFunction 8
diff --git a/src/Test/LeanCheck/Function/Show/FourCases.hs b/src/Test/LeanCheck/Function/Show/FourCases.hs
new file mode 100644
--- /dev/null
+++ b/src/Test/LeanCheck/Function/Show/FourCases.hs
@@ -0,0 +1,53 @@
+-- |
+-- Module      : Test.LeanCheck.Function.Show.FourCases
+-- Copyright   : (c) 2015-2018 Rudy Matela
+-- License     : 3-Clause BSD  (see the file LICENSE)
+-- Maintainer  : Rudy Matela <rudy@matela.com.br>
+--
+-- This module is part of LeanCheck,
+-- a simple enumerative property-based testing library.
+--
+-- This module exports an orphan 'Show' instance for functions.
+-- It shows functions as up to 4 case distinctions in a single line.
+--
+-- Please see "Test.LeanCheck.Function.Show.EightLines" for an alternative that
+-- shows functions as up to 8 case distinctions, one per line.
+--
+-- The 'Show' '->' instance only works for functions of which ultimate return
+-- types are instances of the 'ShowFunction' typeclass.  Please see
+-- "Test.LeanCheck.Function.ShowFunction" for how to define these instances for
+-- your user-defined algebraic datatypes.
+--
+-- Warning: this is only intended to be used in testing modules.  Avoid
+-- importing this on modules that are used as libraries.
+module Test.LeanCheck.Function.Show.FourCases () where
+
+import Test.LeanCheck.Function.ShowFunction
+
+-- | A single-line show instance for functions.
+--
+-- This is intended to 'Show' functions generated by the 'Listable' instance
+-- for functions defined in "Test.LeanCheck.Function.Listable": functions that
+-- have finite exceptions to a constant function.  It does work on other types
+-- of functions, albeit using @"..."@.
+--
+-- > > print (&&)
+-- > \x y -> case (x,y) of (True,True) -> True; _ -> False
+--
+-- > > print (==>)
+-- > \x y -> case (x,y) of (True,False) -> False; _ -> True
+--
+-- > > print (==2)
+-- > \x -> case x of 2 -> True; _ -> False
+--
+-- > > print (\x -> abs x < 2)
+-- > \x -> case x of 0 -> True; 1 -> True; -1 -> True; _ -> False
+--
+-- When the function cannot be defined by finite exceptions to a constant
+-- function using 8 case-patterns, the rest of the function is represented by
+-- @"..."@.
+--
+-- > > print (+)
+-- > \x y -> case (x,y) of (0,0) -> 0; (0,1) -> 1; (1,0) -> 1; (0,-1) -> -1; ...
+instance (Show a, Listable a, ShowFunction b) => Show (a->b) where
+  showsPrec d = showParen (d>10) . (++) . showFunctionLine 4
diff --git a/src/Test/LeanCheck/Function/ShowFunction.hs b/src/Test/LeanCheck/Function/ShowFunction.hs
--- a/src/Test/LeanCheck/Function/ShowFunction.hs
+++ b/src/Test/LeanCheck/Function/ShowFunction.hs
@@ -11,7 +11,7 @@
 -- its instances and related functions.
 --
 -- Using this module, it is possible to implement
--- a Show instance for functions:
+-- a 'Show' instance for functions:
 --
 -- > import Test.LeanCheck.ShowFunction
 -- > instance (Show a, Listable a, ShowFunction b) => Show (a->b) where
@@ -19,16 +19,36 @@
 --
 -- This shows functions as a case pattern with up to 8 cases.
 --
--- The module
--- @Test.LeanCheck.Function.Show@ ('Test.LeanCheck.Function.Show')
+-- It will only work for functions whose ultimate return value is an instance
+-- of 'ShowFunction'.  This module provides instances for most standard data
+-- types ('Int', 'Bool', 'Maybe', ...).  Please see the 'ShowFunction'
+-- typeclass documentation for how to declare istances for user-defined data
+-- types.
+--
+-- The modules
+-- "Test.LeanCheck.Function"
+-- and
+-- "Test.LeanCheck.Function.Show"
 -- exports an instance like the one above.
 module Test.LeanCheck.Function.ShowFunction
-  ( showFunction
+  (
+  -- * Showing functions
+    showFunction
   , showFunctionLine
+
+  -- * Support for user-defined algebraic datatypes on return values
+  , ShowFunction (..)
+  , bindtiersShow
+
+  -- * Listing functional bindings
   , Binding
   , bindings
-  , ShowFunction (..)
-  , tBindingsShow
+
+  -- * Pipeline for explaining, describing and clarifying bindings
+  , explainedBindings
+  , describedBindings
+  , clarifiedBindings
+
   -- * Re-exports
   , Listable
   )
@@ -37,59 +57,133 @@
 import Test.LeanCheck.Core
 import Test.LeanCheck.Error (errorToNothing)
 import Test.LeanCheck.Utils.Types
-import Data.List
+import Test.LeanCheck.Stats (classifyOn)
+import Data.List (intercalate, sortBy)
 import Data.Maybe
+import Data.Function (on)
 
 -- | A functional binding in a showable format.
+--   Argument values are represented as a list of strings.
+--   The result value is represented by 'Just' a 'String' when defined
+--   or by 'Nothing' when 'undefined'.
 type Binding = ([String], Maybe String)
 
 -- | 'ShowFunction' values are those for which
 --   we can return a list of functional bindings.
 --
--- As a user, you probably want 'showFunction' and 'showFunctionLine'.
---
--- Non functional instances should be defined by:
+-- Instances for 'show'able algebraic datatypes are defined using
+-- 'bindtiersShow':
 --
--- > instance ShowFunction Ty where tBindings = tBindingsShow
+-- > instance ShowFunction Ty where bindtiers = bindtiersShow
 class ShowFunction a where
-  tBindings :: a -> [[Binding]]
+  bindtiers :: a -> [[Binding]]
 
--- | Given a 'ShowFunction' value, return a list of bindings
---   for printing.  Examples:
+-- | Given a 'ShowFunction' value, return a list of 'Binding's.
+--   If the domain of the given argument function is infinite,
+--   the resulting list is infinite.
 --
--- > bindings True == [([],True)]
--- > bindings (id::Int) == [(["0"],"0"), (["1"],"1"), (["-1"],"-1"), ...
--- > bindings (&&) == [ (["False","False"], "False")
--- >                  , (["False","True"], "False")
--- >                  , (["True","False"], "False")
--- >                  , (["True","True"], "True")
--- >                  ]
+-- Some examples follow.  These are used as running examples in the definition
+-- of 'explainedBindings', 'describedBindings' and 'clarifiedBindings'.
+--
+-- * Defined return values are represented as 'Just' 'String's:
+--
+--     > > bindings True
+--     > [([],Just "True")]
+--
+-- * Undefined return values are represented as @Nothing@:
+--
+--     > > bindings undefined
+--     > [([],Nothing)]
+--
+-- * Infinite domains result in an infinite bindings list:
+--
+--     > > bindings (id::Int->Int)
+--     > [ (["0"], Just "0")
+--     > , (["1"], Just "1")
+--     > , (["-1"], Just "-1")
+--     > , ...
+--     > ]
+--
+-- * Finite domains result in a finite bindings list:
+--
+--     > > bindings (&&)
+--     > [ (["False","False"], Just "False")
+--     > , (["False","True"], Just "False")
+--     > , (["True","False"], Just "False")
+--     > , (["True","True"], Just "True")
+--     > ]
+--
+--     > > bindings (||)
+--     > [ (["False","False"], Just "False")
+--     > , (["False","True"], Just "True")
+--     > , (["True","False"], Just "True")
+--     > , (["True","True"], Just "True")
+--     > ]
+--
+-- * Even very simple functions are represented by an infinite list of bindings:
+--
+--     > > bindings (== 0)
+--     > [ (["0"], Just "True")
+--     > , (["1"], Just "False")
+--     > , (["-1"], Just "False")
+--     > , ...
+--     > ]
+--
+--     > > bindings (== 1)
+--     > [ (["0"], Just "False")
+--     > , (["1"], Just "True")
+--     > , (["-1"], Just "False")
+--     > , ...
+--     > ]
+--
+-- * Ignored arguments are still listed:
+--
+--     > > bindings ((\_ y -> y == 1) :: Int -> Int -> Bool)
+--     > [ (["0","0"], Just "False")
+--     > , (["0","1"], Just "True")
+--     > , (["1","0"], Just "False")
+--     > , ...
+--     > ]
+--
+-- * Again, undefined values are represented as 'Nothing'.
+--   Here, the 'head' of an empty list is undefined:
+--
+--     > > bindings (head :: [Int] -> Int)
+--     > [ (["[]"], Nothing)
+--     > , (["[0]"], Just "0")
+--     > , (["[0,0]"], Just "0")
+--     > , (["[1]"], Just "1")
+--     > , ...
+--     > ]
 bindings :: ShowFunction a => a -> [Binding]
-bindings = concat . tBindings
+bindings = concat . bindtiers
 
 
--- instances for (algebraic/numeric) data types --
--- | A default implementation of tBindings for already 'Show'-able types.
-tBindingsShow :: Show a => a -> [[Binding]]
-tBindingsShow x = [[([],errorToNothing $ show x)]]
+-- | A drop-in implementation of 'bindtiers' for 'show'able types.
+--
+-- Define instances for 'show'able algebraic datatypes as:
+--
+-- > instance ShowFunction Ty where bindtiers = bindtiersShow
+bindtiersShow :: Show a => a -> [[Binding]]
+bindtiersShow x = [[([],errorToNothing $ show x)]]
 
-instance ShowFunction ()       where tBindings = tBindingsShow
-instance ShowFunction Bool     where tBindings = tBindingsShow
-instance ShowFunction Int      where tBindings = tBindingsShow
-instance ShowFunction Integer  where tBindings = tBindingsShow
-instance ShowFunction Char     where tBindings = tBindingsShow
-instance ShowFunction Float    where tBindings = tBindingsShow
-instance ShowFunction Double   where tBindings = tBindingsShow
-instance ShowFunction Ordering where tBindings = tBindingsShow
-instance Show a => ShowFunction [a]       where tBindings = tBindingsShow
-instance Show a => ShowFunction (Maybe a) where tBindings = tBindingsShow
-instance (Show a, Show b) => ShowFunction (Either a b) where tBindings = tBindingsShow
-instance (Show a, Show b) => ShowFunction (a,b) where tBindings = tBindingsShow
+instance ShowFunction ()       where bindtiers = bindtiersShow
+instance ShowFunction Bool     where bindtiers = bindtiersShow
+instance ShowFunction Int      where bindtiers = bindtiersShow
+instance ShowFunction Integer  where bindtiers = bindtiersShow
+instance ShowFunction Char     where bindtiers = bindtiersShow
+instance ShowFunction Float    where bindtiers = bindtiersShow
+instance ShowFunction Double   where bindtiers = bindtiersShow
+instance ShowFunction Ordering where bindtiers = bindtiersShow
+instance Show a => ShowFunction [a]       where bindtiers = bindtiersShow
+instance Show a => ShowFunction (Maybe a) where bindtiers = bindtiersShow
+instance (Show a, Show b) => ShowFunction (Either a b) where bindtiers = bindtiersShow
+instance (Show a, Show b) => ShowFunction (a,b) where bindtiers = bindtiersShow
 
 -- instance for functional value type --
 instance (Show a, Listable a, ShowFunction b) => ShowFunction (a->b) where
-  tBindings f = concatMapT tBindingsFor tiers
-    where tBindingsFor x = mapFst (show x:) `mapT` tBindings (f x)
+  bindtiers f = concatMapT bindtiersFor tiers
+    where bindtiersFor x = mapFst (show x:) `mapT` bindtiers (f x)
           mapFst f (x,y) = (f x, y)
 
 paren :: String -> String
@@ -100,16 +194,18 @@
   where varnames = ["x","y","z","w"] ++ map (++"'") varnames
 
 showTuple :: [String] -> String
-showTuple [x] = x
-showTuple xs  = paren $ intercalate "," xs
+showTuple [x]  =  x
+showTuple xs | all (== "_") xs  =  "_"
+             | otherwise        =  paren $ intercalate "," xs
 
-showNBindingsOf :: ShowFunction a => Int -> Int -> a -> [String]
-showNBindingsOf m n f = take n bs
-                     ++ ["..." | length bs' >= m || length bs > n]
-  where bs' = take m $ bindings f
-        bs = [ showTuple as ++ " -> " ++ r
-             | (as, Just r) <- bs' ]
+showBindings :: [Binding] -> [String]
+showBindings bs = [ showTuple as ++ " -> " ++ r | (as, Just r) <- bs ]
 
+showNBindings :: Bool -> Int -> [Binding] -> [String]
+showNBindings infinite n bs' = take n bs ++ ["..." | infinite || length bs > n]
+  where
+  bs = showBindings bs'
+
 isValue :: ShowFunction a => a -> Bool
 isValue f = case bindings f of
               [([],_)] -> True
@@ -120,86 +216,389 @@
                   Nothing -> "undefined"
                   Just x' -> x'
 
--- | Given a number of patterns to show, shows a 'ShowFunction' value.
+-- | Given the number of patterns to show, shows a 'ShowFunction' value.
 --
--- > showFunction undefined True == "True"
--- > showFunction 3 (id::Int) == "\\x -> case x of\n\
--- >                              \        0 -> 0\n\
--- >                              \        1 -> 1\n\
--- >                              \        -1 -> -1\n\
--- >                              \        ...\n"
--- > showFunction 4 (&&) == "\\x y -> case (x,y) of\n\
--- >                         \          (False,False) -> False\n\
--- >                         \          (False,True) -> False\n\
--- >                         \          (True,False) -> False\n\
--- >                         \          (True,True) -> True\n"
+-- > > putStrLn $ showFunction undefined True
+-- > True
+-- >
+-- > > putStrLn $ showFunction 3 (id::Int->Int)
+-- > \x -> case x of
+-- >       0 -> 0
+-- >       1 -> 1
+-- >       -1 -> -1
+-- >       ...
+-- >
+-- > > putStrLn $ showFunction 4 (&&)
+-- > \x y -> case (x,y) of
+-- >         (True,True) -> True
+-- >         _ -> False
+-- >
 --
--- This can be used as an implementation of show for functions:
+-- In the examples above, "@...@" should be interpreted literally.
 --
+-- This can be used as an implementation of 'show' for functions:
+--
 -- > instance (Show a, Listable a, ShowFunction b) => Show (a->b) where
 -- >   show = showFunction 8
+--
+-- See 'showFunctionLine' for an alternative without line breaks.
 showFunction :: ShowFunction a => Int -> a -> String
 showFunction n = showFunctionL False (n*n+1) n
 
--- | Same as showFunction, but has no line breaks.
+-- | Same as 'showFunction', but has no line breaks.
 --
--- > showFunction 2 (id::Int) == "\\x -> case x of 0 -> 0; 1 -> 1; ..."
+-- > > putStrLn $ showFunctionLine 3 (id::Int->Int)
+-- > \x -> case x of 0 -> 0; 1 -> 1; -1 -> -1; ...
+-- > > putStrLn $ showFunctionLine 3 (&&)
+-- > \x y -> case (x,y) of (True,True) -> True; _ -> False
+--
+-- This can be used as an implementation of 'show' for functions:
+--
+-- > instance (Show a, Listable a, ShowFunction b) => Show (a->b) where
+-- >   show = showFunction 8
 showFunctionLine :: ShowFunction a => Int -> a -> String
 showFunctionLine n = showFunctionL True (n*n+1) n
 
--- | isUndefined checks if a function is totally undefined.
--- When it is not possible to check all values, it returns false
+-- | isUndefined checks if a function is totally undefined
+--   for the given maximum number of values
 isUndefined :: ShowFunction a => Int -> a -> Bool
-isUndefined m f = length bs < m && all (isNothing . snd) bs
-  where bs = take m $ bindings f
+isUndefined m = all (isNothing . snd) . take m . bindings
 
+-- | checks if a function is constant
+--   for the given maximum number of values
+isConstant :: ShowFunction a => Int -> a -> Bool
+isConstant m f = case take m $ bindings f of
+                 []          -> False -- uninhabited type?
+                 ((_,r'):bs) -> all (\(_,r) -> r == r') bs
+
+-- | shows a constant function
+showConstant :: ShowFunction a => Int -> a -> String
+showConstant m f = "\\" ++ unwords vs ++ " -> " ++ fromMaybe "undefined" r
+  where
+  (as,r) = head $ bindings f
+  vs = replicate (length as) "_"
+
 -- The first boolean parameter tells if we are showing
 -- the function on a single line
 showFunctionL :: ShowFunction a => Bool -> Int -> Int -> a -> String
 showFunctionL singleLine m n f | isValue f = showValueOf f
+showFunctionL singleLine m n f | isConstant m f = showConstant m f
+--showFunctionL singleLine m n f | canName m f = showName m f
 showFunctionL singleLine m n f | otherwise = lambdaPat ++ caseExp
   where
-    vs = varnamesFor f
     lambdaPat = "\\" ++ unwords vs ++ " -> "
-    casePat = "case " ++ showTuple vs ++ " of"
-    bs = showNBindingsOf m n f
+    casePat = "case " ++ showTuple (filter (/= "_") vs) ++ " of"
+    (vs, bindings) = clarifiedBindings m n f
+    bs = showNBindings (length bindings >= m) n bindings
     sep | singleLine = " "
         | otherwise = "\n"
     cases | singleLine = intercalate "; " bs
           | otherwise  = unlines
-                       $ (replicate (length lambdaPat + 2) ' ' ++) `map` bs
+                       $ (replicate (length lambdaPat) ' ' ++) `map` bs
     caseExp = if isUndefined m f
                 then "undefined"
                 else casePat ++ sep ++ cases
 
 -- instances for further tuple arities --
 instance (Show a, Show b, Show c)
-      => ShowFunction (a,b,c) where tBindings = tBindingsShow
+      => ShowFunction (a,b,c) where bindtiers = bindtiersShow
 instance (Show a, Show b, Show c, Show d)
-      => ShowFunction (a,b,c,d) where tBindings = tBindingsShow
+      => ShowFunction (a,b,c,d) where bindtiers = bindtiersShow
 instance (Show a, Show b, Show c, Show d, Show e)
-      => ShowFunction (a,b,c,d,e) where tBindings = tBindingsShow
+      => ShowFunction (a,b,c,d,e) where bindtiers = bindtiersShow
 instance (Show a, Show b, Show c, Show d, Show e, Show f)
-      => ShowFunction (a,b,c,d,e,f) where tBindings = tBindingsShow
+      => ShowFunction (a,b,c,d,e,f) where bindtiers = bindtiersShow
 instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g)
-      => ShowFunction (a,b,c,d,e,f,g) where tBindings = tBindingsShow
+      => ShowFunction (a,b,c,d,e,f,g) where bindtiers = bindtiersShow
 instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h)
-      => ShowFunction (a,b,c,d,e,f,g,h) where tBindings = tBindingsShow
+      => ShowFunction (a,b,c,d,e,f,g,h) where bindtiers = bindtiersShow
 
 -- instance for types from Test.LeanCheck.Utils.Types
-instance ShowFunction Nat   where tBindings = tBindingsShow
-instance ShowFunction Nat1  where tBindings = tBindingsShow
-instance ShowFunction Nat2  where tBindings = tBindingsShow
-instance ShowFunction Nat3  where tBindings = tBindingsShow
-instance ShowFunction Nat4  where tBindings = tBindingsShow
-instance ShowFunction Nat5  where tBindings = tBindingsShow
-instance ShowFunction Nat6  where tBindings = tBindingsShow
-instance ShowFunction Nat7  where tBindings = tBindingsShow
-instance ShowFunction Int1  where tBindings = tBindingsShow
-instance ShowFunction Int2  where tBindings = tBindingsShow
-instance ShowFunction Int3  where tBindings = tBindingsShow
-instance ShowFunction Int4  where tBindings = tBindingsShow
-instance ShowFunction Word1 where tBindings = tBindingsShow
-instance ShowFunction Word2 where tBindings = tBindingsShow
-instance ShowFunction Word3 where tBindings = tBindingsShow
-instance ShowFunction Word4 where tBindings = tBindingsShow
+instance ShowFunction Nat   where bindtiers = bindtiersShow
+instance ShowFunction Nat1  where bindtiers = bindtiersShow
+instance ShowFunction Nat2  where bindtiers = bindtiersShow
+instance ShowFunction Nat3  where bindtiers = bindtiersShow
+instance ShowFunction Nat4  where bindtiers = bindtiersShow
+instance ShowFunction Nat5  where bindtiers = bindtiersShow
+instance ShowFunction Nat6  where bindtiers = bindtiersShow
+instance ShowFunction Nat7  where bindtiers = bindtiersShow
+instance ShowFunction Int1  where bindtiers = bindtiersShow
+instance ShowFunction Int2  where bindtiers = bindtiersShow
+instance ShowFunction Int3  where bindtiers = bindtiersShow
+instance ShowFunction Int4  where bindtiers = bindtiersShow
+instance ShowFunction Word1 where bindtiers = bindtiersShow
+instance ShowFunction Word2 where bindtiers = bindtiersShow
+instance ShowFunction Word3 where bindtiers = bindtiersShow
+instance ShowFunction Word4 where bindtiers = bindtiersShow
+
+-- | Hard coded function names and bindings
+--   Search this list for a short name for your function.
+functionNames :: [(String, [Binding])]
+functionNames =
+  [ "id"    `for` (id          :: () -> ())
+  , "const" `for` (const       :: () -> () -> ())
+
+  -- booleans
+  , "id"    `for` (id          :: Bool -> Bool)
+  , "not"   `for` (not         :: Bool -> Bool)
+  , "const" `for` (const :: Bool -> Bool -> Bool)
+
+  , "(&&)"  `for` (&&)
+  , "(||)"  `for` (||)
+
+  -- numeric types
+  , "id"      `for` (id      :: Int -> Int)
+  , "const"   `for` (const   :: Int -> Int -> Int)
+
+  -- Num typeclass
+  , "(+)"     `for` ((+)     :: Int -> Int -> Int)
+  , "(-)"     `for` ((-)     :: Int -> Int -> Int)
+  , "(*)"     `for` ((*)     :: Int -> Int -> Int)
+  , "negate"  `for` (negate  :: Int -> Int)
+  , "abs"     `for` (abs     :: Int -> Int)
+  , "signum"  `for` (signum  :: Int -> Int)
+
+  -- integer properties
+  , "odd"     `for` (odd     :: Int -> Bool)
+  , "even"    `for` (even    :: Int -> Bool)
+  ]
+  where
+  n `for` f = (n, bindings f)
+
+-- | Tries to name a function heuristically
+name :: ShowFunction a => Int -> a -> Maybe String
+name n f = listToMaybe [ nm | (nm, bs) <- functionNames
+                            , take n bs == take n (bindings f)]
+
+canName :: ShowFunction a => Int -> a -> Bool
+canName n = isJust . name n
+
+showName :: ShowFunction a => Int -> a -> String
+showName n = fromMaybe "unknown" . name n
+
+-- | Returns a set of variables and a set of bindings
+--   describing how a function works.
+--
+-- Some argument values are generalized to "@_@" when possible.
+-- If one of the function arguments is not used altogether, it is ommited in
+-- the set of bindings and appears as "_" in the variables list.
+--
+-- This is the /last/ function in the clarification pipeline.
+--
+-- It takes two integer arguments:
+--
+-- 1. @m@: the maximum number of cases considered for computing the description;
+-- 2. @n@: the maximum number of cases in the actual description.
+--
+-- As a general rule of thumb, set @m=n*n+1@.
+--
+-- Some examples follow:
+--
+-- * When all arguments are used, the result is the same as 'describedBindings':
+--
+--     > > clarifiedBindings 100 10 (==1)
+--     > ( ["x"], [ (["1"],Just "True"),
+--     >          , (["_"],Just "False") ] )
+--
+-- * When some arguments are unused, they are omitted in the list of bindings and
+--   appear as @"_"@ in the list of variables.
+--
+--     > > clarifiedBindings 100 10 (\_ y -> y == 1)
+--     > ( ["_", "y"], [ (["1"],Just "True")
+--     >               , (["_"],Just "False") ] )
+clarifiedBindings :: ShowFunction a => Int -> Int -> a -> ([String],[Binding])
+clarifiedBindings m n = clarifyBindings . describedBindings m n
+
+clarifyBindings :: [Binding] -> ([String],[Binding])
+clarifyBindings bs  =  (varnamesByUsage used, map (mapFst $ select used) bs)
+  where
+  mapFst f (x,y) = (f x, y)
+  used = usedArgs bs
+
+varnamesByUsage :: [Bool] -> [String]
+varnamesByUsage = zipWith used varnames
+  where
+  used s False = "_"
+  used s True  = s
+  varnames = ["x","y","z","w"] ++ map (++"'") varnames
+
+usedArgs :: [Binding] -> [Bool]
+usedArgs = foldr1 (zipWith (||))
+         . map (map (/= "_") . fst)
+
+-- | Returns a set of bindings describing how a function works.
+-- Some argument values are generalized to "@_@" when possible.
+-- It takes two integer arguments:
+--
+-- 1. @m@: the maximum number of cases considered for computing description;
+-- 2. @n@: the maximum number of cases in the actual description.
+--
+-- As a general rule of thumb, set @m=n*n+1@.
+--
+-- This is the /second/ function in the clarification pipeline.
+--
+-- This function processes the result of 'explainedBindings'
+-- to sometimes return shorter descriptions.
+-- It chooses the shortest of the following (in order):
+--
+-- * regular unexplained-undescribed 'bindings';
+-- * regular 'explainedBindings';
+-- * 'explainedBindings' with least occurring cases generalized first;
+--
+-- Here are some examples:
+--
+-- * Sometimes the result is the same as 'explainedBindings':
+--
+--     > > describedBindings 100 10 (||)
+--     > [ (["False","False"],Just "False")
+--     > , (["_","_"],Just "True") ]
+--
+--     > > describedBindings 100 10 (==0)
+--     > [ (["0"],Just "True")
+--     > , (["_"],Just "False") ]
+--
+-- * but sometimes it is shorter because we consider generalizing least
+--   occurring cases first:
+--
+--     > > describedBindings 100 10 (&&)
+--     > [ ( ["True","True"],Just "True")
+--     > , ( ["_","_"],Just "False") ]
+--
+--     > > describedBindings 100 10 (==1)
+--     > [ (["1"],Just "True"),
+--     > , (["_"],Just "False") ]
+--
+--     > > describedBindings 100 10 (\_ y -> y == 1)
+--     > [ (["_","1"],Just "True")
+--     > , (["_","_"],Just "False") ]
+describedBindings :: ShowFunction a => Int -> Int -> a -> [Binding]
+describedBindings m n f
+  | length bs1 <= n  =  bs1
+  | otherwise        =  bs0
+  where
+  bs0  =  take m $ bindings f
+  bs1  =  describeBindings bs0
+
+describeBindings :: [Binding] -> [Binding]
+describeBindings bs = head $ sortOn length $
+  [ bs
+  , explainBindings bs
+  , explainBindings . concat . sortOn length $ classifyOn snd bs
+  ]
+
+-- | Returns a set of bindings explaining how a function works.
+--   Some argument values are generalized to "@_@" when possible.
+--   It takes as argument the maximum number of cases
+--   considered for computing the explanation.
+--
+-- A measure of success in this generalization process is if this function
+-- returns less values than the asked maximum number of cases.
+--
+-- This is the /first/ function in the clarification pipeline.
+--
+-- * In some cases, 'bindings' cannot be "explained"
+--   an almost unchanged result of 'bindings' is returned
+--   with the last binding having variables replaced by "@_@":
+--
+--     > > explainedBindings 4 (id::Int->Int)
+--     > [ (["0"],Just "0")
+--     > , (["1"],Just "1")
+--     > , (["-1"],Just "-1")
+--     > , (["_"],Just "2") ]
+--
+-- * When possible, some cases are generalized using @_@:
+--
+--     > > explainedBindings 10 (||)
+--     > [ (["False","False"],Just "False")
+--     > , (["_","_"],Just "True") ]
+--
+--     but the resulting "explanation" might not be the shortest possible
+--     (cf. 'describedBindings'):
+--
+--     > > explainedBindings 10 (&&)
+--     > [ ( ["False","_"],Just "False")
+--     > , (["_","False"],Just "False")
+--     > , (["_","_"],Just "True") ]
+--
+-- * Generalization works for infinite domains (heuristically):
+--
+--     > > explainedBindings 10 (==0)
+--     > [ (["0"],Just "True")
+--     > , (["_"],Just "False") ]
+--
+-- * Generalization for each item is processed in the order they are generated by 'bindings'
+--   hence explanations are not always the shortest possible (cf. 'describedBindings').
+--   In the following examples, the first case is redundant.
+--
+--     > > explainedBindings 10 (==1)
+--     > [ (["0"],Just "False")
+--     > , (["1"],Just "True"),
+--     > , (["_"],Just "False") ]
+--
+--     > > explainedBindings 10 (\_ y -> y == 1)
+--     > [ (["_","0"],Just "False")
+--     > , (["_","1"],Just "True")
+--     > , (["_","_"],Just "False") ]
+explainedBindings :: ShowFunction a => Int -> a -> [Binding]
+explainedBindings m = explainBindings . take m . bindings
+
+explainBindings :: [Binding] -> [Binding]
+explainBindings = explain []
+  where
+  explain :: [Binding] -> [Binding] -> [Binding]
+  explain bs' []           =  reverse bs'
+  explain bs' ((as,r):bs)  =  explain (bs''++bs') [b | b <- bs, none (b <~~) bs'']
+    where
+    bs'' = discardLater (<~~)
+         [ (gas,r) | gas <- generalizations as
+                   , and [r' == r | (as',r') <- bs, as' <~ gas] ]
+
+generalizations :: [String] -> [[String]]
+generalizations []     = [[]]
+generalizations (v:vs) = map ("_":) gvs ++ map (v:) gvs
+  where
+  gvs = generalizations vs
+
+-- | Should be read as "is generalized by":
+--
+-- > > ["1","2","3"] <~ ["_","_","_"]
+-- > True
+-- > > ["_","_","_"] <~ ["1","2","3"]
+-- > False
+-- > > ["1","3"] <~ ["_","3"]
+-- > True
+-- > > ["_","3"] <~ ["_","4"]
+-- > False
+(<~) :: [String] -> [String] -> Bool
+[]     <~ []       =  True
+(v:vs) <~ ("_":ws) =  vs <~ ws
+(v:vs) <~ (w:ws)   =  v == w && vs <~ ws
+_      <~ _        =  False
+
+-- | Should be read as "is generalized by".
+(<~~) :: Binding -> Binding -> Bool
+(as,r) <~~ (as',r') = as <~ as' && r == r'
+
+
+-- general auxiliary functions
+
+discard :: (a -> Bool) -> [a] -> [a]
+discard p = filter (not . p)
+
+discardLater :: (a -> a -> Bool) -> [a] -> [a]
+discardLater (?>) = dl
+  where
+  dl []     = []
+  dl (x:xs) = x : discard (?> x) (dl xs)
+
+none :: (a -> Bool) -> [a] -> Bool
+none p = not . any p
+
+-- sortOn is only available on GHC > 7.8
+sortOn :: Ord b => (a -> b) -> [a] -> [a]
+sortOn f = sortBy (compare `on` f)
+
+select :: [Bool] -> [a] -> [a]
+select [] _ = []
+select _ [] = []
+select (p:ps) (x:xs) = if p then x : xs' else xs' where xs' = select ps xs
diff --git a/src/Test/LeanCheck/IO.hs b/src/Test/LeanCheck/IO.hs
--- a/src/Test/LeanCheck/IO.hs
+++ b/src/Test/LeanCheck/IO.hs
@@ -44,6 +44,9 @@
 
 -- | Check a property for a given number of tests
 --   printing results on 'stdout'
+--
+-- > > checkFor 1000 $ \xs -> sort (sort xs) == sort (xs::[Int])
+-- > +++ OK, passed 1000 tests.
 checkFor :: Testable a => Int -> a -> IO ()
 checkFor n p = checkResultFor n p >> return ()
 
@@ -51,6 +54,14 @@
 --   printing results on 'stdout' and
 --   returning 'True' on success.
 --
+-- > > p <- checkResult $ \xs -> sort (sort xs) == sort (xs::[Int])
+-- > +++ OK, passed 200 tests.
+-- > > q <- checkResult $ \xs ys -> xs `union` ys == ys `union` (xs::[Int])
+-- > *** Failed! Falsifiable (after 4 tests):
+-- > [] [0,0]
+-- > > p && q
+-- > False
+--
 -- There is no option to silence this function:
 -- for silence, you should use 'Test.LeanCheck.holds'.
 checkResult :: Testable a => a -> IO Bool
@@ -59,6 +70,10 @@
 -- | Check a property for a given number of tests
 --   printing results on 'stdout' and
 --   returning 'True' on success.
+--
+-- > > checkResultFor 1000 $ \xs -> sort (sort xs) == sort (xs::[Int])
+-- > +++ OK, passed 1000 tests.
+-- > True
 --
 -- There is no option to silence this function:
 -- for silence, you should use 'Test.LeanCheck.holds'.
diff --git a/src/Test/LeanCheck/Tiers.hs b/src/Test/LeanCheck/Tiers.hs
--- a/src/Test/LeanCheck/Tiers.hs
+++ b/src/Test/LeanCheck/Tiers.hs
@@ -215,21 +215,21 @@
 -- | Takes as argument tiers of element values;
 --   returns tiers of lists of elements.
 --
--- > listsOf [[]] == [[[]]]
+-- > listsOf [[]]  =  [[[]]]
 --
--- > listsOf [[x]] == [ [[]]
--- >                  , [[x]]
--- >                  , [[x,x]]
--- >                  , [[x,x,x]]
--- >                  , ...
--- >                  ]
+-- > listsOf [[x]]  =  [ [[]]
+-- >                   , [[x]]
+-- >                   , [[x,x]]
+-- >                   , [[x,x,x]]
+-- >                   , ...
+-- >                   ]
 --
--- > listsOf [[x],[y]] == [ [[]]
--- >                      , [[x]]
--- >                      , [[x,x],[y]]
--- >                      , [[x,x,x],[x,y],[y,x]]
--- >                      , ...
--- >                      ]
+-- > listsOf [[x],[y]]  =  [ [[]]
+-- >                       , [[x]]
+-- >                       , [[x,x],[y]]
+-- >                       , [[x,x,x],[x,y],[y,x]]
+-- >                       , ...
+-- >                       ]
 listsOf :: [[a]] -> [[[a]]]
 listsOf xss = cons0 []
            \/ delay (productWith (:) xss (listsOf xss))
@@ -240,9 +240,9 @@
 -- takes as argument a list of lists of tiers of elements;
 -- returns lists combining elements of each list of tiers.
 --
--- > products [xss] = mapT (:[]) xss
--- > products [xss,yss] = mapT (\(x,y) -> [x,y]) (xss >< yss)
--- > products [xss,yss,zss] = product3With (\x y z -> [x,y,z]) xss yss zss
+-- > products [xss]  =  mapT (:[]) xss
+-- > products [xss,yss]  =  mapT (\(x,y) -> [x,y]) (xss >< yss)
+-- > products [xss,yss,zss]  =  product3With (\x y z -> [x,y,z]) xss yss zss
 products :: [ [[a]] ] -> [[ [a] ]]
 products = foldr (productWith (:)) [[[]]]
 
@@ -286,6 +286,7 @@
 catMaybesT :: [[Maybe a]] -> [[a]]
 catMaybesT = map catMaybes
 
+-- | Like 'mapMaybe' but for tiers.
 mapMaybeT :: (a -> Maybe b) -> [[a]] -> [[b]]
 mapMaybeT f = catMaybesT . mapT f
 
diff --git a/src/Test/LeanCheck/Utils/Operators.hs b/src/Test/LeanCheck/Utils/Operators.hs
--- a/src/Test/LeanCheck/Utils/Operators.hs
+++ b/src/Test/LeanCheck/Utils/Operators.hs
@@ -53,6 +53,7 @@
   , okOrd
   , okEqOrd
   , okNum
+  , okNumNonNegative
   )
 where
 
@@ -253,18 +254,21 @@
              && okOrd x y z
              && (x == y) == (x `compare` y == EQ) -- consistent instances
 
+okNumNonNegative :: (Eq a, Num a) => a -> a -> a -> Bool
+okNumNonNegative x y z  =  commutative (+) x y
+                        && commutative (*) x y
+                        && associative (+) x y z
+                        && associative (*) x y z
+                        && distributive (*) (+) x y z
+                        && idempotent (+0) x
+                        && idempotent (*1) x
+                        && idempotent abs x
+                        && idempotent signum x
+                        && abs x * signum x == x
+
 okNum :: (Eq a, Num a) => a -> a -> a -> Bool
-okNum x y z  =  commutative (+) x y
-             && commutative (*) x y
-             && associative (+) x y z
-             && associative (*) x y z
-             && distributive (*) (+) x y z
-             && idempotent (+0) x
-             && idempotent (*1) x
-             && idempotent abs x
-             && idempotent signum x
+okNum x y z  =  okNumNonNegative x y z
              && negate (negate x) == x
-             && abs x * signum x == x
              && x - x == 0
 
 -- | Equal under, a ternary operator with the same fixity as '=='.
diff --git a/src/Test/LeanCheck/Utils/Types.hs b/src/Test/LeanCheck/Utils/Types.hs
--- a/src/Test/LeanCheck/Utils/Types.hs
+++ b/src/Test/LeanCheck/Utils/Types.hs
@@ -60,6 +60,24 @@
   , Bag (..)
   , Set (..)
   , Map (..)
+
+  -- * Character types
+  , Space (..)
+  , Lower (..)
+  , Upper (..)
+  , Alpha (..)
+  , Digit (..)
+  , AlphaNum (..)
+  , Letter (..)
+
+  -- * String types
+  , Spaces (..)
+  , Lowers (..)
+  , Uppers (..)
+  , Alphas (..)
+  , Digits (..)
+  , AlphaNums (..)
+  , Letters (..)
   )
 where
 -- TODO: Add Ix and Bits instances
@@ -135,14 +153,17 @@
 -- 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)
+-- Its 'Enum', 'Listable' and 'Num' instances only produce non-negative values.
+-- When @x < y@ then @x - y = 0@.
+newtype Natural = Natural { unNatural :: Integer } 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'.
+--
+-- Its 'Enum', 'Listable' and 'Num' instances only produce non-negative values.
+-- When @x < y@ then @x - y = 0@.
 newtype Nat = Nat { unNat :: Int } deriving (Eq, Ord)
 
 -- | Natural numbers modulo 1: 0
@@ -181,6 +202,8 @@
 nat5 :: Int -> Nat5;  nat5 = Nat5 . (`mod` 5)
 nat6 :: Int -> Nat6;  nat6 = Nat6 . (`mod` 6)
 nat7 :: Int -> Nat7;  nat7 = Nat7 . (`mod` 7)
+nat  :: Int -> Nat;   nat  = Nat  . (\x -> if x < 0 then 0 else x)
+natural :: Integer -> Natural;  natural = Natural . (\x -> if x < 0 then 0 else x)
 
 oInt1  ::(Int->Int->Int)->(Int1->Int1->Int1)   ; oInt1  = oNewtype int1  unInt1
 oInt2  ::(Int->Int->Int)->(Int2->Int2->Int2)   ; oInt2  = oNewtype int2  unInt2
@@ -190,7 +213,7 @@
 oWord2 ::(Int->Int->Int)->(Word2->Word2->Word2); oWord2 = oNewtype word2 unWord2
 oWord3 ::(Int->Int->Int)->(Word3->Word3->Word3); oWord3 = oNewtype word3 unWord3
 oWord4 ::(Int->Int->Int)->(Word4->Word4->Word4); oWord4 = oNewtype word4 unWord4
-oNat   ::(Int->Int->Int)->(Nat->Nat->Nat)      ; oNat   = oNewtype Nat   unNat
+oNat   ::(Int->Int->Int)->(Nat->Nat->Nat)      ; oNat   = oNewtype nat   unNat
 oNat1  ::(Int->Int->Int)->(Nat1->Nat1->Nat1)   ; oNat1  = oNewtype nat1  unNat1
 oNat2  ::(Int->Int->Int)->(Nat2->Nat2->Nat2)   ; oNat2  = oNewtype nat2  unNat2
 oNat3  ::(Int->Int->Int)->(Nat3->Nat3->Nat3)   ; oNat3  = oNewtype nat3  unNat3
@@ -198,8 +221,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
+oNatural :: (Integer->Integer->Integer) -> (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
@@ -217,7 +240,7 @@
 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 :: (Integer->Integer) -> (Natural->Natural)
 fNatural = fNewtype Natural unNatural
 
 instance Show Int1 where show = show . unInt1
@@ -246,7 +269,7 @@
 instance Read Word2 where readsPrec = readsPrecNewtype word2
 instance Read Word3 where readsPrec = readsPrecNewtype word3
 instance Read Word4 where readsPrec = readsPrecNewtype word4
-instance Read Nat where readsPrec = readsPrecNewtype Nat
+instance Read Nat where readsPrec = readsPrecNewtype nat
 instance Read Nat1 where readsPrec = readsPrecNewtype nat1
 instance Read Nat2 where readsPrec = readsPrecNewtype nat2
 instance Read Nat3 where readsPrec = readsPrecNewtype nat3
@@ -254,7 +277,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 Read Natural where readsPrec = readsPrecNewtype natural
 
 
 instance Num Int1 where (+) = oInt1 (+);  abs    = fInt1 abs
@@ -291,7 +314,7 @@
 
 instance Num Nat where (+) = oNat (+);  abs    = fNat abs
                        (-) = oNat (-);  signum = fNat signum
-                       (*) = oNat (*);  fromInteger = Nat . fromInteger
+                       (*) = oNat (*);  fromInteger = nat . fromInteger
 
 instance Num Nat1 where (+) = oNat1 (+);  abs    = fNat1 abs
                         (-) = oNat1 (-);  signum = fNat1 signum
@@ -324,7 +347,7 @@
 instance Num Natural where
   (+) = oNatural (+);  abs    = fNatural abs
   (-) = oNatural (-);  signum = fNatural signum
-  (*) = oNatural (*);  fromInteger = Natural . fromInteger
+  (*) = oNatural (*);  fromInteger = natural . fromInteger
 
 
 instance Real Int1 where toRational (Int1 x) = fromIntegral x % 1
@@ -393,7 +416,7 @@
 instance Integral Nat7 where quotRem = otNewtype nat7 unNat7 quotRem
                              toInteger = toInteger . unNat7
 
-instance Integral Natural where quotRem = otNewtype Natural unNatural quotRem
+instance Integral Natural where quotRem = otNewtype natural unNatural quotRem
                                 toInteger = toInteger . unNatural
 
 instance Bounded Int1 where maxBound = Int1 0; minBound = Int1 (-1)
@@ -437,7 +460,7 @@
 instance Enum Word4 where toEnum   = word4;   enumFrom     = boundedEnumFrom
                           fromEnum = unWord4; enumFromThen = boundedEnumFromThen
 
-instance Enum Nat where toEnum   = Nat;   enumFrom     = boundedEnumFrom
+instance Enum Nat where toEnum   = nat;   enumFrom     = boundedEnumFrom
                         fromEnum = unNat; enumFromThen = boundedEnumFromThen
 
 instance Enum Nat1 where toEnum   = nat1;   enumFrom     = boundedEnumFrom
@@ -462,8 +485,8 @@
                          fromEnum = unNat7; enumFromThen = boundedEnumFromThen
 
 instance Enum Natural where
-  toEnum   = Natural
-  fromEnum = unNatural;
+  toEnum   = natural . fromIntegral
+  fromEnum = fromInteger . unNatural;
   enumFrom     (Natural x)             = map Natural [x..]
   enumFromThen (Natural x) (Natural s) = map Natural [x,s..]
 
@@ -471,19 +494,19 @@
 instance Listable Int2 where list = listIntegral
 instance Listable Int3 where list = listIntegral
 instance Listable Int4 where list = listIntegral
-instance Listable Word1 where list = [0..]
-instance Listable Word2 where list = [0..]
-instance Listable Word3 where list = [0..]
-instance Listable Word4 where list = [0..]
-instance Listable Nat where list = [0..]
-instance Listable Nat1 where list = [0..]
-instance Listable Nat2 where list = [0..]
-instance Listable Nat3 where list = [0..]
-instance Listable Nat4 where list = [0..]
-instance Listable Nat5 where list = [0..]
-instance Listable Nat6 where list = [0..]
-instance Listable Nat7 where list = [0..]
-instance Listable Natural where list = [0..]
+instance Listable Word1 where list = listIntegral
+instance Listable Word2 where list = listIntegral
+instance Listable Word3 where list = listIntegral
+instance Listable Word4 where list = listIntegral
+instance Listable Nat where list = listIntegral
+instance Listable Nat1 where list = listIntegral
+instance Listable Nat2 where list = listIntegral
+instance Listable Nat3 where list = listIntegral
+instance Listable Nat4 where list = listIntegral
+instance Listable Nat5 where list = listIntegral
+instance Listable Nat6 where list = listIntegral
+instance Listable Nat7 where list = listIntegral
+instance Listable Natural where list = listIntegral
 
 -- | Deprecated.  Use 'Word1'.
 type UInt1 = Word1
@@ -618,3 +641,51 @@
 instance (Integral a, Bounded a) => Listable (Xs a) where
   tiers = cons1 (Xs . map unX)
 -- ^ Lists with elements of the 'X' type.
+
+data Space  =  Space {unSpace :: Char}
+data Lower  =  Lower {unLower :: Char}
+data Upper  =  Upper {unUpper :: Char}
+data Alpha  =  Alpha {unAlpha :: Char}
+data Digit  =  Digit {unDigit :: Char}
+data AlphaNum  =  AlphaNum {unAlphaNum :: Char}
+data Letter    =  Letter   {unLetter   :: Char}
+
+instance Show Space where show = show . unSpace
+instance Show Lower where show = show . unLower
+instance Show Upper where show = show . unUpper
+instance Show Alpha where show = show . unAlpha
+instance Show Digit where show = show . unDigit
+instance Show AlphaNum where show = show . unAlphaNum
+instance Show Letter   where show = show . unLetter
+
+instance Listable Space where list = map Space [' ', '\t', '\n', '\r', '\f', '\v']
+instance Listable Lower where list = map Lower ['a'..'z']
+instance Listable Upper where list = map Upper ['A'..'Z']
+instance Listable Alpha where list = map Alpha $ ['a'..'z'] +| ['A'..'Z']
+instance Listable Digit where list = map Digit ['0'..'9']
+instance Listable AlphaNum where list = map AlphaNum $ ['0'..'9'] +| ['a'..'z'] +| ['A'..'Z']
+instance Listable Letter   where list = map Letter $ ['a'..'z'] +| ['A'..'Z']
+
+data Spaces  =  Spaces {unSpaces :: String}
+data Lowers  =  Lowers {unLowers :: String}
+data Uppers  =  Uppers {unUppers :: String}
+data Alphas  =  Alphas {unAlphas :: String}
+data Digits  =  Digits {unDigits :: String}
+data AlphaNums  =  AlphaNums {unAlphaNums :: String}
+data Letters    =  Letters   {unLetters   :: String}
+
+instance Show Spaces where show = show . unSpaces
+instance Show Lowers where show = show . unLowers
+instance Show Uppers where show = show . unUppers
+instance Show Alphas where show = show . unAlphas
+instance Show Digits where show = show . unDigits
+instance Show AlphaNums where show = show . unAlphaNums
+instance Show Letters   where show = show . unLetters
+
+instance Listable Spaces where tiers = cons1 (Spaces . map unSpace)
+instance Listable Lowers where tiers = cons1 (Lowers . map unLower)
+instance Listable Uppers where tiers = cons1 (Uppers . map unUpper)
+instance Listable Alphas where tiers = cons1 (Alphas . map unAlpha)
+instance Listable Digits where tiers = cons1 (Digits . map unDigit)
+instance Listable AlphaNums where tiers = cons1 (AlphaNums . map unAlphaNum)
+instance Listable Letters   where tiers = cons1 (Letters   . map unLetter)
diff --git a/test/Test.hs b/test/Test.hs
new file mode 100644
--- /dev/null
+++ b/test/Test.hs
@@ -0,0 +1,143 @@
+-- |
+-- Module      : Test
+-- Copyright   : (c) 2015-2018 Rudy Matela
+-- License     : 3-Clause BSD  (see the file LICENSE)
+-- Maintainer  : Rudy Matela <rudy@matela.com.br>
+--
+-- This module is part of LeanCheck,
+-- a simple enumerative property-based testing library.
+--
+-- Some helper functios to test LeanCheck itself.
+module Test
+  ( module Test.LeanCheck
+
+  , tNatPairOrd
+  , tNatTripleOrd
+  , tNatQuadrupleOrd
+  , tNatQuintupleOrd
+  , tNatListOrd
+  , tListsOfNatOrd
+  , tPairEqParams
+  , tTripleEqParams
+  , tProductsIsFilterByLength
+
+  , ordered
+  , orderedBy
+  , orderedOn
+  , strictlyOrdered
+  , strictlyOrderedBy
+  , strictlyOrderedOn
+  )
+where
+
+import Test.LeanCheck
+import Data.List
+import Data.Ord
+import Test.LeanCheck.Utils.Types (Nat(..))
+
+-- | check if a list is ordered
+ordered :: Ord a => [a] -> Bool
+ordered = orderedBy compare
+-- ordered [] = True
+-- ordered [_] = True
+-- ordered (x:y:xs) = x <= y && ordered (y:xs)
+
+strictlyOrdered :: Ord a => [a] -> Bool
+strictlyOrdered = strictlyOrderedBy compare
+
+-- | check if a list is ordered by a given ordering function
+orderedBy :: (a -> a -> Ordering) -> [a] -> Bool
+orderedBy _ [] = True
+orderedBy _ [_] = True
+orderedBy cmp (x:y:xs) = case x `cmp` y of
+                           GT -> False
+                           _  -> orderedBy cmp (y:xs)
+
+orderedOn :: Ord b => (a -> b) -> [a] -> Bool
+orderedOn f = orderedBy (comparing f)
+
+-- | check if a list is strictly ordered by a given ordering function
+strictlyOrderedBy :: (a -> a -> Ordering) -> [a] -> Bool
+strictlyOrderedBy _ [] = True
+strictlyOrderedBy _ [_] = True
+strictlyOrderedBy cmp (x:y:xs) = case x `cmp` y of
+                                   LT -> strictlyOrderedBy cmp (y:xs)
+                                   _  -> False
+
+strictlyOrderedOn :: Ord b => (a -> b) -> [a] -> Bool
+strictlyOrderedOn f = strictlyOrderedBy (comparing f)
+
+ifNotEq :: Ordering -> Ordering -> Ordering
+-- Could be implemented as:  ifNotEq = mappend
+ifNotEq EQ p = p
+ifNotEq  o _ = o
+
+thn :: (a->a->Ordering) -> (a->a->Ordering) -> a -> a -> Ordering
+thn cmp1 cmp2 x y = (x `cmp1` y) `ifNotEq` (x `cmp2` y)
+infixr 9 `thn`
+
+
+-- | checks if the first 'n' elements on tiers are ordered by 'cmp'.
+--
+-- > (n `seriesOrderedBy`) comparing (id :: Type)
+tOrderedBy :: Listable a => Int -> (a -> a -> Ordering) -> Bool
+tOrderedBy n cmp = orderedBy cmp $ take n list
+infixr 9 `tOrderedBy`
+
+tStrictlyOrderedBy :: Listable a => Int -> (a -> a -> Ordering) -> Bool
+tStrictlyOrderedBy n cmp = strictlyOrderedBy cmp $ take n list
+infixr 9 `tStrictlyOrderedBy`
+
+tNatPairOrd :: Int -> Bool
+tNatPairOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
+  where sum' (x,y) = x+y :: Nat
+
+tNatTripleOrd :: Int -> Bool
+tNatTripleOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
+  where sum' (x,y,z) = x+y+z :: Nat
+
+tNatQuadrupleOrd :: Int -> Bool
+tNatQuadrupleOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
+  where sum' (x,y,z,w) = x+y+z+w :: Nat
+
+tNatQuintupleOrd :: Int -> Bool
+tNatQuintupleOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
+  where sum' (x,y,z,w,v) = x+y+z+w+v :: Nat
+
+tNatListOrd :: Int -> Bool
+tNatListOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
+  where sum' = sum . map (+1) :: [Nat] -> Nat
+
+tListsOfStrictlyOrderedBy :: Int
+                           -> (a -> a -> Ordering)
+                           -> [[a]]
+                           -> Bool
+tListsOfStrictlyOrderedBy n cmp = strictlyOrderedBy cmp . take n . concat
+infixr 9 `tListsOfStrictlyOrderedBy`
+
+tListsOfNatOrd :: Int -> Bool
+tListsOfNatOrd n = tListsOfStrictlyOrderedBy n (comparing sum' `thn` compare) tiers
+  where sum' = sum . map (+1) :: [Nat] -> Nat
+
+tPairEqParams :: Int -> Bool
+tPairEqParams n = ces == srs
+  where
+    ces = map (map read) $ counterExamples n fail
+    srs = map pairToList $ take n list
+    pairToList (x,y) = [x,y :: Nat]
+    fail :: Nat -> Nat -> Bool
+    fail x y = False
+
+tTripleEqParams :: Int -> Bool
+tTripleEqParams n = ces == srs
+  where
+    ces = map (map read) $ counterExamples n fail
+    srs = map tripleToList $ take n list
+    tripleToList (x,y,z) = [x,y,z :: Nat]
+    fail :: Nat -> Nat -> Nat -> Bool
+    fail x y z = False
+
+tProductsIsFilterByLength :: Eq a => [[a]] -> Int -> Int -> Bool
+tProductsIsFilterByLength values m n = concat (take m byProduct) `isPrefixOf` concat byFilter
+  where byProduct = products $ replicate n values
+        byFilter  = ((==n) . length) `filterT` listsOf values
diff --git a/test/derive.hs b/test/derive.hs
new file mode 100644
--- /dev/null
+++ b/test/derive.hs
@@ -0,0 +1,106 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+{-# LANGUAGE TemplateHaskell, CPP #-}
+import Test
+import Test.LeanCheck
+import Test.LeanCheck.Derive
+import System.Exit (exitFailure)
+import Data.List (elemIndices,sort)
+import Test.LeanCheck.Utils.Operators
+
+data D0       = D0                    deriving Show
+data D1 a     = D1 a                  deriving Show
+data D2 a b   = D2 a b                deriving Show
+data D3 a b c = D3 a b c              deriving Show
+data C1 a     =           C11 a | C10 deriving Show
+data C2 a b   = C22 a b | C21 a | C20 deriving Show
+data I a b    = a :+ b                deriving Show
+
+deriveListable ''D0
+deriveListable ''D1
+deriveListable ''D2
+deriveListable ''D3
+deriveListable ''C1
+deriveListable ''C2
+deriveListable ''I
+
+-- Nested datatype cascade
+data Nested = Nested N0 (N1 Int) (N2 Int Int)
+data N0     = R0 Int
+data N1 a   = R1 a
+data N2 a b = R2 a b
+deriveListableCascading ''Nested
+
+-- Recursive nested datatype cascade
+data RN      = RN RN0 (RN1 Int) (RN2 Int RN)
+data RN0     = Nest0 Int | Recurse0 RN
+data RN1 a   = Nest1 a   | Recurse1 RN
+data RN2 a b = Nest2 a b | Recurse2 RN
+deriveListableCascading ''RN
+
+-- Type synonyms
+data Pair a = Pair a a
+type Alias a = Pair a
+-- deriveListable ''Alias -- this will fail
+deriveListableCascading ''Alias
+deriveListableIfNeeded ''Alias -- only works because instance already exists
+
+-- Nested type synonyms
+data Triple a = Triple a a a
+type Tralias a = Triple a
+data Pairiple a = Pairriple (Tralias a) (Tralias a)
+deriveListableCascading ''Pairiple
+
+-- Those should have no effect (instance already exists):
+{- uncommenting those should generate warnings
+deriveListable ''Bool
+deriveListable ''Maybe
+deriveListable ''Either
+-}
+
+-- Those should not generate warnings
+deriveListableIfNeeded ''Bool
+deriveListableIfNeeded ''Maybe
+deriveListableIfNeeded ''Either
+
+main :: IO ()
+main =
+  case elemIndices False (tests 100) of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+tests n =
+  [ True
+
+  , map unD0 list =| n |= list
+  , map unD1 list =| n |= (list :: [Int])
+  , map unD2 list =| n |= (list :: [(Int,Int)])
+  , map unD3 list =| n |= (list :: [(Int,Int,Int)])
+
+  , map unD1 list == (list :: [()])
+  , map unD2 list == (list :: [((),())])
+  , map unD3 list == (list :: [((),(),())])
+
+  , map unD1 list == (list :: [Bool])
+  , map unD2 list == (list :: [(Bool,Bool)])
+  , map unD3 list == (list :: [(Bool,Bool,Bool)])
+
+  , (tiers :: [[ Bool       ]]) =| 6 |= $(deriveTiers ''Bool)
+  , (tiers :: [[ [Int]      ]]) =| 6 |= $(deriveTiers ''[])
+  , (tiers :: [[ [Bool]     ]]) =| 6 |= $(deriveTiers ''[])
+  , (tiers :: [[ Maybe Int  ]]) =| 6 |= $(deriveTiers ''Maybe)
+  , (tiers :: [[ Maybe Bool ]]) =| 6 |= $(deriveTiers ''Maybe)
+  , ([]:tiers :: [[Either Bool Int]]) =$ map sort . take 6 $= $(deriveTiers ''Either)
+
+  , (list :: [ Bool       ]) =| n |= $(deriveList ''Bool)
+  , (list :: [ [Int]      ]) =| n |= $(deriveList ''[])
+  , (list :: [ [Bool]     ]) =| n |= $(deriveList ''[])
+  , (list :: [ Maybe Int  ]) =| n |= $(deriveList ''Maybe)
+  , (list :: [ Maybe Bool ]) =| n |= $(deriveList ''Maybe)
+  ]
+  where
+  unD0 (D0)       = ()
+  unD1 (D1 x)     = (x)
+  unD2 (D2 x y)   = (x,y)
+  unD3 (D3 x y z) = (x,y,z)
diff --git a/test/diff/eg/higher-order.out b/test/diff/eg/higher-order.out
new file mode 100644
--- /dev/null
+++ b/test/diff/eg/higher-order.out
@@ -0,0 +1,15 @@
+*** Failed! Falsifiable (after 75 tests):
+\x _ -> case x of
+        0 -> 1
+        _ -> 0
+0
+[0,0]
+
++++ OK, passed 200 tests.
+*** Failed! Falsifiable (after 36 tests):
+\_ -> 0
+\x -> case x of
+      0 -> True
+      _ -> False
+[1]
+
diff --git a/test/diff/eg/overflow.out b/test/diff/eg/overflow.out
new file mode 100644
--- /dev/null
+++ b/test/diff/eg/overflow.out
@@ -0,0 +1,2 @@
+*** Failed! Falsifiable (after 8792 tests):
+(T [] [] [] [-1] [-32768])
diff --git a/test/diff/eg/test-bool.out b/test/diff/eg/test-bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/eg/test-bool.out
@@ -0,0 +1,25 @@
+not . not === id
++++ OK, passed 2 tests (exhausted).
+(&&) commutes
++++ OK, passed 4 tests (exhausted).
+(||) commutes
++++ OK, passed 4 tests (exhausted).
+
+All boolean operators are commutative (wrong).
+*** Failed! Falsifiable (after 10 tests):
+\x y -> case (x,y) of
+        (True,False) -> True
+        _ -> False
+False
+True
+
+
+All boolean operators are associative (wrong).
+*** Failed! Falsifiable (after 22 tests):
+\x y -> case (x,y) of
+        (True,False) -> True
+        _ -> False
+True
+False
+True
+
diff --git a/test/diff/eg/test-float.out b/test/diff/eg/test-float.out
new file mode 100644
--- /dev/null
+++ b/test/diff/eg/test-float.out
@@ -0,0 +1,19 @@
+*** Failed! Falsifiable (after 74 tests):
+0.33333334 1.0
+*** Failed! Falsifiable (after 74 tests):
+0.33333334 1.0
+*** Failed! Falsifiable (after 1188 tests):
+0.2 0.2
+*** Failed! Falsifiable (after 584 tests):
+0.2 0.33333334
++++ OK, passed 10000 tests.
++++ OK, passed 10000 tests.
++++ OK, passed 10000 tests.
++++ OK, passed 10000 tests.
+*** Failed! Falsifiable (after 38 tests):
+0.14285715
+*** Failed! Falsifiable (after 1 tests):
+()
++++ OK, passed 10000 tests.
+*** Failed! Falsifiable (after 5 tests):
+0.5
diff --git a/test/diff/eg/test-list.out b/test/diff/eg/test-list.out
new file mode 100644
--- /dev/null
+++ b/test/diff/eg/test-list.out
@@ -0,0 +1,6 @@
+*** Failed! Falsifiable (after 4 tests):
+[] [0,0]
+*** Failed! Falsifiable (after 1 tests):
+[]
+*** Failed! Exception '...' (after 1 tests):
+[]
diff --git a/test/diff/eg/test-sort.out b/test/diff/eg/test-sort.out
new file mode 100644
--- /dev/null
+++ b/test/diff/eg/test-sort.out
@@ -0,0 +1,4 @@
++++ OK, passed 200 tests.
+*** Failed! Falsifiable (after 4 tests):
+0 [0,0]
++++ OK, passed 200 tests.
diff --git a/test/diff/tiers-4cases-Bool-Bool-Bool-Bool.out b/test/diff/tiers-4cases-Bool-Bool-Bool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Bool-Bool-Bool-Bool.out
@@ -0,0 +1,267 @@
+map length (tiers :: [[ Bool->Bool->Bool->Bool ]])  =  [256]
+
+length (list :: [ Bool->Bool->Bool->Bool ])  =  Infinity
+
+allUnique (list :: [ Bool->Bool->Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Bool->Bool->Bool ])  =  0 % 1
+
+tiers :: [Bool->Bool->Bool->Bool]  =
+  [ [ \_ _ _ -> False
+    , \x y z -> case (x,y,z) of (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (True,True,False) -> True; _ -> False
+    , \x y _ -> case (x,y) of (True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (True,False,True) -> True; _ -> False
+    , \x _ z -> case (x,z) of (True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (True,False,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,_) -> False; (_,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (True,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (True,False,False) -> True; (True,True,True) -> True; _ -> False
+    , \x _ z -> case (x,z) of (True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (True,_,False) -> True; (True,True,_) -> True; _ -> False
+    , \x y _ -> case (x,y) of (True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (True,False,_) -> True; (True,_,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (True,False,_) -> True; (True,_,False) -> True; _ -> False
+    , \x _ _ -> case x of False -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,True) -> True; _ -> False
+    , \_ y z -> case (y,z) of (True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (_,False,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,True) -> True; (True,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (_,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,True) -> True; (True,False,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,False) -> False; (_,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,True) -> True; (True,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,True,True) -> True; (True,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,True) -> True; (True,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,False) -> False; (_,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,True) -> True; (True,False,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,False) -> False; (_,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,False) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,False) -> True; (True,True,True) -> True; _ -> False
+    , \_ y z -> case (y,z) of (True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,True,False) -> True; (True,True,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,False) -> True; (True,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,False) -> True; (True,_,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,True,False) -> True; (True,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (_,False,False) -> False; (False,_,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,False) -> True; (True,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,False) -> True; (True,False,False) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (_,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,True) -> False; (_,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,False) -> True; (True,False,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,True) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,True) -> False; (_,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,True) -> False; _ -> True
+    , \x y _ -> case (x,y) of (False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,_) -> True; (_,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,_) -> True; (_,True,False) -> True; _ -> False
+    , \_ y _ -> case y of False -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,_) -> True; (True,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (_,False,False) -> False; (True,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (_,False,False) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (_,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,_) -> True; (True,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (_,False,True) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (False,_,_) -> True; (_,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (_,False,True) -> False; _ -> True
+    , \x y _ -> case (x,y) of (False,False) -> False; (True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> False; (True,True,True) -> False; _ -> True
+    , \x y _ -> case (x,y) of (False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (True,True,_) -> True; _ -> False
+    , \_ y z -> case (y,z) of (False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,True) -> True; (True,_,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (_,False,False) -> False; (False,True,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (True,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (True,False,False) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (True,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (False,True,_) -> False; (True,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (_,False,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (False,True,_) -> False; (_,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (False,True,_) -> False; (_,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (False,True,_) -> False; _ -> True
+    , \x _ z -> case (x,z) of (False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,True) -> True; (_,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (_,False,False) -> False; (True,False,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,True) -> True; (_,False,True) -> True; _ -> False
+    , \_ _ z -> case z of False -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (_,False,False) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (_,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,True) -> True; (True,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (True,False,True) -> False; (_,True,False) -> False; _ -> True
+    , \x _ z -> case (x,z) of (False,False) -> False; (True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (True,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (False,_,_) -> True; (_,False,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (_,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> False; (True,True,True) -> False; _ -> True
+    , \x _ z -> case (x,z) of (False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (False,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (False,True,False) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (_,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (False,True,True) -> False; (True,False,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,True) -> True; (False,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (False,True,True) -> False; (True,_,False) -> False; _ -> True
+    , \_ y z -> case (y,z) of (False,False) -> False; (True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (False,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> True; (False,True,False) -> True; (True,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (False,False,True) -> True; (False,True,False) -> True; (False,True,True) -> False; ...
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (False,False,_) -> True; (_,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (False,True,True) -> False; (True,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (_,False,_) -> True; (False,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (False,True,True) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (_,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (False,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (False,_,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (True,False,_) -> False; (True,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (True,False,_) -> False; (True,_,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (True,False,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (False,_,_) -> True; (_,False,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (True,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,False) -> False; (True,True,True) -> False; _ -> True
+    , \_ y z -> case (y,z) of (False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (False,_,_) -> True; (_,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (True,False,True) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (True,_,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (True,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (True,True,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (True,True,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (True,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (True,_,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (True,False,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (False,_,_) -> False; (_,False,False) -> False; _ -> True
+    , \_ y z -> case (y,z) of (False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (True,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (False,_,_) -> False; (_,False,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (True,False,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (True,False,_) -> True; (True,_,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (True,False,_) -> True; (True,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (False,_,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (False,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (_,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (False,True,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (_,False,_) -> False; (False,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (False,True,True) -> True; (True,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (False,False,_) -> False; (_,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,False) -> True; (False,False,True) -> False; (False,True,False) -> False; (False,True,True) -> True; ...
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (False,True,False) -> False; (True,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (False,True,True) -> True; _ -> False
+    , \_ y z -> case (y,z) of (False,False) -> True; (True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (False,True,True) -> True; (True,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,True) -> False; (False,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,False) -> True; (False,True,True) -> True; (True,False,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (_,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (False,True,False) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (False,True,False) -> False; _ -> True
+    , \x _ z -> case (x,z) of (False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (_,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (False,_,_) -> False; (_,False,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (True,False,True) -> True; _ -> False
+    , \x _ z -> case (x,z) of (False,False) -> True; (True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (True,False,True) -> True; (_,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,True) -> False; (True,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (_,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (_,False,False) -> True; (True,True,True) -> True; _ -> False
+    , \_ _ z -> case z of False -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,True) -> False; (_,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (_,False,False) -> True; (True,False,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,True) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,True) -> False; (_,True,True) -> False; _ -> True
+    , \x _ z -> case (x,z) of (False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (False,True,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (False,True,_) -> True; (_,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (False,True,_) -> True; (_,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (_,False,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (False,True,_) -> True; (True,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (True,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (True,False,False) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (True,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (_,False,False) -> True; (False,True,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,False,True) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,False,True) -> False; (True,_,True) -> False; _ -> True
+    , \_ y z -> case (y,z) of (False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (True,True,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,True) -> False; _ -> True
+    , \x y _ -> case (x,y) of (False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (True,True,False) -> True; _ -> False
+    , \x y _ -> case (x,y) of (False,False) -> True; (True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (_,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,_) -> False; (_,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (_,False,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,_) -> False; (True,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (_,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (_,False,False) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (_,False,False) -> True; (True,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,_) -> False; (True,False,True) -> False; _ -> True
+    , \_ y _ -> case y of False -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,_) -> False; (_,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,_) -> False; (_,True,True) -> False; _ -> True
+    , \x y _ -> case (x,y) of (False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,True) -> True; (_,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,True) -> True; (True,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,False) -> False; (True,False,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,True) -> True; (_,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (_,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,False) -> False; (True,False,False) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,False) -> False; (True,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (_,False,False) -> True; (False,_,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (_,True,False) -> False; (True,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,False) -> False; (True,_,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,False) -> False; (True,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,True,False) -> False; (True,True,_) -> False; _ -> True
+    , \_ y z -> case (y,z) of (True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,False) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,False) -> True; (True,True,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,False) -> True; (_,True,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,True) -> False; (True,False,_) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,False) -> True; (_,False,True) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,True) -> False; (True,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (_,True,True) -> False; (True,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,True) -> False; (True,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (False,_,False) -> True; (_,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,True) -> False; (True,False,True) -> False; (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,False,_) -> True; (_,_,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,True) -> False; (True,False,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,False) -> True; (_,False,_) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (False,True,True) -> False; (True,True,False) -> False; _ -> True
+    , \_ y z -> case (y,z) of (True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,True,True) -> False; _ -> True
+    , \x _ _ -> case x of False -> True; _ -> False
+    , \x y z -> case (x,y,z) of (True,False,_) -> False; (True,_,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (True,False,_) -> False; (True,_,True) -> False; _ -> True
+    , \x y _ -> case (x,y) of (True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (True,_,False) -> False; (True,True,_) -> False; _ -> True
+    , \x _ z -> case (x,z) of (True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (True,False,False) -> False; (True,True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (True,False,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (False,_,_) -> True; (_,False,False) -> True; _ -> False
+    , \x y z -> case (x,y,z) of (True,False,True) -> False; (True,True,False) -> False; _ -> True
+    , \x _ z -> case (x,z) of (True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (True,False,True) -> False; _ -> True
+    , \x y _ -> case (x,y) of (True,True) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (True,True,False) -> False; _ -> True
+    , \x y z -> case (x,y,z) of (True,True,True) -> False; _ -> True
+    , \_ _ _ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-4cases-Bool-Bool-Bool.out b/test/diff/tiers-4cases-Bool-Bool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Bool-Bool-Bool.out
@@ -0,0 +1,27 @@
+map length (tiers :: [[ Bool->Bool->Bool ]])  =  [16]
+
+length (list :: [ Bool->Bool->Bool ])  =  Infinity
+
+allUnique (list :: [ Bool->Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Bool->Bool ])  =  0 % 1
+
+tiers :: [Bool->Bool->Bool]  =
+  [ [ \_ _ -> False
+    , \x y -> case (x,y) of (True,True) -> True; _ -> False
+    , \x y -> case (x,y) of (True,False) -> True; _ -> False
+    , \x _ -> case x of False -> False; _ -> True
+    , \x y -> case (x,y) of (False,True) -> True; _ -> False
+    , \_ y -> case y of False -> False; _ -> True
+    , \x y -> case (x,y) of (False,False) -> False; (True,True) -> False; _ -> True
+    , \x y -> case (x,y) of (False,False) -> False; _ -> True
+    , \x y -> case (x,y) of (False,False) -> True; _ -> False
+    , \x y -> case (x,y) of (False,False) -> True; (True,True) -> True; _ -> False
+    , \_ y -> case y of False -> True; _ -> False
+    , \x y -> case (x,y) of (False,True) -> False; _ -> True
+    , \x _ -> case x of False -> True; _ -> False
+    , \x y -> case (x,y) of (True,False) -> False; _ -> True
+    , \x y -> case (x,y) of (True,True) -> False; _ -> True
+    , \_ _ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-4cases-Bool-Bool.out b/test/diff/tiers-4cases-Bool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Bool-Bool.out
@@ -0,0 +1,15 @@
+map length (tiers :: [[ Bool->Bool ]])  =  [4]
+
+length (list :: [ Bool->Bool ])  =  4
+
+allUnique (list :: [ Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Bool ])  =  0 % 1
+
+tiers :: [Bool->Bool]  =
+  [ [ \_ -> False
+    , \x -> case x of False -> False; True -> True
+    , \x -> case x of False -> True; True -> False
+    , \_ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-4cases-Bool-Int-Bool.out b/test/diff/tiers-4cases-Bool-Int-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Bool-Int-Bool.out
@@ -0,0 +1,157 @@
+map length (tiers :: [[ Bool->Int->Bool ]])  =  [4,8,12,24,36,56,...]
+
+length (list :: [ Bool->Int->Bool ])  =  Infinity
+
+allUnique (list :: [ Bool->Int->Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Int->Bool ])  =  0 % 1
+
+tiers :: [Bool->Int->Bool]  =
+  [ [ \_ _ -> False
+    , \x _ -> case x of False -> False; _ -> True
+    , \x _ -> case x of False -> True; _ -> False
+    , \_ _ -> True
+    ]
+  , [ \x y -> case (x,y) of (True,0) -> True; _ -> False
+    , \x y -> case (x,y) of (False,_) -> False; (_,0) -> False; _ -> True
+    , \x y -> case (x,y) of (False,_) -> True; (_,0) -> True; _ -> False
+    , \x y -> case (x,y) of (True,0) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; _ -> False
+    , \x y -> case (x,y) of (_,0) -> True; (False,_) -> False; _ -> True
+    , \x y -> case (x,y) of (_,0) -> False; (False,_) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; _ -> True
+    ]
+  , [ \x y -> case (x,y) of (True,1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,_) -> False; (_,0) -> True; (_,1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,_) -> True; (_,0) -> False; (_,1) -> True; _ -> False
+    , \x y -> case (x,y) of (True,1) -> False; _ -> True
+    , \_ y -> case y of 0 -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (_,0) -> False; (False,_) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> False; (_,0) -> True; (False,_) -> True; _ -> False
+    , \_ y -> case y of 0 -> False; _ -> True
+    , \x y -> case (x,y) of (False,1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> True; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> False; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,1) -> False; _ -> True
+    ]
+  , [ \x y -> case (x,y) of (True,0) -> True; (True,1) -> True; _ -> False
+    , \x y -> case (x,y) of (True,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,_) -> False; (_,0) -> False; (_,1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,_) -> True; (_,0) -> True; (_,1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (True,0) -> False; (True,1) -> False; _ -> True
+    , \x y -> case (x,y) of (True,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (True,1) -> True; _ -> False
+    , \x y -> case (x,y) of (_,0) -> True; (False,_) -> False; (_,1) -> False; _ -> True
+    , \x y -> case (x,y) of (_,0) -> False; (False,_) -> True; (_,1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,1) -> False; _ -> True
+    , \x y -> case (x,y) of (True,0) -> True; (False,1) -> True; _ -> False
+    , \x y -> case (x,y) of (_,0) -> False; (_,1) -> True; (False,_) -> False; _ -> True
+    , \x y -> case (x,y) of (_,0) -> True; (_,1) -> False; (False,_) -> True; _ -> False
+    , \x y -> case (x,y) of (True,0) -> False; (False,1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (False,1) -> True; _ -> False
+    , \x y -> case (x,y) of (_,0) -> True; (_,1) -> True; (False,_) -> False; _ -> True
+    , \x y -> case (x,y) of (False,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (_,0) -> False; (_,1) -> False; (False,_) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (False,1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,-1) -> False; _ -> True
+    ]
+  , [ \x y -> case (x,y) of (True,0) -> True; (True,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (True,2) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (True,0) -> False; (True,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (True,2) -> False; _ -> True
+    , \x y -> case (x,y) of (_,0) -> True; (True,1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> False; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> True; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (_,0) -> False; (True,1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> False; (True,-1) -> False; _ -> True
+    , \_ y -> case y of 1 -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> False; (True,1) -> True; ...
+    , \_ y -> case y of 1 -> False; _ -> True
+    , \x y -> case (x,y) of (_,0) -> True; (False,1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> True; (True,1) -> True; ...
+    , \x y -> case (x,y) of (True,0) -> True; (False,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> False; (True,1) -> False; ...
+    , \x y -> case (x,y) of (_,0) -> False; (False,1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (True,0) -> False; (False,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (False,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,2) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> False; (False,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,2) -> False; _ -> True
+    ]
+  , [ \x y -> case (x,y) of (True,0) -> True; (True,2) -> True; _ -> False
+    , \x y -> case (x,y) of (True,1) -> True; (True,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (True,-2) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> False; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> True; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (True,0) -> False; (True,2) -> False; _ -> True
+    , \x y -> case (x,y) of (True,1) -> False; (True,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (True,-2) -> False; _ -> True
+    , \x y -> case (x,y) of (_,0) -> True; (True,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,2) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (_,0) -> False; (True,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> False; (True,2) -> False; _ -> True
+    , \x y -> case (x,y) of (True,0) -> True; (_,1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,1) -> True; (True,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> True; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> False; (True,1) -> False; ...
+    , \x y -> case (x,y) of (True,0) -> False; (_,1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,1) -> False; (True,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (_,1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (True,1) -> True; (False,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> False; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (_,1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> True; (True,1) -> True; ...
+    , \x y -> case (x,y) of (True,1) -> False; (False,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (_,0) -> True; (False,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (True,0) -> True; (False,2) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (_,0) -> False; (False,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (True,0) -> False; (False,2) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (False,2) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,1) -> True; (False,-1) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> True; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,-2) -> True; _ -> False
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> True; (False,1) -> False; (True,1) -> True; ...
+    , \x y -> case (x,y) of (False,0) -> False; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,0) -> False; (False,2) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> False; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,1) -> False; (False,-1) -> False; _ -> True
+    , \x y -> case (x,y) of (False,0) -> True; (True,0) -> False; (False,1) -> True; (True,1) -> False; ...
+    , \x y -> case (x,y) of (False,-2) -> False; _ -> True
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Bool-MBool.out b/test/diff/tiers-4cases-Bool-MBool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Bool-MBool.out
@@ -0,0 +1,21 @@
+map length (tiers :: [[ Bool->Maybe Bool ]])  =  [1,4,4]
+
+length (list :: [ Bool->Maybe Bool ])  =  9
+
+allUnique (list :: [ Bool->Maybe Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Maybe Bool ])  =  0 % 1
+
+tiers :: [Bool->Maybe Bool]  =
+  [ [\_ -> Nothing]
+  , [ \x -> case x of False -> Nothing; True -> Just False
+    , \x -> case x of False -> Nothing; True -> Just True
+    , \x -> case x of False -> Just False; True -> Nothing
+    , \x -> case x of False -> Just True; True -> Nothing
+    ]
+  , [ \_ -> Just False
+    , \x -> case x of False -> Just False; True -> Just True
+    , \x -> case x of False -> Just True; True -> Just False
+    , \_ -> Just True
+    ]
+  ]
diff --git a/test/diff/tiers-4cases-Bool-U.out b/test/diff/tiers-4cases-Bool-U.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Bool-U.out
@@ -0,0 +1,10 @@
+map length (tiers :: [[ Bool->() ]])  =  [1]
+
+length (list :: [ Bool->() ])  =  1
+
+allUnique (list :: [ Bool->() ])  =  True
+
+ratioRepetitions (list :: [ Bool->() ])  =  0 % 1
+
+tiers :: [Bool->()]  =
+  [[\_ -> ()]]
diff --git a/test/diff/tiers-4cases-Bools-Bools.out b/test/diff/tiers-4cases-Bools-Bools.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Bools-Bools.out
@@ -0,0 +1,419 @@
+map length (tiers :: [[ [Bool]->[Bool] ]])  =  [1,2,8,26,88,278,...]
+
+length (list :: [ [Bool]->[Bool] ])  =  Infinity
+
+allUnique (list :: [ [Bool]->[Bool] ])  =  True
+
+ratioRepetitions (list :: [ [Bool]->[Bool] ])  =  0 % 1
+
+tiers :: [[Bool]->[Bool]]  =
+  [ [\_ -> []]
+  , [ \_ -> [False]
+    , \_ -> [True]
+    ]
+  , [ \x -> case x of [] -> [False]; _ -> []
+    , \x -> case x of [] -> [True]; _ -> []
+    , \x -> case x of [] -> []; _ -> [False]
+    , \x -> case x of [] -> []; _ -> [True]
+    , \_ -> [False,False]
+    , \_ -> [False,True]
+    , \_ -> [True,False]
+    , \_ -> [True,True]
+    ]
+  , [ \x -> case x of [] -> [False,False]; _ -> []
+    , \x -> case x of [] -> [False,True]; _ -> []
+    , \x -> case x of [] -> [True,False]; _ -> []
+    , \x -> case x of [] -> [True,True]; _ -> []
+    , \x -> case x of [False] -> [False]; _ -> []
+    , \x -> case x of [False] -> [True]; _ -> []
+    , \x -> case x of [True] -> [False]; _ -> []
+    , \x -> case x of [True] -> [True]; _ -> []
+    , \x -> case x of [] -> [True]; _ -> [False]
+    , \x -> case x of [False] -> []; _ -> [False]
+    , \x -> case x of [True] -> []; _ -> [False]
+    , \x -> case x of [] -> [False]; _ -> [True]
+    , \x -> case x of [False] -> []; _ -> [True]
+    , \x -> case x of [True] -> []; _ -> [True]
+    , \x -> case x of [] -> []; _ -> [False,False]
+    , \x -> case x of [] -> []; _ -> [False,True]
+    , \x -> case x of [] -> []; _ -> [True,False]
+    , \x -> case x of [] -> []; _ -> [True,True]
+    , \_ -> [False,False,False]
+    , \_ -> [False,False,True]
+    , \_ -> [False,True,False]
+    , \_ -> [False,True,True]
+    , \_ -> [True,False,False]
+    , \_ -> [True,False,True]
+    , \_ -> [True,True,False]
+    , \_ -> [True,True,True]
+    ]
+  , [ \x -> case x of [] -> [False,False,False]; _ -> []
+    , \x -> case x of [] -> [False,False,True]; _ -> []
+    , \x -> case x of [] -> [False,True,False]; _ -> []
+    , \x -> case x of [] -> [False,True,True]; _ -> []
+    , \x -> case x of [] -> [True,False,False]; _ -> []
+    , \x -> case x of [] -> [True,False,True]; _ -> []
+    , \x -> case x of [] -> [True,True,False]; _ -> []
+    , \x -> case x of [] -> [True,True,True]; _ -> []
+    , \x -> case x of [False] -> [False,False]; _ -> []
+    , \x -> case x of [False] -> [False,True]; _ -> []
+    , \x -> case x of [False] -> [True,False]; _ -> []
+    , \x -> case x of [False] -> [True,True]; _ -> []
+    , \x -> case x of [True] -> [False,False]; _ -> []
+    , \x -> case x of [True] -> [False,True]; _ -> []
+    , \x -> case x of [True] -> [True,False]; _ -> []
+    , \x -> case x of [True] -> [True,True]; _ -> []
+    , \x -> case x of [False,False] -> [False]; _ -> []
+    , \x -> case x of [False,False] -> [True]; _ -> []
+    , \x -> case x of [False,True] -> [False]; _ -> []
+    , \x -> case x of [False,True] -> [True]; _ -> []
+    , \x -> case x of [True,False] -> [False]; _ -> []
+    , \x -> case x of [True,False] -> [True]; _ -> []
+    , \x -> case x of [True,True] -> [False]; _ -> []
+    , \x -> case x of [True,True] -> [True]; _ -> []
+    , \x -> case x of [] -> [False,False]; _ -> [False]
+    , \x -> case x of [] -> [False,True]; _ -> [False]
+    , \x -> case x of [] -> [True,False]; _ -> [False]
+    , \x -> case x of [] -> [True,True]; _ -> [False]
+    , \x -> case x of [False] -> [True]; _ -> [False]
+    , \x -> case x of [True] -> [True]; _ -> [False]
+    , \x -> case x of [] -> []; [False] -> []; _ -> [False]
+    , \x -> case x of [] -> []; [True] -> []; _ -> [False]
+    , \x -> case x of [False,False] -> []; _ -> [False]
+    , \x -> case x of [False,True] -> []; _ -> [False]
+    , \x -> case x of [True,False] -> []; _ -> [False]
+    , \x -> case x of [True,True] -> []; _ -> [False]
+    , \x -> case x of [] -> [False,False]; _ -> [True]
+    , \x -> case x of [] -> [False,True]; _ -> [True]
+    , \x -> case x of [] -> [True,False]; _ -> [True]
+    , \x -> case x of [] -> [True,True]; _ -> [True]
+    , \x -> case x of [False] -> [False]; _ -> [True]
+    , \x -> case x of [True] -> [False]; _ -> [True]
+    , \x -> case x of [] -> []; [False] -> []; _ -> [True]
+    , \x -> case x of [] -> []; [True] -> []; _ -> [True]
+    , \x -> case x of [False,False] -> []; _ -> [True]
+    , \x -> case x of [False,True] -> []; _ -> [True]
+    , \x -> case x of [True,False] -> []; _ -> [True]
+    , \x -> case x of [True,True] -> []; _ -> [True]
+    , \x -> case x of [] -> [False]; _ -> [False,False]
+    , \x -> case x of [] -> [True]; _ -> [False,False]
+    , \x -> case x of [False] -> []; _ -> [False,False]
+    , \x -> case x of [True] -> []; _ -> [False,False]
+    , \x -> case x of [] -> [False]; _ -> [False,True]
+    , \x -> case x of [] -> [True]; _ -> [False,True]
+    , \x -> case x of [False] -> []; _ -> [False,True]
+    , \x -> case x of [True] -> []; _ -> [False,True]
+    , \x -> case x of [] -> [False]; _ -> [True,False]
+    , \x -> case x of [] -> [True]; _ -> [True,False]
+    , \x -> case x of [False] -> []; _ -> [True,False]
+    , \x -> case x of [True] -> []; _ -> [True,False]
+    , \x -> case x of [] -> [False]; _ -> [True,True]
+    , \x -> case x of [] -> [True]; _ -> [True,True]
+    , \x -> case x of [False] -> []; _ -> [True,True]
+    , \x -> case x of [True] -> []; _ -> [True,True]
+    , \x -> case x of [] -> []; _ -> [False,False,False]
+    , \x -> case x of [] -> []; _ -> [False,False,True]
+    , \x -> case x of [] -> []; _ -> [False,True,False]
+    , \x -> case x of [] -> []; _ -> [False,True,True]
+    , \x -> case x of [] -> []; _ -> [True,False,False]
+    , \x -> case x of [] -> []; _ -> [True,False,True]
+    , \x -> case x of [] -> []; _ -> [True,True,False]
+    , \x -> case x of [] -> []; _ -> [True,True,True]
+    , \_ -> [False,False,False,False]
+    , \_ -> [False,False,False,True]
+    , \_ -> [False,False,True,False]
+    , \_ -> [False,False,True,True]
+    , \_ -> [False,True,False,False]
+    , \_ -> [False,True,False,True]
+    , \_ -> [False,True,True,False]
+    , \_ -> [False,True,True,True]
+    , \_ -> [True,False,False,False]
+    , \_ -> [True,False,False,True]
+    , \_ -> [True,False,True,False]
+    , \_ -> [True,False,True,True]
+    , \_ -> [True,True,False,False]
+    , \_ -> [True,True,False,True]
+    , \_ -> [True,True,True,False]
+    , \_ -> [True,True,True,True]
+    ]
+  , [ \x -> case x of [] -> [False,False,False,False]; _ -> []
+    , \x -> case x of [] -> [False,False,False,True]; _ -> []
+    , \x -> case x of [] -> [False,False,True,False]; _ -> []
+    , \x -> case x of [] -> [False,False,True,True]; _ -> []
+    , \x -> case x of [] -> [False,True,False,False]; _ -> []
+    , \x -> case x of [] -> [False,True,False,True]; _ -> []
+    , \x -> case x of [] -> [False,True,True,False]; _ -> []
+    , \x -> case x of [] -> [False,True,True,True]; _ -> []
+    , \x -> case x of [] -> [True,False,False,False]; _ -> []
+    , \x -> case x of [] -> [True,False,False,True]; _ -> []
+    , \x -> case x of [] -> [True,False,True,False]; _ -> []
+    , \x -> case x of [] -> [True,False,True,True]; _ -> []
+    , \x -> case x of [] -> [True,True,False,False]; _ -> []
+    , \x -> case x of [] -> [True,True,False,True]; _ -> []
+    , \x -> case x of [] -> [True,True,True,False]; _ -> []
+    , \x -> case x of [] -> [True,True,True,True]; _ -> []
+    , \x -> case x of [False] -> [False,False,False]; _ -> []
+    , \x -> case x of [False] -> [False,False,True]; _ -> []
+    , \x -> case x of [False] -> [False,True,False]; _ -> []
+    , \x -> case x of [False] -> [False,True,True]; _ -> []
+    , \x -> case x of [False] -> [True,False,False]; _ -> []
+    , \x -> case x of [False] -> [True,False,True]; _ -> []
+    , \x -> case x of [False] -> [True,True,False]; _ -> []
+    , \x -> case x of [False] -> [True,True,True]; _ -> []
+    , \x -> case x of [True] -> [False,False,False]; _ -> []
+    , \x -> case x of [True] -> [False,False,True]; _ -> []
+    , \x -> case x of [True] -> [False,True,False]; _ -> []
+    , \x -> case x of [True] -> [False,True,True]; _ -> []
+    , \x -> case x of [True] -> [True,False,False]; _ -> []
+    , \x -> case x of [True] -> [True,False,True]; _ -> []
+    , \x -> case x of [True] -> [True,True,False]; _ -> []
+    , \x -> case x of [True] -> [True,True,True]; _ -> []
+    , \x -> case x of [] -> [False]; [False] -> [False]; _ -> []
+    , \x -> case x of [] -> [False]; [False] -> [True]; _ -> []
+    , \x -> case x of [] -> [True]; [False] -> [False]; _ -> []
+    , \x -> case x of [] -> [True]; [False] -> [True]; _ -> []
+    , \x -> case x of [] -> [False]; [True] -> [False]; _ -> []
+    , \x -> case x of [] -> [False]; [True] -> [True]; _ -> []
+    , \x -> case x of [] -> [True]; [True] -> [False]; _ -> []
+    , \x -> case x of [] -> [True]; [True] -> [True]; _ -> []
+    , \x -> case x of [False,False] -> [False,False]; _ -> []
+    , \x -> case x of [False,False] -> [False,True]; _ -> []
+    , \x -> case x of [False,False] -> [True,False]; _ -> []
+    , \x -> case x of [False,False] -> [True,True]; _ -> []
+    , \x -> case x of [False,True] -> [False,False]; _ -> []
+    , \x -> case x of [False,True] -> [False,True]; _ -> []
+    , \x -> case x of [False,True] -> [True,False]; _ -> []
+    , \x -> case x of [False,True] -> [True,True]; _ -> []
+    , \x -> case x of [True,False] -> [False,False]; _ -> []
+    , \x -> case x of [True,False] -> [False,True]; _ -> []
+    , \x -> case x of [True,False] -> [True,False]; _ -> []
+    , \x -> case x of [True,False] -> [True,True]; _ -> []
+    , \x -> case x of [True,True] -> [False,False]; _ -> []
+    , \x -> case x of [True,True] -> [False,True]; _ -> []
+    , \x -> case x of [True,True] -> [True,False]; _ -> []
+    , \x -> case x of [True,True] -> [True,True]; _ -> []
+    , \x -> case x of [False,False,False] -> [False]; _ -> []
+    , \x -> case x of [False,False,False] -> [True]; _ -> []
+    , \x -> case x of [False,False,True] -> [False]; _ -> []
+    , \x -> case x of [False,False,True] -> [True]; _ -> []
+    , \x -> case x of [False,True,False] -> [False]; _ -> []
+    , \x -> case x of [False,True,False] -> [True]; _ -> []
+    , \x -> case x of [False,True,True] -> [False]; _ -> []
+    , \x -> case x of [False,True,True] -> [True]; _ -> []
+    , \x -> case x of [True,False,False] -> [False]; _ -> []
+    , \x -> case x of [True,False,False] -> [True]; _ -> []
+    , \x -> case x of [True,False,True] -> [False]; _ -> []
+    , \x -> case x of [True,False,True] -> [True]; _ -> []
+    , \x -> case x of [True,True,False] -> [False]; _ -> []
+    , \x -> case x of [True,True,False] -> [True]; _ -> []
+    , \x -> case x of [True,True,True] -> [False]; _ -> []
+    , \x -> case x of [True,True,True] -> [True]; _ -> []
+    , \x -> case x of [] -> [False,False,False]; _ -> [False]
+    , \x -> case x of [] -> [False,False,True]; _ -> [False]
+    , \x -> case x of [] -> [False,True,False]; _ -> [False]
+    , \x -> case x of [] -> [False,True,True]; _ -> [False]
+    , \x -> case x of [] -> [True,False,False]; _ -> [False]
+    , \x -> case x of [] -> [True,False,True]; _ -> [False]
+    , \x -> case x of [] -> [True,True,False]; _ -> [False]
+    , \x -> case x of [] -> [True,True,True]; _ -> [False]
+    , \x -> case x of [False] -> [False,False]; _ -> [False]
+    , \x -> case x of [False] -> [False,True]; _ -> [False]
+    , \x -> case x of [False] -> [True,False]; _ -> [False]
+    , \x -> case x of [False] -> [True,True]; _ -> [False]
+    , \x -> case x of [True] -> [False,False]; _ -> [False]
+    , \x -> case x of [True] -> [False,True]; _ -> [False]
+    , \x -> case x of [True] -> [True,False]; _ -> [False]
+    , \x -> case x of [True] -> [True,True]; _ -> [False]
+    , \x -> case x of [] -> []; [False] -> [True]; _ -> [False]
+    , \x -> case x of [] -> [True]; [False] -> []; _ -> [False]
+    , \x -> case x of [] -> []; [True] -> [True]; _ -> [False]
+    , \x -> case x of [] -> [True]; [True] -> []; _ -> [False]
+    , \x -> case x of [False,False] -> [True]; _ -> [False]
+    , \x -> case x of [False,True] -> [True]; _ -> [False]
+    , \x -> case x of [True,False] -> [True]; _ -> [False]
+    , \x -> case x of [True,True] -> [True]; _ -> [False]
+    , \x -> case x of [] -> []; [False,False] -> []; _ -> [False]
+    , \x -> case x of [] -> []; [False,True] -> []; _ -> [False]
+    , \x -> case x of [] -> []; [True,False] -> []; _ -> [False]
+    , \x -> case x of [] -> []; [True,True] -> []; _ -> [False]
+    , \x -> case x of [False] -> []; [True] -> []; _ -> [False]
+    , \x -> case x of [False,False,False] -> []; _ -> [False]
+    , \x -> case x of [False,False,True] -> []; _ -> [False]
+    , \x -> case x of [False,True,False] -> []; _ -> [False]
+    , \x -> case x of [False,True,True] -> []; _ -> [False]
+    , \x -> case x of [True,False,False] -> []; _ -> [False]
+    , \x -> case x of [True,False,True] -> []; _ -> [False]
+    , \x -> case x of [True,True,False] -> []; _ -> [False]
+    , \x -> case x of [True,True,True] -> []; _ -> [False]
+    , \x -> case x of [] -> [False,False,False]; _ -> [True]
+    , \x -> case x of [] -> [False,False,True]; _ -> [True]
+    , \x -> case x of [] -> [False,True,False]; _ -> [True]
+    , \x -> case x of [] -> [False,True,True]; _ -> [True]
+    , \x -> case x of [] -> [True,False,False]; _ -> [True]
+    , \x -> case x of [] -> [True,False,True]; _ -> [True]
+    , \x -> case x of [] -> [True,True,False]; _ -> [True]
+    , \x -> case x of [] -> [True,True,True]; _ -> [True]
+    , \x -> case x of [False] -> [False,False]; _ -> [True]
+    , \x -> case x of [False] -> [False,True]; _ -> [True]
+    , \x -> case x of [False] -> [True,False]; _ -> [True]
+    , \x -> case x of [False] -> [True,True]; _ -> [True]
+    , \x -> case x of [True] -> [False,False]; _ -> [True]
+    , \x -> case x of [True] -> [False,True]; _ -> [True]
+    , \x -> case x of [True] -> [True,False]; _ -> [True]
+    , \x -> case x of [True] -> [True,True]; _ -> [True]
+    , \x -> case x of [] -> []; [False] -> [False]; _ -> [True]
+    , \x -> case x of [] -> [False]; [False] -> []; _ -> [True]
+    , \x -> case x of [] -> []; [True] -> [False]; _ -> [True]
+    , \x -> case x of [] -> [False]; [True] -> []; _ -> [True]
+    , \x -> case x of [False,False] -> [False]; _ -> [True]
+    , \x -> case x of [False,True] -> [False]; _ -> [True]
+    , \x -> case x of [True,False] -> [False]; _ -> [True]
+    , \x -> case x of [True,True] -> [False]; _ -> [True]
+    , \x -> case x of [] -> []; [False,False] -> []; _ -> [True]
+    , \x -> case x of [] -> []; [False,True] -> []; _ -> [True]
+    , \x -> case x of [] -> []; [True,False] -> []; _ -> [True]
+    , \x -> case x of [] -> []; [True,True] -> []; _ -> [True]
+    , \x -> case x of [False] -> []; [True] -> []; _ -> [True]
+    , \x -> case x of [False,False,False] -> []; _ -> [True]
+    , \x -> case x of [False,False,True] -> []; _ -> [True]
+    , \x -> case x of [False,True,False] -> []; _ -> [True]
+    , \x -> case x of [False,True,True] -> []; _ -> [True]
+    , \x -> case x of [True,False,False] -> []; _ -> [True]
+    , \x -> case x of [True,False,True] -> []; _ -> [True]
+    , \x -> case x of [True,True,False] -> []; _ -> [True]
+    , \x -> case x of [True,True,True] -> []; _ -> [True]
+    , \x -> case x of [] -> [False,True]; _ -> [False,False]
+    , \x -> case x of [] -> [True,False]; _ -> [False,False]
+    , \x -> case x of [] -> [True,True]; _ -> [False,False]
+    , \x -> case x of [False] -> [False]; _ -> [False,False]
+    , \x -> case x of [False] -> [True]; _ -> [False,False]
+    , \x -> case x of [True] -> [False]; _ -> [False,False]
+    , \x -> case x of [True] -> [True]; _ -> [False,False]
+    , \x -> case x of [] -> []; [False] -> []; _ -> [False,False]
+    , \x -> case x of [] -> []; [True] -> []; _ -> [False,False]
+    , \x -> case x of [False,False] -> []; _ -> [False,False]
+    , \x -> case x of [False,True] -> []; _ -> [False,False]
+    , \x -> case x of [True,False] -> []; _ -> [False,False]
+    , \x -> case x of [True,True] -> []; _ -> [False,False]
+    , \x -> case x of [] -> [False,False]; _ -> [False,True]
+    , \x -> case x of [] -> [True,False]; _ -> [False,True]
+    , \x -> case x of [] -> [True,True]; _ -> [False,True]
+    , \x -> case x of [False] -> [False]; _ -> [False,True]
+    , \x -> case x of [False] -> [True]; _ -> [False,True]
+    , \x -> case x of [True] -> [False]; _ -> [False,True]
+    , \x -> case x of [True] -> [True]; _ -> [False,True]
+    , \x -> case x of [] -> []; [False] -> []; _ -> [False,True]
+    , \x -> case x of [] -> []; [True] -> []; _ -> [False,True]
+    , \x -> case x of [False,False] -> []; _ -> [False,True]
+    , \x -> case x of [False,True] -> []; _ -> [False,True]
+    , \x -> case x of [True,False] -> []; _ -> [False,True]
+    , \x -> case x of [True,True] -> []; _ -> [False,True]
+    , \x -> case x of [] -> [False,False]; _ -> [True,False]
+    , \x -> case x of [] -> [False,True]; _ -> [True,False]
+    , \x -> case x of [] -> [True,True]; _ -> [True,False]
+    , \x -> case x of [False] -> [False]; _ -> [True,False]
+    , \x -> case x of [False] -> [True]; _ -> [True,False]
+    , \x -> case x of [True] -> [False]; _ -> [True,False]
+    , \x -> case x of [True] -> [True]; _ -> [True,False]
+    , \x -> case x of [] -> []; [False] -> []; _ -> [True,False]
+    , \x -> case x of [] -> []; [True] -> []; _ -> [True,False]
+    , \x -> case x of [False,False] -> []; _ -> [True,False]
+    , \x -> case x of [False,True] -> []; _ -> [True,False]
+    , \x -> case x of [True,False] -> []; _ -> [True,False]
+    , \x -> case x of [True,True] -> []; _ -> [True,False]
+    , \x -> case x of [] -> [False,False]; _ -> [True,True]
+    , \x -> case x of [] -> [False,True]; _ -> [True,True]
+    , \x -> case x of [] -> [True,False]; _ -> [True,True]
+    , \x -> case x of [False] -> [False]; _ -> [True,True]
+    , \x -> case x of [False] -> [True]; _ -> [True,True]
+    , \x -> case x of [True] -> [False]; _ -> [True,True]
+    , \x -> case x of [True] -> [True]; _ -> [True,True]
+    , \x -> case x of [] -> []; [False] -> []; _ -> [True,True]
+    , \x -> case x of [] -> []; [True] -> []; _ -> [True,True]
+    , \x -> case x of [False,False] -> []; _ -> [True,True]
+    , \x -> case x of [False,True] -> []; _ -> [True,True]
+    , \x -> case x of [True,False] -> []; _ -> [True,True]
+    , \x -> case x of [True,True] -> []; _ -> [True,True]
+    , \x -> case x of [] -> [False]; _ -> [False,False,False]
+    , \x -> case x of [] -> [True]; _ -> [False,False,False]
+    , \x -> case x of [False] -> []; _ -> [False,False,False]
+    , \x -> case x of [True] -> []; _ -> [False,False,False]
+    , \x -> case x of [] -> [False]; _ -> [False,False,True]
+    , \x -> case x of [] -> [True]; _ -> [False,False,True]
+    , \x -> case x of [False] -> []; _ -> [False,False,True]
+    , \x -> case x of [True] -> []; _ -> [False,False,True]
+    , \x -> case x of [] -> [False]; _ -> [False,True,False]
+    , \x -> case x of [] -> [True]; _ -> [False,True,False]
+    , \x -> case x of [False] -> []; _ -> [False,True,False]
+    , \x -> case x of [True] -> []; _ -> [False,True,False]
+    , \x -> case x of [] -> [False]; _ -> [False,True,True]
+    , \x -> case x of [] -> [True]; _ -> [False,True,True]
+    , \x -> case x of [False] -> []; _ -> [False,True,True]
+    , \x -> case x of [True] -> []; _ -> [False,True,True]
+    , \x -> case x of [] -> [False]; _ -> [True,False,False]
+    , \x -> case x of [] -> [True]; _ -> [True,False,False]
+    , \x -> case x of [False] -> []; _ -> [True,False,False]
+    , \x -> case x of [True] -> []; _ -> [True,False,False]
+    , \x -> case x of [] -> [False]; _ -> [True,False,True]
+    , \x -> case x of [] -> [True]; _ -> [True,False,True]
+    , \x -> case x of [False] -> []; _ -> [True,False,True]
+    , \x -> case x of [True] -> []; _ -> [True,False,True]
+    , \x -> case x of [] -> [False]; _ -> [True,True,False]
+    , \x -> case x of [] -> [True]; _ -> [True,True,False]
+    , \x -> case x of [False] -> []; _ -> [True,True,False]
+    , \x -> case x of [True] -> []; _ -> [True,True,False]
+    , \x -> case x of [] -> [False]; _ -> [True,True,True]
+    , \x -> case x of [] -> [True]; _ -> [True,True,True]
+    , \x -> case x of [False] -> []; _ -> [True,True,True]
+    , \x -> case x of [True] -> []; _ -> [True,True,True]
+    , \x -> case x of [] -> []; _ -> [False,False,False,False]
+    , \x -> case x of [] -> []; _ -> [False,False,False,True]
+    , \x -> case x of [] -> []; _ -> [False,False,True,False]
+    , \x -> case x of [] -> []; _ -> [False,False,True,True]
+    , \x -> case x of [] -> []; _ -> [False,True,False,False]
+    , \x -> case x of [] -> []; _ -> [False,True,False,True]
+    , \x -> case x of [] -> []; _ -> [False,True,True,False]
+    , \x -> case x of [] -> []; _ -> [False,True,True,True]
+    , \x -> case x of [] -> []; _ -> [True,False,False,False]
+    , \x -> case x of [] -> []; _ -> [True,False,False,True]
+    , \x -> case x of [] -> []; _ -> [True,False,True,False]
+    , \x -> case x of [] -> []; _ -> [True,False,True,True]
+    , \x -> case x of [] -> []; _ -> [True,True,False,False]
+    , \x -> case x of [] -> []; _ -> [True,True,False,True]
+    , \x -> case x of [] -> []; _ -> [True,True,True,False]
+    , \x -> case x of [] -> []; _ -> [True,True,True,True]
+    , \_ -> [False,False,False,False,False]
+    , \_ -> [False,False,False,False,True]
+    , \_ -> [False,False,False,True,False]
+    , \_ -> [False,False,False,True,True]
+    , \_ -> [False,False,True,False,False]
+    , \_ -> [False,False,True,False,True]
+    , \_ -> [False,False,True,True,False]
+    , \_ -> [False,False,True,True,True]
+    , \_ -> [False,True,False,False,False]
+    , \_ -> [False,True,False,False,True]
+    , \_ -> [False,True,False,True,False]
+    , \_ -> [False,True,False,True,True]
+    , \_ -> [False,True,True,False,False]
+    , \_ -> [False,True,True,False,True]
+    , \_ -> [False,True,True,True,False]
+    , \_ -> [False,True,True,True,True]
+    , \_ -> [True,False,False,False,False]
+    , \_ -> [True,False,False,False,True]
+    , \_ -> [True,False,False,True,False]
+    , \_ -> [True,False,False,True,True]
+    , \_ -> [True,False,True,False,False]
+    , \_ -> [True,False,True,False,True]
+    , \_ -> [True,False,True,True,False]
+    , \_ -> [True,False,True,True,True]
+    , \_ -> [True,True,False,False,False]
+    , \_ -> [True,True,False,False,True]
+    , \_ -> [True,True,False,True,False]
+    , \_ -> [True,True,False,True,True]
+    , \_ -> [True,True,True,False,False]
+    , \_ -> [True,True,True,False,True]
+    , \_ -> [True,True,True,True,False]
+    , \_ -> [True,True,True,True,True]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Int-Bool-Bool.out b/test/diff/tiers-4cases-Int-Bool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Int-Bool-Bool.out
@@ -0,0 +1,225 @@
+map length (tiers :: [[ Int->Bool->Bool ]])  =  [4,12,12,48,48,84,...]
+
+length (list :: [ Int->Bool->Bool ])  =  Infinity
+
+allUnique (list :: [ Int->Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Int->Bool->Bool ])  =  0 % 1
+
+tiers :: [Int->Bool->Bool]  =
+  [ [ \_ _ -> False
+    , \_ y -> case y of False -> False; _ -> True
+    , \_ y -> case y of False -> True; _ -> False
+    , \_ _ -> True
+    ]
+  , [ \x y -> case (x,y) of (0,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; _ -> False
+    , \x _ -> case x of 0 -> True; _ -> False
+    , \x y -> case (x,y) of (0,_) -> False; (_,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> True; (0,_) -> False; (_,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,_) -> True; (_,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,_) -> False; (_,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> False; (0,_) -> True; (_,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,_) -> True; (_,False) -> True; _ -> False
+    , \x _ -> case x of 0 -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; _ -> True
+    ]
+  , [ \x y -> case (x,y) of (1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (1,False) -> True; _ -> False
+    , \x _ -> case x of 1 -> True; _ -> False
+    , \x y -> case (x,y) of (_,False) -> False; (0,_) -> True; (1,_) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (_,False) -> True; (0,_) -> False; (1,_) -> True; _ -> False
+    , \x _ -> case x of 1 -> False; _ -> True
+    , \x y -> case (x,y) of (1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (1,True) -> False; _ -> True
+    ]
+  , [ \x y -> case (x,y) of (0,True) -> True; (1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,True) -> True; (1,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,True) -> True; (1,_) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (1,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (1,_) -> True; _ -> False
+    , \x y -> case (x,y) of (0,_) -> True; (1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,_) -> True; (1,False) -> True; _ -> False
+    , \x _ -> case x of 0 -> True; 1 -> True; _ -> False
+    , \x y -> case (x,y) of (-1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (-1,False) -> True; _ -> False
+    , \x _ -> case x of -1 -> True; _ -> False
+    , \x y -> case (x,y) of (0,_) -> False; (_,False) -> False; (1,_) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,_) -> False; (1,_) -> True; (_,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,_) -> True; (1,_) -> False; (_,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,_) -> True; (1,_) -> True; (_,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,_) -> False; (1,_) -> False; (_,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,_) -> False; (1,_) -> True; (_,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,_) -> True; (1,_) -> False; (_,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,_) -> True; (_,False) -> True; (1,_) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x _ -> case x of 0 -> False; 1 -> False; _ -> True
+    , \x y -> case (x,y) of (0,_) -> False; (1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,_) -> False; (1,True) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (1,_) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (1,True) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; (1,_) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; (1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; (1,True) -> False; _ -> True
+    , \x _ -> case x of -1 -> False; _ -> True
+    , \x y -> case (x,y) of (-1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (-1,True) -> False; _ -> True
+    ]
+  , [ \x y -> case (x,y) of (0,True) -> True; (-1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,True) -> True; (-1,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,True) -> True; (-1,_) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (-1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (-1,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (-1,_) -> True; _ -> False
+    , \x y -> case (x,y) of (0,_) -> True; (-1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,_) -> True; (-1,False) -> True; _ -> False
+    , \x _ -> case x of 0 -> True; -1 -> True; _ -> False
+    , \x y -> case (x,y) of (2,True) -> True; _ -> False
+    , \x y -> case (x,y) of (2,False) -> True; _ -> False
+    , \x _ -> case x of 2 -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x _ -> case x of 0 -> False; -1 -> False; _ -> True
+    , \x y -> case (x,y) of (0,_) -> False; (-1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,_) -> False; (-1,True) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (-1,_) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (-1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (-1,True) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; (-1,_) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; (-1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; (-1,True) -> False; _ -> True
+    , \x _ -> case x of 2 -> False; _ -> True
+    , \x y -> case (x,y) of (2,False) -> False; _ -> True
+    , \x y -> case (x,y) of (2,True) -> False; _ -> True
+    ]
+  , [ \x y -> case (x,y) of (0,True) -> True; (2,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,True) -> True; (2,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,True) -> True; (2,_) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (2,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (2,False) -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> True; (2,_) -> True; _ -> False
+    , \x y -> case (x,y) of (0,_) -> True; (2,True) -> True; _ -> False
+    , \x y -> case (x,y) of (0,_) -> True; (2,False) -> True; _ -> False
+    , \x _ -> case x of 0 -> True; 2 -> True; _ -> False
+    , \x y -> case (x,y) of (1,True) -> True; (-1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (1,True) -> True; (-1,False) -> True; _ -> False
+    , \x y -> case (x,y) of (1,True) -> True; (-1,_) -> True; _ -> False
+    , \x y -> case (x,y) of (1,False) -> True; (-1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (1,False) -> True; (-1,False) -> True; _ -> False
+    , \x y -> case (x,y) of (1,False) -> True; (-1,_) -> True; _ -> False
+    , \x y -> case (x,y) of (1,_) -> True; (-1,True) -> True; _ -> False
+    , \x y -> case (x,y) of (1,_) -> True; (-1,False) -> True; _ -> False
+    , \x _ -> case x of 1 -> True; -1 -> True; _ -> False
+    , \x y -> case (x,y) of (-2,True) -> True; _ -> False
+    , \x y -> case (x,y) of (-2,False) -> True; _ -> False
+    , \x _ -> case x of -2 -> True; _ -> False
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> False; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> True; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> False; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> True; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x y -> case (x,y) of (0,False) -> True; (0,True) -> False; (1,False) -> True; (1,True) -> False; ...
+    , \x _ -> case x of 0 -> False; 2 -> False; _ -> True
+    , \x y -> case (x,y) of (0,_) -> False; (2,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,_) -> False; (2,True) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (2,_) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (2,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,False) -> False; (2,True) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; (2,_) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; (2,False) -> False; _ -> True
+    , \x y -> case (x,y) of (0,True) -> False; (2,True) -> False; _ -> True
+    , \x _ -> case x of 1 -> False; -1 -> False; _ -> True
+    , \x y -> case (x,y) of (1,_) -> False; (-1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (1,_) -> False; (-1,True) -> False; _ -> True
+    , \x y -> case (x,y) of (1,False) -> False; (-1,_) -> False; _ -> True
+    , \x y -> case (x,y) of (1,False) -> False; (-1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (1,False) -> False; (-1,True) -> False; _ -> True
+    , \x y -> case (x,y) of (1,True) -> False; (-1,_) -> False; _ -> True
+    , \x y -> case (x,y) of (1,True) -> False; (-1,False) -> False; _ -> True
+    , \x y -> case (x,y) of (1,True) -> False; (-1,True) -> False; _ -> True
+    , \x _ -> case x of -2 -> False; _ -> True
+    , \x y -> case (x,y) of (-2,False) -> False; _ -> True
+    , \x y -> case (x,y) of (-2,True) -> False; _ -> True
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Int-Int-Int-Int.out b/test/diff/tiers-4cases-Int-Int-Int-Int.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Int-Int-Int-Int.out
@@ -0,0 +1,47 @@
+map length (tiers :: [[ Int->Int->Int->Int ]])  =  [1,1,7,25,...]
+
+length (list :: [ Int->Int->Int->Int ])  =  Infinity
+
+allUnique (list :: [ Int->Int->Int->Int ])  =  True
+
+ratioRepetitions (list :: [ Int->Int->Int->Int ])  =  0 % 1
+
+tiers :: [Int->Int->Int->Int]  =
+  [ [\_ _ _ -> 0]
+  , [\_ _ _ -> 1]
+  , [ \x _ _ -> case x of 0 -> 1; _ -> 0
+    , \x _ _ -> case x of 0 -> 0; _ -> 1
+    , \_ y _ -> case y of 0 -> 1; _ -> 0
+    , \_ y _ -> case y of 0 -> 0; _ -> 1
+    , \_ _ z -> case z of 0 -> 1; _ -> 0
+    , \_ _ z -> case z of 0 -> 0; _ -> 1
+    , \_ _ _ -> -1
+    ]
+  , [ \x y _ -> case (x,y) of (0,0) -> 1; _ -> 0
+    , \x y _ -> case (x,y) of (_,0) -> 0; (0,_) -> 1; _ -> 0
+    , \x _ z -> case (x,z) of (0,0) -> 1; _ -> 0
+    , \x _ z -> case (x,z) of (_,0) -> 0; (0,_) -> 1; _ -> 0
+    , \x _ _ -> case x of 0 -> -1; _ -> 0
+    , \x _ _ -> case x of 1 -> 1; _ -> 0
+    , \x _ _ -> case x of 1 -> 0; _ -> 1
+    , \x y _ -> case (x,y) of (0,_) -> 0; (_,0) -> 1; _ -> 0
+    , \x y _ -> case (x,y) of (0,_) -> 0; (_,0) -> 0; _ -> 1
+    , \x _ z -> case (x,z) of (0,_) -> 0; (_,0) -> 1; _ -> 0
+    , \x _ z -> case (x,z) of (0,_) -> 0; (_,0) -> 0; _ -> 1
+    , \x _ _ -> case x of 0 -> 0; _ -> -1
+    , \_ y z -> case (y,z) of (0,0) -> 1; _ -> 0
+    , \_ y z -> case (y,z) of (_,0) -> 0; (0,_) -> 1; _ -> 0
+    , \_ y _ -> case y of 0 -> -1; _ -> 0
+    , \_ y _ -> case y of 1 -> 1; _ -> 0
+    , \_ y _ -> case y of 1 -> 0; _ -> 1
+    , \_ y z -> case (y,z) of (0,_) -> 0; (_,0) -> 1; _ -> 0
+    , \_ y z -> case (y,z) of (0,_) -> 0; (_,0) -> 0; _ -> 1
+    , \_ y _ -> case y of 0 -> 0; _ -> -1
+    , \_ _ z -> case z of 0 -> -1; _ -> 0
+    , \_ _ z -> case z of 1 -> 1; _ -> 0
+    , \_ _ z -> case z of 1 -> 0; _ -> 1
+    , \_ _ z -> case z of 0 -> 0; _ -> -1
+    , \_ _ _ -> 2
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Int-Int-Int.out b/test/diff/tiers-4cases-Int-Int-Int.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Int-Int-Int.out
@@ -0,0 +1,151 @@
+map length (tiers :: [[ Int->Int->Int ]])  =  [1,1,5,13,35,81,...]
+
+length (list :: [ Int->Int->Int ])  =  Infinity
+
+allUnique (list :: [ Int->Int->Int ])  =  True
+
+ratioRepetitions (list :: [ Int->Int->Int ])  =  0 % 1
+
+tiers :: [Int->Int->Int]  =
+  [ [\_ _ -> 0]
+  , [\_ _ -> 1]
+  , [ \x _ -> case x of 0 -> 1; _ -> 0
+    , \x _ -> case x of 0 -> 0; _ -> 1
+    , \_ y -> case y of 0 -> 1; _ -> 0
+    , \_ y -> case y of 0 -> 0; _ -> 1
+    , \_ _ -> -1
+    ]
+  , [ \x y -> case (x,y) of (0,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> 1; _ -> 0
+    , \x _ -> case x of 0 -> -1; _ -> 0
+    , \x _ -> case x of 1 -> 1; _ -> 0
+    , \x _ -> case x of 1 -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; _ -> 1
+    , \x _ -> case x of 0 -> 0; _ -> -1
+    , \_ y -> case y of 0 -> -1; _ -> 0
+    , \_ y -> case y of 1 -> 1; _ -> 0
+    , \_ y -> case y of 1 -> 0; _ -> 1
+    , \_ y -> case y of 0 -> 0; _ -> -1
+    , \_ _ -> 2
+    ]
+  , [ \x y -> case (x,y) of (0,0) -> -1; _ -> 0
+    , \x y -> case (x,y) of (0,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 1; (0,1) -> 0; (1,0) -> 0; (0,-1) -> 1; ...
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> -1; _ -> 0
+    , \x _ -> case x of 0 -> 2; _ -> 0
+    , \x y -> case (x,y) of (1,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (1,_) -> 1; _ -> 0
+    , \x _ -> case x of 1 -> -1; _ -> 0
+    , \x _ -> case x of -1 -> 1; _ -> 0
+    , \x y -> case (x,y) of (_,0) -> 1; (0,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; _ -> 1
+    , \x _ -> case x of 0 -> -1; _ -> 1
+    , \x _ -> case x of 0 -> 0; 1 -> 0; _ -> 1
+    , \x _ -> case x of -1 -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 1; (0,1) -> 0; (1,0) -> 0; (0,-1) -> 0; ...
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 0; _ -> 1
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> 1; (1,_) -> 0; _ -> 1
+    , \x _ -> case x of 0 -> 1; _ -> -1
+    , \x _ -> case x of 1 -> 0; _ -> -1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> -1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (_,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 1; (_,1) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; _ -> -1
+    , \x _ -> case x of 0 -> 0; _ -> 2
+    , \_ y -> case y of 0 -> 2; _ -> 0
+    , \_ y -> case y of 1 -> -1; _ -> 0
+    , \_ y -> case y of -1 -> 1; _ -> 0
+    , \_ y -> case y of 0 -> -1; _ -> 1
+    , \_ y -> case y of 0 -> 0; 1 -> 0; _ -> 1
+    , \_ y -> case y of -1 -> 0; _ -> 1
+    , \_ y -> case y of 0 -> 1; _ -> -1
+    , \_ y -> case y of 1 -> 0; _ -> -1
+    , \_ y -> case y of 0 -> 0; _ -> 2
+    , \_ _ -> -2
+    ]
+  , [ \x y -> case (x,y) of (0,0) -> 2; _ -> 0
+    , \x y -> case (x,y) of (0,1) -> -1; _ -> 0
+    , \x y -> case (x,y) of (0,-1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> -1; (0,_) -> 1; _ -> 0
+    , \x y -> case (x,y) of (_,0) -> 0; (_,1) -> 0; (0,_) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 1; (0,1) -> 1; (1,0) -> 0; (0,-1) -> 0; ...
+    , \x y -> case (x,y) of (0,0) -> 1; (0,_) -> -1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> -1; (0,1) -> 0; (1,0) -> 0; (0,-1) -> -1; ...
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> 2; _ -> 0
+    , \x _ -> case x of 0 -> -2; _ -> 0
+    , \x y -> case (x,y) of (1,0) -> -1; _ -> 0
+    , \x y -> case (x,y) of (1,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 0; (0,1) -> 0; (1,0) -> 1; (0,-1) -> 0; ...
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (1,_) -> -1; _ -> 0
+    , \x _ -> case x of 1 -> 2; _ -> 0
+    , \x _ -> case x of 0 -> 1; 1 -> 1; _ -> 0
+    , \x y -> case (x,y) of (-1,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (-1,1) -> 1; (-1,-1) -> 1; _ -> 0
+    , \x _ -> case x of -1 -> -1; _ -> 0
+    , \x _ -> case x of 2 -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> -1; (0,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; (0,1) -> 1; (1,0) -> 1; (0,-1) -> 0; ...
+    , \x y -> case (x,y) of (0,1) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; (0,_) -> -1; _ -> 1
+    , \x _ -> case x of 0 -> 2; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 1; (1,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (1,0) -> 0; _ -> 1
+    , \x _ -> case x of 1 -> -1; _ -> 1
+    , \x _ -> case x of 0 -> 0; 1 -> 1; -1 -> 0; _ -> 1
+    , \x _ -> case x of 2 -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; (0,_) -> 1; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> -1; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (_,0) -> 1; (0,_) -> 0; (1,_) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (1,_) -> 0; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 1; (0,1) -> 0; (1,0) -> 1; (0,-1) -> 0; ...
+    , \x y -> case (x,y) of (0,0) -> 1; (0,_) -> 0; (_,0) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> -1; (_,0) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; (0,1) -> 1; (1,0) -> 1; (0,-1) -> 1; ...
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (1,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (_,0) -> 0; (-1,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 1; (0,_) -> 0; _ -> -1
+    , \x y -> case (x,y) of (0,0) -> 0; (0,_) -> 1; _ -> -1
+    , \x _ -> case x of 1 -> 1; _ -> -1
+    , \x _ -> case x of 0 -> 0; 1 -> 0; _ -> -1
+    , \x _ -> case x of -1 -> 0; _ -> -1
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> -1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> -1; (0,1) -> 0; (1,0) -> 0; (0,-1) -> 0; ...
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 0; (_,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,1) -> 1; (-1,1) -> 1; (2,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 1; (_,1) -> 0; _ -> 1
+    , \x y -> case (x,y) of (_,1) -> 0; (1,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 0; _ -> -1
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> -1; (1,_) -> 0; _ -> -1
+    , \x _ -> case x of 0 -> 1; _ -> 2
+    , \x _ -> case x of 1 -> 0; _ -> 2
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 2; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (_,1) -> -1; _ -> 0
+    , \x y -> case (x,y) of (1,-1) -> 1; (-1,-1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> -1; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (_,1) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,-1) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 1; _ -> -1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> -1; (_,1) -> 0; _ -> -1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; _ -> 2
+    , \x _ -> case x of 0 -> 0; _ -> -2
+    , \_ y -> case y of 0 -> -2; _ -> 0
+    , \_ y -> case y of 1 -> 2; _ -> 0
+    , \_ y -> case y of 0 -> 1; 1 -> 1; _ -> 0
+    , \_ y -> case y of -1 -> -1; _ -> 0
+    , \_ y -> case y of 2 -> 1; _ -> 0
+    , \_ y -> case y of 0 -> 2; _ -> 1
+    , \_ y -> case y of 1 -> -1; _ -> 1
+    , \_ y -> case y of 0 -> 0; -1 -> 0; _ -> 1
+    , \_ y -> case y of 2 -> 0; _ -> 1
+    , \_ y -> case y of 1 -> 1; _ -> -1
+    , \_ y -> case y of 0 -> 0; 1 -> 0; _ -> -1
+    , \_ y -> case y of -1 -> 0; _ -> -1
+    , \_ y -> case y of 0 -> 1; _ -> 2
+    , \_ y -> case y of 1 -> 0; _ -> 2
+    , \_ y -> case y of 0 -> 0; _ -> -2
+    , \_ _ -> 3
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Int-Int.out b/test/diff/tiers-4cases-Int-Int.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Int-Int.out
@@ -0,0 +1,212 @@
+map length (tiers :: [[ Int->Int ]])  =  [1,1,3,5,10,16,30,48,80,...]
+
+length (list :: [ Int->Int ])  =  Infinity
+
+allUnique (list :: [ Int->Int ])  =  True
+
+ratioRepetitions (list :: [ Int->Int ])  =  0 % 1
+
+tiers :: [Int->Int]  =
+  [ [\_ -> 0]
+  , [\_ -> 1]
+  , [ \x -> case x of 0 -> 1; _ -> 0
+    , \x -> case x of 0 -> 0; _ -> 1
+    , \_ -> -1
+    ]
+  , [ \x -> case x of 0 -> -1; _ -> 0
+    , \x -> case x of 1 -> 1; _ -> 0
+    , \x -> case x of 1 -> 0; _ -> 1
+    , \x -> case x of 0 -> 0; _ -> -1
+    , \_ -> 2
+    ]
+  , [ \x -> case x of 0 -> 2; _ -> 0
+    , \x -> case x of 1 -> -1; _ -> 0
+    , \x -> case x of -1 -> 1; _ -> 0
+    , \x -> case x of 0 -> -1; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> 1
+    , \x -> case x of -1 -> 0; _ -> 1
+    , \x -> case x of 0 -> 1; _ -> -1
+    , \x -> case x of 1 -> 0; _ -> -1
+    , \x -> case x of 0 -> 0; _ -> 2
+    , \_ -> -2
+    ]
+  , [ \x -> case x of 0 -> -2; _ -> 0
+    , \x -> case x of 1 -> 2; _ -> 0
+    , \x -> case x of 0 -> 1; 1 -> 1; _ -> 0
+    , \x -> case x of -1 -> -1; _ -> 0
+    , \x -> case x of 2 -> 1; _ -> 0
+    , \x -> case x of 0 -> 2; _ -> 1
+    , \x -> case x of 1 -> -1; _ -> 1
+    , \x -> case x of 0 -> 0; -1 -> 0; _ -> 1
+    , \x -> case x of 2 -> 0; _ -> 1
+    , \x -> case x of 1 -> 1; _ -> -1
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> -1
+    , \x -> case x of -1 -> 0; _ -> -1
+    , \x -> case x of 0 -> 1; _ -> 2
+    , \x -> case x of 1 -> 0; _ -> 2
+    , \x -> case x of 0 -> 0; _ -> -2
+    , \_ -> 3
+    ]
+  , [ \x -> case x of 0 -> 3; _ -> 0
+    , \x -> case x of 1 -> -2; _ -> 0
+    , \x -> case x of 0 -> 1; 1 -> -1; _ -> 0
+    , \x -> case x of 0 -> -1; 1 -> 1; _ -> 0
+    , \x -> case x of -1 -> 2; _ -> 0
+    , \x -> case x of 0 -> 1; -1 -> 1; _ -> 0
+    , \x -> case x of 2 -> -1; _ -> 0
+    , \x -> case x of -2 -> 1; _ -> 0
+    , \x -> case x of 0 -> -2; _ -> 1
+    , \x -> case x of 1 -> 2; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> -1; _ -> 1
+    , \x -> case x of 0 -> -1; 1 -> 0; _ -> 1
+    , \x -> case x of -1 -> -1; _ -> 1
+    , \x -> case x of 0 -> 0; 2 -> 0; _ -> 1
+    , \x -> case x of 1 -> 0; -1 -> 0; _ -> 1
+    , \x -> case x of -2 -> 0; _ -> 1
+    , \x -> case x of 0 -> 2; _ -> -1
+    , \x -> case x of 0 -> 0; 1 -> 1; _ -> -1
+    , \x -> case x of 0 -> 1; 1 -> 0; _ -> -1
+    , \x -> case x of -1 -> 1; _ -> -1
+    , \x -> case x of 0 -> 0; -1 -> 0; _ -> -1
+    , \x -> case x of 2 -> 0; _ -> -1
+    , \x -> case x of 0 -> -1; _ -> 2
+    , \x -> case x of 1 -> 1; _ -> 2
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> 2
+    , \x -> case x of -1 -> 0; _ -> 2
+    , \x -> case x of 0 -> 1; _ -> -2
+    , \x -> case x of 1 -> 0; _ -> -2
+    , \x -> case x of 0 -> 0; _ -> 3
+    , \_ -> -3
+    ]
+  , [ \x -> case x of 0 -> -3; _ -> 0
+    , \x -> case x of 1 -> 3; _ -> 0
+    , \x -> case x of 0 -> 1; 1 -> 2; _ -> 0
+    , \x -> case x of 0 -> -1; 1 -> -1; _ -> 0
+    , \x -> case x of 0 -> 2; 1 -> 1; _ -> 0
+    , \x -> case x of -1 -> -2; _ -> 0
+    , \x -> case x of 0 -> 1; -1 -> -1; _ -> 0
+    , \x -> case x of 0 -> -1; -1 -> 1; _ -> 0
+    , \x -> case x of 2 -> 2; _ -> 0
+    , \x -> case x of 0 -> 1; 2 -> 1; _ -> 0
+    , \x -> case x of 1 -> 1; -1 -> 1; _ -> 0
+    , \x -> case x of -2 -> -1; _ -> 0
+    , \x -> case x of 3 -> 1; _ -> 0
+    , \x -> case x of 0 -> 3; _ -> 1
+    , \x -> case x of 1 -> -2; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 2; _ -> 1
+    , \x -> case x of 0 -> 2; 1 -> 0; _ -> 1
+    , \x -> case x of -1 -> 2; _ -> 1
+    , \x -> case x of 0 -> 0; -1 -> -1; _ -> 1
+    , \x -> case x of 0 -> -1; -1 -> 0; _ -> 1
+    , \x -> case x of 2 -> -1; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 0; -1 -> 0; _ -> 1
+    , \x -> case x of 0 -> 0; -2 -> 0; _ -> 1
+    , \x -> case x of 1 -> 0; 2 -> 0; _ -> 1
+    , \x -> case x of 3 -> 0; _ -> 1
+    , \x -> case x of 0 -> -2; _ -> -1
+    , \x -> case x of 1 -> 2; _ -> -1
+    , \x -> case x of 0 -> 1; 1 -> 1; _ -> -1
+    , \x -> case x of 0 -> 0; -1 -> 1; _ -> -1
+    , \x -> case x of 0 -> 1; -1 -> 0; _ -> -1
+    , \x -> case x of 2 -> 1; _ -> -1
+    , \x -> case x of 0 -> 0; 2 -> 0; _ -> -1
+    , \x -> case x of 1 -> 0; -1 -> 0; _ -> -1
+    , \x -> case x of -2 -> 0; _ -> -1
+    , \x -> case x of 1 -> -1; _ -> 2
+    , \x -> case x of 0 -> 0; 1 -> 1; _ -> 2
+    , \x -> case x of 0 -> 1; 1 -> 0; _ -> 2
+    , \x -> case x of -1 -> 1; _ -> 2
+    , \x -> case x of 0 -> 0; -1 -> 0; _ -> 2
+    , \x -> case x of 2 -> 0; _ -> 2
+    , \x -> case x of 0 -> -1; _ -> -2
+    , \x -> case x of 1 -> 1; _ -> -2
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> -2
+    , \x -> case x of -1 -> 0; _ -> -2
+    , \x -> case x of 0 -> 1; _ -> 3
+    , \x -> case x of 1 -> 0; _ -> 3
+    , \x -> case x of 0 -> 0; _ -> -3
+    , \_ -> 4
+    ]
+  , [ \x -> case x of 0 -> 4; _ -> 0
+    , \x -> case x of 1 -> -3; _ -> 0
+    , \x -> case x of 0 -> 1; 1 -> -2; _ -> 0
+    , \x -> case x of 0 -> -1; 1 -> 2; _ -> 0
+    , \x -> case x of 0 -> 2; 1 -> -1; _ -> 0
+    , \x -> case x of 0 -> -2; 1 -> 1; _ -> 0
+    , \x -> case x of -1 -> 3; _ -> 0
+    , \x -> case x of 0 -> 1; -1 -> 2; _ -> 0
+    , \x -> case x of 0 -> -1; -1 -> -1; _ -> 0
+    , \x -> case x of 0 -> 2; -1 -> 1; _ -> 0
+    , \x -> case x of 2 -> -2; _ -> 0
+    , \x -> case x of 0 -> 1; 2 -> -1; _ -> 0
+    , \x -> case x of 0 -> -1; 2 -> 1; _ -> 0
+    , \x -> case x of 1 -> 1; -1 -> -1; _ -> 0
+    , \x -> case x of 1 -> -1; -1 -> 1; _ -> 0
+    , \x -> case x of -2 -> 2; _ -> 0
+    , \x -> case x of 0 -> 1; -2 -> 1; _ -> 0
+    , \x -> case x of 1 -> 1; 2 -> 1; _ -> 0
+    , \x -> case x of 3 -> -1; _ -> 0
+    , \x -> case x of -3 -> 1; _ -> 0
+    , \x -> case x of 0 -> -3; _ -> 1
+    , \x -> case x of 1 -> 3; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> -2; _ -> 1
+    , \x -> case x of 0 -> -1; 1 -> -1; _ -> 1
+    , \x -> case x of 0 -> -2; 1 -> 0; _ -> 1
+    , \x -> case x of -1 -> -2; _ -> 1
+    , \x -> case x of 0 -> 0; -1 -> 2; _ -> 1
+    , \x -> case x of 0 -> 2; -1 -> 0; _ -> 1
+    , \x -> case x of 2 -> 2; _ -> 1
+    , \x -> case x of 0 -> 0; 2 -> -1; _ -> 1
+    , \x -> case x of 0 -> -1; 2 -> 0; _ -> 1
+    , \x -> case x of 1 -> 0; -1 -> -1; _ -> 1
+    , \x -> case x of 1 -> -1; -1 -> 0; _ -> 1
+    , \x -> case x of -2 -> -1; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 0; 2 -> 0; _ -> 1
+    , \x -> case x of 0 -> 0; 3 -> 0; _ -> 1
+    , \x -> case x of 1 -> 0; -2 -> 0; _ -> 1
+    , \x -> case x of -1 -> 0; 2 -> 0; _ -> 1
+    , \x -> case x of -3 -> 0; _ -> 1
+    , \x -> case x of 0 -> 3; _ -> -1
+    , \x -> case x of 1 -> -2; _ -> -1
+    , \x -> case x of 0 -> 0; 1 -> 2; _ -> -1
+    , \x -> case x of 0 -> 2; 1 -> 0; _ -> -1
+    , \x -> case x of -1 -> 2; _ -> -1
+    , \x -> case x of 0 -> 1; -1 -> 1; _ -> -1
+    , \x -> case x of 0 -> 0; 2 -> 1; _ -> -1
+    , \x -> case x of 0 -> 1; 2 -> 0; _ -> -1
+    , \x -> case x of 1 -> 0; -1 -> 1; _ -> -1
+    , \x -> case x of 1 -> 1; -1 -> 0; _ -> -1
+    , \x -> case x of -2 -> 1; _ -> -1
+    , \x -> case x of 0 -> 0; 1 -> 0; -1 -> 0; _ -> -1
+    , \x -> case x of 0 -> 0; -2 -> 0; _ -> -1
+    , \x -> case x of 1 -> 0; 2 -> 0; _ -> -1
+    , \x -> case x of 3 -> 0; _ -> -1
+    , \x -> case x of 0 -> -2; _ -> 2
+    , \x -> case x of 0 -> 0; 1 -> -1; _ -> 2
+    , \x -> case x of 0 -> 1; 1 -> 1; _ -> 2
+    , \x -> case x of 0 -> -1; 1 -> 0; _ -> 2
+    , \x -> case x of -1 -> -1; _ -> 2
+    , \x -> case x of 0 -> 0; -1 -> 1; _ -> 2
+    , \x -> case x of 0 -> 1; -1 -> 0; _ -> 2
+    , \x -> case x of 2 -> 1; _ -> 2
+    , \x -> case x of 0 -> 0; 2 -> 0; _ -> 2
+    , \x -> case x of 1 -> 0; -1 -> 0; _ -> 2
+    , \x -> case x of -2 -> 0; _ -> 2
+    , \x -> case x of 0 -> 2; _ -> -2
+    , \x -> case x of 1 -> -1; _ -> -2
+    , \x -> case x of 0 -> 0; 1 -> 1; _ -> -2
+    , \x -> case x of 0 -> 1; 1 -> 0; _ -> -2
+    , \x -> case x of -1 -> 1; _ -> -2
+    , \x -> case x of 0 -> 0; -1 -> 0; _ -> -2
+    , \x -> case x of 2 -> 0; _ -> -2
+    , \x -> case x of 0 -> -1; _ -> 3
+    , \x -> case x of 1 -> 1; _ -> 3
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> 3
+    , \x -> case x of -1 -> 0; _ -> 3
+    , \x -> case x of 0 -> 1; _ -> -3
+    , \x -> case x of 1 -> 0; _ -> -3
+    , \x -> case x of 0 -> 0; _ -> 4
+    , \_ -> -4
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Ints-Ints.out b/test/diff/tiers-4cases-Ints-Ints.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Ints-Ints.out
@@ -0,0 +1,135 @@
+map length (tiers :: [[ [Int]->[Int] ]])  =  [1,1,4,10,29,75,...]
+
+length (list :: [ [Int]->[Int] ])  =  Infinity
+
+allUnique (list :: [ [Int]->[Int] ])  =  True
+
+ratioRepetitions (list :: [ [Int]->[Int] ])  =  0 % 1
+
+tiers :: [[Int]->[Int]]  =
+  [ [\_ -> []]
+  , [\_ -> [0]]
+  , [ \x -> case x of [] -> [0]; _ -> []
+    , \x -> case x of [] -> []; _ -> [0]
+    , \_ -> [0,0]
+    , \_ -> [1]
+    ]
+  , [ \x -> case x of [] -> [0,0]; _ -> []
+    , \x -> case x of [] -> [1]; _ -> []
+    , \x -> case x of [0] -> [0]; _ -> []
+    , \x -> case x of [0] -> []; _ -> [0]
+    , \x -> case x of [] -> []; _ -> [0,0]
+    , \x -> case x of [] -> []; _ -> [1]
+    , \_ -> [0,0,0]
+    , \_ -> [0,1]
+    , \_ -> [1,0]
+    , \_ -> [-1]
+    ]
+  , [ \x -> case x of [] -> [0,0,0]; _ -> []
+    , \x -> case x of [] -> [0,1]; _ -> []
+    , \x -> case x of [] -> [1,0]; _ -> []
+    , \x -> case x of [] -> [-1]; _ -> []
+    , \x -> case x of [0] -> [0,0]; _ -> []
+    , \x -> case x of [0] -> [1]; _ -> []
+    , \x -> case x of [0,0] -> [0]; _ -> []
+    , \x -> case x of [1] -> [0]; _ -> []
+    , \x -> case x of [] -> [0,0]; _ -> [0]
+    , \x -> case x of [] -> [1]; _ -> [0]
+    , \x -> case x of [] -> []; [0] -> []; _ -> [0]
+    , \x -> case x of [0,0] -> []; _ -> [0]
+    , \x -> case x of [1] -> []; _ -> [0]
+    , \x -> case x of [] -> [0]; _ -> [0,0]
+    , \x -> case x of [0] -> []; _ -> [0,0]
+    , \x -> case x of [] -> [0]; _ -> [1]
+    , \x -> case x of [0] -> []; _ -> [1]
+    , \x -> case x of [] -> []; _ -> [0,0,0]
+    , \x -> case x of [] -> []; _ -> [0,1]
+    , \x -> case x of [] -> []; _ -> [1,0]
+    , \x -> case x of [] -> []; _ -> [-1]
+    , \_ -> [0,0,0,0]
+    , \_ -> [0,0,1]
+    , \_ -> [0,1,0]
+    , \_ -> [0,-1]
+    , \_ -> [1,0,0]
+    , \_ -> [1,1]
+    , \_ -> [-1,0]
+    , \_ -> [2]
+    ]
+  , [ \x -> case x of [] -> [0,0,0,0]; _ -> []
+    , \x -> case x of [] -> [0,0,1]; _ -> []
+    , \x -> case x of [] -> [0,1,0]; _ -> []
+    , \x -> case x of [] -> [0,-1]; _ -> []
+    , \x -> case x of [] -> [1,0,0]; _ -> []
+    , \x -> case x of [] -> [1,1]; _ -> []
+    , \x -> case x of [] -> [-1,0]; _ -> []
+    , \x -> case x of [] -> [2]; _ -> []
+    , \x -> case x of [0] -> [0,0,0]; _ -> []
+    , \x -> case x of [0] -> [0,1]; _ -> []
+    , \x -> case x of [0] -> [1,0]; _ -> []
+    , \x -> case x of [0] -> [-1]; _ -> []
+    , \x -> case x of [] -> [0]; [0] -> [0]; _ -> []
+    , \x -> case x of [0,0] -> [0,0]; _ -> []
+    , \x -> case x of [0,0] -> [1]; _ -> []
+    , \x -> case x of [1] -> [0,0]; _ -> []
+    , \x -> case x of [1] -> [1]; _ -> []
+    , \x -> case x of [0,0,0] -> [0]; _ -> []
+    , \x -> case x of [0,1] -> [0]; _ -> []
+    , \x -> case x of [1,0] -> [0]; _ -> []
+    , \x -> case x of [-1] -> [0]; _ -> []
+    , \x -> case x of [] -> [0,0,0]; _ -> [0]
+    , \x -> case x of [] -> [0,1]; _ -> [0]
+    , \x -> case x of [] -> [1,0]; _ -> [0]
+    , \x -> case x of [] -> [-1]; _ -> [0]
+    , \x -> case x of [0] -> [0,0]; _ -> [0]
+    , \x -> case x of [0] -> [1]; _ -> [0]
+    , \x -> case x of [] -> []; [0,0] -> []; _ -> [0]
+    , \x -> case x of [] -> []; [1] -> []; _ -> [0]
+    , \x -> case x of [0,0,0] -> []; _ -> [0]
+    , \x -> case x of [0,1] -> []; _ -> [0]
+    , \x -> case x of [1,0] -> []; _ -> [0]
+    , \x -> case x of [-1] -> []; _ -> [0]
+    , \x -> case x of [] -> [1]; _ -> [0,0]
+    , \x -> case x of [0] -> [0]; _ -> [0,0]
+    , \x -> case x of [] -> []; [0] -> []; _ -> [0,0]
+    , \x -> case x of [0,0] -> []; _ -> [0,0]
+    , \x -> case x of [1] -> []; _ -> [0,0]
+    , \x -> case x of [] -> [0,0]; _ -> [1]
+    , \x -> case x of [0] -> [0]; _ -> [1]
+    , \x -> case x of [] -> []; [0] -> []; _ -> [1]
+    , \x -> case x of [0,0] -> []; _ -> [1]
+    , \x -> case x of [1] -> []; _ -> [1]
+    , \x -> case x of [] -> [0]; _ -> [0,0,0]
+    , \x -> case x of [0] -> []; _ -> [0,0,0]
+    , \x -> case x of [] -> [0]; _ -> [0,1]
+    , \x -> case x of [0] -> []; _ -> [0,1]
+    , \x -> case x of [] -> [0]; _ -> [1,0]
+    , \x -> case x of [0] -> []; _ -> [1,0]
+    , \x -> case x of [] -> [0]; _ -> [-1]
+    , \x -> case x of [0] -> []; _ -> [-1]
+    , \x -> case x of [] -> []; _ -> [0,0,0,0]
+    , \x -> case x of [] -> []; _ -> [0,0,1]
+    , \x -> case x of [] -> []; _ -> [0,1,0]
+    , \x -> case x of [] -> []; _ -> [0,-1]
+    , \x -> case x of [] -> []; _ -> [1,0,0]
+    , \x -> case x of [] -> []; _ -> [1,1]
+    , \x -> case x of [] -> []; _ -> [-1,0]
+    , \x -> case x of [] -> []; _ -> [2]
+    , \_ -> [0,0,0,0,0]
+    , \_ -> [0,0,0,1]
+    , \_ -> [0,0,1,0]
+    , \_ -> [0,0,-1]
+    , \_ -> [0,1,0,0]
+    , \_ -> [0,1,1]
+    , \_ -> [0,-1,0]
+    , \_ -> [0,2]
+    , \_ -> [1,0,0,0]
+    , \_ -> [1,0,1]
+    , \_ -> [1,1,0]
+    , \_ -> [1,-1]
+    , \_ -> [-1,0,0]
+    , \_ -> [-1,1]
+    , \_ -> [2,0]
+    , \_ -> [-2]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-MBool-Bool.out b/test/diff/tiers-4cases-MBool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-MBool-Bool.out
@@ -0,0 +1,19 @@
+map length (tiers :: [[ Maybe Bool->Bool ]])  =  [8]
+
+length (list :: [ Maybe Bool->Bool ])  =  8
+
+allUnique (list :: [ Maybe Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Maybe Bool->Bool ])  =  0 % 1
+
+tiers :: [Maybe Bool->Bool]  =
+  [ [ \_ -> False
+    , \x -> case x of Just True -> True; _ -> False
+    , \x -> case x of Just False -> True; _ -> False
+    , \x -> case x of Nothing -> False; _ -> True
+    , \x -> case x of Nothing -> True; _ -> False
+    , \x -> case x of Just False -> False; _ -> True
+    , \x -> case x of Just True -> False; _ -> True
+    , \_ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-4cases-MBool-MBool.out b/test/diff/tiers-4cases-MBool-MBool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-MBool-MBool.out
@@ -0,0 +1,40 @@
+map length (tiers :: [[ Maybe Bool->Maybe Bool ]])  =  [1,6,12,8]
+
+length (list :: [ Maybe Bool->Maybe Bool ])  =  Infinity
+
+allUnique (list :: [ Maybe Bool->Maybe Bool ])  =  True
+
+ratioRepetitions (list :: [ Maybe Bool->Maybe Bool ])  =  0 % 1
+
+tiers :: [Maybe Bool->Maybe Bool]  =
+  [ [\_ -> Nothing]
+  , [ \x -> case x of Just True -> Just False; _ -> Nothing
+    , \x -> case x of Just True -> Just True; _ -> Nothing
+    , \x -> case x of Just False -> Just False; _ -> Nothing
+    , \x -> case x of Just False -> Just True; _ -> Nothing
+    , \x -> case x of Nothing -> Just False; _ -> Nothing
+    , \x -> case x of Nothing -> Just True; _ -> Nothing
+    ]
+  , [ \x -> case x of Nothing -> Nothing; _ -> Just False
+    , \x -> case x of Nothing -> Nothing; Just False -> Just False; Just True -> Just True
+    , \x -> case x of Nothing -> Nothing; Just False -> Just True; Just True -> Just False
+    , \x -> case x of Nothing -> Nothing; _ -> Just True
+    , \x -> case x of Just False -> Nothing; _ -> Just False
+    , \x -> case x of Nothing -> Just False; Just False -> Nothing; Just True -> Just True
+    , \x -> case x of Just True -> Nothing; _ -> Just False
+    , \x -> case x of Nothing -> Just False; Just False -> Just True; Just True -> Nothing
+    , \x -> case x of Nothing -> Just True; Just False -> Nothing; Just True -> Just False
+    , \x -> case x of Just False -> Nothing; _ -> Just True
+    , \x -> case x of Nothing -> Just True; Just False -> Just False; Just True -> Nothing
+    , \x -> case x of Just True -> Nothing; _ -> Just True
+    ]
+  , [ \_ -> Just False
+    , \x -> case x of Just True -> Just True; _ -> Just False
+    , \x -> case x of Just False -> Just True; _ -> Just False
+    , \x -> case x of Nothing -> Just False; _ -> Just True
+    , \x -> case x of Nothing -> Just True; _ -> Just False
+    , \x -> case x of Just False -> Just False; _ -> Just True
+    , \x -> case x of Just True -> Just False; _ -> Just True
+    , \_ -> Just True
+    ]
+  ]
diff --git a/test/diff/tiers-4cases-Nat,Nat-Nat.out b/test/diff/tiers-4cases-Nat,Nat-Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Nat,Nat-Nat.out
@@ -0,0 +1,79 @@
+map length (tiers :: [[ (Nat,Nat)->Nat ]])  =  [1,1,3,7,17,35,...]
+
+length (list :: [ (Nat,Nat)->Nat ])  =  Infinity
+
+allUnique (list :: [ (Nat,Nat)->Nat ])  =  True
+
+ratioRepetitions (list :: [ (Nat,Nat)->Nat ])  =  0 % 1
+
+tiers :: [(Nat,Nat)->Nat]  =
+  [ [\_ -> 0]
+  , [\_ -> 1]
+  , [ \x -> case x of (0,0) -> 1; _ -> 0
+    , \x -> case x of (0,0) -> 0; _ -> 1
+    , \_ -> 2
+    ]
+  , [ \x -> case x of (0,0) -> 2; _ -> 0
+    , \x -> case x of (0,1) -> 1; _ -> 0
+    , \x -> case x of (1,0) -> 1; _ -> 0
+    , \x -> case x of (0,1) -> 0; _ -> 1
+    , \x -> case x of (1,0) -> 0; _ -> 1
+    , \x -> case x of (0,0) -> 0; _ -> 2
+    , \_ -> 3
+    ]
+  , [ \x -> case x of (0,0) -> 3; _ -> 0
+    , \x -> case x of (0,1) -> 2; _ -> 0
+    , \x -> case x of (1,0) -> 2; _ -> 0
+    , \x -> case x of (0,2) -> 1; _ -> 0
+    , \x -> case x of (1,1) -> 1; _ -> 0
+    , \x -> case x of (2,0) -> 1; _ -> 0
+    , \x -> case x of (0,0) -> 2; _ -> 1
+    , \x -> case x of (0,0) -> 0; (0,1) -> 0; _ -> 1
+    , \x -> case x of (0,0) -> 0; (1,0) -> 0; _ -> 1
+    , \x -> case x of (0,2) -> 0; _ -> 1
+    , \x -> case x of (1,1) -> 0; _ -> 1
+    , \x -> case x of (2,0) -> 0; _ -> 1
+    , \x -> case x of (0,0) -> 1; _ -> 2
+    , \x -> case x of (0,1) -> 0; _ -> 2
+    , \x -> case x of (1,0) -> 0; _ -> 2
+    , \x -> case x of (0,0) -> 0; _ -> 3
+    , \_ -> 4
+    ]
+  , [ \x -> case x of (0,0) -> 4; _ -> 0
+    , \x -> case x of (0,1) -> 3; _ -> 0
+    , \x -> case x of (1,0) -> 3; _ -> 0
+    , \x -> case x of (0,0) -> 1; (0,1) -> 1; _ -> 0
+    , \x -> case x of (0,0) -> 1; (1,0) -> 1; _ -> 0
+    , \x -> case x of (0,2) -> 2; _ -> 0
+    , \x -> case x of (1,1) -> 2; _ -> 0
+    , \x -> case x of (2,0) -> 2; _ -> 0
+    , \x -> case x of (0,3) -> 1; _ -> 0
+    , \x -> case x of (1,2) -> 1; _ -> 0
+    , \x -> case x of (2,1) -> 1; _ -> 0
+    , \x -> case x of (3,0) -> 1; _ -> 0
+    , \x -> case x of (0,0) -> 3; _ -> 1
+    , \x -> case x of (0,1) -> 2; _ -> 1
+    , \x -> case x of (1,0) -> 2; _ -> 1
+    , \x -> case x of (0,0) -> 0; (0,2) -> 0; _ -> 1
+    , \x -> case x of (0,0) -> 0; (1,1) -> 0; _ -> 1
+    , \x -> case x of (0,0) -> 0; (2,0) -> 0; _ -> 1
+    , \x -> case x of (0,1) -> 0; (1,0) -> 0; _ -> 1
+    , \x -> case x of (0,3) -> 0; _ -> 1
+    , \x -> case x of (1,2) -> 0; _ -> 1
+    , \x -> case x of (2,1) -> 0; _ -> 1
+    , \x -> case x of (3,0) -> 0; _ -> 1
+    , \x -> case x of (0,1) -> 1; _ -> 2
+    , \x -> case x of (1,0) -> 1; _ -> 2
+    , \x -> case x of (0,0) -> 0; (0,1) -> 0; _ -> 2
+    , \x -> case x of (0,0) -> 0; (1,0) -> 0; _ -> 2
+    , \x -> case x of (0,2) -> 0; _ -> 2
+    , \x -> case x of (1,1) -> 0; _ -> 2
+    , \x -> case x of (2,0) -> 0; _ -> 2
+    , \x -> case x of (0,0) -> 1; _ -> 3
+    , \x -> case x of (0,1) -> 0; _ -> 3
+    , \x -> case x of (1,0) -> 0; _ -> 3
+    , \x -> case x of (0,0) -> 0; _ -> 4
+    , \_ -> 5
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Nat-Nat-Nat.out b/test/diff/tiers-4cases-Nat-Nat-Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Nat-Nat-Nat.out
@@ -0,0 +1,151 @@
+map length (tiers :: [[ Nat->Nat->Nat ]])  =  [1,1,5,13,35,81,...]
+
+length (list :: [ Nat->Nat->Nat ])  =  Infinity
+
+allUnique (list :: [ Nat->Nat->Nat ])  =  True
+
+ratioRepetitions (list :: [ Nat->Nat->Nat ])  =  0 % 1
+
+tiers :: [Nat->Nat->Nat]  =
+  [ [\_ _ -> 0]
+  , [\_ _ -> 1]
+  , [ \x _ -> case x of 0 -> 1; _ -> 0
+    , \x _ -> case x of 0 -> 0; _ -> 1
+    , \_ y -> case y of 0 -> 1; _ -> 0
+    , \_ y -> case y of 0 -> 0; _ -> 1
+    , \_ _ -> 2
+    ]
+  , [ \x y -> case (x,y) of (0,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> 1; _ -> 0
+    , \x _ -> case x of 0 -> 2; _ -> 0
+    , \x _ -> case x of 1 -> 1; _ -> 0
+    , \x _ -> case x of 1 -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; _ -> 1
+    , \x _ -> case x of 0 -> 0; _ -> 2
+    , \_ y -> case y of 0 -> 2; _ -> 0
+    , \_ y -> case y of 1 -> 1; _ -> 0
+    , \_ y -> case y of 1 -> 0; _ -> 1
+    , \_ y -> case y of 0 -> 0; _ -> 2
+    , \_ _ -> 3
+    ]
+  , [ \x y -> case (x,y) of (0,0) -> 2; _ -> 0
+    , \x y -> case (x,y) of (0,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 1; (0,1) -> 0; (1,0) -> 0; (0,2) -> 1; ...
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> 2; _ -> 0
+    , \x _ -> case x of 0 -> 3; _ -> 0
+    , \x y -> case (x,y) of (1,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (1,_) -> 1; _ -> 0
+    , \x _ -> case x of 1 -> 2; _ -> 0
+    , \x _ -> case x of 2 -> 1; _ -> 0
+    , \x y -> case (x,y) of (_,0) -> 1; (0,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; _ -> 1
+    , \x _ -> case x of 0 -> 2; _ -> 1
+    , \x _ -> case x of 0 -> 0; 1 -> 0; _ -> 1
+    , \x _ -> case x of 2 -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 1; (0,1) -> 0; (1,0) -> 0; (0,2) -> 0; ...
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 0; _ -> 1
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> 1; (1,_) -> 0; _ -> 1
+    , \x _ -> case x of 0 -> 1; _ -> 2
+    , \x _ -> case x of 1 -> 0; _ -> 2
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 2; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (_,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 1; (_,1) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; _ -> 2
+    , \x _ -> case x of 0 -> 0; _ -> 3
+    , \_ y -> case y of 0 -> 3; _ -> 0
+    , \_ y -> case y of 1 -> 2; _ -> 0
+    , \_ y -> case y of 2 -> 1; _ -> 0
+    , \_ y -> case y of 0 -> 2; _ -> 1
+    , \_ y -> case y of 0 -> 0; 1 -> 0; _ -> 1
+    , \_ y -> case y of 2 -> 0; _ -> 1
+    , \_ y -> case y of 0 -> 1; _ -> 2
+    , \_ y -> case y of 1 -> 0; _ -> 2
+    , \_ y -> case y of 0 -> 0; _ -> 3
+    , \_ _ -> 4
+    ]
+  , [ \x y -> case (x,y) of (0,0) -> 3; _ -> 0
+    , \x y -> case (x,y) of (0,1) -> 2; _ -> 0
+    , \x y -> case (x,y) of (0,2) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 2; (0,_) -> 1; _ -> 0
+    , \x y -> case (x,y) of (_,0) -> 0; (_,1) -> 0; (0,_) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 1; (0,1) -> 1; (1,0) -> 0; (0,2) -> 0; ...
+    , \x y -> case (x,y) of (0,0) -> 1; (0,_) -> 2; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 2; (0,1) -> 0; (1,0) -> 0; (0,2) -> 2; ...
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> 3; _ -> 0
+    , \x _ -> case x of 0 -> 4; _ -> 0
+    , \x y -> case (x,y) of (1,0) -> 2; _ -> 0
+    , \x y -> case (x,y) of (1,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 0; (0,1) -> 0; (1,0) -> 1; (0,2) -> 0; ...
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (1,_) -> 2; _ -> 0
+    , \x _ -> case x of 1 -> 3; _ -> 0
+    , \x _ -> case x of 0 -> 1; 1 -> 1; _ -> 0
+    , \x y -> case (x,y) of (2,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (2,1) -> 1; (2,2) -> 1; _ -> 0
+    , \x _ -> case x of 2 -> 2; _ -> 0
+    , \x _ -> case x of 3 -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 2; (0,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; (0,1) -> 1; (1,0) -> 1; (0,2) -> 0; ...
+    , \x y -> case (x,y) of (0,1) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; (0,_) -> 2; _ -> 1
+    , \x _ -> case x of 0 -> 3; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 1; (1,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (1,0) -> 0; _ -> 1
+    , \x _ -> case x of 1 -> 2; _ -> 1
+    , \x _ -> case x of 0 -> 0; 1 -> 1; 2 -> 0; _ -> 1
+    , \x _ -> case x of 3 -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; (0,_) -> 1; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 2; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (_,0) -> 1; (0,_) -> 0; (1,_) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (1,_) -> 0; (_,0) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 1; (0,1) -> 0; (1,0) -> 1; (0,2) -> 0; ...
+    , \x y -> case (x,y) of (0,0) -> 1; (0,_) -> 0; (_,0) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 2; (_,0) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 0; (0,1) -> 1; (1,0) -> 1; (0,2) -> 1; ...
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (1,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (_,0) -> 0; (2,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,0) -> 1; (0,_) -> 0; _ -> 2
+    , \x y -> case (x,y) of (0,0) -> 0; (0,_) -> 1; _ -> 2
+    , \x _ -> case x of 1 -> 1; _ -> 2
+    , \x _ -> case x of 0 -> 0; 1 -> 0; _ -> 2
+    , \x _ -> case x of 2 -> 0; _ -> 2
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 2; _ -> 0
+    , \x y -> case (x,y) of (0,0) -> 2; (0,1) -> 0; (1,0) -> 0; (0,2) -> 0; ...
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 0; (_,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,1) -> 1; (2,1) -> 1; (3,1) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 1; (_,1) -> 0; _ -> 1
+    , \x y -> case (x,y) of (_,1) -> 0; (1,_) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 1; (_,0) -> 0; _ -> 2
+    , \x y -> case (x,y) of (_,0) -> 0; (0,_) -> 2; (1,_) -> 0; _ -> 2
+    , \x _ -> case x of 0 -> 1; _ -> 3
+    , \x _ -> case x of 1 -> 0; _ -> 3
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 3; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (_,1) -> 2; _ -> 0
+    , \x y -> case (x,y) of (1,2) -> 1; (2,2) -> 1; _ -> 0
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 2; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; (_,1) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,2) -> 0; _ -> 1
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 1; _ -> 2
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 2; (_,1) -> 0; _ -> 2
+    , \x y -> case (x,y) of (0,_) -> 0; (_,0) -> 0; _ -> 3
+    , \x _ -> case x of 0 -> 0; _ -> 4
+    , \_ y -> case y of 0 -> 4; _ -> 0
+    , \_ y -> case y of 1 -> 3; _ -> 0
+    , \_ y -> case y of 0 -> 1; 1 -> 1; _ -> 0
+    , \_ y -> case y of 2 -> 2; _ -> 0
+    , \_ y -> case y of 3 -> 1; _ -> 0
+    , \_ y -> case y of 0 -> 3; _ -> 1
+    , \_ y -> case y of 1 -> 2; _ -> 1
+    , \_ y -> case y of 0 -> 0; 2 -> 0; _ -> 1
+    , \_ y -> case y of 3 -> 0; _ -> 1
+    , \_ y -> case y of 1 -> 1; _ -> 2
+    , \_ y -> case y of 0 -> 0; 1 -> 0; _ -> 2
+    , \_ y -> case y of 2 -> 0; _ -> 2
+    , \_ y -> case y of 0 -> 1; _ -> 3
+    , \_ y -> case y of 1 -> 0; _ -> 3
+    , \_ y -> case y of 0 -> 0; _ -> 4
+    , \_ _ -> 5
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Nat-Nat.out b/test/diff/tiers-4cases-Nat-Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Nat-Nat.out
@@ -0,0 +1,212 @@
+map length (tiers :: [[ Nat->Nat ]])  =  [1,1,3,5,10,16,30,48,80,...]
+
+length (list :: [ Nat->Nat ])  =  Infinity
+
+allUnique (list :: [ Nat->Nat ])  =  True
+
+ratioRepetitions (list :: [ Nat->Nat ])  =  0 % 1
+
+tiers :: [Nat->Nat]  =
+  [ [\_ -> 0]
+  , [\_ -> 1]
+  , [ \x -> case x of 0 -> 1; _ -> 0
+    , \x -> case x of 0 -> 0; _ -> 1
+    , \_ -> 2
+    ]
+  , [ \x -> case x of 0 -> 2; _ -> 0
+    , \x -> case x of 1 -> 1; _ -> 0
+    , \x -> case x of 1 -> 0; _ -> 1
+    , \x -> case x of 0 -> 0; _ -> 2
+    , \_ -> 3
+    ]
+  , [ \x -> case x of 0 -> 3; _ -> 0
+    , \x -> case x of 1 -> 2; _ -> 0
+    , \x -> case x of 2 -> 1; _ -> 0
+    , \x -> case x of 0 -> 2; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> 1
+    , \x -> case x of 2 -> 0; _ -> 1
+    , \x -> case x of 0 -> 1; _ -> 2
+    , \x -> case x of 1 -> 0; _ -> 2
+    , \x -> case x of 0 -> 0; _ -> 3
+    , \_ -> 4
+    ]
+  , [ \x -> case x of 0 -> 4; _ -> 0
+    , \x -> case x of 1 -> 3; _ -> 0
+    , \x -> case x of 0 -> 1; 1 -> 1; _ -> 0
+    , \x -> case x of 2 -> 2; _ -> 0
+    , \x -> case x of 3 -> 1; _ -> 0
+    , \x -> case x of 0 -> 3; _ -> 1
+    , \x -> case x of 1 -> 2; _ -> 1
+    , \x -> case x of 0 -> 0; 2 -> 0; _ -> 1
+    , \x -> case x of 3 -> 0; _ -> 1
+    , \x -> case x of 1 -> 1; _ -> 2
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> 2
+    , \x -> case x of 2 -> 0; _ -> 2
+    , \x -> case x of 0 -> 1; _ -> 3
+    , \x -> case x of 1 -> 0; _ -> 3
+    , \x -> case x of 0 -> 0; _ -> 4
+    , \_ -> 5
+    ]
+  , [ \x -> case x of 0 -> 5; _ -> 0
+    , \x -> case x of 1 -> 4; _ -> 0
+    , \x -> case x of 0 -> 1; 1 -> 2; _ -> 0
+    , \x -> case x of 0 -> 2; 1 -> 1; _ -> 0
+    , \x -> case x of 2 -> 3; _ -> 0
+    , \x -> case x of 0 -> 1; 2 -> 1; _ -> 0
+    , \x -> case x of 3 -> 2; _ -> 0
+    , \x -> case x of 4 -> 1; _ -> 0
+    , \x -> case x of 0 -> 4; _ -> 1
+    , \x -> case x of 1 -> 3; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 2; _ -> 1
+    , \x -> case x of 0 -> 2; 1 -> 0; _ -> 1
+    , \x -> case x of 2 -> 2; _ -> 1
+    , \x -> case x of 0 -> 0; 3 -> 0; _ -> 1
+    , \x -> case x of 1 -> 0; 2 -> 0; _ -> 1
+    , \x -> case x of 4 -> 0; _ -> 1
+    , \x -> case x of 0 -> 3; _ -> 2
+    , \x -> case x of 0 -> 0; 1 -> 1; _ -> 2
+    , \x -> case x of 0 -> 1; 1 -> 0; _ -> 2
+    , \x -> case x of 2 -> 1; _ -> 2
+    , \x -> case x of 0 -> 0; 2 -> 0; _ -> 2
+    , \x -> case x of 3 -> 0; _ -> 2
+    , \x -> case x of 0 -> 2; _ -> 3
+    , \x -> case x of 1 -> 1; _ -> 3
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> 3
+    , \x -> case x of 2 -> 0; _ -> 3
+    , \x -> case x of 0 -> 1; _ -> 4
+    , \x -> case x of 1 -> 0; _ -> 4
+    , \x -> case x of 0 -> 0; _ -> 5
+    , \_ -> 6
+    ]
+  , [ \x -> case x of 0 -> 6; _ -> 0
+    , \x -> case x of 1 -> 5; _ -> 0
+    , \x -> case x of 0 -> 1; 1 -> 3; _ -> 0
+    , \x -> case x of 0 -> 2; 1 -> 2; _ -> 0
+    , \x -> case x of 0 -> 3; 1 -> 1; _ -> 0
+    , \x -> case x of 2 -> 4; _ -> 0
+    , \x -> case x of 0 -> 1; 2 -> 2; _ -> 0
+    , \x -> case x of 0 -> 2; 2 -> 1; _ -> 0
+    , \x -> case x of 3 -> 3; _ -> 0
+    , \x -> case x of 0 -> 1; 3 -> 1; _ -> 0
+    , \x -> case x of 1 -> 1; 2 -> 1; _ -> 0
+    , \x -> case x of 4 -> 2; _ -> 0
+    , \x -> case x of 5 -> 1; _ -> 0
+    , \x -> case x of 0 -> 5; _ -> 1
+    , \x -> case x of 1 -> 4; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 3; _ -> 1
+    , \x -> case x of 0 -> 3; 1 -> 0; _ -> 1
+    , \x -> case x of 2 -> 3; _ -> 1
+    , \x -> case x of 0 -> 0; 2 -> 2; _ -> 1
+    , \x -> case x of 0 -> 2; 2 -> 0; _ -> 1
+    , \x -> case x of 3 -> 2; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 0; 2 -> 0; _ -> 1
+    , \x -> case x of 0 -> 0; 4 -> 0; _ -> 1
+    , \x -> case x of 1 -> 0; 3 -> 0; _ -> 1
+    , \x -> case x of 5 -> 0; _ -> 1
+    , \x -> case x of 0 -> 4; _ -> 2
+    , \x -> case x of 1 -> 3; _ -> 2
+    , \x -> case x of 0 -> 1; 1 -> 1; _ -> 2
+    , \x -> case x of 0 -> 0; 2 -> 1; _ -> 2
+    , \x -> case x of 0 -> 1; 2 -> 0; _ -> 2
+    , \x -> case x of 3 -> 1; _ -> 2
+    , \x -> case x of 0 -> 0; 3 -> 0; _ -> 2
+    , \x -> case x of 1 -> 0; 2 -> 0; _ -> 2
+    , \x -> case x of 4 -> 0; _ -> 2
+    , \x -> case x of 1 -> 2; _ -> 3
+    , \x -> case x of 0 -> 0; 1 -> 1; _ -> 3
+    , \x -> case x of 0 -> 1; 1 -> 0; _ -> 3
+    , \x -> case x of 2 -> 1; _ -> 3
+    , \x -> case x of 0 -> 0; 2 -> 0; _ -> 3
+    , \x -> case x of 3 -> 0; _ -> 3
+    , \x -> case x of 0 -> 2; _ -> 4
+    , \x -> case x of 1 -> 1; _ -> 4
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> 4
+    , \x -> case x of 2 -> 0; _ -> 4
+    , \x -> case x of 0 -> 1; _ -> 5
+    , \x -> case x of 1 -> 0; _ -> 5
+    , \x -> case x of 0 -> 0; _ -> 6
+    , \_ -> 7
+    ]
+  , [ \x -> case x of 0 -> 7; _ -> 0
+    , \x -> case x of 1 -> 6; _ -> 0
+    , \x -> case x of 0 -> 1; 1 -> 4; _ -> 0
+    , \x -> case x of 0 -> 2; 1 -> 3; _ -> 0
+    , \x -> case x of 0 -> 3; 1 -> 2; _ -> 0
+    , \x -> case x of 0 -> 4; 1 -> 1; _ -> 0
+    , \x -> case x of 2 -> 5; _ -> 0
+    , \x -> case x of 0 -> 1; 2 -> 3; _ -> 0
+    , \x -> case x of 0 -> 2; 2 -> 2; _ -> 0
+    , \x -> case x of 0 -> 3; 2 -> 1; _ -> 0
+    , \x -> case x of 3 -> 4; _ -> 0
+    , \x -> case x of 0 -> 1; 3 -> 2; _ -> 0
+    , \x -> case x of 0 -> 2; 3 -> 1; _ -> 0
+    , \x -> case x of 1 -> 1; 2 -> 2; _ -> 0
+    , \x -> case x of 1 -> 2; 2 -> 1; _ -> 0
+    , \x -> case x of 4 -> 3; _ -> 0
+    , \x -> case x of 0 -> 1; 4 -> 1; _ -> 0
+    , \x -> case x of 1 -> 1; 3 -> 1; _ -> 0
+    , \x -> case x of 5 -> 2; _ -> 0
+    , \x -> case x of 6 -> 1; _ -> 0
+    , \x -> case x of 0 -> 6; _ -> 1
+    , \x -> case x of 1 -> 5; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 4; _ -> 1
+    , \x -> case x of 0 -> 2; 1 -> 2; _ -> 1
+    , \x -> case x of 0 -> 4; 1 -> 0; _ -> 1
+    , \x -> case x of 2 -> 4; _ -> 1
+    , \x -> case x of 0 -> 0; 2 -> 3; _ -> 1
+    , \x -> case x of 0 -> 3; 2 -> 0; _ -> 1
+    , \x -> case x of 3 -> 3; _ -> 1
+    , \x -> case x of 0 -> 0; 3 -> 2; _ -> 1
+    , \x -> case x of 0 -> 2; 3 -> 0; _ -> 1
+    , \x -> case x of 1 -> 0; 2 -> 2; _ -> 1
+    , \x -> case x of 1 -> 2; 2 -> 0; _ -> 1
+    , \x -> case x of 4 -> 2; _ -> 1
+    , \x -> case x of 0 -> 0; 1 -> 0; 3 -> 0; _ -> 1
+    , \x -> case x of 0 -> 0; 5 -> 0; _ -> 1
+    , \x -> case x of 1 -> 0; 4 -> 0; _ -> 1
+    , \x -> case x of 2 -> 0; 3 -> 0; _ -> 1
+    , \x -> case x of 6 -> 0; _ -> 1
+    , \x -> case x of 0 -> 5; _ -> 2
+    , \x -> case x of 1 -> 4; _ -> 2
+    , \x -> case x of 0 -> 0; 1 -> 3; _ -> 2
+    , \x -> case x of 0 -> 3; 1 -> 0; _ -> 2
+    , \x -> case x of 2 -> 3; _ -> 2
+    , \x -> case x of 0 -> 1; 2 -> 1; _ -> 2
+    , \x -> case x of 0 -> 0; 3 -> 1; _ -> 2
+    , \x -> case x of 0 -> 1; 3 -> 0; _ -> 2
+    , \x -> case x of 1 -> 0; 2 -> 1; _ -> 2
+    , \x -> case x of 1 -> 1; 2 -> 0; _ -> 2
+    , \x -> case x of 4 -> 1; _ -> 2
+    , \x -> case x of 0 -> 0; 1 -> 0; 2 -> 0; _ -> 2
+    , \x -> case x of 0 -> 0; 4 -> 0; _ -> 2
+    , \x -> case x of 1 -> 0; 3 -> 0; _ -> 2
+    , \x -> case x of 5 -> 0; _ -> 2
+    , \x -> case x of 0 -> 4; _ -> 3
+    , \x -> case x of 0 -> 0; 1 -> 2; _ -> 3
+    , \x -> case x of 0 -> 1; 1 -> 1; _ -> 3
+    , \x -> case x of 0 -> 2; 1 -> 0; _ -> 3
+    , \x -> case x of 2 -> 2; _ -> 3
+    , \x -> case x of 0 -> 0; 2 -> 1; _ -> 3
+    , \x -> case x of 0 -> 1; 2 -> 0; _ -> 3
+    , \x -> case x of 3 -> 1; _ -> 3
+    , \x -> case x of 0 -> 0; 3 -> 0; _ -> 3
+    , \x -> case x of 1 -> 0; 2 -> 0; _ -> 3
+    , \x -> case x of 4 -> 0; _ -> 3
+    , \x -> case x of 0 -> 3; _ -> 4
+    , \x -> case x of 1 -> 2; _ -> 4
+    , \x -> case x of 0 -> 0; 1 -> 1; _ -> 4
+    , \x -> case x of 0 -> 1; 1 -> 0; _ -> 4
+    , \x -> case x of 2 -> 1; _ -> 4
+    , \x -> case x of 0 -> 0; 2 -> 0; _ -> 4
+    , \x -> case x of 3 -> 0; _ -> 4
+    , \x -> case x of 0 -> 2; _ -> 5
+    , \x -> case x of 1 -> 1; _ -> 5
+    , \x -> case x of 0 -> 0; 1 -> 0; _ -> 5
+    , \x -> case x of 2 -> 0; _ -> 5
+    , \x -> case x of 0 -> 1; _ -> 6
+    , \x -> case x of 1 -> 0; _ -> 6
+    , \x -> case x of 0 -> 0; _ -> 7
+    , \_ -> 8
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Nat-U.out b/test/diff/tiers-4cases-Nat-U.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Nat-U.out
@@ -0,0 +1,17 @@
+map length (tiers :: [[ Nat->() ]])  =  [1,0,0,0,0,0,...]
+
+length (list :: [ Nat->() ])  =  1
+
+allUnique (list :: [ Nat->() ])  =  True
+
+ratioRepetitions (list :: [ Nat->() ])  =  0 % 1
+
+tiers :: [Nat->()]  =
+  [ [\_ -> ()]
+  , []
+  , []
+  , []
+  , []
+  , []
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-Nat2-Nat2.out b/test/diff/tiers-4cases-Nat2-Nat2.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Nat2-Nat2.out
@@ -0,0 +1,15 @@
+map length (tiers :: [[ Nat2->Nat2 ]])  =  [1,2,1]
+
+length (list :: [ Nat2->Nat2 ])  =  4
+
+allUnique (list :: [ Nat2->Nat2 ])  =  True
+
+ratioRepetitions (list :: [ Nat2->Nat2 ])  =  0 % 1
+
+tiers :: [Nat2->Nat2]  =
+  [ [\_ -> 0]
+  , [ \x -> case x of 0 -> 0; 1 -> 1
+    , \x -> case x of 0 -> 1; 1 -> 0
+    ]
+  , [\_ -> 1]
+  ]
diff --git a/test/diff/tiers-4cases-Nat2-Nat3.out b/test/diff/tiers-4cases-Nat2-Nat3.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Nat2-Nat3.out
@@ -0,0 +1,22 @@
+map length (tiers :: [[ Nat2->Nat3 ]])  =  [1,2,3,2,1]
+
+length (list :: [ Nat2->Nat3 ])  =  9
+
+allUnique (list :: [ Nat2->Nat3 ])  =  True
+
+ratioRepetitions (list :: [ Nat2->Nat3 ])  =  0 % 1
+
+tiers :: [Nat2->Nat3]  =
+  [ [\_ -> 0]
+  , [ \x -> case x of 0 -> 0; 1 -> 1
+    , \x -> case x of 0 -> 1; 1 -> 0
+    ]
+  , [ \x -> case x of 0 -> 0; 1 -> 2
+    , \_ -> 1
+    , \x -> case x of 0 -> 2; 1 -> 0
+    ]
+  , [ \x -> case x of 0 -> 1; 1 -> 2
+    , \x -> case x of 0 -> 2; 1 -> 1
+    ]
+  , [\_ -> 2]
+  ]
diff --git a/test/diff/tiers-4cases-Nat3-Nat2.out b/test/diff/tiers-4cases-Nat3-Nat2.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Nat3-Nat2.out
@@ -0,0 +1,20 @@
+map length (tiers :: [[ Nat3->Nat2 ]])  =  [1,3,3,1]
+
+length (list :: [ Nat3->Nat2 ])  =  8
+
+allUnique (list :: [ Nat3->Nat2 ])  =  True
+
+ratioRepetitions (list :: [ Nat3->Nat2 ])  =  0 % 1
+
+tiers :: [Nat3->Nat2]  =
+  [ [\_ -> 0]
+  , [ \x -> case x of 2 -> 1; _ -> 0
+    , \x -> case x of 1 -> 1; _ -> 0
+    , \x -> case x of 0 -> 1; _ -> 0
+    ]
+  , [ \x -> case x of 0 -> 0; _ -> 1
+    , \x -> case x of 1 -> 0; _ -> 1
+    , \x -> case x of 2 -> 0; _ -> 1
+    ]
+  , [\_ -> 1]
+  ]
diff --git a/test/diff/tiers-4cases-Nat3-Nat3.out b/test/diff/tiers-4cases-Nat3-Nat3.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Nat3-Nat3.out
@@ -0,0 +1,42 @@
+map length (tiers :: [[ Nat3->Nat3 ]])  =  [1,3,6,7,6,3,1]
+
+length (list :: [ Nat3->Nat3 ])  =  Infinity
+
+allUnique (list :: [ Nat3->Nat3 ])  =  True
+
+ratioRepetitions (list :: [ Nat3->Nat3 ])  =  0 % 1
+
+tiers :: [Nat3->Nat3]  =
+  [ [\_ -> 0]
+  , [ \x -> case x of 2 -> 1; _ -> 0
+    , \x -> case x of 1 -> 1; _ -> 0
+    , \x -> case x of 0 -> 1; _ -> 0
+    ]
+  , [ \x -> case x of 2 -> 2; _ -> 0
+    , \x -> case x of 0 -> 0; _ -> 1
+    , \x -> case x of 1 -> 2; _ -> 0
+    , \x -> case x of 1 -> 0; _ -> 1
+    , \x -> case x of 2 -> 0; _ -> 1
+    , \x -> case x of 0 -> 2; _ -> 0
+    ]
+  , [ \x -> case x of 0 -> 0; 1 -> 1; 2 -> 2
+    , \x -> case x of 0 -> 0; 1 -> 2; 2 -> 1
+    , \x -> case x of 0 -> 1; 1 -> 0; 2 -> 2
+    , \_ -> 1
+    , \x -> case x of 0 -> 1; 1 -> 2; 2 -> 0
+    , \x -> case x of 0 -> 2; 1 -> 0; 2 -> 1
+    , \x -> case x of 0 -> 2; 1 -> 1; 2 -> 0
+    ]
+  , [ \x -> case x of 0 -> 0; _ -> 2
+    , \x -> case x of 2 -> 2; _ -> 1
+    , \x -> case x of 1 -> 2; _ -> 1
+    , \x -> case x of 1 -> 0; _ -> 2
+    , \x -> case x of 0 -> 2; _ -> 1
+    , \x -> case x of 2 -> 0; _ -> 2
+    ]
+  , [ \x -> case x of 0 -> 1; _ -> 2
+    , \x -> case x of 1 -> 1; _ -> 2
+    , \x -> case x of 2 -> 1; _ -> 2
+    ]
+  , [\_ -> 2]
+  ]
diff --git a/test/diff/tiers-4cases-Nats-Nats.out b/test/diff/tiers-4cases-Nats-Nats.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Nats-Nats.out
@@ -0,0 +1,135 @@
+map length (tiers :: [[ [Nat]->[Nat] ]])  =  [1,1,4,10,29,75,...]
+
+length (list :: [ [Nat]->[Nat] ])  =  Infinity
+
+allUnique (list :: [ [Nat]->[Nat] ])  =  True
+
+ratioRepetitions (list :: [ [Nat]->[Nat] ])  =  0 % 1
+
+tiers :: [[Nat]->[Nat]]  =
+  [ [\_ -> []]
+  , [\_ -> [0]]
+  , [ \x -> case x of [] -> [0]; _ -> []
+    , \x -> case x of [] -> []; _ -> [0]
+    , \_ -> [0,0]
+    , \_ -> [1]
+    ]
+  , [ \x -> case x of [] -> [0,0]; _ -> []
+    , \x -> case x of [] -> [1]; _ -> []
+    , \x -> case x of [0] -> [0]; _ -> []
+    , \x -> case x of [0] -> []; _ -> [0]
+    , \x -> case x of [] -> []; _ -> [0,0]
+    , \x -> case x of [] -> []; _ -> [1]
+    , \_ -> [0,0,0]
+    , \_ -> [0,1]
+    , \_ -> [1,0]
+    , \_ -> [2]
+    ]
+  , [ \x -> case x of [] -> [0,0,0]; _ -> []
+    , \x -> case x of [] -> [0,1]; _ -> []
+    , \x -> case x of [] -> [1,0]; _ -> []
+    , \x -> case x of [] -> [2]; _ -> []
+    , \x -> case x of [0] -> [0,0]; _ -> []
+    , \x -> case x of [0] -> [1]; _ -> []
+    , \x -> case x of [0,0] -> [0]; _ -> []
+    , \x -> case x of [1] -> [0]; _ -> []
+    , \x -> case x of [] -> [0,0]; _ -> [0]
+    , \x -> case x of [] -> [1]; _ -> [0]
+    , \x -> case x of [] -> []; [0] -> []; _ -> [0]
+    , \x -> case x of [0,0] -> []; _ -> [0]
+    , \x -> case x of [1] -> []; _ -> [0]
+    , \x -> case x of [] -> [0]; _ -> [0,0]
+    , \x -> case x of [0] -> []; _ -> [0,0]
+    , \x -> case x of [] -> [0]; _ -> [1]
+    , \x -> case x of [0] -> []; _ -> [1]
+    , \x -> case x of [] -> []; _ -> [0,0,0]
+    , \x -> case x of [] -> []; _ -> [0,1]
+    , \x -> case x of [] -> []; _ -> [1,0]
+    , \x -> case x of [] -> []; _ -> [2]
+    , \_ -> [0,0,0,0]
+    , \_ -> [0,0,1]
+    , \_ -> [0,1,0]
+    , \_ -> [0,2]
+    , \_ -> [1,0,0]
+    , \_ -> [1,1]
+    , \_ -> [2,0]
+    , \_ -> [3]
+    ]
+  , [ \x -> case x of [] -> [0,0,0,0]; _ -> []
+    , \x -> case x of [] -> [0,0,1]; _ -> []
+    , \x -> case x of [] -> [0,1,0]; _ -> []
+    , \x -> case x of [] -> [0,2]; _ -> []
+    , \x -> case x of [] -> [1,0,0]; _ -> []
+    , \x -> case x of [] -> [1,1]; _ -> []
+    , \x -> case x of [] -> [2,0]; _ -> []
+    , \x -> case x of [] -> [3]; _ -> []
+    , \x -> case x of [0] -> [0,0,0]; _ -> []
+    , \x -> case x of [0] -> [0,1]; _ -> []
+    , \x -> case x of [0] -> [1,0]; _ -> []
+    , \x -> case x of [0] -> [2]; _ -> []
+    , \x -> case x of [] -> [0]; [0] -> [0]; _ -> []
+    , \x -> case x of [0,0] -> [0,0]; _ -> []
+    , \x -> case x of [0,0] -> [1]; _ -> []
+    , \x -> case x of [1] -> [0,0]; _ -> []
+    , \x -> case x of [1] -> [1]; _ -> []
+    , \x -> case x of [0,0,0] -> [0]; _ -> []
+    , \x -> case x of [0,1] -> [0]; _ -> []
+    , \x -> case x of [1,0] -> [0]; _ -> []
+    , \x -> case x of [2] -> [0]; _ -> []
+    , \x -> case x of [] -> [0,0,0]; _ -> [0]
+    , \x -> case x of [] -> [0,1]; _ -> [0]
+    , \x -> case x of [] -> [1,0]; _ -> [0]
+    , \x -> case x of [] -> [2]; _ -> [0]
+    , \x -> case x of [0] -> [0,0]; _ -> [0]
+    , \x -> case x of [0] -> [1]; _ -> [0]
+    , \x -> case x of [] -> []; [0,0] -> []; _ -> [0]
+    , \x -> case x of [] -> []; [1] -> []; _ -> [0]
+    , \x -> case x of [0,0,0] -> []; _ -> [0]
+    , \x -> case x of [0,1] -> []; _ -> [0]
+    , \x -> case x of [1,0] -> []; _ -> [0]
+    , \x -> case x of [2] -> []; _ -> [0]
+    , \x -> case x of [] -> [1]; _ -> [0,0]
+    , \x -> case x of [0] -> [0]; _ -> [0,0]
+    , \x -> case x of [] -> []; [0] -> []; _ -> [0,0]
+    , \x -> case x of [0,0] -> []; _ -> [0,0]
+    , \x -> case x of [1] -> []; _ -> [0,0]
+    , \x -> case x of [] -> [0,0]; _ -> [1]
+    , \x -> case x of [0] -> [0]; _ -> [1]
+    , \x -> case x of [] -> []; [0] -> []; _ -> [1]
+    , \x -> case x of [0,0] -> []; _ -> [1]
+    , \x -> case x of [1] -> []; _ -> [1]
+    , \x -> case x of [] -> [0]; _ -> [0,0,0]
+    , \x -> case x of [0] -> []; _ -> [0,0,0]
+    , \x -> case x of [] -> [0]; _ -> [0,1]
+    , \x -> case x of [0] -> []; _ -> [0,1]
+    , \x -> case x of [] -> [0]; _ -> [1,0]
+    , \x -> case x of [0] -> []; _ -> [1,0]
+    , \x -> case x of [] -> [0]; _ -> [2]
+    , \x -> case x of [0] -> []; _ -> [2]
+    , \x -> case x of [] -> []; _ -> [0,0,0,0]
+    , \x -> case x of [] -> []; _ -> [0,0,1]
+    , \x -> case x of [] -> []; _ -> [0,1,0]
+    , \x -> case x of [] -> []; _ -> [0,2]
+    , \x -> case x of [] -> []; _ -> [1,0,0]
+    , \x -> case x of [] -> []; _ -> [1,1]
+    , \x -> case x of [] -> []; _ -> [2,0]
+    , \x -> case x of [] -> []; _ -> [3]
+    , \_ -> [0,0,0,0,0]
+    , \_ -> [0,0,0,1]
+    , \_ -> [0,0,1,0]
+    , \_ -> [0,0,2]
+    , \_ -> [0,1,0,0]
+    , \_ -> [0,1,1]
+    , \_ -> [0,2,0]
+    , \_ -> [0,3]
+    , \_ -> [1,0,0,0]
+    , \_ -> [1,0,1]
+    , \_ -> [1,1,0]
+    , \_ -> [1,2]
+    , \_ -> [2,0,0]
+    , \_ -> [2,1]
+    , \_ -> [3,0]
+    , \_ -> [4]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-U-Bool.out b/test/diff/tiers-4cases-U-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-U-Bool.out
@@ -0,0 +1,13 @@
+map length (tiers :: [[ ()->Bool ]])  =  [2]
+
+length (list :: [ ()->Bool ])  =  2
+
+allUnique (list :: [ ()->Bool ])  =  True
+
+ratioRepetitions (list :: [ ()->Bool ])  =  0 % 1
+
+tiers :: [()->Bool]  =
+  [ [ \_ -> False
+    , \_ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-4cases-U-Nat.out b/test/diff/tiers-4cases-U-Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-U-Nat.out
@@ -0,0 +1,17 @@
+map length (tiers :: [[ ()->Nat ]])  =  [1,1,1,1,1,1,...]
+
+length (list :: [ ()->Nat ])  =  Infinity
+
+allUnique (list :: [ ()->Nat ])  =  True
+
+ratioRepetitions (list :: [ ()->Nat ])  =  0 % 1
+
+tiers :: [()->Nat]  =
+  [ [\_ -> 0]
+  , [\_ -> 1]
+  , [\_ -> 2]
+  , [\_ -> 3]
+  , [\_ -> 4]
+  , [\_ -> 5]
+  , ...
+  ]
diff --git a/test/diff/tiers-4cases-U-U.out b/test/diff/tiers-4cases-U-U.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-U-U.out
@@ -0,0 +1,10 @@
+map length (tiers :: [[ ()->() ]])  =  [1]
+
+length (list :: [ ()->() ])  =  1
+
+allUnique (list :: [ ()->() ])  =  True
+
+ratioRepetitions (list :: [ ()->() ])  =  0 % 1
+
+tiers :: [()->()]  =
+  [[\_ -> ()]]
diff --git a/test/diff/tiers-4cases-Us-Us.out b/test/diff/tiers-4cases-Us-Us.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-4cases-Us-Us.out
@@ -0,0 +1,51 @@
+map length (tiers :: [[ [()]->[()] ]])  =  [1,1,3,5,10,16,...]
+
+length (list :: [ [()]->[()] ])  =  Infinity
+
+allUnique (list :: [ [()]->[()] ])  =  True
+
+ratioRepetitions (list :: [ [()]->[()] ])  =  0 % 1
+
+tiers :: [[()]->[()]]  =
+  [ [\_ -> []]
+  , [\_ -> [()]]
+  , [ \x -> case x of [] -> [()]; _ -> []
+    , \x -> case x of [] -> []; _ -> [()]
+    , \_ -> [(),()]
+    ]
+  , [ \x -> case x of [] -> [(),()]; _ -> []
+    , \x -> case x of [()] -> [()]; _ -> []
+    , \x -> case x of [()] -> []; _ -> [()]
+    , \x -> case x of [] -> []; _ -> [(),()]
+    , \_ -> [(),(),()]
+    ]
+  , [ \x -> case x of [] -> [(),(),()]; _ -> []
+    , \x -> case x of [()] -> [(),()]; _ -> []
+    , \x -> case x of [(),()] -> [()]; _ -> []
+    , \x -> case x of [] -> [(),()]; _ -> [()]
+    , \x -> case x of [] -> []; [()] -> []; _ -> [()]
+    , \x -> case x of [(),()] -> []; _ -> [()]
+    , \x -> case x of [] -> [()]; _ -> [(),()]
+    , \x -> case x of [()] -> []; _ -> [(),()]
+    , \x -> case x of [] -> []; _ -> [(),(),()]
+    , \_ -> [(),(),(),()]
+    ]
+  , [ \x -> case x of [] -> [(),(),(),()]; _ -> []
+    , \x -> case x of [()] -> [(),(),()]; _ -> []
+    , \x -> case x of [] -> [()]; [()] -> [()]; _ -> []
+    , \x -> case x of [(),()] -> [(),()]; _ -> []
+    , \x -> case x of [(),(),()] -> [()]; _ -> []
+    , \x -> case x of [] -> [(),(),()]; _ -> [()]
+    , \x -> case x of [()] -> [(),()]; _ -> [()]
+    , \x -> case x of [] -> []; [(),()] -> []; _ -> [()]
+    , \x -> case x of [(),(),()] -> []; _ -> [()]
+    , \x -> case x of [()] -> [()]; _ -> [(),()]
+    , \x -> case x of [] -> []; [()] -> []; _ -> [(),()]
+    , \x -> case x of [(),()] -> []; _ -> [(),()]
+    , \x -> case x of [] -> [()]; _ -> [(),(),()]
+    , \x -> case x of [()] -> []; _ -> [(),(),()]
+    , \x -> case x of [] -> []; _ -> [(),(),(),()]
+    , \_ -> [(),(),(),(),()]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-BagBool.out b/test/diff/tiers-BagBool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-BagBool.out
@@ -0,0 +1,100 @@
+map length (tiers :: [[ Bag Bool ]])  =  [1,2,3,4,5,6,7,8,9,10,11,12,...]
+
+length (list :: [ Bag Bool ])  =  Infinity
+
+allUnique (list :: [ Bag Bool ])  =  True
+
+ratioRepetitions (list :: [ Bag Bool ])  =  0 % 1
+
+tiers :: [Bag Bool]  =
+  [ [Bag []]
+  , [ Bag [False]
+    , Bag [True]
+    ]
+  , [ Bag [False,False]
+    , Bag [False,True]
+    , Bag [True,True]
+    ]
+  , [ Bag [False,False,False]
+    , Bag [False,False,True]
+    , Bag [False,True,True]
+    , Bag [True,True,True]
+    ]
+  , [ Bag [False,False,False,False]
+    , Bag [False,False,False,True]
+    , Bag [False,False,True,True]
+    , Bag [False,True,True,True]
+    , Bag [True,True,True,True]
+    ]
+  , [ Bag [False,False,False,False,False]
+    , Bag [False,False,False,False,True]
+    , Bag [False,False,False,True,True]
+    , Bag [False,False,True,True,True]
+    , Bag [False,True,True,True,True]
+    , Bag [True,True,True,True,True]
+    ]
+  , [ Bag [False,False,False,False,False,False]
+    , Bag [False,False,False,False,False,True]
+    , Bag [False,False,False,False,True,True]
+    , Bag [False,False,False,True,True,True]
+    , Bag [False,False,True,True,True,True]
+    , Bag [False,True,True,True,True,True]
+    , Bag [True,True,True,True,True,True]
+    ]
+  , [ Bag [False,False,False,False,False,False,False]
+    , Bag [False,False,False,False,False,False,True]
+    , Bag [False,False,False,False,False,True,True]
+    , Bag [False,False,False,False,True,True,True]
+    , Bag [False,False,False,True,True,True,True]
+    , Bag [False,False,True,True,True,True,True]
+    , Bag [False,True,True,True,True,True,True]
+    , Bag [True,True,True,True,True,True,True]
+    ]
+  , [ Bag [False,False,False,False,False,False,False,False]
+    , Bag [False,False,False,False,False,False,False,True]
+    , Bag [False,False,False,False,False,False,True,True]
+    , Bag [False,False,False,False,False,True,True,True]
+    , Bag [False,False,False,False,True,True,True,True]
+    , Bag [False,False,False,True,True,True,True,True]
+    , Bag [False,False,True,True,True,True,True,True]
+    , Bag [False,True,True,True,True,True,True,True]
+    , Bag [True,True,True,True,True,True,True,True]
+    ]
+  , [ Bag [False,False,False,False,False,False,False,False,False]
+    , Bag [False,False,False,False,False,False,False,False,True]
+    , Bag [False,False,False,False,False,False,False,True,True]
+    , Bag [False,False,False,False,False,False,True,True,True]
+    , Bag [False,False,False,False,False,True,True,True,True]
+    , Bag [False,False,False,False,True,True,True,True,True]
+    , Bag [False,False,False,True,True,True,True,True,True]
+    , Bag [False,False,True,True,True,True,True,True,True]
+    , Bag [False,True,True,True,True,True,True,True,True]
+    , Bag [True,True,True,True,True,True,True,True,True]
+    ]
+  , [ Bag [False,False,False,False,False,False,False,False,False,False]
+    , Bag [False,False,False,False,False,False,False,False,False,True]
+    , Bag [False,False,False,False,False,False,False,False,True,True]
+    , Bag [False,False,False,False,False,False,False,True,True,True]
+    , Bag [False,False,False,False,False,False,True,True,True,True]
+    , Bag [False,False,False,False,False,True,True,True,True,True]
+    , Bag [False,False,False,False,True,True,True,True,True,True]
+    , Bag [False,False,False,True,True,True,True,True,True,True]
+    , Bag [False,False,True,True,True,True,True,True,True,True]
+    , Bag [False,True,True,True,True,True,True,True,True,True]
+    , Bag [True,True,True,True,True,True,True,True,True,True]
+    ]
+  , [ Bag [False,False,False,False,False,False,False,False,False,False,False]
+    , Bag [False,False,False,False,False,False,False,False,False,False,True]
+    , Bag [False,False,False,False,False,False,False,False,False,True,True]
+    , Bag [False,False,False,False,False,False,False,False,True,True,True]
+    , Bag [False,False,False,False,False,False,False,True,True,True,True]
+    , Bag [False,False,False,False,False,False,True,True,True,True,True]
+    , Bag [False,False,False,False,False,True,True,True,True,True,True]
+    , Bag [False,False,False,False,True,True,True,True,True,True,True]
+    , Bag [False,False,False,True,True,True,True,True,True,True,True]
+    , Bag [False,False,True,True,True,True,True,True,True,True,True]
+    , Bag [False,True,True,True,True,True,True,True,True,True,True]
+    , Bag [True,True,True,True,True,True,True,True,True,True,True]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-BagNat.out b/test/diff/tiers-BagNat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-BagNat.out
@@ -0,0 +1,216 @@
+map length (tiers :: [[ Bag Nat ]])  =  [1,1,2,3,5,7,11,15,22,30,42,56,...]
+
+length (list :: [ Bag Nat ])  =  Infinity
+
+allUnique (list :: [ Bag Nat ])  =  True
+
+ratioRepetitions (list :: [ Bag Nat ])  =  0 % 1
+
+tiers :: [Bag Nat]  =
+  [ [Bag []]
+  , [Bag [0]]
+  , [ Bag [0,0]
+    , Bag [1]
+    ]
+  , [ Bag [0,0,0]
+    , Bag [0,1]
+    , Bag [2]
+    ]
+  , [ Bag [0,0,0,0]
+    , Bag [0,0,1]
+    , Bag [0,2]
+    , Bag [1,1]
+    , Bag [3]
+    ]
+  , [ Bag [0,0,0,0,0]
+    , Bag [0,0,0,1]
+    , Bag [0,0,2]
+    , Bag [0,1,1]
+    , Bag [0,3]
+    , Bag [1,2]
+    , Bag [4]
+    ]
+  , [ Bag [0,0,0,0,0,0]
+    , Bag [0,0,0,0,1]
+    , Bag [0,0,0,2]
+    , Bag [0,0,1,1]
+    , Bag [0,0,3]
+    , Bag [0,1,2]
+    , Bag [0,4]
+    , Bag [1,1,1]
+    , Bag [1,3]
+    , Bag [2,2]
+    , Bag [5]
+    ]
+  , [ Bag [0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,1]
+    , Bag [0,0,0,0,2]
+    , Bag [0,0,0,1,1]
+    , Bag [0,0,0,3]
+    , Bag [0,0,1,2]
+    , Bag [0,0,4]
+    , Bag [0,1,1,1]
+    , Bag [0,1,3]
+    , Bag [0,2,2]
+    , Bag [0,5]
+    , Bag [1,1,2]
+    , Bag [1,4]
+    , Bag [2,3]
+    , Bag [6]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,2]
+    , Bag [0,0,0,0,1,1]
+    , Bag [0,0,0,0,3]
+    , Bag [0,0,0,1,2]
+    , Bag [0,0,0,4]
+    , Bag [0,0,1,1,1]
+    , Bag [0,0,1,3]
+    , Bag [0,0,2,2]
+    , Bag [0,0,5]
+    , Bag [0,1,1,2]
+    , Bag [0,1,4]
+    , Bag [0,2,3]
+    , Bag [0,6]
+    , Bag [1,1,1,1]
+    , Bag [1,1,3]
+    , Bag [1,2,2]
+    , Bag [1,5]
+    , Bag [2,4]
+    , Bag [3,3]
+    , Bag [7]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,0,2]
+    , Bag [0,0,0,0,0,1,1]
+    , Bag [0,0,0,0,0,3]
+    , Bag [0,0,0,0,1,2]
+    , Bag [0,0,0,0,4]
+    , Bag [0,0,0,1,1,1]
+    , Bag [0,0,0,1,3]
+    , Bag [0,0,0,2,2]
+    , Bag [0,0,0,5]
+    , Bag [0,0,1,1,2]
+    , Bag [0,0,1,4]
+    , Bag [0,0,2,3]
+    , Bag [0,0,6]
+    , Bag [0,1,1,1,1]
+    , Bag [0,1,1,3]
+    , Bag [0,1,2,2]
+    , Bag [0,1,5]
+    , Bag [0,2,4]
+    , Bag [0,3,3]
+    , Bag [0,7]
+    , Bag [1,1,1,2]
+    , Bag [1,1,4]
+    , Bag [1,2,3]
+    , Bag [1,6]
+    , Bag [2,2,2]
+    , Bag [2,5]
+    , Bag [3,4]
+    , Bag [8]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,0,0,2]
+    , Bag [0,0,0,0,0,0,1,1]
+    , Bag [0,0,0,0,0,0,3]
+    , Bag [0,0,0,0,0,1,2]
+    , Bag [0,0,0,0,0,4]
+    , Bag [0,0,0,0,1,1,1]
+    , Bag [0,0,0,0,1,3]
+    , Bag [0,0,0,0,2,2]
+    , Bag [0,0,0,0,5]
+    , Bag [0,0,0,1,1,2]
+    , Bag [0,0,0,1,4]
+    , Bag [0,0,0,2,3]
+    , Bag [0,0,0,6]
+    , Bag [0,0,1,1,1,1]
+    , Bag [0,0,1,1,3]
+    , Bag [0,0,1,2,2]
+    , Bag [0,0,1,5]
+    , Bag [0,0,2,4]
+    , Bag [0,0,3,3]
+    , Bag [0,0,7]
+    , Bag [0,1,1,1,2]
+    , Bag [0,1,1,4]
+    , Bag [0,1,2,3]
+    , Bag [0,1,6]
+    , Bag [0,2,2,2]
+    , Bag [0,2,5]
+    , Bag [0,3,4]
+    , Bag [0,8]
+    , Bag [1,1,1,1,1]
+    , Bag [1,1,1,3]
+    , Bag [1,1,2,2]
+    , Bag [1,1,5]
+    , Bag [1,2,4]
+    , Bag [1,3,3]
+    , Bag [1,7]
+    , Bag [2,2,3]
+    , Bag [2,6]
+    , Bag [3,5]
+    , Bag [4,4]
+    , Bag [9]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,0,0,0,2]
+    , Bag [0,0,0,0,0,0,0,1,1]
+    , Bag [0,0,0,0,0,0,0,3]
+    , Bag [0,0,0,0,0,0,1,2]
+    , Bag [0,0,0,0,0,0,4]
+    , Bag [0,0,0,0,0,1,1,1]
+    , Bag [0,0,0,0,0,1,3]
+    , Bag [0,0,0,0,0,2,2]
+    , Bag [0,0,0,0,0,5]
+    , Bag [0,0,0,0,1,1,2]
+    , Bag [0,0,0,0,1,4]
+    , Bag [0,0,0,0,2,3]
+    , Bag [0,0,0,0,6]
+    , Bag [0,0,0,1,1,1,1]
+    , Bag [0,0,0,1,1,3]
+    , Bag [0,0,0,1,2,2]
+    , Bag [0,0,0,1,5]
+    , Bag [0,0,0,2,4]
+    , Bag [0,0,0,3,3]
+    , Bag [0,0,0,7]
+    , Bag [0,0,1,1,1,2]
+    , Bag [0,0,1,1,4]
+    , Bag [0,0,1,2,3]
+    , Bag [0,0,1,6]
+    , Bag [0,0,2,2,2]
+    , Bag [0,0,2,5]
+    , Bag [0,0,3,4]
+    , Bag [0,0,8]
+    , Bag [0,1,1,1,1,1]
+    , Bag [0,1,1,1,3]
+    , Bag [0,1,1,2,2]
+    , Bag [0,1,1,5]
+    , Bag [0,1,2,4]
+    , Bag [0,1,3,3]
+    , Bag [0,1,7]
+    , Bag [0,2,2,3]
+    , Bag [0,2,6]
+    , Bag [0,3,5]
+    , Bag [0,4,4]
+    , Bag [0,9]
+    , Bag [1,1,1,1,2]
+    , Bag [1,1,1,4]
+    , Bag [1,1,2,3]
+    , Bag [1,1,6]
+    , Bag [1,2,2,2]
+    , Bag [1,2,5]
+    , Bag [1,3,4]
+    , Bag [1,8]
+    , Bag [2,2,4]
+    , Bag [2,3,3]
+    , Bag [2,7]
+    , Bag [3,6]
+    , Bag [4,5]
+    , Bag [10]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-BagNat2.out b/test/diff/tiers-BagNat2.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-BagNat2.out
@@ -0,0 +1,63 @@
+map length (tiers :: [[ Bag Nat2 ]])  =  [1,1,2,2,3,3,4,4,5,5,6,6,...]
+
+length (list :: [ Bag Nat2 ])  =  Infinity
+
+allUnique (list :: [ Bag Nat2 ])  =  True
+
+ratioRepetitions (list :: [ Bag Nat2 ])  =  0 % 1
+
+tiers :: [Bag Nat2]  =
+  [ [Bag []]
+  , [Bag [0]]
+  , [ Bag [0,0]
+    , Bag [1]
+    ]
+  , [ Bag [0,0,0]
+    , Bag [0,1]
+    ]
+  , [ Bag [0,0,0,0]
+    , Bag [0,0,1]
+    , Bag [1,1]
+    ]
+  , [ Bag [0,0,0,0,0]
+    , Bag [0,0,0,1]
+    , Bag [0,1,1]
+    ]
+  , [ Bag [0,0,0,0,0,0]
+    , Bag [0,0,0,0,1]
+    , Bag [0,0,1,1]
+    , Bag [1,1,1]
+    ]
+  , [ Bag [0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,1]
+    , Bag [0,0,0,1,1]
+    , Bag [0,1,1,1]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,1,1]
+    , Bag [0,0,1,1,1]
+    , Bag [1,1,1,1]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,1,1]
+    , Bag [0,0,0,1,1,1]
+    , Bag [0,1,1,1,1]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,0,1,1]
+    , Bag [0,0,0,0,1,1,1]
+    , Bag [0,0,1,1,1,1]
+    , Bag [1,1,1,1,1]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,0,0,1,1]
+    , Bag [0,0,0,0,0,1,1,1]
+    , Bag [0,0,0,1,1,1,1]
+    , Bag [0,1,1,1,1,1]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-BagNat3.out b/test/diff/tiers-BagNat3.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-BagNat3.out
@@ -0,0 +1,104 @@
+map length (tiers :: [[ Bag Nat3 ]])  =  [1,1,2,3,4,5,7,8,10,12,14,16,...]
+
+length (list :: [ Bag Nat3 ])  =  Infinity
+
+allUnique (list :: [ Bag Nat3 ])  =  True
+
+ratioRepetitions (list :: [ Bag Nat3 ])  =  0 % 1
+
+tiers :: [Bag Nat3]  =
+  [ [Bag []]
+  , [Bag [0]]
+  , [ Bag [0,0]
+    , Bag [1]
+    ]
+  , [ Bag [0,0,0]
+    , Bag [0,1]
+    , Bag [2]
+    ]
+  , [ Bag [0,0,0,0]
+    , Bag [0,0,1]
+    , Bag [0,2]
+    , Bag [1,1]
+    ]
+  , [ Bag [0,0,0,0,0]
+    , Bag [0,0,0,1]
+    , Bag [0,0,2]
+    , Bag [0,1,1]
+    , Bag [1,2]
+    ]
+  , [ Bag [0,0,0,0,0,0]
+    , Bag [0,0,0,0,1]
+    , Bag [0,0,0,2]
+    , Bag [0,0,1,1]
+    , Bag [0,1,2]
+    , Bag [1,1,1]
+    , Bag [2,2]
+    ]
+  , [ Bag [0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,1]
+    , Bag [0,0,0,0,2]
+    , Bag [0,0,0,1,1]
+    , Bag [0,0,1,2]
+    , Bag [0,1,1,1]
+    , Bag [0,2,2]
+    , Bag [1,1,2]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,2]
+    , Bag [0,0,0,0,1,1]
+    , Bag [0,0,0,1,2]
+    , Bag [0,0,1,1,1]
+    , Bag [0,0,2,2]
+    , Bag [0,1,1,2]
+    , Bag [1,1,1,1]
+    , Bag [1,2,2]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,0,2]
+    , Bag [0,0,0,0,0,1,1]
+    , Bag [0,0,0,0,1,2]
+    , Bag [0,0,0,1,1,1]
+    , Bag [0,0,0,2,2]
+    , Bag [0,0,1,1,2]
+    , Bag [0,1,1,1,1]
+    , Bag [0,1,2,2]
+    , Bag [1,1,1,2]
+    , Bag [2,2,2]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,0,0,2]
+    , Bag [0,0,0,0,0,0,1,1]
+    , Bag [0,0,0,0,0,1,2]
+    , Bag [0,0,0,0,1,1,1]
+    , Bag [0,0,0,0,2,2]
+    , Bag [0,0,0,1,1,2]
+    , Bag [0,0,1,1,1,1]
+    , Bag [0,0,1,2,2]
+    , Bag [0,1,1,1,2]
+    , Bag [0,2,2,2]
+    , Bag [1,1,1,1,1]
+    , Bag [1,1,2,2]
+    ]
+  , [ Bag [0,0,0,0,0,0,0,0,0,0,0]
+    , Bag [0,0,0,0,0,0,0,0,0,1]
+    , Bag [0,0,0,0,0,0,0,0,2]
+    , Bag [0,0,0,0,0,0,0,1,1]
+    , Bag [0,0,0,0,0,0,1,2]
+    , Bag [0,0,0,0,0,1,1,1]
+    , Bag [0,0,0,0,0,2,2]
+    , Bag [0,0,0,0,1,1,2]
+    , Bag [0,0,0,1,1,1,1]
+    , Bag [0,0,0,1,2,2]
+    , Bag [0,0,1,1,1,2]
+    , Bag [0,0,2,2,2]
+    , Bag [0,1,1,1,1,1]
+    , Bag [0,1,1,2,2]
+    , Bag [1,1,1,1,2]
+    , Bag [1,2,2,2]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-BagU.out b/test/diff/tiers-BagU.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-BagU.out
@@ -0,0 +1,23 @@
+map length (tiers :: [[ Bag () ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
+
+length (list :: [ Bag () ])  =  Infinity
+
+allUnique (list :: [ Bag () ])  =  True
+
+ratioRepetitions (list :: [ Bag () ])  =  0 % 1
+
+tiers :: [Bag ()]  =
+  [ [Bag []]
+  , [Bag [()]]
+  , [Bag [(),()]]
+  , [Bag [(),(),()]]
+  , [Bag [(),(),(),()]]
+  , [Bag [(),(),(),(),()]]
+  , [Bag [(),(),(),(),(),()]]
+  , [Bag [(),(),(),(),(),(),()]]
+  , [Bag [(),(),(),(),(),(),(),()]]
+  , [Bag [(),(),(),(),(),(),(),(),()]]
+  , [Bag [(),(),(),(),(),(),(),(),(),()]]
+  , [Bag [(),(),(),(),(),(),(),(),(),(),()]]
+  , ...
+  ]
diff --git a/test/diff/tiers-Bool.out b/test/diff/tiers-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Bool.out
@@ -0,0 +1,13 @@
+map length (tiers :: [[ Bool ]])  =  [2]
+
+length (list :: [ Bool ])  =  2
+
+allUnique (list :: [ Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool ])  =  0 % 1
+
+tiers :: [Bool]  =
+  [ [ False
+    , True
+    ]
+  ]
diff --git a/test/diff/tiers-Bools.out b/test/diff/tiers-Bools.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Bools.out
@@ -0,0 +1,79 @@
+map length (tiers :: [[ [Bool] ]])  =  [1,2,4,8,16,32,...]
+
+length (list :: [ [Bool] ])  =  Infinity
+
+allUnique (list :: [ [Bool] ])  =  True
+
+ratioRepetitions (list :: [ [Bool] ])  =  0 % 1
+
+tiers :: [[Bool]]  =
+  [ [[]]
+  , [ [False]
+    , [True]
+    ]
+  , [ [False,False]
+    , [False,True]
+    , [True,False]
+    , [True,True]
+    ]
+  , [ [False,False,False]
+    , [False,False,True]
+    , [False,True,False]
+    , [False,True,True]
+    , [True,False,False]
+    , [True,False,True]
+    , [True,True,False]
+    , [True,True,True]
+    ]
+  , [ [False,False,False,False]
+    , [False,False,False,True]
+    , [False,False,True,False]
+    , [False,False,True,True]
+    , [False,True,False,False]
+    , [False,True,False,True]
+    , [False,True,True,False]
+    , [False,True,True,True]
+    , [True,False,False,False]
+    , [True,False,False,True]
+    , [True,False,True,False]
+    , [True,False,True,True]
+    , [True,True,False,False]
+    , [True,True,False,True]
+    , [True,True,True,False]
+    , [True,True,True,True]
+    ]
+  , [ [False,False,False,False,False]
+    , [False,False,False,False,True]
+    , [False,False,False,True,False]
+    , [False,False,False,True,True]
+    , [False,False,True,False,False]
+    , [False,False,True,False,True]
+    , [False,False,True,True,False]
+    , [False,False,True,True,True]
+    , [False,True,False,False,False]
+    , [False,True,False,False,True]
+    , [False,True,False,True,False]
+    , [False,True,False,True,True]
+    , [False,True,True,False,False]
+    , [False,True,True,False,True]
+    , [False,True,True,True,False]
+    , [False,True,True,True,True]
+    , [True,False,False,False,False]
+    , [True,False,False,False,True]
+    , [True,False,False,True,False]
+    , [True,False,False,True,True]
+    , [True,False,True,False,False]
+    , [True,False,True,False,True]
+    , [True,False,True,True,False]
+    , [True,False,True,True,True]
+    , [True,True,False,False,False]
+    , [True,True,False,False,True]
+    , [True,True,False,True,False]
+    , [True,True,False,True,True]
+    , [True,True,True,False,False]
+    , [True,True,True,False,True]
+    , [True,True,True,True,False]
+    , [True,True,True,True,True]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-Char.out b/test/diff/tiers-Char.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Char.out
@@ -0,0 +1,23 @@
+map length (tiers :: [[ Char ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
+
+length (list :: [ Char ])  =  Infinity
+
+allUnique (list :: [ Char ])  =  True
+
+ratioRepetitions (list :: [ Char ])  =  0 % 1
+
+tiers :: [Char]  =
+  [ ['a']
+  , [' ']
+  , ['b']
+  , ['A']
+  , ['c']
+  , ['\n']
+  , ['d']
+  , ['0']
+  , ['e']
+  , ['B']
+  , ['f']
+  , ['!']
+  , ...
+  ]
diff --git a/test/diff/tiers-Double.out b/test/diff/tiers-Double.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Double.out
@@ -0,0 +1,52 @@
+map length (tiers :: [[ Double ]])  =  [1,1,2,3,2,2,2,4,4,2,2,6,...]
+
+length (list :: [ Double ])  =  Infinity
+
+allUnique (list :: [ Double ])  =  True
+
+ratioRepetitions (list :: [ Double ])  =  0 % 1
+
+tiers :: [Double]  =
+  [ [0.0]
+  , [1.0]
+  , [ -1.0
+    , Infinity
+    ]
+  , [ 0.5
+    , 2.0
+    , -Infinity
+    ]
+  , [ -0.5
+    , -2.0
+    ]
+  , [ 0.3333333333333333
+    , 3.0
+    ]
+  , [ -0.3333333333333333
+    , -3.0
+    ]
+  , [ 0.25
+    , 0.6666666666666666
+    , 1.5
+    , 4.0
+    ]
+  , [ -0.25
+    , -0.6666666666666666
+    , -1.5
+    , -4.0
+    ]
+  , [ 0.2
+    , 5.0
+    ]
+  , [ -0.2
+    , -5.0
+    ]
+  , [ 0.16666666666666666
+    , 0.4
+    , 0.75
+    , 1.3333333333333333
+    , 2.5
+    , 6.0
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-Float.out b/test/diff/tiers-Float.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Float.out
@@ -0,0 +1,52 @@
+map length (tiers :: [[ Float ]])  =  [1,1,2,3,2,2,2,4,4,2,2,6,...]
+
+length (list :: [ Float ])  =  Infinity
+
+allUnique (list :: [ Float ])  =  True
+
+ratioRepetitions (list :: [ Float ])  =  0 % 1
+
+tiers :: [Float]  =
+  [ [0.0]
+  , [1.0]
+  , [ -1.0
+    , Infinity
+    ]
+  , [ 0.5
+    , 2.0
+    , -Infinity
+    ]
+  , [ -0.5
+    , -2.0
+    ]
+  , [ 0.33333334
+    , 3.0
+    ]
+  , [ -0.33333334
+    , -3.0
+    ]
+  , [ 0.25
+    , 0.6666667
+    , 1.5
+    , 4.0
+    ]
+  , [ -0.25
+    , -0.6666667
+    , -1.5
+    , -4.0
+    ]
+  , [ 0.2
+    , 5.0
+    ]
+  , [ -0.2
+    , -5.0
+    ]
+  , [ 0.16666667
+    , 0.4
+    , 0.75
+    , 1.3333334
+    , 2.5
+    , 6.0
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-Int,Int,Int.out b/test/diff/tiers-Int,Int,Int.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Int,Int,Int.out
@@ -0,0 +1,72 @@
+map length (tiers :: [[ (Int,Int,Int) ]])  =  [1,3,6,10,15,21,...]
+
+length (list :: [ (Int,Int,Int) ])  =  Infinity
+
+allUnique (list :: [ (Int,Int,Int) ])  =  True
+
+ratioRepetitions (list :: [ (Int,Int,Int) ])  =  0 % 1
+
+tiers :: [(Int,Int,Int)]  =
+  [ [(0,0,0)]
+  , [ (0,0,1)
+    , (0,1,0)
+    , (1,0,0)
+    ]
+  , [ (0,0,-1)
+    , (0,1,1)
+    , (0,-1,0)
+    , (1,0,1)
+    , (1,1,0)
+    , (-1,0,0)
+    ]
+  , [ (0,0,2)
+    , (0,1,-1)
+    , (0,-1,1)
+    , (0,2,0)
+    , (1,0,-1)
+    , (1,1,1)
+    , (1,-1,0)
+    , (-1,0,1)
+    , (-1,1,0)
+    , (2,0,0)
+    ]
+  , [ (0,0,-2)
+    , (0,1,2)
+    , (0,-1,-1)
+    , (0,2,1)
+    , (0,-2,0)
+    , (1,0,2)
+    , (1,1,-1)
+    , (1,-1,1)
+    , (1,2,0)
+    , (-1,0,-1)
+    , (-1,1,1)
+    , (-1,-1,0)
+    , (2,0,1)
+    , (2,1,0)
+    , (-2,0,0)
+    ]
+  , [ (0,0,3)
+    , (0,1,-2)
+    , (0,-1,2)
+    , (0,2,-1)
+    , (0,-2,1)
+    , (0,3,0)
+    , (1,0,-2)
+    , (1,1,2)
+    , (1,-1,-1)
+    , (1,2,1)
+    , (1,-2,0)
+    , (-1,0,2)
+    , (-1,1,-1)
+    , (-1,-1,1)
+    , (-1,2,0)
+    , (2,0,-1)
+    , (2,1,1)
+    , (2,-1,0)
+    , (-2,0,1)
+    , (-2,1,0)
+    , (3,0,0)
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-Int,Int.out b/test/diff/tiers-Int,Int.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Int,Int.out
@@ -0,0 +1,100 @@
+map length (tiers :: [[ (Int,Int) ]])  =  [1,2,3,4,5,6,7,8,9,10,11,12,...]
+
+length (list :: [ (Int,Int) ])  =  Infinity
+
+allUnique (list :: [ (Int,Int) ])  =  True
+
+ratioRepetitions (list :: [ (Int,Int) ])  =  0 % 1
+
+tiers :: [(Int,Int)]  =
+  [ [(0,0)]
+  , [ (0,1)
+    , (1,0)
+    ]
+  , [ (0,-1)
+    , (1,1)
+    , (-1,0)
+    ]
+  , [ (0,2)
+    , (1,-1)
+    , (-1,1)
+    , (2,0)
+    ]
+  , [ (0,-2)
+    , (1,2)
+    , (-1,-1)
+    , (2,1)
+    , (-2,0)
+    ]
+  , [ (0,3)
+    , (1,-2)
+    , (-1,2)
+    , (2,-1)
+    , (-2,1)
+    , (3,0)
+    ]
+  , [ (0,-3)
+    , (1,3)
+    , (-1,-2)
+    , (2,2)
+    , (-2,-1)
+    , (3,1)
+    , (-3,0)
+    ]
+  , [ (0,4)
+    , (1,-3)
+    , (-1,3)
+    , (2,-2)
+    , (-2,2)
+    , (3,-1)
+    , (-3,1)
+    , (4,0)
+    ]
+  , [ (0,-4)
+    , (1,4)
+    , (-1,-3)
+    , (2,3)
+    , (-2,-2)
+    , (3,2)
+    , (-3,-1)
+    , (4,1)
+    , (-4,0)
+    ]
+  , [ (0,5)
+    , (1,-4)
+    , (-1,4)
+    , (2,-3)
+    , (-2,3)
+    , (3,-2)
+    , (-3,2)
+    , (4,-1)
+    , (-4,1)
+    , (5,0)
+    ]
+  , [ (0,-5)
+    , (1,5)
+    , (-1,-4)
+    , (2,4)
+    , (-2,-3)
+    , (3,3)
+    , (-3,-2)
+    , (4,2)
+    , (-4,-1)
+    , (5,1)
+    , (-5,0)
+    ]
+  , [ (0,6)
+    , (1,-5)
+    , (-1,5)
+    , (2,-4)
+    , (-2,4)
+    , (3,-3)
+    , (-3,3)
+    , (4,-2)
+    , (-4,2)
+    , (5,-1)
+    , (-5,1)
+    , (6,0)
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-Int.out b/test/diff/tiers-Int.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Int.out
@@ -0,0 +1,23 @@
+map length (tiers :: [[ Int ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
+
+length (list :: [ Int ])  =  Infinity
+
+allUnique (list :: [ Int ])  =  True
+
+ratioRepetitions (list :: [ Int ])  =  0 % 1
+
+tiers :: [Int]  =
+  [ [0]
+  , [1]
+  , [-1]
+  , [2]
+  , [-2]
+  , [3]
+  , [-3]
+  , [4]
+  , [-4]
+  , [5]
+  , [-5]
+  , [6]
+  , ...
+  ]
diff --git a/test/diff/tiers-Integer.out b/test/diff/tiers-Integer.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Integer.out
@@ -0,0 +1,23 @@
+map length (tiers :: [[ Integer ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
+
+length (list :: [ Integer ])  =  Infinity
+
+allUnique (list :: [ Integer ])  =  True
+
+ratioRepetitions (list :: [ Integer ])  =  0 % 1
+
+tiers :: [Integer]  =
+  [ [0]
+  , [1]
+  , [-1]
+  , [2]
+  , [-2]
+  , [3]
+  , [-3]
+  , [4]
+  , [-4]
+  , [5]
+  , [-5]
+  , [6]
+  , ...
+  ]
diff --git a/test/diff/tiers-Ints.out b/test/diff/tiers-Ints.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Ints.out
@@ -0,0 +1,47 @@
+map length (tiers :: [[ [Int] ]])  =  [1,1,2,4,8,16,...]
+
+length (list :: [ [Int] ])  =  Infinity
+
+allUnique (list :: [ [Int] ])  =  True
+
+ratioRepetitions (list :: [ [Int] ])  =  0 % 1
+
+tiers :: [[Int]]  =
+  [ [[]]
+  , [[0]]
+  , [ [0,0]
+    , [1]
+    ]
+  , [ [0,0,0]
+    , [0,1]
+    , [1,0]
+    , [-1]
+    ]
+  , [ [0,0,0,0]
+    , [0,0,1]
+    , [0,1,0]
+    , [0,-1]
+    , [1,0,0]
+    , [1,1]
+    , [-1,0]
+    , [2]
+    ]
+  , [ [0,0,0,0,0]
+    , [0,0,0,1]
+    , [0,0,1,0]
+    , [0,0,-1]
+    , [0,1,0,0]
+    , [0,1,1]
+    , [0,-1,0]
+    , [0,2]
+    , [1,0,0,0]
+    , [1,0,1]
+    , [1,1,0]
+    , [1,-1]
+    , [-1,0,0]
+    , [-1,1]
+    , [2,0]
+    , [-2]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-MapBoolBool.out b/test/diff/tiers-MapBoolBool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-MapBoolBool.out
@@ -0,0 +1,21 @@
+map length (tiers :: [[ Map Bool Bool ]])  =  [1,4,4]
+
+length (list :: [ Map Bool Bool ])  =  9
+
+allUnique (list :: [ Map Bool Bool ])  =  True
+
+ratioRepetitions (list :: [ Map Bool Bool ])  =  0 % 1
+
+tiers :: [Map Bool Bool]  =
+  [ [Map []]
+  , [ Map [(False,False)]
+    , Map [(False,True)]
+    , Map [(True,False)]
+    , Map [(True,True)]
+    ]
+  , [ Map [(False,False),(True,False)]
+    , Map [(False,False),(True,True)]
+    , Map [(False,True),(True,False)]
+    , Map [(False,True),(True,True)]
+    ]
+  ]
diff --git a/test/diff/tiers-MapNat2Nat2.out b/test/diff/tiers-MapNat2Nat2.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-MapNat2Nat2.out
@@ -0,0 +1,22 @@
+map length (tiers :: [[ Map Nat2 Nat2 ]])  =  [1,1,2,2,2,1]
+
+length (list :: [ Map Nat2 Nat2 ])  =  9
+
+allUnique (list :: [ Map Nat2 Nat2 ])  =  True
+
+ratioRepetitions (list :: [ Map Nat2 Nat2 ])  =  0 % 1
+
+tiers :: [Map Nat2 Nat2]  =
+  [ [Map []]
+  , [Map [(0,0)]]
+  , [ Map [(0,1)]
+    , Map [(1,0)]
+    ]
+  , [ Map [(1,1)]
+    , Map [(0,0),(1,0)]
+    ]
+  , [ Map [(0,0),(1,1)]
+    , Map [(0,1),(1,0)]
+    ]
+  , [Map [(0,1),(1,1)]]
+  ]
diff --git a/test/diff/tiers-MapNat3Nat3.out b/test/diff/tiers-MapNat3Nat3.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-MapNat3Nat3.out
@@ -0,0 +1,84 @@
+map length (tiers :: [[ Map Nat3 Nat3 ]])  =  [1,1,2,4,5,7,8,9,9,8,6,3,...]
+
+length (list :: [ Map Nat3 Nat3 ])  =  Infinity
+
+allUnique (list :: [ Map Nat3 Nat3 ])  =  True
+
+ratioRepetitions (list :: [ Map Nat3 Nat3 ])  =  0 % 1
+
+tiers :: [Map Nat3 Nat3]  =
+  [ [Map []]
+  , [Map [(0,0)]]
+  , [ Map [(0,1)]
+    , Map [(1,0)]
+    ]
+  , [ Map [(0,2)]
+    , Map [(1,1)]
+    , Map [(0,0),(1,0)]
+    , Map [(2,0)]
+    ]
+  , [ Map [(1,2)]
+    , Map [(0,0),(1,1)]
+    , Map [(0,1),(1,0)]
+    , Map [(2,1)]
+    , Map [(0,0),(2,0)]
+    ]
+  , [ Map [(0,0),(1,2)]
+    , Map [(0,1),(1,1)]
+    , Map [(0,2),(1,0)]
+    , Map [(2,2)]
+    , Map [(0,0),(2,1)]
+    , Map [(0,1),(2,0)]
+    , Map [(1,0),(2,0)]
+    ]
+  , [ Map [(0,1),(1,2)]
+    , Map [(0,2),(1,1)]
+    , Map [(0,0),(2,2)]
+    , Map [(0,1),(2,1)]
+    , Map [(0,2),(2,0)]
+    , Map [(1,0),(2,1)]
+    , Map [(1,1),(2,0)]
+    , Map [(0,0),(1,0),(2,0)]
+    ]
+  , [ Map [(0,2),(1,2)]
+    , Map [(0,1),(2,2)]
+    , Map [(0,2),(2,1)]
+    , Map [(1,0),(2,2)]
+    , Map [(1,1),(2,1)]
+    , Map [(1,2),(2,0)]
+    , Map [(0,0),(1,0),(2,1)]
+    , Map [(0,0),(1,1),(2,0)]
+    , Map [(0,1),(1,0),(2,0)]
+    ]
+  , [ Map [(0,2),(2,2)]
+    , Map [(1,1),(2,2)]
+    , Map [(1,2),(2,1)]
+    , Map [(0,0),(1,0),(2,2)]
+    , Map [(0,0),(1,1),(2,1)]
+    , Map [(0,0),(1,2),(2,0)]
+    , Map [(0,1),(1,0),(2,1)]
+    , Map [(0,1),(1,1),(2,0)]
+    , Map [(0,2),(1,0),(2,0)]
+    ]
+  , [ Map [(1,2),(2,2)]
+    , Map [(0,0),(1,1),(2,2)]
+    , Map [(0,0),(1,2),(2,1)]
+    , Map [(0,1),(1,0),(2,2)]
+    , Map [(0,1),(1,1),(2,1)]
+    , Map [(0,1),(1,2),(2,0)]
+    , Map [(0,2),(1,0),(2,1)]
+    , Map [(0,2),(1,1),(2,0)]
+    ]
+  , [ Map [(0,0),(1,2),(2,2)]
+    , Map [(0,1),(1,1),(2,2)]
+    , Map [(0,1),(1,2),(2,1)]
+    , Map [(0,2),(1,0),(2,2)]
+    , Map [(0,2),(1,1),(2,1)]
+    , Map [(0,2),(1,2),(2,0)]
+    ]
+  , [ Map [(0,1),(1,2),(2,2)]
+    , Map [(0,2),(1,1),(2,2)]
+    , Map [(0,2),(1,2),(2,1)]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-MapNatNat.out b/test/diff/tiers-MapNatNat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-MapNatNat.out
@@ -0,0 +1,571 @@
+map length (tiers :: [[ Map Nat Nat ]])  =  [1,1,2,4,7,12,20,33,53,84,131,202,...]
+
+length (list :: [ Map Nat Nat ])  =  Infinity
+
+allUnique (list :: [ Map Nat Nat ])  =  True
+
+ratioRepetitions (list :: [ Map Nat Nat ])  =  0 % 1
+
+tiers :: [Map Nat Nat]  =
+  [ [Map []]
+  , [Map [(0,0)]]
+  , [ Map [(0,1)]
+    , Map [(1,0)]
+    ]
+  , [ Map [(0,2)]
+    , Map [(1,1)]
+    , Map [(0,0),(1,0)]
+    , Map [(2,0)]
+    ]
+  , [ Map [(0,3)]
+    , Map [(1,2)]
+    , Map [(0,0),(1,1)]
+    , Map [(0,1),(1,0)]
+    , Map [(2,1)]
+    , Map [(0,0),(2,0)]
+    , Map [(3,0)]
+    ]
+  , [ Map [(0,4)]
+    , Map [(1,3)]
+    , Map [(0,0),(1,2)]
+    , Map [(0,1),(1,1)]
+    , Map [(0,2),(1,0)]
+    , Map [(2,2)]
+    , Map [(0,0),(2,1)]
+    , Map [(0,1),(2,0)]
+    , Map [(3,1)]
+    , Map [(0,0),(3,0)]
+    , Map [(1,0),(2,0)]
+    , Map [(4,0)]
+    ]
+  , [ Map [(0,5)]
+    , Map [(1,4)]
+    , Map [(0,0),(1,3)]
+    , Map [(0,1),(1,2)]
+    , Map [(0,2),(1,1)]
+    , Map [(0,3),(1,0)]
+    , Map [(2,3)]
+    , Map [(0,0),(2,2)]
+    , Map [(0,1),(2,1)]
+    , Map [(0,2),(2,0)]
+    , Map [(3,2)]
+    , Map [(0,0),(3,1)]
+    , Map [(0,1),(3,0)]
+    , Map [(1,0),(2,1)]
+    , Map [(1,1),(2,0)]
+    , Map [(4,1)]
+    , Map [(0,0),(1,0),(2,0)]
+    , Map [(0,0),(4,0)]
+    , Map [(1,0),(3,0)]
+    , Map [(5,0)]
+    ]
+  , [ Map [(0,6)]
+    , Map [(1,5)]
+    , Map [(0,0),(1,4)]
+    , Map [(0,1),(1,3)]
+    , Map [(0,2),(1,2)]
+    , Map [(0,3),(1,1)]
+    , Map [(0,4),(1,0)]
+    , Map [(2,4)]
+    , Map [(0,0),(2,3)]
+    , Map [(0,1),(2,2)]
+    , Map [(0,2),(2,1)]
+    , Map [(0,3),(2,0)]
+    , Map [(3,3)]
+    , Map [(0,0),(3,2)]
+    , Map [(0,1),(3,1)]
+    , Map [(0,2),(3,0)]
+    , Map [(1,0),(2,2)]
+    , Map [(1,1),(2,1)]
+    , Map [(1,2),(2,0)]
+    , Map [(4,2)]
+    , Map [(0,0),(1,0),(2,1)]
+    , Map [(0,0),(1,1),(2,0)]
+    , Map [(0,1),(1,0),(2,0)]
+    , Map [(0,0),(4,1)]
+    , Map [(0,1),(4,0)]
+    , Map [(1,0),(3,1)]
+    , Map [(1,1),(3,0)]
+    , Map [(5,1)]
+    , Map [(0,0),(1,0),(3,0)]
+    , Map [(0,0),(5,0)]
+    , Map [(1,0),(4,0)]
+    , Map [(2,0),(3,0)]
+    , Map [(6,0)]
+    ]
+  , [ Map [(0,7)]
+    , Map [(1,6)]
+    , Map [(0,0),(1,5)]
+    , Map [(0,1),(1,4)]
+    , Map [(0,2),(1,3)]
+    , Map [(0,3),(1,2)]
+    , Map [(0,4),(1,1)]
+    , Map [(0,5),(1,0)]
+    , Map [(2,5)]
+    , Map [(0,0),(2,4)]
+    , Map [(0,1),(2,3)]
+    , Map [(0,2),(2,2)]
+    , Map [(0,3),(2,1)]
+    , Map [(0,4),(2,0)]
+    , Map [(3,4)]
+    , Map [(0,0),(3,3)]
+    , Map [(0,1),(3,2)]
+    , Map [(0,2),(3,1)]
+    , Map [(0,3),(3,0)]
+    , Map [(1,0),(2,3)]
+    , Map [(1,1),(2,2)]
+    , Map [(1,2),(2,1)]
+    , Map [(1,3),(2,0)]
+    , Map [(4,3)]
+    , Map [(0,0),(1,0),(2,2)]
+    , Map [(0,0),(1,1),(2,1)]
+    , Map [(0,0),(1,2),(2,0)]
+    , Map [(0,1),(1,0),(2,1)]
+    , Map [(0,1),(1,1),(2,0)]
+    , Map [(0,2),(1,0),(2,0)]
+    , Map [(0,0),(4,2)]
+    , Map [(0,1),(4,1)]
+    , Map [(0,2),(4,0)]
+    , Map [(1,0),(3,2)]
+    , Map [(1,1),(3,1)]
+    , Map [(1,2),(3,0)]
+    , Map [(5,2)]
+    , Map [(0,0),(1,0),(3,1)]
+    , Map [(0,0),(1,1),(3,0)]
+    , Map [(0,1),(1,0),(3,0)]
+    , Map [(0,0),(5,1)]
+    , Map [(0,1),(5,0)]
+    , Map [(1,0),(4,1)]
+    , Map [(1,1),(4,0)]
+    , Map [(2,0),(3,1)]
+    , Map [(2,1),(3,0)]
+    , Map [(6,1)]
+    , Map [(0,0),(1,0),(4,0)]
+    , Map [(0,0),(2,0),(3,0)]
+    , Map [(0,0),(6,0)]
+    , Map [(1,0),(5,0)]
+    , Map [(2,0),(4,0)]
+    , Map [(7,0)]
+    ]
+  , [ Map [(0,8)]
+    , Map [(1,7)]
+    , Map [(0,0),(1,6)]
+    , Map [(0,1),(1,5)]
+    , Map [(0,2),(1,4)]
+    , Map [(0,3),(1,3)]
+    , Map [(0,4),(1,2)]
+    , Map [(0,5),(1,1)]
+    , Map [(0,6),(1,0)]
+    , Map [(2,6)]
+    , Map [(0,0),(2,5)]
+    , Map [(0,1),(2,4)]
+    , Map [(0,2),(2,3)]
+    , Map [(0,3),(2,2)]
+    , Map [(0,4),(2,1)]
+    , Map [(0,5),(2,0)]
+    , Map [(3,5)]
+    , Map [(0,0),(3,4)]
+    , Map [(0,1),(3,3)]
+    , Map [(0,2),(3,2)]
+    , Map [(0,3),(3,1)]
+    , Map [(0,4),(3,0)]
+    , Map [(1,0),(2,4)]
+    , Map [(1,1),(2,3)]
+    , Map [(1,2),(2,2)]
+    , Map [(1,3),(2,1)]
+    , Map [(1,4),(2,0)]
+    , Map [(4,4)]
+    , Map [(0,0),(1,0),(2,3)]
+    , Map [(0,0),(1,1),(2,2)]
+    , Map [(0,0),(1,2),(2,1)]
+    , Map [(0,0),(1,3),(2,0)]
+    , Map [(0,1),(1,0),(2,2)]
+    , Map [(0,1),(1,1),(2,1)]
+    , Map [(0,1),(1,2),(2,0)]
+    , Map [(0,2),(1,0),(2,1)]
+    , Map [(0,2),(1,1),(2,0)]
+    , Map [(0,3),(1,0),(2,0)]
+    , Map [(0,0),(4,3)]
+    , Map [(0,1),(4,2)]
+    , Map [(0,2),(4,1)]
+    , Map [(0,3),(4,0)]
+    , Map [(1,0),(3,3)]
+    , Map [(1,1),(3,2)]
+    , Map [(1,2),(3,1)]
+    , Map [(1,3),(3,0)]
+    , Map [(5,3)]
+    , Map [(0,0),(1,0),(3,2)]
+    , Map [(0,0),(1,1),(3,1)]
+    , Map [(0,0),(1,2),(3,0)]
+    , Map [(0,1),(1,0),(3,1)]
+    , Map [(0,1),(1,1),(3,0)]
+    , Map [(0,2),(1,0),(3,0)]
+    , Map [(0,0),(5,2)]
+    , Map [(0,1),(5,1)]
+    , Map [(0,2),(5,0)]
+    , Map [(1,0),(4,2)]
+    , Map [(1,1),(4,1)]
+    , Map [(1,2),(4,0)]
+    , Map [(2,0),(3,2)]
+    , Map [(2,1),(3,1)]
+    , Map [(2,2),(3,0)]
+    , Map [(6,2)]
+    , Map [(0,0),(1,0),(4,1)]
+    , Map [(0,0),(1,1),(4,0)]
+    , Map [(0,1),(1,0),(4,0)]
+    , Map [(0,0),(2,0),(3,1)]
+    , Map [(0,0),(2,1),(3,0)]
+    , Map [(0,1),(2,0),(3,0)]
+    , Map [(0,0),(6,1)]
+    , Map [(0,1),(6,0)]
+    , Map [(1,0),(5,1)]
+    , Map [(1,1),(5,0)]
+    , Map [(2,0),(4,1)]
+    , Map [(2,1),(4,0)]
+    , Map [(7,1)]
+    , Map [(0,0),(1,0),(5,0)]
+    , Map [(0,0),(2,0),(4,0)]
+    , Map [(0,0),(7,0)]
+    , Map [(1,0),(2,0),(3,0)]
+    , Map [(1,0),(6,0)]
+    , Map [(2,0),(5,0)]
+    , Map [(3,0),(4,0)]
+    , Map [(8,0)]
+    ]
+  , [ Map [(0,9)]
+    , Map [(1,8)]
+    , Map [(0,0),(1,7)]
+    , Map [(0,1),(1,6)]
+    , Map [(0,2),(1,5)]
+    , Map [(0,3),(1,4)]
+    , Map [(0,4),(1,3)]
+    , Map [(0,5),(1,2)]
+    , Map [(0,6),(1,1)]
+    , Map [(0,7),(1,0)]
+    , Map [(2,7)]
+    , Map [(0,0),(2,6)]
+    , Map [(0,1),(2,5)]
+    , Map [(0,2),(2,4)]
+    , Map [(0,3),(2,3)]
+    , Map [(0,4),(2,2)]
+    , Map [(0,5),(2,1)]
+    , Map [(0,6),(2,0)]
+    , Map [(3,6)]
+    , Map [(0,0),(3,5)]
+    , Map [(0,1),(3,4)]
+    , Map [(0,2),(3,3)]
+    , Map [(0,3),(3,2)]
+    , Map [(0,4),(3,1)]
+    , Map [(0,5),(3,0)]
+    , Map [(1,0),(2,5)]
+    , Map [(1,1),(2,4)]
+    , Map [(1,2),(2,3)]
+    , Map [(1,3),(2,2)]
+    , Map [(1,4),(2,1)]
+    , Map [(1,5),(2,0)]
+    , Map [(4,5)]
+    , Map [(0,0),(1,0),(2,4)]
+    , Map [(0,0),(1,1),(2,3)]
+    , Map [(0,0),(1,2),(2,2)]
+    , Map [(0,0),(1,3),(2,1)]
+    , Map [(0,0),(1,4),(2,0)]
+    , Map [(0,1),(1,0),(2,3)]
+    , Map [(0,1),(1,1),(2,2)]
+    , Map [(0,1),(1,2),(2,1)]
+    , Map [(0,1),(1,3),(2,0)]
+    , Map [(0,2),(1,0),(2,2)]
+    , Map [(0,2),(1,1),(2,1)]
+    , Map [(0,2),(1,2),(2,0)]
+    , Map [(0,3),(1,0),(2,1)]
+    , Map [(0,3),(1,1),(2,0)]
+    , Map [(0,4),(1,0),(2,0)]
+    , Map [(0,0),(4,4)]
+    , Map [(0,1),(4,3)]
+    , Map [(0,2),(4,2)]
+    , Map [(0,3),(4,1)]
+    , Map [(0,4),(4,0)]
+    , Map [(1,0),(3,4)]
+    , Map [(1,1),(3,3)]
+    , Map [(1,2),(3,2)]
+    , Map [(1,3),(3,1)]
+    , Map [(1,4),(3,0)]
+    , Map [(5,4)]
+    , Map [(0,0),(1,0),(3,3)]
+    , Map [(0,0),(1,1),(3,2)]
+    , Map [(0,0),(1,2),(3,1)]
+    , Map [(0,0),(1,3),(3,0)]
+    , Map [(0,1),(1,0),(3,2)]
+    , Map [(0,1),(1,1),(3,1)]
+    , Map [(0,1),(1,2),(3,0)]
+    , Map [(0,2),(1,0),(3,1)]
+    , Map [(0,2),(1,1),(3,0)]
+    , Map [(0,3),(1,0),(3,0)]
+    , Map [(0,0),(5,3)]
+    , Map [(0,1),(5,2)]
+    , Map [(0,2),(5,1)]
+    , Map [(0,3),(5,0)]
+    , Map [(1,0),(4,3)]
+    , Map [(1,1),(4,2)]
+    , Map [(1,2),(4,1)]
+    , Map [(1,3),(4,0)]
+    , Map [(2,0),(3,3)]
+    , Map [(2,1),(3,2)]
+    , Map [(2,2),(3,1)]
+    , Map [(2,3),(3,0)]
+    , Map [(6,3)]
+    , Map [(0,0),(1,0),(4,2)]
+    , Map [(0,0),(1,1),(4,1)]
+    , Map [(0,0),(1,2),(4,0)]
+    , Map [(0,1),(1,0),(4,1)]
+    , Map [(0,1),(1,1),(4,0)]
+    , Map [(0,2),(1,0),(4,0)]
+    , Map [(0,0),(2,0),(3,2)]
+    , Map [(0,0),(2,1),(3,1)]
+    , Map [(0,0),(2,2),(3,0)]
+    , Map [(0,1),(2,0),(3,1)]
+    , Map [(0,1),(2,1),(3,0)]
+    , Map [(0,2),(2,0),(3,0)]
+    , Map [(0,0),(6,2)]
+    , Map [(0,1),(6,1)]
+    , Map [(0,2),(6,0)]
+    , Map [(1,0),(5,2)]
+    , Map [(1,1),(5,1)]
+    , Map [(1,2),(5,0)]
+    , Map [(2,0),(4,2)]
+    , Map [(2,1),(4,1)]
+    , Map [(2,2),(4,0)]
+    , Map [(7,2)]
+    , Map [(0,0),(1,0),(5,1)]
+    , Map [(0,0),(1,1),(5,0)]
+    , Map [(0,1),(1,0),(5,0)]
+    , Map [(0,0),(2,0),(4,1)]
+    , Map [(0,0),(2,1),(4,0)]
+    , Map [(0,1),(2,0),(4,0)]
+    , Map [(0,0),(7,1)]
+    , Map [(0,1),(7,0)]
+    , Map [(1,0),(2,0),(3,1)]
+    , Map [(1,0),(2,1),(3,0)]
+    , Map [(1,1),(2,0),(3,0)]
+    , Map [(1,0),(6,1)]
+    , Map [(1,1),(6,0)]
+    , Map [(2,0),(5,1)]
+    , Map [(2,1),(5,0)]
+    , Map [(3,0),(4,1)]
+    , Map [(3,1),(4,0)]
+    , Map [(8,1)]
+    , Map [(0,0),(1,0),(2,0),(3,0)]
+    , Map [(0,0),(1,0),(6,0)]
+    , Map [(0,0),(2,0),(5,0)]
+    , Map [(0,0),(3,0),(4,0)]
+    , Map [(0,0),(8,0)]
+    , Map [(1,0),(2,0),(4,0)]
+    , Map [(1,0),(7,0)]
+    , Map [(2,0),(6,0)]
+    , Map [(3,0),(5,0)]
+    , Map [(9,0)]
+    ]
+  , [ Map [(0,10)]
+    , Map [(1,9)]
+    , Map [(0,0),(1,8)]
+    , Map [(0,1),(1,7)]
+    , Map [(0,2),(1,6)]
+    , Map [(0,3),(1,5)]
+    , Map [(0,4),(1,4)]
+    , Map [(0,5),(1,3)]
+    , Map [(0,6),(1,2)]
+    , Map [(0,7),(1,1)]
+    , Map [(0,8),(1,0)]
+    , Map [(2,8)]
+    , Map [(0,0),(2,7)]
+    , Map [(0,1),(2,6)]
+    , Map [(0,2),(2,5)]
+    , Map [(0,3),(2,4)]
+    , Map [(0,4),(2,3)]
+    , Map [(0,5),(2,2)]
+    , Map [(0,6),(2,1)]
+    , Map [(0,7),(2,0)]
+    , Map [(3,7)]
+    , Map [(0,0),(3,6)]
+    , Map [(0,1),(3,5)]
+    , Map [(0,2),(3,4)]
+    , Map [(0,3),(3,3)]
+    , Map [(0,4),(3,2)]
+    , Map [(0,5),(3,1)]
+    , Map [(0,6),(3,0)]
+    , Map [(1,0),(2,6)]
+    , Map [(1,1),(2,5)]
+    , Map [(1,2),(2,4)]
+    , Map [(1,3),(2,3)]
+    , Map [(1,4),(2,2)]
+    , Map [(1,5),(2,1)]
+    , Map [(1,6),(2,0)]
+    , Map [(4,6)]
+    , Map [(0,0),(1,0),(2,5)]
+    , Map [(0,0),(1,1),(2,4)]
+    , Map [(0,0),(1,2),(2,3)]
+    , Map [(0,0),(1,3),(2,2)]
+    , Map [(0,0),(1,4),(2,1)]
+    , Map [(0,0),(1,5),(2,0)]
+    , Map [(0,1),(1,0),(2,4)]
+    , Map [(0,1),(1,1),(2,3)]
+    , Map [(0,1),(1,2),(2,2)]
+    , Map [(0,1),(1,3),(2,1)]
+    , Map [(0,1),(1,4),(2,0)]
+    , Map [(0,2),(1,0),(2,3)]
+    , Map [(0,2),(1,1),(2,2)]
+    , Map [(0,2),(1,2),(2,1)]
+    , Map [(0,2),(1,3),(2,0)]
+    , Map [(0,3),(1,0),(2,2)]
+    , Map [(0,3),(1,1),(2,1)]
+    , Map [(0,3),(1,2),(2,0)]
+    , Map [(0,4),(1,0),(2,1)]
+    , Map [(0,4),(1,1),(2,0)]
+    , Map [(0,5),(1,0),(2,0)]
+    , Map [(0,0),(4,5)]
+    , Map [(0,1),(4,4)]
+    , Map [(0,2),(4,3)]
+    , Map [(0,3),(4,2)]
+    , Map [(0,4),(4,1)]
+    , Map [(0,5),(4,0)]
+    , Map [(1,0),(3,5)]
+    , Map [(1,1),(3,4)]
+    , Map [(1,2),(3,3)]
+    , Map [(1,3),(3,2)]
+    , Map [(1,4),(3,1)]
+    , Map [(1,5),(3,0)]
+    , Map [(5,5)]
+    , Map [(0,0),(1,0),(3,4)]
+    , Map [(0,0),(1,1),(3,3)]
+    , Map [(0,0),(1,2),(3,2)]
+    , Map [(0,0),(1,3),(3,1)]
+    , Map [(0,0),(1,4),(3,0)]
+    , Map [(0,1),(1,0),(3,3)]
+    , Map [(0,1),(1,1),(3,2)]
+    , Map [(0,1),(1,2),(3,1)]
+    , Map [(0,1),(1,3),(3,0)]
+    , Map [(0,2),(1,0),(3,2)]
+    , Map [(0,2),(1,1),(3,1)]
+    , Map [(0,2),(1,2),(3,0)]
+    , Map [(0,3),(1,0),(3,1)]
+    , Map [(0,3),(1,1),(3,0)]
+    , Map [(0,4),(1,0),(3,0)]
+    , Map [(0,0),(5,4)]
+    , Map [(0,1),(5,3)]
+    , Map [(0,2),(5,2)]
+    , Map [(0,3),(5,1)]
+    , Map [(0,4),(5,0)]
+    , Map [(1,0),(4,4)]
+    , Map [(1,1),(4,3)]
+    , Map [(1,2),(4,2)]
+    , Map [(1,3),(4,1)]
+    , Map [(1,4),(4,0)]
+    , Map [(2,0),(3,4)]
+    , Map [(2,1),(3,3)]
+    , Map [(2,2),(3,2)]
+    , Map [(2,3),(3,1)]
+    , Map [(2,4),(3,0)]
+    , Map [(6,4)]
+    , Map [(0,0),(1,0),(4,3)]
+    , Map [(0,0),(1,1),(4,2)]
+    , Map [(0,0),(1,2),(4,1)]
+    , Map [(0,0),(1,3),(4,0)]
+    , Map [(0,1),(1,0),(4,2)]
+    , Map [(0,1),(1,1),(4,1)]
+    , Map [(0,1),(1,2),(4,0)]
+    , Map [(0,2),(1,0),(4,1)]
+    , Map [(0,2),(1,1),(4,0)]
+    , Map [(0,3),(1,0),(4,0)]
+    , Map [(0,0),(2,0),(3,3)]
+    , Map [(0,0),(2,1),(3,2)]
+    , Map [(0,0),(2,2),(3,1)]
+    , Map [(0,0),(2,3),(3,0)]
+    , Map [(0,1),(2,0),(3,2)]
+    , Map [(0,1),(2,1),(3,1)]
+    , Map [(0,1),(2,2),(3,0)]
+    , Map [(0,2),(2,0),(3,1)]
+    , Map [(0,2),(2,1),(3,0)]
+    , Map [(0,3),(2,0),(3,0)]
+    , Map [(0,0),(6,3)]
+    , Map [(0,1),(6,2)]
+    , Map [(0,2),(6,1)]
+    , Map [(0,3),(6,0)]
+    , Map [(1,0),(5,3)]
+    , Map [(1,1),(5,2)]
+    , Map [(1,2),(5,1)]
+    , Map [(1,3),(5,0)]
+    , Map [(2,0),(4,3)]
+    , Map [(2,1),(4,2)]
+    , Map [(2,2),(4,1)]
+    , Map [(2,3),(4,0)]
+    , Map [(7,3)]
+    , Map [(0,0),(1,0),(5,2)]
+    , Map [(0,0),(1,1),(5,1)]
+    , Map [(0,0),(1,2),(5,0)]
+    , Map [(0,1),(1,0),(5,1)]
+    , Map [(0,1),(1,1),(5,0)]
+    , Map [(0,2),(1,0),(5,0)]
+    , Map [(0,0),(2,0),(4,2)]
+    , Map [(0,0),(2,1),(4,1)]
+    , Map [(0,0),(2,2),(4,0)]
+    , Map [(0,1),(2,0),(4,1)]
+    , Map [(0,1),(2,1),(4,0)]
+    , Map [(0,2),(2,0),(4,0)]
+    , Map [(0,0),(7,2)]
+    , Map [(0,1),(7,1)]
+    , Map [(0,2),(7,0)]
+    , Map [(1,0),(2,0),(3,2)]
+    , Map [(1,0),(2,1),(3,1)]
+    , Map [(1,0),(2,2),(3,0)]
+    , Map [(1,1),(2,0),(3,1)]
+    , Map [(1,1),(2,1),(3,0)]
+    , Map [(1,2),(2,0),(3,0)]
+    , Map [(1,0),(6,2)]
+    , Map [(1,1),(6,1)]
+    , Map [(1,2),(6,0)]
+    , Map [(2,0),(5,2)]
+    , Map [(2,1),(5,1)]
+    , Map [(2,2),(5,0)]
+    , Map [(3,0),(4,2)]
+    , Map [(3,1),(4,1)]
+    , Map [(3,2),(4,0)]
+    , Map [(8,2)]
+    , Map [(0,0),(1,0),(2,0),(3,1)]
+    , Map [(0,0),(1,0),(2,1),(3,0)]
+    , Map [(0,0),(1,1),(2,0),(3,0)]
+    , Map [(0,1),(1,0),(2,0),(3,0)]
+    , Map [(0,0),(1,0),(6,1)]
+    , Map [(0,0),(1,1),(6,0)]
+    , Map [(0,1),(1,0),(6,0)]
+    , Map [(0,0),(2,0),(5,1)]
+    , Map [(0,0),(2,1),(5,0)]
+    , Map [(0,1),(2,0),(5,0)]
+    , Map [(0,0),(3,0),(4,1)]
+    , Map [(0,0),(3,1),(4,0)]
+    , Map [(0,1),(3,0),(4,0)]
+    , Map [(0,0),(8,1)]
+    , Map [(0,1),(8,0)]
+    , Map [(1,0),(2,0),(4,1)]
+    , Map [(1,0),(2,1),(4,0)]
+    , Map [(1,1),(2,0),(4,0)]
+    , Map [(1,0),(7,1)]
+    , Map [(1,1),(7,0)]
+    , Map [(2,0),(6,1)]
+    , Map [(2,1),(6,0)]
+    , Map [(3,0),(5,1)]
+    , Map [(3,1),(5,0)]
+    , Map [(9,1)]
+    , Map [(0,0),(1,0),(2,0),(4,0)]
+    , Map [(0,0),(1,0),(7,0)]
+    , Map [(0,0),(2,0),(6,0)]
+    , Map [(0,0),(3,0),(5,0)]
+    , Map [(0,0),(9,0)]
+    , Map [(1,0),(2,0),(5,0)]
+    , Map [(1,0),(3,0),(4,0)]
+    , Map [(1,0),(8,0)]
+    , Map [(2,0),(7,0)]
+    , Map [(3,0),(6,0)]
+    , Map [(4,0),(5,0)]
+    , Map [(10,0)]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-MapUU.out b/test/diff/tiers-MapUU.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-MapUU.out
@@ -0,0 +1,12 @@
+map length (tiers :: [[ Map () () ]])  =  [1,1]
+
+length (list :: [ Map () () ])  =  2
+
+allUnique (list :: [ Map () () ])  =  True
+
+ratioRepetitions (list :: [ Map () () ])  =  0 % 1
+
+tiers :: [Map () ()]  =
+  [ [Map []]
+  , [Map [((),())]]
+  ]
diff --git a/test/diff/tiers-Nat,Nat,Nat.out b/test/diff/tiers-Nat,Nat,Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Nat,Nat,Nat.out
@@ -0,0 +1,72 @@
+map length (tiers :: [[ (Nat,Nat,Nat) ]])  =  [1,3,6,10,15,21,...]
+
+length (list :: [ (Nat,Nat,Nat) ])  =  Infinity
+
+allUnique (list :: [ (Nat,Nat,Nat) ])  =  True
+
+ratioRepetitions (list :: [ (Nat,Nat,Nat) ])  =  0 % 1
+
+tiers :: [(Nat,Nat,Nat)]  =
+  [ [(0,0,0)]
+  , [ (0,0,1)
+    , (0,1,0)
+    , (1,0,0)
+    ]
+  , [ (0,0,2)
+    , (0,1,1)
+    , (0,2,0)
+    , (1,0,1)
+    , (1,1,0)
+    , (2,0,0)
+    ]
+  , [ (0,0,3)
+    , (0,1,2)
+    , (0,2,1)
+    , (0,3,0)
+    , (1,0,2)
+    , (1,1,1)
+    , (1,2,0)
+    , (2,0,1)
+    , (2,1,0)
+    , (3,0,0)
+    ]
+  , [ (0,0,4)
+    , (0,1,3)
+    , (0,2,2)
+    , (0,3,1)
+    , (0,4,0)
+    , (1,0,3)
+    , (1,1,2)
+    , (1,2,1)
+    , (1,3,0)
+    , (2,0,2)
+    , (2,1,1)
+    , (2,2,0)
+    , (3,0,1)
+    , (3,1,0)
+    , (4,0,0)
+    ]
+  , [ (0,0,5)
+    , (0,1,4)
+    , (0,2,3)
+    , (0,3,2)
+    , (0,4,1)
+    , (0,5,0)
+    , (1,0,4)
+    , (1,1,3)
+    , (1,2,2)
+    , (1,3,1)
+    , (1,4,0)
+    , (2,0,3)
+    , (2,1,2)
+    , (2,2,1)
+    , (2,3,0)
+    , (3,0,2)
+    , (3,1,1)
+    , (3,2,0)
+    , (4,0,1)
+    , (4,1,0)
+    , (5,0,0)
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-Nat,Nat.out b/test/diff/tiers-Nat,Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Nat,Nat.out
@@ -0,0 +1,100 @@
+map length (tiers :: [[ (Nat,Nat) ]])  =  [1,2,3,4,5,6,7,8,9,10,11,12,...]
+
+length (list :: [ (Nat,Nat) ])  =  Infinity
+
+allUnique (list :: [ (Nat,Nat) ])  =  True
+
+ratioRepetitions (list :: [ (Nat,Nat) ])  =  0 % 1
+
+tiers :: [(Nat,Nat)]  =
+  [ [(0,0)]
+  , [ (0,1)
+    , (1,0)
+    ]
+  , [ (0,2)
+    , (1,1)
+    , (2,0)
+    ]
+  , [ (0,3)
+    , (1,2)
+    , (2,1)
+    , (3,0)
+    ]
+  , [ (0,4)
+    , (1,3)
+    , (2,2)
+    , (3,1)
+    , (4,0)
+    ]
+  , [ (0,5)
+    , (1,4)
+    , (2,3)
+    , (3,2)
+    , (4,1)
+    , (5,0)
+    ]
+  , [ (0,6)
+    , (1,5)
+    , (2,4)
+    , (3,3)
+    , (4,2)
+    , (5,1)
+    , (6,0)
+    ]
+  , [ (0,7)
+    , (1,6)
+    , (2,5)
+    , (3,4)
+    , (4,3)
+    , (5,2)
+    , (6,1)
+    , (7,0)
+    ]
+  , [ (0,8)
+    , (1,7)
+    , (2,6)
+    , (3,5)
+    , (4,4)
+    , (5,3)
+    , (6,2)
+    , (7,1)
+    , (8,0)
+    ]
+  , [ (0,9)
+    , (1,8)
+    , (2,7)
+    , (3,6)
+    , (4,5)
+    , (5,4)
+    , (6,3)
+    , (7,2)
+    , (8,1)
+    , (9,0)
+    ]
+  , [ (0,10)
+    , (1,9)
+    , (2,8)
+    , (3,7)
+    , (4,6)
+    , (5,5)
+    , (6,4)
+    , (7,3)
+    , (8,2)
+    , (9,1)
+    , (10,0)
+    ]
+  , [ (0,11)
+    , (1,10)
+    , (2,9)
+    , (3,8)
+    , (4,7)
+    , (5,6)
+    , (6,5)
+    , (7,4)
+    , (8,3)
+    , (9,2)
+    , (10,1)
+    , (11,0)
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-Nat.out b/test/diff/tiers-Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Nat.out
@@ -0,0 +1,23 @@
+map length (tiers :: [[ Nat ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
+
+length (list :: [ Nat ])  =  Infinity
+
+allUnique (list :: [ Nat ])  =  True
+
+ratioRepetitions (list :: [ Nat ])  =  0 % 1
+
+tiers :: [Nat]  =
+  [ [0]
+  , [1]
+  , [2]
+  , [3]
+  , [4]
+  , [5]
+  , [6]
+  , [7]
+  , [8]
+  , [9]
+  , [10]
+  , [11]
+  , ...
+  ]
diff --git a/test/diff/tiers-Nats.out b/test/diff/tiers-Nats.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Nats.out
@@ -0,0 +1,47 @@
+map length (tiers :: [[ [Nat] ]])  =  [1,1,2,4,8,16,...]
+
+length (list :: [ [Nat] ])  =  Infinity
+
+allUnique (list :: [ [Nat] ])  =  True
+
+ratioRepetitions (list :: [ [Nat] ])  =  0 % 1
+
+tiers :: [[Nat]]  =
+  [ [[]]
+  , [[0]]
+  , [ [0,0]
+    , [1]
+    ]
+  , [ [0,0,0]
+    , [0,1]
+    , [1,0]
+    , [2]
+    ]
+  , [ [0,0,0,0]
+    , [0,0,1]
+    , [0,1,0]
+    , [0,2]
+    , [1,0,0]
+    , [1,1]
+    , [2,0]
+    , [3]
+    ]
+  , [ [0,0,0,0,0]
+    , [0,0,0,1]
+    , [0,0,1,0]
+    , [0,0,2]
+    , [0,1,0,0]
+    , [0,1,1]
+    , [0,2,0]
+    , [0,3]
+    , [1,0,0,0]
+    , [1,0,1]
+    , [1,1,0]
+    , [1,2]
+    , [2,0,0]
+    , [2,1]
+    , [3,0]
+    , [4]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-NoDupBool.out b/test/diff/tiers-NoDupBool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-NoDupBool.out
@@ -0,0 +1,17 @@
+map length (tiers :: [[ NoDup Bool ]])  =  [1,2,2]
+
+length (list :: [ NoDup Bool ])  =  5
+
+allUnique (list :: [ NoDup Bool ])  =  True
+
+ratioRepetitions (list :: [ NoDup Bool ])  =  0 % 1
+
+tiers :: [NoDup Bool]  =
+  [ [NoDup []]
+  , [ NoDup [False]
+    , NoDup [True]
+    ]
+  , [ NoDup [False,True]
+    , NoDup [True,False]
+    ]
+  ]
diff --git a/test/diff/tiers-NoDupNat.out b/test/diff/tiers-NoDupNat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-NoDupNat.out
@@ -0,0 +1,226 @@
+map length (tiers :: [[ NoDup Nat ]])  =  [1,1,1,3,3,5,11,13,19,27,57,65,...]
+
+length (list :: [ NoDup Nat ])  =  Infinity
+
+allUnique (list :: [ NoDup Nat ])  =  True
+
+ratioRepetitions (list :: [ NoDup Nat ])  =  0 % 1
+
+tiers :: [NoDup Nat]  =
+  [ [NoDup []]
+  , [NoDup [0]]
+  , [NoDup [1]]
+  , [ NoDup [0,1]
+    , NoDup [1,0]
+    , NoDup [2]
+    ]
+  , [ NoDup [0,2]
+    , NoDup [2,0]
+    , NoDup [3]
+    ]
+  , [ NoDup [0,3]
+    , NoDup [1,2]
+    , NoDup [2,1]
+    , NoDup [3,0]
+    , NoDup [4]
+    ]
+  , [ NoDup [0,1,2]
+    , NoDup [0,2,1]
+    , NoDup [0,4]
+    , NoDup [1,0,2]
+    , NoDup [1,2,0]
+    , NoDup [1,3]
+    , NoDup [2,0,1]
+    , NoDup [2,1,0]
+    , NoDup [3,1]
+    , NoDup [4,0]
+    , NoDup [5]
+    ]
+  , [ NoDup [0,1,3]
+    , NoDup [0,3,1]
+    , NoDup [0,5]
+    , NoDup [1,0,3]
+    , NoDup [1,3,0]
+    , NoDup [1,4]
+    , NoDup [2,3]
+    , NoDup [3,0,1]
+    , NoDup [3,1,0]
+    , NoDup [3,2]
+    , NoDup [4,1]
+    , NoDup [5,0]
+    , NoDup [6]
+    ]
+  , [ NoDup [0,1,4]
+    , NoDup [0,2,3]
+    , NoDup [0,3,2]
+    , NoDup [0,4,1]
+    , NoDup [0,6]
+    , NoDup [1,0,4]
+    , NoDup [1,4,0]
+    , NoDup [1,5]
+    , NoDup [2,0,3]
+    , NoDup [2,3,0]
+    , NoDup [2,4]
+    , NoDup [3,0,2]
+    , NoDup [3,2,0]
+    , NoDup [4,0,1]
+    , NoDup [4,1,0]
+    , NoDup [4,2]
+    , NoDup [5,1]
+    , NoDup [6,0]
+    , NoDup [7]
+    ]
+  , [ NoDup [0,1,5]
+    , NoDup [0,2,4]
+    , NoDup [0,4,2]
+    , NoDup [0,5,1]
+    , NoDup [0,7]
+    , NoDup [1,0,5]
+    , NoDup [1,2,3]
+    , NoDup [1,3,2]
+    , NoDup [1,5,0]
+    , NoDup [1,6]
+    , NoDup [2,0,4]
+    , NoDup [2,1,3]
+    , NoDup [2,3,1]
+    , NoDup [2,4,0]
+    , NoDup [2,5]
+    , NoDup [3,1,2]
+    , NoDup [3,2,1]
+    , NoDup [3,4]
+    , NoDup [4,0,2]
+    , NoDup [4,2,0]
+    , NoDup [4,3]
+    , NoDup [5,0,1]
+    , NoDup [5,1,0]
+    , NoDup [5,2]
+    , NoDup [6,1]
+    , NoDup [7,0]
+    , NoDup [8]
+    ]
+  , [ NoDup [0,1,2,3]
+    , NoDup [0,1,3,2]
+    , NoDup [0,1,6]
+    , NoDup [0,2,1,3]
+    , NoDup [0,2,3,1]
+    , NoDup [0,2,5]
+    , NoDup [0,3,1,2]
+    , NoDup [0,3,2,1]
+    , NoDup [0,3,4]
+    , NoDup [0,4,3]
+    , NoDup [0,5,2]
+    , NoDup [0,6,1]
+    , NoDup [0,8]
+    , NoDup [1,0,2,3]
+    , NoDup [1,0,3,2]
+    , NoDup [1,0,6]
+    , NoDup [1,2,0,3]
+    , NoDup [1,2,3,0]
+    , NoDup [1,2,4]
+    , NoDup [1,3,0,2]
+    , NoDup [1,3,2,0]
+    , NoDup [1,4,2]
+    , NoDup [1,6,0]
+    , NoDup [1,7]
+    , NoDup [2,0,1,3]
+    , NoDup [2,0,3,1]
+    , NoDup [2,0,5]
+    , NoDup [2,1,0,3]
+    , NoDup [2,1,3,0]
+    , NoDup [2,1,4]
+    , NoDup [2,3,0,1]
+    , NoDup [2,3,1,0]
+    , NoDup [2,4,1]
+    , NoDup [2,5,0]
+    , NoDup [2,6]
+    , NoDup [3,0,1,2]
+    , NoDup [3,0,2,1]
+    , NoDup [3,0,4]
+    , NoDup [3,1,0,2]
+    , NoDup [3,1,2,0]
+    , NoDup [3,2,0,1]
+    , NoDup [3,2,1,0]
+    , NoDup [3,4,0]
+    , NoDup [3,5]
+    , NoDup [4,0,3]
+    , NoDup [4,1,2]
+    , NoDup [4,2,1]
+    , NoDup [4,3,0]
+    , NoDup [5,0,2]
+    , NoDup [5,2,0]
+    , NoDup [5,3]
+    , NoDup [6,0,1]
+    , NoDup [6,1,0]
+    , NoDup [6,2]
+    , NoDup [7,1]
+    , NoDup [8,0]
+    , NoDup [9]
+    ]
+  , [ NoDup [0,1,2,4]
+    , NoDup [0,1,4,2]
+    , NoDup [0,1,7]
+    , NoDup [0,2,1,4]
+    , NoDup [0,2,4,1]
+    , NoDup [0,2,6]
+    , NoDup [0,3,5]
+    , NoDup [0,4,1,2]
+    , NoDup [0,4,2,1]
+    , NoDup [0,5,3]
+    , NoDup [0,6,2]
+    , NoDup [0,7,1]
+    , NoDup [0,9]
+    , NoDup [1,0,2,4]
+    , NoDup [1,0,4,2]
+    , NoDup [1,0,7]
+    , NoDup [1,2,0,4]
+    , NoDup [1,2,4,0]
+    , NoDup [1,2,5]
+    , NoDup [1,3,4]
+    , NoDup [1,4,0,2]
+    , NoDup [1,4,2,0]
+    , NoDup [1,4,3]
+    , NoDup [1,5,2]
+    , NoDup [1,7,0]
+    , NoDup [1,8]
+    , NoDup [2,0,1,4]
+    , NoDup [2,0,4,1]
+    , NoDup [2,0,6]
+    , NoDup [2,1,0,4]
+    , NoDup [2,1,4,0]
+    , NoDup [2,1,5]
+    , NoDup [2,4,0,1]
+    , NoDup [2,4,1,0]
+    , NoDup [2,5,1]
+    , NoDup [2,6,0]
+    , NoDup [2,7]
+    , NoDup [3,0,5]
+    , NoDup [3,1,4]
+    , NoDup [3,4,1]
+    , NoDup [3,5,0]
+    , NoDup [3,6]
+    , NoDup [4,0,1,2]
+    , NoDup [4,0,2,1]
+    , NoDup [4,1,0,2]
+    , NoDup [4,1,2,0]
+    , NoDup [4,1,3]
+    , NoDup [4,2,0,1]
+    , NoDup [4,2,1,0]
+    , NoDup [4,3,1]
+    , NoDup [4,5]
+    , NoDup [5,0,3]
+    , NoDup [5,1,2]
+    , NoDup [5,2,1]
+    , NoDup [5,3,0]
+    , NoDup [5,4]
+    , NoDup [6,0,2]
+    , NoDup [6,2,0]
+    , NoDup [6,3]
+    , NoDup [7,0,1]
+    , NoDup [7,1,0]
+    , NoDup [7,2]
+    , NoDup [8,1]
+    , NoDup [9,0]
+    , NoDup [10]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-NoDupNat2.out b/test/diff/tiers-NoDupNat2.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-NoDupNat2.out
@@ -0,0 +1,16 @@
+map length (tiers :: [[ NoDup Nat2 ]])  =  [1,1,1,2]
+
+length (list :: [ NoDup Nat2 ])  =  5
+
+allUnique (list :: [ NoDup Nat2 ])  =  True
+
+ratioRepetitions (list :: [ NoDup Nat2 ])  =  0 % 1
+
+tiers :: [NoDup Nat2]  =
+  [ [NoDup []]
+  , [NoDup [0]]
+  , [NoDup [1]]
+  , [ NoDup [0,1]
+    , NoDup [1,0]
+    ]
+  ]
diff --git a/test/diff/tiers-NoDupNat3.out b/test/diff/tiers-NoDupNat3.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-NoDupNat3.out
@@ -0,0 +1,30 @@
+map length (tiers :: [[ NoDup Nat3 ]])  =  [1,1,1,3,2,2,6]
+
+length (list :: [ NoDup Nat3 ])  =  Infinity
+
+allUnique (list :: [ NoDup Nat3 ])  =  True
+
+ratioRepetitions (list :: [ NoDup Nat3 ])  =  0 % 1
+
+tiers :: [NoDup Nat3]  =
+  [ [NoDup []]
+  , [NoDup [0]]
+  , [NoDup [1]]
+  , [ NoDup [0,1]
+    , NoDup [1,0]
+    , NoDup [2]
+    ]
+  , [ NoDup [0,2]
+    , NoDup [2,0]
+    ]
+  , [ NoDup [1,2]
+    , NoDup [2,1]
+    ]
+  , [ NoDup [0,1,2]
+    , NoDup [0,2,1]
+    , NoDup [1,0,2]
+    , NoDup [1,2,0]
+    , NoDup [2,0,1]
+    , NoDup [2,1,0]
+    ]
+  ]
diff --git a/test/diff/tiers-NoDupU.out b/test/diff/tiers-NoDupU.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-NoDupU.out
@@ -0,0 +1,12 @@
+map length (tiers :: [[ NoDup () ]])  =  [1,1]
+
+length (list :: [ NoDup () ])  =  2
+
+allUnique (list :: [ NoDup () ])  =  True
+
+ratioRepetitions (list :: [ NoDup () ])  =  0 % 1
+
+tiers :: [NoDup ()]  =
+  [ [NoDup []]
+  , [NoDup [()]]
+  ]
diff --git a/test/diff/tiers-Rational.out b/test/diff/tiers-Rational.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Rational.out
@@ -0,0 +1,49 @@
+map length (tiers :: [[ Rational ]])  =  [1,1,1,2,2,2,2,4,4,2,2,6,...]
+
+length (list :: [ Rational ])  =  Infinity
+
+allUnique (list :: [ Rational ])  =  True
+
+ratioRepetitions (list :: [ Rational ])  =  0 % 1
+
+tiers :: [Rational]  =
+  [ [0 % 1]
+  , [1 % 1]
+  , [(-1) % 1]
+  , [ 1 % 2
+    , 2 % 1
+    ]
+  , [ (-1) % 2
+    , (-2) % 1
+    ]
+  , [ 1 % 3
+    , 3 % 1
+    ]
+  , [ (-1) % 3
+    , (-3) % 1
+    ]
+  , [ 1 % 4
+    , 2 % 3
+    , 3 % 2
+    , 4 % 1
+    ]
+  , [ (-1) % 4
+    , (-2) % 3
+    , (-3) % 2
+    , (-4) % 1
+    ]
+  , [ 1 % 5
+    , 5 % 1
+    ]
+  , [ (-1) % 5
+    , (-5) % 1
+    ]
+  , [ 1 % 6
+    , 2 % 5
+    , 3 % 4
+    , 4 % 3
+    , 5 % 2
+    , 6 % 1
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-SetBool.out b/test/diff/tiers-SetBool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-SetBool.out
@@ -0,0 +1,15 @@
+map length (tiers :: [[ Set Bool ]])  =  [1,2,1]
+
+length (list :: [ Set Bool ])  =  4
+
+allUnique (list :: [ Set Bool ])  =  True
+
+ratioRepetitions (list :: [ Set Bool ])  =  0 % 1
+
+tiers :: [Set Bool]  =
+  [ [Set []]
+  , [ Set [False]
+    , Set [True]
+    ]
+  , [Set [False,True]]
+  ]
diff --git a/test/diff/tiers-SetNat.out b/test/diff/tiers-SetNat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-SetNat.out
@@ -0,0 +1,75 @@
+map length (tiers :: [[ Set Nat ]])  =  [1,1,1,2,2,3,4,5,6,8,10,12,...]
+
+length (list :: [ Set Nat ])  =  Infinity
+
+allUnique (list :: [ Set Nat ])  =  True
+
+ratioRepetitions (list :: [ Set Nat ])  =  0 % 1
+
+tiers :: [Set Nat]  =
+  [ [Set []]
+  , [Set [0]]
+  , [Set [1]]
+  , [ Set [0,1]
+    , Set [2]
+    ]
+  , [ Set [0,2]
+    , Set [3]
+    ]
+  , [ Set [0,3]
+    , Set [1,2]
+    , Set [4]
+    ]
+  , [ Set [0,1,2]
+    , Set [0,4]
+    , Set [1,3]
+    , Set [5]
+    ]
+  , [ Set [0,1,3]
+    , Set [0,5]
+    , Set [1,4]
+    , Set [2,3]
+    , Set [6]
+    ]
+  , [ Set [0,1,4]
+    , Set [0,2,3]
+    , Set [0,6]
+    , Set [1,5]
+    , Set [2,4]
+    , Set [7]
+    ]
+  , [ Set [0,1,5]
+    , Set [0,2,4]
+    , Set [0,7]
+    , Set [1,2,3]
+    , Set [1,6]
+    , Set [2,5]
+    , Set [3,4]
+    , Set [8]
+    ]
+  , [ Set [0,1,2,3]
+    , Set [0,1,6]
+    , Set [0,2,5]
+    , Set [0,3,4]
+    , Set [0,8]
+    , Set [1,2,4]
+    , Set [1,7]
+    , Set [2,6]
+    , Set [3,5]
+    , Set [9]
+    ]
+  , [ Set [0,1,2,4]
+    , Set [0,1,7]
+    , Set [0,2,6]
+    , Set [0,3,5]
+    , Set [0,9]
+    , Set [1,2,5]
+    , Set [1,3,4]
+    , Set [1,8]
+    , Set [2,7]
+    , Set [3,6]
+    , Set [4,5]
+    , Set [10]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-SetNat2.out b/test/diff/tiers-SetNat2.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-SetNat2.out
@@ -0,0 +1,14 @@
+map length (tiers :: [[ Set Nat2 ]])  =  [1,1,1,1]
+
+length (list :: [ Set Nat2 ])  =  4
+
+allUnique (list :: [ Set Nat2 ])  =  True
+
+ratioRepetitions (list :: [ Set Nat2 ])  =  0 % 1
+
+tiers :: [Set Nat2]  =
+  [ [Set []]
+  , [Set [0]]
+  , [Set [1]]
+  , [Set [0,1]]
+  ]
diff --git a/test/diff/tiers-SetNat3.out b/test/diff/tiers-SetNat3.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-SetNat3.out
@@ -0,0 +1,19 @@
+map length (tiers :: [[ Set Nat3 ]])  =  [1,1,1,2,1,1,1]
+
+length (list :: [ Set Nat3 ])  =  8
+
+allUnique (list :: [ Set Nat3 ])  =  True
+
+ratioRepetitions (list :: [ Set Nat3 ])  =  0 % 1
+
+tiers :: [Set Nat3]  =
+  [ [Set []]
+  , [Set [0]]
+  , [Set [1]]
+  , [ Set [0,1]
+    , Set [2]
+    ]
+  , [Set [0,2]]
+  , [Set [1,2]]
+  , [Set [0,1,2]]
+  ]
diff --git a/test/diff/tiers-SetU.out b/test/diff/tiers-SetU.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-SetU.out
@@ -0,0 +1,12 @@
+map length (tiers :: [[ Set () ]])  =  [1,1]
+
+length (list :: [ Set () ])  =  2
+
+allUnique (list :: [ Set () ])  =  True
+
+ratioRepetitions (list :: [ Set () ])  =  0 % 1
+
+tiers :: [Set ()]  =
+  [ [Set []]
+  , [Set [()]]
+  ]
diff --git a/test/diff/tiers-String.out b/test/diff/tiers-String.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-String.out
@@ -0,0 +1,47 @@
+map length (tiers :: [[ String ]])  =  [1,1,2,4,8,16,...]
+
+length (list :: [ String ])  =  Infinity
+
+allUnique (list :: [ String ])  =  True
+
+ratioRepetitions (list :: [ String ])  =  0 % 1
+
+tiers :: [String]  =
+  [ [""]
+  , ["a"]
+  , [ "aa"
+    , " "
+    ]
+  , [ "aaa"
+    , "a "
+    , " a"
+    , "b"
+    ]
+  , [ "aaaa"
+    , "aa "
+    , "a a"
+    , "ab"
+    , " aa"
+    , "  "
+    , "ba"
+    , "A"
+    ]
+  , [ "aaaaa"
+    , "aaa "
+    , "aa a"
+    , "aab"
+    , "a aa"
+    , "a  "
+    , "aba"
+    , "aA"
+    , " aaa"
+    , " a "
+    , "  a"
+    , " b"
+    , "baa"
+    , "b "
+    , "Aa"
+    , "c"
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-U,Us.out b/test/diff/tiers-U,Us.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-U,Us.out
@@ -0,0 +1,23 @@
+map length (tiers :: [[ [((),())] ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
+
+length (list :: [ [((),())] ])  =  Infinity
+
+allUnique (list :: [ [((),())] ])  =  True
+
+ratioRepetitions (list :: [ [((),())] ])  =  0 % 1
+
+tiers :: [[((),())]]  =
+  [ [[]]
+  , [[((),())]]
+  , [[((),()),((),())]]
+  , [[((),()),((),()),((),())]]
+  , [[((),()),((),()),((),()),((),())]]
+  , [[((),()),((),()),((),()),((),()),((),())]]
+  , [[((),()),((),()),((),()),((),()),((),()),((),())]]
+  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
+  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
+  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
+  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
+  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
+  , ...
+  ]
diff --git a/test/diff/tiers-Us,Us.out b/test/diff/tiers-Us,Us.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Us,Us.out
@@ -0,0 +1,100 @@
+map length (tiers :: [[ ([()],[()]) ]])  =  [1,2,3,4,5,6,7,8,9,10,11,12,...]
+
+length (list :: [ ([()],[()]) ])  =  Infinity
+
+allUnique (list :: [ ([()],[()]) ])  =  True
+
+ratioRepetitions (list :: [ ([()],[()]) ])  =  0 % 1
+
+tiers :: [([()],[()])]  =
+  [ [([],[])]
+  , [ ([],[()])
+    , ([()],[])
+    ]
+  , [ ([],[(),()])
+    , ([()],[()])
+    , ([(),()],[])
+    ]
+  , [ ([],[(),(),()])
+    , ([()],[(),()])
+    , ([(),()],[()])
+    , ([(),(),()],[])
+    ]
+  , [ ([],[(),(),(),()])
+    , ([()],[(),(),()])
+    , ([(),()],[(),()])
+    , ([(),(),()],[()])
+    , ([(),(),(),()],[])
+    ]
+  , [ ([],[(),(),(),(),()])
+    , ([()],[(),(),(),()])
+    , ([(),()],[(),(),()])
+    , ([(),(),()],[(),()])
+    , ([(),(),(),()],[()])
+    , ([(),(),(),(),()],[])
+    ]
+  , [ ([],[(),(),(),(),(),()])
+    , ([()],[(),(),(),(),()])
+    , ([(),()],[(),(),(),()])
+    , ([(),(),()],[(),(),()])
+    , ([(),(),(),()],[(),()])
+    , ([(),(),(),(),()],[()])
+    , ([(),(),(),(),(),()],[])
+    ]
+  , [ ([],[(),(),(),(),(),(),()])
+    , ([()],[(),(),(),(),(),()])
+    , ([(),()],[(),(),(),(),()])
+    , ([(),(),()],[(),(),(),()])
+    , ([(),(),(),()],[(),(),()])
+    , ([(),(),(),(),()],[(),()])
+    , ([(),(),(),(),(),()],[()])
+    , ([(),(),(),(),(),(),()],[])
+    ]
+  , [ ([],[(),(),(),(),(),(),(),()])
+    , ([()],[(),(),(),(),(),(),()])
+    , ([(),()],[(),(),(),(),(),()])
+    , ([(),(),()],[(),(),(),(),()])
+    , ([(),(),(),()],[(),(),(),()])
+    , ([(),(),(),(),()],[(),(),()])
+    , ([(),(),(),(),(),()],[(),()])
+    , ([(),(),(),(),(),(),()],[()])
+    , ([(),(),(),(),(),(),(),()],[])
+    ]
+  , [ ([],[(),(),(),(),(),(),(),(),()])
+    , ([()],[(),(),(),(),(),(),(),()])
+    , ([(),()],[(),(),(),(),(),(),()])
+    , ([(),(),()],[(),(),(),(),(),()])
+    , ([(),(),(),()],[(),(),(),(),()])
+    , ([(),(),(),(),()],[(),(),(),()])
+    , ([(),(),(),(),(),()],[(),(),()])
+    , ([(),(),(),(),(),(),()],[(),()])
+    , ([(),(),(),(),(),(),(),()],[()])
+    , ([(),(),(),(),(),(),(),(),()],[])
+    ]
+  , [ ([],[(),(),(),(),(),(),(),(),(),()])
+    , ([()],[(),(),(),(),(),(),(),(),()])
+    , ([(),()],[(),(),(),(),(),(),(),()])
+    , ([(),(),()],[(),(),(),(),(),(),()])
+    , ([(),(),(),()],[(),(),(),(),(),()])
+    , ([(),(),(),(),()],[(),(),(),(),()])
+    , ([(),(),(),(),(),()],[(),(),(),()])
+    , ([(),(),(),(),(),(),()],[(),(),()])
+    , ([(),(),(),(),(),(),(),()],[(),()])
+    , ([(),(),(),(),(),(),(),(),()],[()])
+    , ([(),(),(),(),(),(),(),(),(),()],[])
+    ]
+  , [ ([],[(),(),(),(),(),(),(),(),(),(),()])
+    , ([()],[(),(),(),(),(),(),(),(),(),()])
+    , ([(),()],[(),(),(),(),(),(),(),(),()])
+    , ([(),(),()],[(),(),(),(),(),(),(),()])
+    , ([(),(),(),()],[(),(),(),(),(),(),()])
+    , ([(),(),(),(),()],[(),(),(),(),(),()])
+    , ([(),(),(),(),(),()],[(),(),(),(),()])
+    , ([(),(),(),(),(),(),()],[(),(),(),()])
+    , ([(),(),(),(),(),(),(),()],[(),(),()])
+    , ([(),(),(),(),(),(),(),(),()],[(),()])
+    , ([(),(),(),(),(),(),(),(),(),()],[()])
+    , ([(),(),(),(),(),(),(),(),(),(),()],[])
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-Us.out b/test/diff/tiers-Us.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-Us.out
@@ -0,0 +1,23 @@
+map length (tiers :: [[ [()] ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
+
+length (list :: [ [()] ])  =  Infinity
+
+allUnique (list :: [ [()] ])  =  True
+
+ratioRepetitions (list :: [ [()] ])  =  0 % 1
+
+tiers :: [[()]]  =
+  [ [[]]
+  , [[()]]
+  , [[(),()]]
+  , [[(),(),()]]
+  , [[(),(),(),()]]
+  , [[(),(),(),(),()]]
+  , [[(),(),(),(),(),()]]
+  , [[(),(),(),(),(),(),()]]
+  , [[(),(),(),(),(),(),(),()]]
+  , [[(),(),(),(),(),(),(),(),()]]
+  , [[(),(),(),(),(),(),(),(),(),()]]
+  , [[(),(),(),(),(),(),(),(),(),(),()]]
+  , ...
+  ]
diff --git a/test/diff/tiers-XInt4.out b/test/diff/tiers-XInt4.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-XInt4.out
@@ -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]
+  , ...
+  ]
diff --git a/test/diff/tiers-XNat7.out b/test/diff/tiers-XNat7.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-XNat7.out
@@ -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]
+  ]
diff --git a/test/diff/tiers-XWord4.out b/test/diff/tiers-XWord4.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-XWord4.out
@@ -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]
+  , ...
+  ]
diff --git a/test/diff/tiers-XsInt4.out b/test/diff/tiers-XsInt4.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-XsInt4.out
@@ -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]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-XsNat7.out b/test/diff/tiers-XsNat7.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-XsNat7.out
@@ -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]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-XsWord4.out b/test/diff/tiers-XsWord4.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-XsWord4.out
@@ -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]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Bool-Bool-Bool-Bool.out b/test/diff/tiers-default-Bool-Bool-Bool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Bool-Bool-Bool-Bool.out
@@ -0,0 +1,1059 @@
+map length (tiers :: [[ Bool->Bool->Bool->Bool ]])  =  [256]
+
+length (list :: [ Bool->Bool->Bool->Bool ])  =  Infinity
+
+allUnique (list :: [ Bool->Bool->Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Bool->Bool->Bool ])  =  0 % 1
+
+tiers :: [Bool->Bool->Bool->Bool]  =
+  [ [ \_ _ _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,True,False) -> True
+                _ -> False
+    , \x y _ -> case (x,y) of
+                (True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,False,True) -> True
+                _ -> False
+    , \x _ z -> case (x,z) of
+                (True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,False,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,_) -> False
+                (_,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (True,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,False,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x _ z -> case (x,z) of
+                (True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,_,False) -> True
+                (True,True,_) -> True
+                _ -> False
+    , \x y _ -> case (x,y) of
+                (True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,False,_) -> True
+                (True,_,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,False,_) -> True
+                (True,_,False) -> True
+                _ -> False
+    , \x _ _ -> case x of
+                False -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> True
+                _ -> False
+    , \_ y z -> case (y,z) of
+                (True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (_,False,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> True
+                (True,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (_,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> True
+                (True,False,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,False) -> False
+                (_,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> True
+                (True,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,True,True) -> True
+                (True,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> True
+                (True,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,False) -> False
+                (_,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> True
+                (True,False,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,False) -> False
+                (_,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \_ y z -> case (y,z) of
+                (True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,True,False) -> True
+                (True,True,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> True
+                (True,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> True
+                (True,_,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,True,False) -> True
+                (True,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (_,False,False) -> False
+                (False,_,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> True
+                (True,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> True
+                (True,False,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (_,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,True) -> False
+                (_,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> True
+                (True,False,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,True) -> False
+                (_,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,True) -> False
+                _ -> True
+    , \x y _ -> case (x,y) of
+                (False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,_) -> True
+                (_,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,_) -> True
+                (_,True,False) -> True
+                _ -> False
+    , \_ y _ -> case y of
+                False -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,_) -> True
+                (True,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (_,False,False) -> False
+                (True,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (_,False,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (_,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,_) -> True
+                (True,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (_,False,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (False,_,_) -> True
+                (_,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (_,False,True) -> False
+                _ -> True
+    , \x y _ -> case (x,y) of
+                (False,False) -> False
+                (True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y _ -> case (x,y) of
+                (False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (True,True,_) -> True
+                _ -> False
+    , \_ y z -> case (y,z) of
+                (False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,True) -> True
+                (True,_,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (_,False,False) -> False
+                (False,True,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (True,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (True,False,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (True,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (False,True,_) -> False
+                (True,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (_,False,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (False,True,_) -> False
+                (_,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (False,True,_) -> False
+                (_,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (False,True,_) -> False
+                _ -> True
+    , \x _ z -> case (x,z) of
+                (False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,True) -> True
+                (_,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (_,False,False) -> False
+                (True,False,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,True) -> True
+                (_,False,True) -> True
+                _ -> False
+    , \_ _ z -> case z of
+                False -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (_,False,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (_,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,True) -> True
+                (True,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (True,False,True) -> False
+                (_,True,False) -> False
+                _ -> True
+    , \x _ z -> case (x,z) of
+                (False,False) -> False
+                (True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (True,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (False,_,_) -> True
+                (_,False,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (_,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x _ z -> case (x,z) of
+                (False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (False,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (False,True,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (_,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (False,True,True) -> False
+                (True,False,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,True) -> True
+                (False,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (False,True,True) -> False
+                (True,_,False) -> False
+                _ -> True
+    , \_ y z -> case (y,z) of
+                (False,False) -> False
+                (True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (False,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> True
+                (False,True,False) -> True
+                (True,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (False,True,True) -> False
+                (True,False,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (False,False,_) -> True
+                (_,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (False,True,True) -> False
+                (True,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (_,False,_) -> True
+                (False,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (False,True,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (_,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (False,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (False,_,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (True,False,_) -> False
+                (True,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (True,False,_) -> False
+                (True,_,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (True,False,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (False,_,_) -> True
+                (_,False,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (True,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \_ y z -> case (y,z) of
+                (False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (False,_,_) -> True
+                (_,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (True,False,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (True,_,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (True,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (True,True,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (True,True,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (True,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (True,_,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (True,False,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (False,_,_) -> False
+                (_,False,False) -> False
+                _ -> True
+    , \_ y z -> case (y,z) of
+                (False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (True,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (False,_,_) -> False
+                (_,False,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (True,False,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (True,False,_) -> True
+                (True,_,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (True,False,_) -> True
+                (True,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (False,_,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (False,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (_,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (False,True,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (_,False,_) -> False
+                (False,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (False,True,True) -> True
+                (True,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (False,False,_) -> False
+                (_,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,False) -> True
+                (False,True,True) -> True
+                (True,False,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (False,True,False) -> False
+                (True,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (False,True,True) -> True
+                _ -> False
+    , \_ y z -> case (y,z) of
+                (False,False) -> True
+                (True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (False,True,True) -> True
+                (True,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,True) -> False
+                (False,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,False) -> True
+                (False,True,True) -> True
+                (True,False,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (_,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (False,True,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (False,True,False) -> False
+                _ -> True
+    , \x _ z -> case (x,z) of
+                (False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (_,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (False,_,_) -> False
+                (_,False,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (True,False,True) -> True
+                _ -> False
+    , \x _ z -> case (x,z) of
+                (False,False) -> True
+                (True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (True,False,True) -> True
+                (_,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,True) -> False
+                (True,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (_,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (_,False,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \_ _ z -> case z of
+                False -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,True) -> False
+                (_,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (_,False,False) -> True
+                (True,False,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,True) -> False
+                (_,True,True) -> False
+                _ -> True
+    , \x _ z -> case (x,z) of
+                (False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (False,True,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (False,True,_) -> True
+                (_,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (False,True,_) -> True
+                (_,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (_,False,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (False,True,_) -> True
+                (True,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (True,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (True,False,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (True,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (_,False,False) -> True
+                (False,True,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,False,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,False,True) -> False
+                (True,_,True) -> False
+                _ -> True
+    , \_ y z -> case (y,z) of
+                (False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (True,True,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,True) -> False
+                _ -> True
+    , \x y _ -> case (x,y) of
+                (False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y _ -> case (x,y) of
+                (False,False) -> True
+                (True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (_,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,_) -> False
+                (_,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (_,False,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,_) -> False
+                (True,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (_,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (_,False,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (_,False,False) -> True
+                (True,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,_) -> False
+                (True,False,True) -> False
+                _ -> True
+    , \_ y _ -> case y of
+                False -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,_) -> False
+                (_,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,_) -> False
+                (_,True,True) -> False
+                _ -> True
+    , \x y _ -> case (x,y) of
+                (False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,True) -> True
+                (_,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,True) -> True
+                (True,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> False
+                (True,False,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,True) -> True
+                (_,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (_,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> False
+                (True,False,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> False
+                (True,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (_,False,False) -> True
+                (False,_,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (_,True,False) -> False
+                (True,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> False
+                (True,_,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> False
+                (True,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,True,False) -> False
+                (True,True,_) -> False
+                _ -> True
+    , \_ y z -> case (y,z) of
+                (True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,False) -> True
+                (True,True,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,False) -> True
+                (_,True,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> False
+                (True,False,_) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,False) -> True
+                (_,False,True) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> False
+                (True,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (_,True,True) -> False
+                (True,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> False
+                (True,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (False,_,False) -> True
+                (_,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> False
+                (True,False,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,False,_) -> True
+                (_,_,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> False
+                (True,False,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,False) -> True
+                (_,False,_) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \_ y z -> case (y,z) of
+                (True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,True,True) -> False
+                _ -> True
+    , \x _ _ -> case x of
+                False -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,False,_) -> False
+                (True,_,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (True,False,_) -> False
+                (True,_,True) -> False
+                _ -> True
+    , \x y _ -> case (x,y) of
+                (True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (True,_,False) -> False
+                (True,True,_) -> False
+                _ -> True
+    , \x _ z -> case (x,z) of
+                (True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (True,False,False) -> False
+                (True,True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (True,False,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (False,_,_) -> True
+                (_,False,False) -> True
+                _ -> False
+    , \x y z -> case (x,y,z) of
+                (True,False,True) -> False
+                (True,True,False) -> False
+                _ -> True
+    , \x _ z -> case (x,z) of
+                (True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (True,False,True) -> False
+                _ -> True
+    , \x y _ -> case (x,y) of
+                (True,True) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (True,True,False) -> False
+                _ -> True
+    , \x y z -> case (x,y,z) of
+                (True,True,True) -> False
+                _ -> True
+    , \_ _ _ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-default-Bool-Bool-Bool.out b/test/diff/tiers-default-Bool-Bool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Bool-Bool-Bool.out
@@ -0,0 +1,57 @@
+map length (tiers :: [[ Bool->Bool->Bool ]])  =  [16]
+
+length (list :: [ Bool->Bool->Bool ])  =  Infinity
+
+allUnique (list :: [ Bool->Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Bool->Bool ])  =  0 % 1
+
+tiers :: [Bool->Bool->Bool]  =
+  [ [ \_ _ -> False
+    , \x y -> case (x,y) of
+              (True,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              False -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,True) -> True
+              _ -> False
+    , \_ y -> case y of
+              False -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,False) -> False
+              (True,True) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,False) -> True
+              (True,True) -> True
+              _ -> False
+    , \_ y -> case y of
+              False -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,True) -> False
+              _ -> True
+    , \x _ -> case x of
+              False -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,True) -> False
+              _ -> True
+    , \_ _ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-default-Bool-Bool.out b/test/diff/tiers-default-Bool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Bool-Bool.out
@@ -0,0 +1,19 @@
+map length (tiers :: [[ Bool->Bool ]])  =  [4]
+
+length (list :: [ Bool->Bool ])  =  4
+
+allUnique (list :: [ Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Bool ])  =  0 % 1
+
+tiers :: [Bool->Bool]  =
+  [ [ \_ -> False
+    , \x -> case x of
+            False -> False
+            True -> True
+    , \x -> case x of
+            False -> True
+            True -> False
+    , \_ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-default-Bool-Int-Bool.out b/test/diff/tiers-default-Bool-Int-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Bool-Int-Bool.out
@@ -0,0 +1,709 @@
+map length (tiers :: [[ Bool->Int->Bool ]])  =  [4,8,12,24,36,56,...]
+
+length (list :: [ Bool->Int->Bool ])  =  Infinity
+
+allUnique (list :: [ Bool->Int->Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Int->Bool ])  =  0 % 1
+
+tiers :: [Bool->Int->Bool]  =
+  [ [ \_ _ -> False
+    , \x _ -> case x of
+              False -> False
+              _ -> True
+    , \x _ -> case x of
+              False -> True
+              _ -> False
+    , \_ _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (True,0) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,_) -> False
+              (_,0) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,_) -> True
+              (_,0) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,0) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (True,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,_) -> False
+              (_,0) -> True
+              (_,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,_) -> True
+              (_,0) -> False
+              (_,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,1) -> False
+              _ -> True
+    , \_ y -> case y of
+              0 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (_,0) -> False
+              (False,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (_,0) -> True
+              (False,_) -> True
+              _ -> False
+    , \_ y -> case y of
+              0 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (True,_) -> True
+              (_,0) -> True
+              (_,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (True,_) -> False
+              (_,0) -> False
+              (_,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,1) -> False
+              _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (True,0) -> True
+              (True,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,_) -> False
+              (_,0) -> False
+              (_,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,_) -> False
+              (_,0) -> True
+              (_,1) -> True
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,_) -> True
+              (_,0) -> True
+              (_,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,_) -> True
+              (_,0) -> False
+              (_,1) -> False
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,0) -> False
+              (True,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (True,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,_) -> False
+              (_,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,_) -> True
+              (_,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (True,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,0) -> True
+              (False,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (_,1) -> True
+              (False,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (_,1) -> False
+              (False,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,0) -> False
+              (False,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (False,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (_,1) -> True
+              (False,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (True,_) -> True
+              (_,0) -> True
+              (_,1) -> False
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (_,1) -> False
+              (False,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (False,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (True,_) -> False
+              (_,0) -> False
+              (_,1) -> True
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,-1) -> False
+              _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (True,0) -> True
+              (True,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,_) -> False
+              (_,0) -> False
+              (_,1) -> True
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,_) -> False
+              (_,0) -> True
+              (_,1) -> True
+              (_,-1) -> True
+              (_,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,_) -> True
+              (_,0) -> True
+              (_,1) -> False
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,_) -> True
+              (_,0) -> False
+              (_,1) -> False
+              (_,-1) -> False
+              (_,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,0) -> False
+              (True,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (True,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (True,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (_,0) -> False
+              (False,_) -> False
+              (_,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,_) -> False
+              (_,1) -> True
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (_,0) -> True
+              (False,_) -> True
+              (_,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,_) -> True
+              (_,1) -> False
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (True,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (True,-1) -> False
+              _ -> True
+    , \_ y -> case y of
+              1 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (_,0) -> True
+              (False,1) -> True
+              (_,1) -> False
+              (False,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (_,0) -> False
+              (False,1) -> False
+              (_,1) -> True
+              (False,_) -> True
+              _ -> False
+    , \_ y -> case y of
+              1 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (_,0) -> False
+              (_,1) -> True
+              (False,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,0) -> True
+              (False,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,1) -> False
+              (True,_) -> True
+              (_,1) -> True
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (_,0) -> True
+              (_,1) -> False
+              (False,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,1) -> True
+              (True,_) -> False
+              (_,1) -> False
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,0) -> False
+              (False,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (False,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,1) -> False
+              (True,_) -> True
+              (_,1) -> True
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (True,_) -> True
+              (_,0) -> True
+              (_,1) -> False
+              (_,-1) -> False
+              (_,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,1) -> True
+              (True,_) -> False
+              (_,1) -> False
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (False,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (True,_) -> False
+              (_,0) -> False
+              (_,1) -> True
+              (_,-1) -> True
+              (_,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,2) -> False
+              _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (True,0) -> True
+              (True,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,1) -> True
+              (True,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,-2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,_) -> False
+              (_,0) -> False
+              (_,1) -> True
+              (_,-1) -> True
+              (_,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,_) -> False
+              (_,0) -> True
+              (_,1) -> False
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,_) -> False
+              (_,0) -> True
+              (_,1) -> True
+              (_,-1) -> True
+              (_,2) -> True
+              (_,-2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,_) -> True
+              (_,0) -> True
+              (_,1) -> False
+              (_,-1) -> False
+              (_,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,_) -> True
+              (_,0) -> False
+              (_,1) -> True
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,_) -> True
+              (_,0) -> False
+              (_,1) -> False
+              (_,-1) -> False
+              (_,2) -> False
+              (_,-2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,0) -> False
+              (True,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,1) -> False
+              (True,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,-2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (True,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (True,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (_,0) -> False
+              (False,_) -> False
+              (_,1) -> True
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,_) -> False
+              (_,1) -> True
+              (_,-1) -> True
+              (_,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (_,0) -> True
+              (False,_) -> True
+              (_,1) -> False
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,_) -> True
+              (_,1) -> False
+              (_,-1) -> False
+              (_,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (True,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (True,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,0) -> True
+              (_,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,1) -> True
+              (True,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,1) -> True
+              (_,1) -> False
+              (False,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (_,0) -> True
+              (_,1) -> True
+              (False,_) -> False
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,1) -> False
+              (_,1) -> True
+              (False,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (_,0) -> False
+              (_,1) -> False
+              (False,_) -> True
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,0) -> False
+              (_,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,1) -> False
+              (True,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (_,1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,1) -> True
+              (_,1) -> False
+              (False,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,1) -> True
+              (False,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (_,0) -> True
+              (_,1) -> False
+              (_,-1) -> True
+              (False,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,1) -> False
+              (_,1) -> True
+              (False,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (_,1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (_,0) -> False
+              (_,1) -> True
+              (_,-1) -> False
+              (False,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,1) -> False
+              (False,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (_,0) -> False
+              (False,1) -> False
+              (True,_) -> True
+              (_,1) -> True
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (True,0) -> True
+              (False,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,1) -> False
+              (True,_) -> True
+              (_,1) -> True
+              (_,-1) -> False
+              (_,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (_,0) -> True
+              (False,1) -> True
+              (True,_) -> False
+              (_,1) -> False
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,1) -> True
+              (True,_) -> False
+              (_,1) -> False
+              (_,-1) -> True
+              (_,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (True,0) -> False
+              (False,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (False,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> True
+              (False,1) -> False
+              (True,_) -> True
+              (_,1) -> True
+              (_,-1) -> False
+              (_,2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,1) -> True
+              (False,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (True,_) -> True
+              (_,0) -> True
+              (_,1) -> True
+              (_,-1) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,-2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (True,_) -> True
+              (_,0) -> True
+              (_,1) -> False
+              (_,-1) -> False
+              (_,2) -> False
+              (_,-2) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,0) -> False
+              (False,1) -> True
+              (True,_) -> False
+              (_,1) -> False
+              (_,-1) -> True
+              (_,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> False
+              (False,2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (True,_) -> False
+              (_,0) -> False
+              (_,1) -> False
+              (_,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,1) -> False
+              (False,-1) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,0) -> True
+              (True,_) -> False
+              (_,0) -> False
+              (_,1) -> True
+              (_,-1) -> True
+              (_,2) -> True
+              (_,-2) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (False,-2) -> False
+              _ -> True
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Bool-MBool.out b/test/diff/tiers-default-Bool-MBool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Bool-MBool.out
@@ -0,0 +1,33 @@
+map length (tiers :: [[ Bool->Maybe Bool ]])  =  [1,4,4]
+
+length (list :: [ Bool->Maybe Bool ])  =  9
+
+allUnique (list :: [ Bool->Maybe Bool ])  =  True
+
+ratioRepetitions (list :: [ Bool->Maybe Bool ])  =  0 % 1
+
+tiers :: [Bool->Maybe Bool]  =
+  [ [\_ -> Nothing]
+  , [ \x -> case x of
+            False -> Nothing
+            True -> Just False
+    , \x -> case x of
+            False -> Nothing
+            True -> Just True
+    , \x -> case x of
+            False -> Just False
+            True -> Nothing
+    , \x -> case x of
+            False -> Just True
+            True -> Nothing
+    ]
+  , [ \_ -> Just False
+    , \x -> case x of
+            False -> Just False
+            True -> Just True
+    , \x -> case x of
+            False -> Just True
+            True -> Just False
+    , \_ -> Just True
+    ]
+  ]
diff --git a/test/diff/tiers-default-Bool-U.out b/test/diff/tiers-default-Bool-U.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Bool-U.out
@@ -0,0 +1,10 @@
+map length (tiers :: [[ Bool->() ]])  =  [1]
+
+length (list :: [ Bool->() ])  =  1
+
+allUnique (list :: [ Bool->() ])  =  True
+
+ratioRepetitions (list :: [ Bool->() ])  =  0 % 1
+
+tiers :: [Bool->()]  =
+  [[\_ -> ()]]
diff --git a/test/diff/tiers-default-Bools-Bools.out b/test/diff/tiers-default-Bools-Bools.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Bools-Bools.out
@@ -0,0 +1,1137 @@
+map length (tiers :: [[ [Bool]->[Bool] ]])  =  [1,2,8,26,88,278,...]
+
+length (list :: [ [Bool]->[Bool] ])  =  Infinity
+
+allUnique (list :: [ [Bool]->[Bool] ])  =  True
+
+ratioRepetitions (list :: [ [Bool]->[Bool] ])  =  0 % 1
+
+tiers :: [[Bool]->[Bool]]  =
+  [ [\_ -> []]
+  , [ \_ -> [False]
+    , \_ -> [True]
+    ]
+  , [ \x -> case x of
+            [] -> [False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True]
+            _ -> []
+    , \x -> case x of
+            [] -> []
+            _ -> [False]
+    , \x -> case x of
+            [] -> []
+            _ -> [True]
+    , \_ -> [False,False]
+    , \_ -> [False,True]
+    , \_ -> [True,False]
+    , \_ -> [True,True]
+    ]
+  , [ \x -> case x of
+            [] -> [False,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,True]
+            _ -> []
+    , \x -> case x of
+            [False] -> [False]
+            _ -> []
+    , \x -> case x of
+            [False] -> [True]
+            _ -> []
+    , \x -> case x of
+            [True] -> [False]
+            _ -> []
+    , \x -> case x of
+            [True] -> [True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True]
+            _ -> [False]
+    , \x -> case x of
+            [False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [True]
+    , \x -> case x of
+            [False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,True]
+    , \_ -> [False,False,False]
+    , \_ -> [False,False,True]
+    , \_ -> [False,True,False]
+    , \_ -> [False,True,True]
+    , \_ -> [True,False,False]
+    , \_ -> [True,False,True]
+    , \_ -> [True,True,False]
+    , \_ -> [True,True,True]
+    ]
+  , [ \x -> case x of
+            [] -> [False,False,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,False,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,True,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,True,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,False,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,False,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,True,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,True,True]
+            _ -> []
+    , \x -> case x of
+            [False] -> [False,False]
+            _ -> []
+    , \x -> case x of
+            [False] -> [False,True]
+            _ -> []
+    , \x -> case x of
+            [False] -> [True,False]
+            _ -> []
+    , \x -> case x of
+            [False] -> [True,True]
+            _ -> []
+    , \x -> case x of
+            [True] -> [False,False]
+            _ -> []
+    , \x -> case x of
+            [True] -> [False,True]
+            _ -> []
+    , \x -> case x of
+            [True] -> [True,False]
+            _ -> []
+    , \x -> case x of
+            [True] -> [True,True]
+            _ -> []
+    , \x -> case x of
+            [False,False] -> [False]
+            _ -> []
+    , \x -> case x of
+            [False,False] -> [True]
+            _ -> []
+    , \x -> case x of
+            [False,True] -> [False]
+            _ -> []
+    , \x -> case x of
+            [False,True] -> [True]
+            _ -> []
+    , \x -> case x of
+            [True,False] -> [False]
+            _ -> []
+    , \x -> case x of
+            [True,False] -> [True]
+            _ -> []
+    , \x -> case x of
+            [True,True] -> [False]
+            _ -> []
+    , \x -> case x of
+            [True,True] -> [True]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,False]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [False,True]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [True,False]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [True,True]
+            _ -> [False]
+    , \x -> case x of
+            [False] -> [True]
+            _ -> [False]
+    , \x -> case x of
+            [True] -> [True]
+            _ -> [False]
+    , \x -> case x of
+            [] -> []
+            [False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [] -> []
+            [True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [False,False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [False,True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [True,False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [True,True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [] -> [False,False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [False,True]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [True,False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [True,True]
+            _ -> [True]
+    , \x -> case x of
+            [False] -> [False]
+            _ -> [True]
+    , \x -> case x of
+            [True] -> [False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> []
+            [False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [] -> []
+            [True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [False,False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [False,True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [True,False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [True,True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [False,False]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [False,False]
+    , \x -> case x of
+            [False] -> []
+            _ -> [False,False]
+    , \x -> case x of
+            [True] -> []
+            _ -> [False,False]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [False,True]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [False,True]
+    , \x -> case x of
+            [False] -> []
+            _ -> [False,True]
+    , \x -> case x of
+            [True] -> []
+            _ -> [False,True]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [True,False]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [True,False]
+    , \x -> case x of
+            [False] -> []
+            _ -> [True,False]
+    , \x -> case x of
+            [True] -> []
+            _ -> [True,False]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [True,True]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [True,True]
+    , \x -> case x of
+            [False] -> []
+            _ -> [True,True]
+    , \x -> case x of
+            [True] -> []
+            _ -> [True,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,False,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,False,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,True,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,True,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,False,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,False,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,True,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,True,True]
+    , \_ -> [False,False,False,False]
+    , \_ -> [False,False,False,True]
+    , \_ -> [False,False,True,False]
+    , \_ -> [False,False,True,True]
+    , \_ -> [False,True,False,False]
+    , \_ -> [False,True,False,True]
+    , \_ -> [False,True,True,False]
+    , \_ -> [False,True,True,True]
+    , \_ -> [True,False,False,False]
+    , \_ -> [True,False,False,True]
+    , \_ -> [True,False,True,False]
+    , \_ -> [True,False,True,True]
+    , \_ -> [True,True,False,False]
+    , \_ -> [True,True,False,True]
+    , \_ -> [True,True,True,False]
+    , \_ -> [True,True,True,True]
+    ]
+  , [ \x -> case x of
+            [] -> [False,False,False,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,False,False,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,False,True,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,False,True,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,True,False,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,True,False,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,True,True,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,True,True,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,False,False,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,False,False,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,False,True,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,False,True,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,True,False,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,True,False,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,True,True,False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True,True,True,True]
+            _ -> []
+    , \x -> case x of
+            [False] -> [False,False,False]
+            _ -> []
+    , \x -> case x of
+            [False] -> [False,False,True]
+            _ -> []
+    , \x -> case x of
+            [False] -> [False,True,False]
+            _ -> []
+    , \x -> case x of
+            [False] -> [False,True,True]
+            _ -> []
+    , \x -> case x of
+            [False] -> [True,False,False]
+            _ -> []
+    , \x -> case x of
+            [False] -> [True,False,True]
+            _ -> []
+    , \x -> case x of
+            [False] -> [True,True,False]
+            _ -> []
+    , \x -> case x of
+            [False] -> [True,True,True]
+            _ -> []
+    , \x -> case x of
+            [True] -> [False,False,False]
+            _ -> []
+    , \x -> case x of
+            [True] -> [False,False,True]
+            _ -> []
+    , \x -> case x of
+            [True] -> [False,True,False]
+            _ -> []
+    , \x -> case x of
+            [True] -> [False,True,True]
+            _ -> []
+    , \x -> case x of
+            [True] -> [True,False,False]
+            _ -> []
+    , \x -> case x of
+            [True] -> [True,False,True]
+            _ -> []
+    , \x -> case x of
+            [True] -> [True,True,False]
+            _ -> []
+    , \x -> case x of
+            [True] -> [True,True,True]
+            _ -> []
+    , \x -> case x of
+            [] -> [False]
+            [False] -> [False]
+            _ -> []
+    , \x -> case x of
+            [] -> [False]
+            [False] -> [True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True]
+            [False] -> [False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True]
+            [False] -> [True]
+            _ -> []
+    , \x -> case x of
+            [] -> [False]
+            [True] -> [False]
+            _ -> []
+    , \x -> case x of
+            [] -> [False]
+            [True] -> [True]
+            _ -> []
+    , \x -> case x of
+            [] -> [True]
+            [True] -> [False]
+            _ -> []
+    , \x -> case x of
+            [] -> [True]
+            [True] -> [True]
+            _ -> []
+    , \x -> case x of
+            [False,False] -> [False,False]
+            _ -> []
+    , \x -> case x of
+            [False,False] -> [False,True]
+            _ -> []
+    , \x -> case x of
+            [False,False] -> [True,False]
+            _ -> []
+    , \x -> case x of
+            [False,False] -> [True,True]
+            _ -> []
+    , \x -> case x of
+            [False,True] -> [False,False]
+            _ -> []
+    , \x -> case x of
+            [False,True] -> [False,True]
+            _ -> []
+    , \x -> case x of
+            [False,True] -> [True,False]
+            _ -> []
+    , \x -> case x of
+            [False,True] -> [True,True]
+            _ -> []
+    , \x -> case x of
+            [True,False] -> [False,False]
+            _ -> []
+    , \x -> case x of
+            [True,False] -> [False,True]
+            _ -> []
+    , \x -> case x of
+            [True,False] -> [True,False]
+            _ -> []
+    , \x -> case x of
+            [True,False] -> [True,True]
+            _ -> []
+    , \x -> case x of
+            [True,True] -> [False,False]
+            _ -> []
+    , \x -> case x of
+            [True,True] -> [False,True]
+            _ -> []
+    , \x -> case x of
+            [True,True] -> [True,False]
+            _ -> []
+    , \x -> case x of
+            [True,True] -> [True,True]
+            _ -> []
+    , \x -> case x of
+            [False,False,False] -> [False]
+            _ -> []
+    , \x -> case x of
+            [False,False,False] -> [True]
+            _ -> []
+    , \x -> case x of
+            [False,False,True] -> [False]
+            _ -> []
+    , \x -> case x of
+            [False,False,True] -> [True]
+            _ -> []
+    , \x -> case x of
+            [False,True,False] -> [False]
+            _ -> []
+    , \x -> case x of
+            [False,True,False] -> [True]
+            _ -> []
+    , \x -> case x of
+            [False,True,True] -> [False]
+            _ -> []
+    , \x -> case x of
+            [False,True,True] -> [True]
+            _ -> []
+    , \x -> case x of
+            [True,False,False] -> [False]
+            _ -> []
+    , \x -> case x of
+            [True,False,False] -> [True]
+            _ -> []
+    , \x -> case x of
+            [True,False,True] -> [False]
+            _ -> []
+    , \x -> case x of
+            [True,False,True] -> [True]
+            _ -> []
+    , \x -> case x of
+            [True,True,False] -> [False]
+            _ -> []
+    , \x -> case x of
+            [True,True,False] -> [True]
+            _ -> []
+    , \x -> case x of
+            [True,True,True] -> [False]
+            _ -> []
+    , \x -> case x of
+            [True,True,True] -> [True]
+            _ -> []
+    , \x -> case x of
+            [] -> [False,False,False]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [False,False,True]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [False,True,False]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [False,True,True]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [True,False,False]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [True,False,True]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [True,True,False]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [True,True,True]
+            _ -> [False]
+    , \x -> case x of
+            [False] -> [False,False]
+            _ -> [False]
+    , \x -> case x of
+            [False] -> [False,True]
+            _ -> [False]
+    , \x -> case x of
+            [False] -> [True,False]
+            _ -> [False]
+    , \x -> case x of
+            [False] -> [True,True]
+            _ -> [False]
+    , \x -> case x of
+            [True] -> [False,False]
+            _ -> [False]
+    , \x -> case x of
+            [True] -> [False,True]
+            _ -> [False]
+    , \x -> case x of
+            [True] -> [True,False]
+            _ -> [False]
+    , \x -> case x of
+            [True] -> [True,True]
+            _ -> [False]
+    , \x -> case x of
+            [] -> []
+            [False] -> [True]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [True]
+            [False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [] -> []
+            [True] -> [True]
+            _ -> [False]
+    , \x -> case x of
+            [] -> [True]
+            [True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [False,False] -> [True]
+            _ -> [False]
+    , \x -> case x of
+            [False,True] -> [True]
+            _ -> [False]
+    , \x -> case x of
+            [True,False] -> [True]
+            _ -> [False]
+    , \x -> case x of
+            [True,True] -> [True]
+            _ -> [False]
+    , \x -> case x of
+            [] -> []
+            [False,False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [] -> []
+            [False,True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [] -> []
+            [True,False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [] -> []
+            [True,True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [False] -> []
+            [True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [False,False,False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [False,False,True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [False,True,False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [False,True,True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [True,False,False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [True,False,True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [True,True,False] -> []
+            _ -> [False]
+    , \x -> case x of
+            [True,True,True] -> []
+            _ -> [False]
+    , \x -> case x of
+            [] -> [False,False,False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [False,False,True]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [False,True,False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [False,True,True]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [True,False,False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [True,False,True]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [True,True,False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [True,True,True]
+            _ -> [True]
+    , \x -> case x of
+            [False] -> [False,False]
+            _ -> [True]
+    , \x -> case x of
+            [False] -> [False,True]
+            _ -> [True]
+    , \x -> case x of
+            [False] -> [True,False]
+            _ -> [True]
+    , \x -> case x of
+            [False] -> [True,True]
+            _ -> [True]
+    , \x -> case x of
+            [True] -> [False,False]
+            _ -> [True]
+    , \x -> case x of
+            [True] -> [False,True]
+            _ -> [True]
+    , \x -> case x of
+            [True] -> [True,False]
+            _ -> [True]
+    , \x -> case x of
+            [True] -> [True,True]
+            _ -> [True]
+    , \x -> case x of
+            [] -> []
+            [False] -> [False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [False]
+            [False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [] -> []
+            [True] -> [False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> [False]
+            [True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [False,False] -> [False]
+            _ -> [True]
+    , \x -> case x of
+            [False,True] -> [False]
+            _ -> [True]
+    , \x -> case x of
+            [True,False] -> [False]
+            _ -> [True]
+    , \x -> case x of
+            [True,True] -> [False]
+            _ -> [True]
+    , \x -> case x of
+            [] -> []
+            [False,False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [] -> []
+            [False,True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [] -> []
+            [True,False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [] -> []
+            [True,True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [False] -> []
+            [True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [False,False,False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [False,False,True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [False,True,False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [False,True,True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [True,False,False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [True,False,True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [True,True,False] -> []
+            _ -> [True]
+    , \x -> case x of
+            [True,True,True] -> []
+            _ -> [True]
+    , \x -> case x of
+            [] -> [False,True]
+            _ -> [False,False]
+    , \x -> case x of
+            [] -> [True,False]
+            _ -> [False,False]
+    , \x -> case x of
+            [] -> [True,True]
+            _ -> [False,False]
+    , \x -> case x of
+            [False] -> [False]
+            _ -> [False,False]
+    , \x -> case x of
+            [False] -> [True]
+            _ -> [False,False]
+    , \x -> case x of
+            [True] -> [False]
+            _ -> [False,False]
+    , \x -> case x of
+            [True] -> [True]
+            _ -> [False,False]
+    , \x -> case x of
+            [] -> []
+            [False] -> []
+            _ -> [False,False]
+    , \x -> case x of
+            [] -> []
+            [True] -> []
+            _ -> [False,False]
+    , \x -> case x of
+            [False,False] -> []
+            _ -> [False,False]
+    , \x -> case x of
+            [False,True] -> []
+            _ -> [False,False]
+    , \x -> case x of
+            [True,False] -> []
+            _ -> [False,False]
+    , \x -> case x of
+            [True,True] -> []
+            _ -> [False,False]
+    , \x -> case x of
+            [] -> [False,False]
+            _ -> [False,True]
+    , \x -> case x of
+            [] -> [True,False]
+            _ -> [False,True]
+    , \x -> case x of
+            [] -> [True,True]
+            _ -> [False,True]
+    , \x -> case x of
+            [False] -> [False]
+            _ -> [False,True]
+    , \x -> case x of
+            [False] -> [True]
+            _ -> [False,True]
+    , \x -> case x of
+            [True] -> [False]
+            _ -> [False,True]
+    , \x -> case x of
+            [True] -> [True]
+            _ -> [False,True]
+    , \x -> case x of
+            [] -> []
+            [False] -> []
+            _ -> [False,True]
+    , \x -> case x of
+            [] -> []
+            [True] -> []
+            _ -> [False,True]
+    , \x -> case x of
+            [False,False] -> []
+            _ -> [False,True]
+    , \x -> case x of
+            [False,True] -> []
+            _ -> [False,True]
+    , \x -> case x of
+            [True,False] -> []
+            _ -> [False,True]
+    , \x -> case x of
+            [True,True] -> []
+            _ -> [False,True]
+    , \x -> case x of
+            [] -> [False,False]
+            _ -> [True,False]
+    , \x -> case x of
+            [] -> [False,True]
+            _ -> [True,False]
+    , \x -> case x of
+            [] -> [True,True]
+            _ -> [True,False]
+    , \x -> case x of
+            [False] -> [False]
+            _ -> [True,False]
+    , \x -> case x of
+            [False] -> [True]
+            _ -> [True,False]
+    , \x -> case x of
+            [True] -> [False]
+            _ -> [True,False]
+    , \x -> case x of
+            [True] -> [True]
+            _ -> [True,False]
+    , \x -> case x of
+            [] -> []
+            [False] -> []
+            _ -> [True,False]
+    , \x -> case x of
+            [] -> []
+            [True] -> []
+            _ -> [True,False]
+    , \x -> case x of
+            [False,False] -> []
+            _ -> [True,False]
+    , \x -> case x of
+            [False,True] -> []
+            _ -> [True,False]
+    , \x -> case x of
+            [True,False] -> []
+            _ -> [True,False]
+    , \x -> case x of
+            [True,True] -> []
+            _ -> [True,False]
+    , \x -> case x of
+            [] -> [False,False]
+            _ -> [True,True]
+    , \x -> case x of
+            [] -> [False,True]
+            _ -> [True,True]
+    , \x -> case x of
+            [] -> [True,False]
+            _ -> [True,True]
+    , \x -> case x of
+            [False] -> [False]
+            _ -> [True,True]
+    , \x -> case x of
+            [False] -> [True]
+            _ -> [True,True]
+    , \x -> case x of
+            [True] -> [False]
+            _ -> [True,True]
+    , \x -> case x of
+            [True] -> [True]
+            _ -> [True,True]
+    , \x -> case x of
+            [] -> []
+            [False] -> []
+            _ -> [True,True]
+    , \x -> case x of
+            [] -> []
+            [True] -> []
+            _ -> [True,True]
+    , \x -> case x of
+            [False,False] -> []
+            _ -> [True,True]
+    , \x -> case x of
+            [False,True] -> []
+            _ -> [True,True]
+    , \x -> case x of
+            [True,False] -> []
+            _ -> [True,True]
+    , \x -> case x of
+            [True,True] -> []
+            _ -> [True,True]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [False,False,False]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [False,False,False]
+    , \x -> case x of
+            [False] -> []
+            _ -> [False,False,False]
+    , \x -> case x of
+            [True] -> []
+            _ -> [False,False,False]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [False,False,True]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [False,False,True]
+    , \x -> case x of
+            [False] -> []
+            _ -> [False,False,True]
+    , \x -> case x of
+            [True] -> []
+            _ -> [False,False,True]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [False,True,False]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [False,True,False]
+    , \x -> case x of
+            [False] -> []
+            _ -> [False,True,False]
+    , \x -> case x of
+            [True] -> []
+            _ -> [False,True,False]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [False,True,True]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [False,True,True]
+    , \x -> case x of
+            [False] -> []
+            _ -> [False,True,True]
+    , \x -> case x of
+            [True] -> []
+            _ -> [False,True,True]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [True,False,False]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [True,False,False]
+    , \x -> case x of
+            [False] -> []
+            _ -> [True,False,False]
+    , \x -> case x of
+            [True] -> []
+            _ -> [True,False,False]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [True,False,True]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [True,False,True]
+    , \x -> case x of
+            [False] -> []
+            _ -> [True,False,True]
+    , \x -> case x of
+            [True] -> []
+            _ -> [True,False,True]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [True,True,False]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [True,True,False]
+    , \x -> case x of
+            [False] -> []
+            _ -> [True,True,False]
+    , \x -> case x of
+            [True] -> []
+            _ -> [True,True,False]
+    , \x -> case x of
+            [] -> [False]
+            _ -> [True,True,True]
+    , \x -> case x of
+            [] -> [True]
+            _ -> [True,True,True]
+    , \x -> case x of
+            [False] -> []
+            _ -> [True,True,True]
+    , \x -> case x of
+            [True] -> []
+            _ -> [True,True,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,False,False,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,False,False,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,False,True,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,False,True,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,True,False,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,True,False,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,True,True,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [False,True,True,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,False,False,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,False,False,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,False,True,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,False,True,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,True,False,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,True,False,True]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,True,True,False]
+    , \x -> case x of
+            [] -> []
+            _ -> [True,True,True,True]
+    , \_ -> [False,False,False,False,False]
+    , \_ -> [False,False,False,False,True]
+    , \_ -> [False,False,False,True,False]
+    , \_ -> [False,False,False,True,True]
+    , \_ -> [False,False,True,False,False]
+    , \_ -> [False,False,True,False,True]
+    , \_ -> [False,False,True,True,False]
+    , \_ -> [False,False,True,True,True]
+    , \_ -> [False,True,False,False,False]
+    , \_ -> [False,True,False,False,True]
+    , \_ -> [False,True,False,True,False]
+    , \_ -> [False,True,False,True,True]
+    , \_ -> [False,True,True,False,False]
+    , \_ -> [False,True,True,False,True]
+    , \_ -> [False,True,True,True,False]
+    , \_ -> [False,True,True,True,True]
+    , \_ -> [True,False,False,False,False]
+    , \_ -> [True,False,False,False,True]
+    , \_ -> [True,False,False,True,False]
+    , \_ -> [True,False,False,True,True]
+    , \_ -> [True,False,True,False,False]
+    , \_ -> [True,False,True,False,True]
+    , \_ -> [True,False,True,True,False]
+    , \_ -> [True,False,True,True,True]
+    , \_ -> [True,True,False,False,False]
+    , \_ -> [True,True,False,False,True]
+    , \_ -> [True,True,False,True,False]
+    , \_ -> [True,True,False,True,True]
+    , \_ -> [True,True,True,False,False]
+    , \_ -> [True,True,True,False,True]
+    , \_ -> [True,True,True,True,False]
+    , \_ -> [True,True,True,True,True]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Int-Bool-Bool.out b/test/diff/tiers-default-Int-Bool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Int-Bool-Bool.out
@@ -0,0 +1,1137 @@
+map length (tiers :: [[ Int->Bool->Bool ]])  =  [4,12,12,48,48,84,...]
+
+length (list :: [ Int->Bool->Bool ])  =  Infinity
+
+allUnique (list :: [ Int->Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Int->Bool->Bool ])  =  0 % 1
+
+tiers :: [Int->Bool->Bool]  =
+  [ [ \_ _ -> False
+    , \_ y -> case y of
+              False -> False
+              _ -> True
+    , \_ y -> case y of
+              False -> True
+              _ -> False
+    , \_ _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (0,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              0 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              0 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (1,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              1 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,False) -> False
+              (0,_) -> True
+              (1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (_,True) -> True
+              (1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (_,True) -> False
+              (1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,False) -> True
+              (0,_) -> False
+              (1,_) -> True
+              _ -> False
+    , \x _ -> case x of
+              1 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,True) -> False
+              _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (0,True) -> True
+              (1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,True) -> True
+              (1,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,True) -> True
+              (1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (1,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              0 -> True
+              1 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (-1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (-1,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              -1 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (_,False) -> False
+              (1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,False) -> True
+              (1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,_) -> True
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,False) -> True
+              (1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,_) -> True
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,_) -> True
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (_,False) -> False
+              (0,_) -> True
+              (1,_) -> True
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,False) -> False
+              (1,_) -> True
+              (-1,False) -> True
+              (-1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (_,True) -> True
+              (1,_) -> False
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,_) -> False
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,_) -> False
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,False) -> False
+              (1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,_) -> False
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,False) -> False
+              (1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (_,False) -> True
+              (1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (_,True) -> False
+              (1,_) -> True
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,False) -> True
+              (1,_) -> False
+              (-1,False) -> False
+              (-1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,False) -> True
+              (0,_) -> False
+              (1,_) -> False
+              (-1,_) -> True
+              _ -> False
+    , \x _ -> case x of
+              0 -> False
+              1 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,True) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (1,True) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              (1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              (1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              (1,True) -> False
+              _ -> True
+    , \x _ -> case x of
+              -1 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (-1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (-1,True) -> False
+              _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (0,True) -> True
+              (-1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,True) -> True
+              (-1,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,True) -> True
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (-1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (-1,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (-1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (-1,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              0 -> True
+              -1 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (2,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (2,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              2 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (_,False) -> False
+              (1,_) -> True
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (-1,False) -> True
+              (-1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (_,True) -> True
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (_,False) -> False
+              (1,_) -> True
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (-1,False) -> True
+              (-1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (_,True) -> True
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (_,False) -> False
+              (1,_) -> True
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,False) -> False
+              (1,_) -> True
+              (-1,False) -> True
+              (-1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,False) -> False
+              (1,_) -> True
+              (_,True) -> True
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,False) -> False
+              (0,_) -> True
+              (1,_) -> True
+              (-1,_) -> True
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,True) -> True
+              (1,False) -> False
+              (1,True) -> True
+              (-1,False) -> False
+              (-1,True) -> True
+              (2,False) -> True
+              (2,True) -> False
+              ...
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (_,True) -> True
+              (1,_) -> False
+              (-1,_) -> False
+              (2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,False) -> True
+              (1,_) -> False
+              (_,True) -> False
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,False) -> True
+              (1,_) -> False
+              (-1,False) -> False
+              (-1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (_,False) -> True
+              (1,_) -> False
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (_,True) -> False
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (-1,False) -> False
+              (-1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (_,False) -> True
+              (1,_) -> False
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (_,True) -> False
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (-1,False) -> False
+              (-1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (_,False) -> True
+              (1,_) -> False
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (_,True) -> False
+              (1,_) -> True
+              (-1,_) -> True
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,True) -> False
+              (1,False) -> True
+              (1,True) -> False
+              (-1,False) -> True
+              (-1,True) -> False
+              (2,False) -> False
+              (2,True) -> True
+              ...
+    , \x y -> case (x,y) of
+              (_,False) -> True
+              (0,_) -> False
+              (1,_) -> False
+              (-1,_) -> False
+              (2,_) -> True
+              _ -> False
+    , \x _ -> case x of
+              0 -> False
+              -1 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (-1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (-1,True) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (-1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (-1,True) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              (-1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              (-1,True) -> False
+              _ -> True
+    , \x _ -> case x of
+              2 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (2,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (2,True) -> False
+              _ -> True
+    ]
+  , [ \x y -> case (x,y) of
+              (0,True) -> True
+              (2,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,True) -> True
+              (2,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,True) -> True
+              (2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (2,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (2,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (2,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (2,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              0 -> True
+              2 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (1,True) -> True
+              (-1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (1,True) -> True
+              (-1,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (1,True) -> True
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (1,False) -> True
+              (-1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (1,False) -> True
+              (-1,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (1,False) -> True
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (1,_) -> True
+              (-1,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (1,_) -> True
+              (-1,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              1 -> True
+              -1 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (-2,True) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (-2,False) -> True
+              _ -> False
+    , \x _ -> case x of
+              -2 -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (_,False) -> False
+              (1,_) -> True
+              (-1,_) -> True
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,True) -> False
+              (1,False) -> False
+              (1,True) -> True
+              (-1,False) -> False
+              (-1,True) -> True
+              (2,False) -> True
+              (2,True) -> False
+              ...
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (_,True) -> True
+              (-1,_) -> False
+              (2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (_,False) -> False
+              (1,_) -> True
+              (-1,_) -> True
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,True) -> False
+              (1,False) -> False
+              (1,True) -> True
+              (-1,False) -> False
+              (-1,True) -> True
+              (2,False) -> True
+              (2,True) -> False
+              ...
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (_,True) -> True
+              (-1,_) -> False
+              (2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (_,False) -> False
+              (1,_) -> True
+              (-1,_) -> True
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,True) -> True
+              (1,False) -> False
+              (1,True) -> True
+              (-1,False) -> False
+              (-1,True) -> True
+              (2,False) -> True
+              (2,True) -> False
+              ...
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,False) -> False
+              (1,_) -> True
+              (_,True) -> True
+              (-1,_) -> False
+              (2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,False) -> False
+              (0,_) -> True
+              (1,_) -> False
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,_) -> False
+              (-1,False) -> True
+              (-1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,_) -> False
+              (-1,_) -> True
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (-1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (-1,False) -> True
+              (-1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (-1,_) -> True
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,_) -> True
+              (-1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,_) -> True
+              (-1,False) -> True
+              (-1,_) -> False
+              (_,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (_,True) -> True
+              (1,_) -> True
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,False) -> False
+              (0,_) -> True
+              (1,_) -> True
+              (-1,_) -> True
+              (2,_) -> True
+              (-2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,True) -> True
+              (1,False) -> False
+              (1,True) -> True
+              (-1,False) -> False
+              (-1,True) -> True
+              (2,False) -> False
+              (2,True) -> True
+              ...
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (_,True) -> True
+              (1,_) -> False
+              (-1,_) -> False
+              (2,_) -> False
+              (-2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (1,False) -> True
+              (1,_) -> False
+              (_,True) -> False
+              (-1,_) -> True
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,True) -> False
+              (1,False) -> True
+              (1,True) -> False
+              (-1,False) -> True
+              (-1,True) -> False
+              (2,False) -> False
+              (2,True) -> True
+              ...
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (_,False) -> True
+              (1,_) -> False
+              (-1,_) -> False
+              (2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (_,True) -> False
+              (-1,_) -> True
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,True) -> True
+              (1,False) -> True
+              (1,True) -> False
+              (-1,False) -> True
+              (-1,True) -> False
+              (2,False) -> False
+              (2,True) -> True
+              ...
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (0,_) -> True
+              (_,False) -> True
+              (1,_) -> False
+              (-1,_) -> False
+              (2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (1,False) -> True
+              (1,_) -> False
+              (_,True) -> False
+              (-1,_) -> True
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,True) -> True
+              (1,False) -> True
+              (1,True) -> False
+              (-1,False) -> True
+              (-1,True) -> False
+              (2,False) -> False
+              (2,True) -> True
+              ...
+    , \x y -> case (x,y) of
+              (0,_) -> True
+              (_,False) -> True
+              (1,_) -> False
+              (-1,_) -> False
+              (2,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (_,True) -> False
+              (1,_) -> False
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,_) -> False
+              (-1,False) -> False
+              (-1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,_) -> False
+              (-1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (-1,_) -> False
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (-1,False) -> False
+              (-1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,False) -> False
+              (1,_) -> True
+              (-1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,_) -> True
+              (-1,_) -> False
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (1,_) -> True
+              (-1,False) -> False
+              (-1,_) -> True
+              (_,False) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (_,False) -> True
+              (0,_) -> False
+              (1,_) -> True
+              (-1,_) -> True
+              _ -> False
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,_) -> False
+              (_,True) -> False
+              (1,_) -> True
+              (-1,_) -> True
+              (2,_) -> True
+              (-2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> True
+              (0,True) -> False
+              (1,False) -> True
+              (1,True) -> False
+              (-1,False) -> True
+              (-1,True) -> False
+              (2,False) -> True
+              (2,True) -> False
+              ...
+    , \x y -> case (x,y) of
+              (_,False) -> True
+              (0,_) -> False
+              (1,_) -> False
+              (-1,_) -> False
+              (2,_) -> False
+              (-2,_) -> True
+              _ -> False
+    , \x _ -> case x of
+              0 -> False
+              2 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (2,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,_) -> False
+              (2,True) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (2,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,False) -> False
+              (2,True) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              (2,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              (2,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (0,True) -> False
+              (2,True) -> False
+              _ -> True
+    , \x _ -> case x of
+              1 -> False
+              -1 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,_) -> False
+              (-1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,_) -> False
+              (-1,True) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,False) -> False
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,False) -> False
+              (-1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,False) -> False
+              (-1,True) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,True) -> False
+              (-1,_) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,True) -> False
+              (-1,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (1,True) -> False
+              (-1,True) -> False
+              _ -> True
+    , \x _ -> case x of
+              -2 -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (-2,False) -> False
+              _ -> True
+    , \x y -> case (x,y) of
+              (-2,True) -> False
+              _ -> True
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Int-Int-Int-Int.out b/test/diff/tiers-default-Int-Int-Int-Int.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Int-Int-Int-Int.out
@@ -0,0 +1,116 @@
+map length (tiers :: [[ Int->Int->Int->Int ]])  =  [1,1,7,25,...]
+
+length (list :: [ Int->Int->Int->Int ])  =  Infinity
+
+allUnique (list :: [ Int->Int->Int->Int ])  =  True
+
+ratioRepetitions (list :: [ Int->Int->Int->Int ])  =  0 % 1
+
+tiers :: [Int->Int->Int->Int]  =
+  [ [\_ _ _ -> 0]
+  , [\_ _ _ -> 1]
+  , [ \x _ _ -> case x of
+                0 -> 1
+                _ -> 0
+    , \x _ _ -> case x of
+                0 -> 0
+                _ -> 1
+    , \_ y _ -> case y of
+                0 -> 1
+                _ -> 0
+    , \_ y _ -> case y of
+                0 -> 0
+                _ -> 1
+    , \_ _ z -> case z of
+                0 -> 1
+                _ -> 0
+    , \_ _ z -> case z of
+                0 -> 0
+                _ -> 1
+    , \_ _ _ -> -1
+    ]
+  , [ \x y _ -> case (x,y) of
+                (0,0) -> 1
+                _ -> 0
+    , \x y _ -> case (x,y) of
+                (_,0) -> 0
+                (0,_) -> 1
+                _ -> 0
+    , \x _ z -> case (x,z) of
+                (0,0) -> 1
+                _ -> 0
+    , \x _ z -> case (x,z) of
+                (_,0) -> 0
+                (0,_) -> 1
+                _ -> 0
+    , \x _ _ -> case x of
+                0 -> -1
+                _ -> 0
+    , \x _ _ -> case x of
+                1 -> 1
+                _ -> 0
+    , \x _ _ -> case x of
+                1 -> 0
+                _ -> 1
+    , \x y _ -> case (x,y) of
+                (0,_) -> 0
+                (_,0) -> 1
+                _ -> 0
+    , \x y _ -> case (x,y) of
+                (0,_) -> 0
+                (_,0) -> 0
+                _ -> 1
+    , \x _ z -> case (x,z) of
+                (0,_) -> 0
+                (_,0) -> 1
+                _ -> 0
+    , \x _ z -> case (x,z) of
+                (0,_) -> 0
+                (_,0) -> 0
+                _ -> 1
+    , \x _ _ -> case x of
+                0 -> 0
+                _ -> -1
+    , \_ y z -> case (y,z) of
+                (0,0) -> 1
+                _ -> 0
+    , \_ y z -> case (y,z) of
+                (_,0) -> 0
+                (0,_) -> 1
+                _ -> 0
+    , \_ y _ -> case y of
+                0 -> -1
+                _ -> 0
+    , \_ y _ -> case y of
+                1 -> 1
+                _ -> 0
+    , \_ y _ -> case y of
+                1 -> 0
+                _ -> 1
+    , \_ y z -> case (y,z) of
+                (0,_) -> 0
+                (_,0) -> 1
+                _ -> 0
+    , \_ y z -> case (y,z) of
+                (0,_) -> 0
+                (_,0) -> 0
+                _ -> 1
+    , \_ y _ -> case y of
+                0 -> 0
+                _ -> -1
+    , \_ _ z -> case z of
+                0 -> -1
+                _ -> 0
+    , \_ _ z -> case z of
+                1 -> 1
+                _ -> 0
+    , \_ _ z -> case z of
+                1 -> 0
+                _ -> 1
+    , \_ _ z -> case z of
+                0 -> 0
+                _ -> -1
+    , \_ _ _ -> 2
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Int-Int-Int.out b/test/diff/tiers-default-Int-Int-Int.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Int-Int-Int.out
@@ -0,0 +1,528 @@
+map length (tiers :: [[ Int->Int->Int ]])  =  [1,1,5,13,35,81,...]
+
+length (list :: [ Int->Int->Int ])  =  Infinity
+
+allUnique (list :: [ Int->Int->Int ])  =  True
+
+ratioRepetitions (list :: [ Int->Int->Int ])  =  0 % 1
+
+tiers :: [Int->Int->Int]  =
+  [ [\_ _ -> 0]
+  , [\_ _ -> 1]
+  , [ \x _ -> case x of
+              0 -> 1
+              _ -> 0
+    , \x _ -> case x of
+              0 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              0 -> 0
+              _ -> 1
+    , \_ _ -> -1
+    ]
+  , [ \x y -> case (x,y) of
+              (0,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (0,_) -> 1
+              _ -> 0
+    , \x _ -> case x of
+              0 -> -1
+              _ -> 0
+    , \x _ -> case x of
+              1 -> 1
+              _ -> 0
+    , \x _ -> case x of
+              1 -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 0
+              _ -> -1
+    , \_ y -> case y of
+              0 -> -1
+              _ -> 0
+    , \_ y -> case y of
+              1 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              1 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 0
+              _ -> -1
+    , \_ _ -> 2
+    ]
+  , [ \x y -> case (x,y) of
+              (0,0) -> -1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (_,1) -> 0
+              (1,_) -> 0
+              (_,0) -> 0
+              (0,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (0,_) -> -1
+              _ -> 0
+    , \x _ -> case x of
+              0 -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (1,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (1,_) -> 1
+              _ -> 0
+    , \x _ -> case x of
+              1 -> -1
+              _ -> 0
+    , \x _ -> case x of
+              -1 -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 1
+              (0,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              _ -> 1
+    , \x _ -> case x of
+              0 -> -1
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 0
+              1 -> 0
+              _ -> 1
+    , \x _ -> case x of
+              -1 -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,_) -> 0
+              (_,1) -> 0
+              (1,_) -> 0
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (1,_) -> 0
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 1
+              _ -> -1
+    , \x _ -> case x of
+              1 -> 0
+              _ -> -1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> -1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (_,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,1) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              _ -> -1
+    , \x _ -> case x of
+              0 -> 0
+              _ -> 2
+    , \_ y -> case y of
+              0 -> 2
+              _ -> 0
+    , \_ y -> case y of
+              1 -> -1
+              _ -> 0
+    , \_ y -> case y of
+              -1 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              0 -> -1
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 0
+              1 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              -1 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 1
+              _ -> -1
+    , \_ y -> case y of
+              1 -> 0
+              _ -> -1
+    , \_ y -> case y of
+              0 -> 0
+              _ -> 2
+    , \_ _ -> -2
+    ]
+  , [ \x y -> case (x,y) of
+              (0,0) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,1) -> -1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,-1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> -1
+              (0,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (_,1) -> 0
+              (0,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,1) -> 1
+              (1,_) -> 0
+              (_,0) -> 0
+              (_,-1) -> 0
+              (0,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,_) -> -1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> -1
+              (_,1) -> 0
+              (1,_) -> 0
+              (_,0) -> 0
+              (0,_) -> -1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (0,_) -> 2
+              _ -> 0
+    , \x _ -> case x of
+              0 -> -2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (1,0) -> -1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (1,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (1,0) -> 1
+              (_,1) -> 0
+              (-1,_) -> 0
+              (_,0) -> 0
+              (1,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (1,_) -> -1
+              _ -> 0
+    , \x _ -> case x of
+              1 -> 2
+              _ -> 0
+    , \x _ -> case x of
+              0 -> 1
+              1 -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (-1,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (1,_) -> 0
+              (-1,_) -> 1
+              _ -> 0
+    , \x _ -> case x of
+              -1 -> -1
+              _ -> 0
+    , \x _ -> case x of
+              2 -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> -1
+              (0,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (_,1) -> 1
+              (1,_) -> 1
+              (_,0) -> 1
+              (0,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,1) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (0,_) -> -1
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 2
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 1
+              (1,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (1,0) -> 0
+              _ -> 1
+    , \x _ -> case x of
+              1 -> -1
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 0
+              -1 -> 0
+              _ -> 1
+    , \x _ -> case x of
+              2 -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (0,_) -> 1
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> -1
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 1
+              (1,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (1,_) -> 0
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,1) -> 0
+              (1,0) -> 1
+              (0,-1) -> 0
+              (1,1) -> 0
+              (-1,0) -> 0
+              (0,2) -> 0
+              (1,-1) -> 0
+              ...
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,_) -> 0
+              (_,0) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> -1
+              (_,0) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (0,_) -> 1
+              (_,1) -> 1
+              (1,_) -> 1
+              (_,0) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (1,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (-1,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,_) -> 0
+              _ -> -1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (0,_) -> 1
+              _ -> -1
+    , \x _ -> case x of
+              1 -> 1
+              _ -> -1
+    , \x _ -> case x of
+              0 -> 0
+              1 -> 0
+              _ -> -1
+    , \x _ -> case x of
+              -1 -> 0
+              _ -> -1
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> -1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> -1
+              (0,_) -> 0
+              (_,1) -> 0
+              (1,_) -> 0
+              (_,0) -> -1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (0,1) -> 1
+              (0,_) -> 0
+              (_,-1) -> 0
+              (1,_) -> 0
+              (_,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 1
+              (_,1) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (_,1) -> 0
+              (1,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 0
+              _ -> -1
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (1,_) -> 0
+              _ -> -1
+    , \x _ -> case x of
+              0 -> 1
+              _ -> 2
+    , \x _ -> case x of
+              1 -> 0
+              _ -> 2
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (_,1) -> -1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (_,1) -> 0
+              (_,-1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> -1
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (_,1) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,-1) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 1
+              _ -> -1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,1) -> 0
+              _ -> -1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              _ -> 2
+    , \x _ -> case x of
+              0 -> 0
+              _ -> -2
+    , \_ y -> case y of
+              0 -> -2
+              _ -> 0
+    , \_ y -> case y of
+              1 -> 2
+              _ -> 0
+    , \_ y -> case y of
+              0 -> 1
+              1 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              -1 -> -1
+              _ -> 0
+    , \_ y -> case y of
+              2 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              0 -> 2
+              _ -> 1
+    , \_ y -> case y of
+              1 -> -1
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 0
+              -1 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              2 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              1 -> 1
+              _ -> -1
+    , \_ y -> case y of
+              0 -> 0
+              1 -> 0
+              _ -> -1
+    , \_ y -> case y of
+              -1 -> 0
+              _ -> -1
+    , \_ y -> case y of
+              0 -> 1
+              _ -> 2
+    , \_ y -> case y of
+              1 -> 0
+              _ -> 2
+    , \_ y -> case y of
+              0 -> 0
+              _ -> -2
+    , \_ _ -> 3
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Int-Int.out b/test/diff/tiers-default-Int-Int.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Int-Int.out
@@ -0,0 +1,670 @@
+map length (tiers :: [[ Int->Int ]])  =  [1,1,3,5,10,16,30,48,80,...]
+
+length (list :: [ Int->Int ])  =  Infinity
+
+allUnique (list :: [ Int->Int ])  =  True
+
+ratioRepetitions (list :: [ Int->Int ])  =  0 % 1
+
+tiers :: [Int->Int]  =
+  [ [\_ -> 0]
+  , [\_ -> 1]
+  , [ \x -> case x of
+            0 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 0
+            _ -> 1
+    , \_ -> -1
+    ]
+  , [ \x -> case x of
+            0 -> -1
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            _ -> -1
+    , \_ -> 2
+    ]
+  , [ \x -> case x of
+            0 -> 2
+            _ -> 0
+    , \x -> case x of
+            1 -> -1
+            _ -> 0
+    , \x -> case x of
+            -1 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> -1
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            -1 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 1
+            _ -> -1
+    , \x -> case x of
+            1 -> 0
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            _ -> 2
+    , \_ -> -2
+    ]
+  , [ \x -> case x of
+            0 -> -2
+            _ -> 0
+    , \x -> case x of
+            1 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            -1 -> -1
+            _ -> 0
+    , \x -> case x of
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            _ -> 1
+    , \x -> case x of
+            1 -> -1
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            -1 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 1
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> -1
+    , \x -> case x of
+            -1 -> 0
+            _ -> -1
+    , \x -> case x of
+            0 -> 1
+            _ -> 2
+    , \x -> case x of
+            1 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            _ -> -2
+    , \_ -> 3
+    ]
+  , [ \x -> case x of
+            0 -> 3
+            _ -> 0
+    , \x -> case x of
+            1 -> -2
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            1 -> -1
+            _ -> 0
+    , \x -> case x of
+            0 -> -1
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            -1 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            -1 -> 1
+            _ -> 0
+    , \x -> case x of
+            2 -> -1
+            _ -> 0
+    , \x -> case x of
+            -2 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> -2
+            _ -> 1
+    , \x -> case x of
+            1 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> -1
+            _ -> 1
+    , \x -> case x of
+            0 -> -1
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            -1 -> -1
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            -1 -> 0
+            _ -> 1
+    , \x -> case x of
+            -2 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 2
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            1 -> 1
+            _ -> -1
+    , \x -> case x of
+            0 -> 1
+            1 -> 0
+            _ -> -1
+    , \x -> case x of
+            -1 -> 1
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            -1 -> 0
+            _ -> -1
+    , \x -> case x of
+            2 -> 0
+            _ -> -1
+    , \x -> case x of
+            0 -> -1
+            _ -> 2
+    , \x -> case x of
+            1 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> 2
+    , \x -> case x of
+            -1 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            _ -> -2
+    , \x -> case x of
+            1 -> 0
+            _ -> -2
+    , \x -> case x of
+            0 -> 0
+            _ -> 3
+    , \_ -> -3
+    ]
+  , [ \x -> case x of
+            0 -> -3
+            _ -> 0
+    , \x -> case x of
+            1 -> 3
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            1 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> -1
+            1 -> -1
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            -1 -> -2
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            -1 -> -1
+            _ -> 0
+    , \x -> case x of
+            0 -> -1
+            -1 -> 1
+            _ -> 0
+    , \x -> case x of
+            2 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            -1 -> 1
+            _ -> 0
+    , \x -> case x of
+            -2 -> -1
+            _ -> 0
+    , \x -> case x of
+            3 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 3
+            _ -> 1
+    , \x -> case x of
+            1 -> -2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 2
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            -1 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            -1 -> -1
+            _ -> 1
+    , \x -> case x of
+            0 -> -1
+            -1 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> -1
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            -1 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            -2 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            3 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> -2
+            _ -> -1
+    , \x -> case x of
+            1 -> 2
+            _ -> -1
+    , \x -> case x of
+            0 -> 1
+            1 -> 1
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            -1 -> 1
+            _ -> -1
+    , \x -> case x of
+            0 -> 1
+            -1 -> 0
+            _ -> -1
+    , \x -> case x of
+            2 -> 1
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            2 -> 0
+            _ -> -1
+    , \x -> case x of
+            1 -> 0
+            -1 -> 0
+            _ -> -1
+    , \x -> case x of
+            -2 -> 0
+            _ -> -1
+    , \x -> case x of
+            1 -> -1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            1 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            1 -> 0
+            _ -> 2
+    , \x -> case x of
+            -1 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            -1 -> 0
+            _ -> 2
+    , \x -> case x of
+            2 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> -1
+            _ -> -2
+    , \x -> case x of
+            1 -> 1
+            _ -> -2
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> -2
+    , \x -> case x of
+            -1 -> 0
+            _ -> -2
+    , \x -> case x of
+            0 -> 1
+            _ -> 3
+    , \x -> case x of
+            1 -> 0
+            _ -> 3
+    , \x -> case x of
+            0 -> 0
+            _ -> -3
+    , \_ -> 4
+    ]
+  , [ \x -> case x of
+            0 -> 4
+            _ -> 0
+    , \x -> case x of
+            1 -> -3
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            1 -> -2
+            _ -> 0
+    , \x -> case x of
+            0 -> -1
+            1 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            1 -> -1
+            _ -> 0
+    , \x -> case x of
+            0 -> -2
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            -1 -> 3
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            -1 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> -1
+            -1 -> -1
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            -1 -> 1
+            _ -> 0
+    , \x -> case x of
+            2 -> -2
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            2 -> -1
+            _ -> 0
+    , \x -> case x of
+            0 -> -1
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            -1 -> -1
+            _ -> 0
+    , \x -> case x of
+            1 -> -1
+            -1 -> 1
+            _ -> 0
+    , \x -> case x of
+            -2 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            -2 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            3 -> -1
+            _ -> 0
+    , \x -> case x of
+            -3 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> -3
+            _ -> 1
+    , \x -> case x of
+            1 -> 3
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> -2
+            _ -> 1
+    , \x -> case x of
+            0 -> -1
+            1 -> -1
+            _ -> 1
+    , \x -> case x of
+            0 -> -2
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            -1 -> -2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            -1 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 2
+            -1 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            2 -> -1
+            _ -> 1
+    , \x -> case x of
+            0 -> -1
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            -1 -> -1
+            _ -> 1
+    , \x -> case x of
+            1 -> -1
+            -1 -> 0
+            _ -> 1
+    , \x -> case x of
+            -2 -> -1
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            3 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            -2 -> 0
+            _ -> 1
+    , \x -> case x of
+            -1 -> 0
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            -3 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 3
+            _ -> -1
+    , \x -> case x of
+            1 -> -2
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            1 -> 2
+            _ -> -1
+    , \x -> case x of
+            0 -> 2
+            1 -> 0
+            _ -> -1
+    , \x -> case x of
+            -1 -> 2
+            _ -> -1
+    , \x -> case x of
+            0 -> 1
+            -1 -> 1
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            2 -> 1
+            _ -> -1
+    , \x -> case x of
+            0 -> 1
+            2 -> 0
+            _ -> -1
+    , \x -> case x of
+            1 -> 0
+            -1 -> 1
+            _ -> -1
+    , \x -> case x of
+            1 -> 1
+            -1 -> 0
+            _ -> -1
+    , \x -> case x of
+            -2 -> 1
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            -1 -> 0
+            _ -> -1
+    , \x -> case x of
+            0 -> 0
+            -2 -> 0
+            _ -> -1
+    , \x -> case x of
+            1 -> 0
+            2 -> 0
+            _ -> -1
+    , \x -> case x of
+            3 -> 0
+            _ -> -1
+    , \x -> case x of
+            0 -> -2
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            1 -> -1
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            1 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> -1
+            1 -> 0
+            _ -> 2
+    , \x -> case x of
+            -1 -> -1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            -1 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            -1 -> 0
+            _ -> 2
+    , \x -> case x of
+            2 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            2 -> 0
+            _ -> 2
+    , \x -> case x of
+            1 -> 0
+            -1 -> 0
+            _ -> 2
+    , \x -> case x of
+            -2 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> 2
+            _ -> -2
+    , \x -> case x of
+            1 -> -1
+            _ -> -2
+    , \x -> case x of
+            0 -> 0
+            1 -> 1
+            _ -> -2
+    , \x -> case x of
+            0 -> 1
+            1 -> 0
+            _ -> -2
+    , \x -> case x of
+            -1 -> 1
+            _ -> -2
+    , \x -> case x of
+            0 -> 0
+            -1 -> 0
+            _ -> -2
+    , \x -> case x of
+            2 -> 0
+            _ -> -2
+    , \x -> case x of
+            0 -> -1
+            _ -> 3
+    , \x -> case x of
+            1 -> 1
+            _ -> 3
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> 3
+    , \x -> case x of
+            -1 -> 0
+            _ -> 3
+    , \x -> case x of
+            0 -> 1
+            _ -> -3
+    , \x -> case x of
+            1 -> 0
+            _ -> -3
+    , \x -> case x of
+            0 -> 0
+            _ -> 4
+    , \_ -> -4
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Ints-Ints.out b/test/diff/tiers-default-Ints-Ints.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Ints-Ints.out
@@ -0,0 +1,317 @@
+map length (tiers :: [[ [Int]->[Int] ]])  =  [1,1,4,10,29,75,...]
+
+length (list :: [ [Int]->[Int] ])  =  Infinity
+
+allUnique (list :: [ [Int]->[Int] ])  =  True
+
+ratioRepetitions (list :: [ [Int]->[Int] ])  =  0 % 1
+
+tiers :: [[Int]->[Int]]  =
+  [ [\_ -> []]
+  , [\_ -> [0]]
+  , [ \x -> case x of
+            [] -> [0]
+            _ -> []
+    , \x -> case x of
+            [] -> []
+            _ -> [0]
+    , \_ -> [0,0]
+    , \_ -> [1]
+    ]
+  , [ \x -> case x of
+            [] -> [0,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [1]
+            _ -> []
+    , \x -> case x of
+            [0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [1]
+    , \_ -> [0,0,0]
+    , \_ -> [0,1]
+    , \_ -> [1,0]
+    , \_ -> [-1]
+    ]
+  , [ \x -> case x of
+            [] -> [0,0,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,1]
+            _ -> []
+    , \x -> case x of
+            [] -> [1,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [-1]
+            _ -> []
+    , \x -> case x of
+            [0] -> [0,0]
+            _ -> []
+    , \x -> case x of
+            [0] -> [1]
+            _ -> []
+    , \x -> case x of
+            [0,0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [1] -> [0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,0]
+            _ -> [0]
+    , \x -> case x of
+            [] -> [1]
+            _ -> [0]
+    , \x -> case x of
+            [] -> []
+            [0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [0,0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [1] -> []
+            _ -> [0]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [0,0]
+    , \x -> case x of
+            [0] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [1]
+    , \x -> case x of
+            [0] -> []
+            _ -> [1]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,0,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,1]
+    , \x -> case x of
+            [] -> []
+            _ -> [1,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [-1]
+    , \_ -> [0,0,0,0]
+    , \_ -> [0,0,1]
+    , \_ -> [0,1,0]
+    , \_ -> [0,-1]
+    , \_ -> [1,0,0]
+    , \_ -> [1,1]
+    , \_ -> [-1,0]
+    , \_ -> [2]
+    ]
+  , [ \x -> case x of
+            [] -> [0,0,0,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,0,1]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,1,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,-1]
+            _ -> []
+    , \x -> case x of
+            [] -> [1,0,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [1,1]
+            _ -> []
+    , \x -> case x of
+            [] -> [-1,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [2]
+            _ -> []
+    , \x -> case x of
+            [0] -> [0,0,0]
+            _ -> []
+    , \x -> case x of
+            [0] -> [0,1]
+            _ -> []
+    , \x -> case x of
+            [0] -> [1,0]
+            _ -> []
+    , \x -> case x of
+            [0] -> [-1]
+            _ -> []
+    , \x -> case x of
+            [] -> [0]
+            [0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [0,0] -> [0,0]
+            _ -> []
+    , \x -> case x of
+            [0,0] -> [1]
+            _ -> []
+    , \x -> case x of
+            [1] -> [0,0]
+            _ -> []
+    , \x -> case x of
+            [1] -> [1]
+            _ -> []
+    , \x -> case x of
+            [0,0,0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [0,1] -> [0]
+            _ -> []
+    , \x -> case x of
+            [1,0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [-1] -> [0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,0,0]
+            _ -> [0]
+    , \x -> case x of
+            [] -> [0,1]
+            _ -> [0]
+    , \x -> case x of
+            [] -> [1,0]
+            _ -> [0]
+    , \x -> case x of
+            [] -> [-1]
+            _ -> [0]
+    , \x -> case x of
+            [0] -> [0,0]
+            _ -> [0]
+    , \x -> case x of
+            [0] -> [1]
+            _ -> [0]
+    , \x -> case x of
+            [] -> []
+            [0,0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [] -> []
+            [1] -> []
+            _ -> [0]
+    , \x -> case x of
+            [0,0,0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [0,1] -> []
+            _ -> [0]
+    , \x -> case x of
+            [1,0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [-1] -> []
+            _ -> [0]
+    , \x -> case x of
+            [] -> [1]
+            _ -> [0,0]
+    , \x -> case x of
+            [0] -> [0]
+            _ -> [0,0]
+    , \x -> case x of
+            [] -> []
+            [0] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [0,0] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [1] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [] -> [0,0]
+            _ -> [1]
+    , \x -> case x of
+            [0] -> [0]
+            _ -> [1]
+    , \x -> case x of
+            [] -> []
+            [0] -> []
+            _ -> [1]
+    , \x -> case x of
+            [0,0] -> []
+            _ -> [1]
+    , \x -> case x of
+            [1] -> []
+            _ -> [1]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [0,0,0]
+    , \x -> case x of
+            [0] -> []
+            _ -> [0,0,0]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [0,1]
+    , \x -> case x of
+            [0] -> []
+            _ -> [0,1]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [1,0]
+    , \x -> case x of
+            [0] -> []
+            _ -> [1,0]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [-1]
+    , \x -> case x of
+            [0] -> []
+            _ -> [-1]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,0,0,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,0,1]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,1,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,-1]
+    , \x -> case x of
+            [] -> []
+            _ -> [1,0,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [1,1]
+    , \x -> case x of
+            [] -> []
+            _ -> [-1,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [2]
+    , \_ -> [0,0,0,0,0]
+    , \_ -> [0,0,0,1]
+    , \_ -> [0,0,1,0]
+    , \_ -> [0,0,-1]
+    , \_ -> [0,1,0,0]
+    , \_ -> [0,1,1]
+    , \_ -> [0,-1,0]
+    , \_ -> [0,2]
+    , \_ -> [1,0,0,0]
+    , \_ -> [1,0,1]
+    , \_ -> [1,1,0]
+    , \_ -> [1,-1]
+    , \_ -> [-1,0,0]
+    , \_ -> [-1,1]
+    , \_ -> [2,0]
+    , \_ -> [-2]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-MBool-Bool.out b/test/diff/tiers-default-MBool-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-MBool-Bool.out
@@ -0,0 +1,31 @@
+map length (tiers :: [[ Maybe Bool->Bool ]])  =  [8]
+
+length (list :: [ Maybe Bool->Bool ])  =  8
+
+allUnique (list :: [ Maybe Bool->Bool ])  =  True
+
+ratioRepetitions (list :: [ Maybe Bool->Bool ])  =  0 % 1
+
+tiers :: [Maybe Bool->Bool]  =
+  [ [ \_ -> False
+    , \x -> case x of
+            Just True -> True
+            _ -> False
+    , \x -> case x of
+            Just False -> True
+            _ -> False
+    , \x -> case x of
+            Nothing -> False
+            _ -> True
+    , \x -> case x of
+            Nothing -> True
+            _ -> False
+    , \x -> case x of
+            Just False -> False
+            _ -> True
+    , \x -> case x of
+            Just True -> False
+            _ -> True
+    , \_ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-default-MBool-MBool.out b/test/diff/tiers-default-MBool-MBool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-MBool-MBool.out
@@ -0,0 +1,94 @@
+map length (tiers :: [[ Maybe Bool->Maybe Bool ]])  =  [1,6,12,8]
+
+length (list :: [ Maybe Bool->Maybe Bool ])  =  Infinity
+
+allUnique (list :: [ Maybe Bool->Maybe Bool ])  =  True
+
+ratioRepetitions (list :: [ Maybe Bool->Maybe Bool ])  =  0 % 1
+
+tiers :: [Maybe Bool->Maybe Bool]  =
+  [ [\_ -> Nothing]
+  , [ \x -> case x of
+            Just True -> Just False
+            _ -> Nothing
+    , \x -> case x of
+            Just True -> Just True
+            _ -> Nothing
+    , \x -> case x of
+            Just False -> Just False
+            _ -> Nothing
+    , \x -> case x of
+            Just False -> Just True
+            _ -> Nothing
+    , \x -> case x of
+            Nothing -> Just False
+            _ -> Nothing
+    , \x -> case x of
+            Nothing -> Just True
+            _ -> Nothing
+    ]
+  , [ \x -> case x of
+            Nothing -> Nothing
+            _ -> Just False
+    , \x -> case x of
+            Nothing -> Nothing
+            Just False -> Just False
+            Just True -> Just True
+    , \x -> case x of
+            Nothing -> Nothing
+            Just False -> Just True
+            Just True -> Just False
+    , \x -> case x of
+            Nothing -> Nothing
+            _ -> Just True
+    , \x -> case x of
+            Just False -> Nothing
+            _ -> Just False
+    , \x -> case x of
+            Nothing -> Just False
+            Just False -> Nothing
+            Just True -> Just True
+    , \x -> case x of
+            Just True -> Nothing
+            _ -> Just False
+    , \x -> case x of
+            Nothing -> Just False
+            Just False -> Just True
+            Just True -> Nothing
+    , \x -> case x of
+            Nothing -> Just True
+            Just False -> Nothing
+            Just True -> Just False
+    , \x -> case x of
+            Just False -> Nothing
+            _ -> Just True
+    , \x -> case x of
+            Nothing -> Just True
+            Just False -> Just False
+            Just True -> Nothing
+    , \x -> case x of
+            Just True -> Nothing
+            _ -> Just True
+    ]
+  , [ \_ -> Just False
+    , \x -> case x of
+            Just True -> Just True
+            _ -> Just False
+    , \x -> case x of
+            Just False -> Just True
+            _ -> Just False
+    , \x -> case x of
+            Nothing -> Just False
+            _ -> Just True
+    , \x -> case x of
+            Nothing -> Just True
+            _ -> Just False
+    , \x -> case x of
+            Just False -> Just False
+            _ -> Just True
+    , \x -> case x of
+            Just True -> Just False
+            _ -> Just True
+    , \_ -> Just True
+    ]
+  ]
diff --git a/test/diff/tiers-default-Nat,Nat-Nat.out b/test/diff/tiers-default-Nat,Nat-Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Nat,Nat-Nat.out
@@ -0,0 +1,205 @@
+map length (tiers :: [[ (Nat,Nat)->Nat ]])  =  [1,1,3,7,17,35,...]
+
+length (list :: [ (Nat,Nat)->Nat ])  =  Infinity
+
+allUnique (list :: [ (Nat,Nat)->Nat ])  =  True
+
+ratioRepetitions (list :: [ (Nat,Nat)->Nat ])  =  0 % 1
+
+tiers :: [(Nat,Nat)->Nat]  =
+  [ [\_ -> 0]
+  , [\_ -> 1]
+  , [ \x -> case x of
+            (0,0) -> 1
+            _ -> 0
+    , \x -> case x of
+            (0,0) -> 0
+            _ -> 1
+    , \_ -> 2
+    ]
+  , [ \x -> case x of
+            (0,0) -> 2
+            _ -> 0
+    , \x -> case x of
+            (0,1) -> 1
+            _ -> 0
+    , \x -> case x of
+            (1,0) -> 1
+            _ -> 0
+    , \x -> case x of
+            (0,1) -> 0
+            _ -> 1
+    , \x -> case x of
+            (1,0) -> 0
+            _ -> 1
+    , \x -> case x of
+            (0,0) -> 0
+            _ -> 2
+    , \_ -> 3
+    ]
+  , [ \x -> case x of
+            (0,0) -> 3
+            _ -> 0
+    , \x -> case x of
+            (0,1) -> 2
+            _ -> 0
+    , \x -> case x of
+            (1,0) -> 2
+            _ -> 0
+    , \x -> case x of
+            (0,2) -> 1
+            _ -> 0
+    , \x -> case x of
+            (1,1) -> 1
+            _ -> 0
+    , \x -> case x of
+            (2,0) -> 1
+            _ -> 0
+    , \x -> case x of
+            (0,0) -> 2
+            _ -> 1
+    , \x -> case x of
+            (0,0) -> 0
+            (0,1) -> 0
+            _ -> 1
+    , \x -> case x of
+            (0,0) -> 0
+            (1,0) -> 0
+            _ -> 1
+    , \x -> case x of
+            (0,2) -> 0
+            _ -> 1
+    , \x -> case x of
+            (1,1) -> 0
+            _ -> 1
+    , \x -> case x of
+            (2,0) -> 0
+            _ -> 1
+    , \x -> case x of
+            (0,0) -> 1
+            _ -> 2
+    , \x -> case x of
+            (0,1) -> 0
+            _ -> 2
+    , \x -> case x of
+            (1,0) -> 0
+            _ -> 2
+    , \x -> case x of
+            (0,0) -> 0
+            _ -> 3
+    , \_ -> 4
+    ]
+  , [ \x -> case x of
+            (0,0) -> 4
+            _ -> 0
+    , \x -> case x of
+            (0,1) -> 3
+            _ -> 0
+    , \x -> case x of
+            (1,0) -> 3
+            _ -> 0
+    , \x -> case x of
+            (0,0) -> 1
+            (0,1) -> 1
+            _ -> 0
+    , \x -> case x of
+            (0,0) -> 1
+            (1,0) -> 1
+            _ -> 0
+    , \x -> case x of
+            (0,2) -> 2
+            _ -> 0
+    , \x -> case x of
+            (1,1) -> 2
+            _ -> 0
+    , \x -> case x of
+            (2,0) -> 2
+            _ -> 0
+    , \x -> case x of
+            (0,3) -> 1
+            _ -> 0
+    , \x -> case x of
+            (1,2) -> 1
+            _ -> 0
+    , \x -> case x of
+            (2,1) -> 1
+            _ -> 0
+    , \x -> case x of
+            (3,0) -> 1
+            _ -> 0
+    , \x -> case x of
+            (0,0) -> 3
+            _ -> 1
+    , \x -> case x of
+            (0,1) -> 2
+            _ -> 1
+    , \x -> case x of
+            (1,0) -> 2
+            _ -> 1
+    , \x -> case x of
+            (0,0) -> 0
+            (0,2) -> 0
+            _ -> 1
+    , \x -> case x of
+            (0,0) -> 0
+            (1,1) -> 0
+            _ -> 1
+    , \x -> case x of
+            (0,0) -> 0
+            (2,0) -> 0
+            _ -> 1
+    , \x -> case x of
+            (0,1) -> 0
+            (1,0) -> 0
+            _ -> 1
+    , \x -> case x of
+            (0,3) -> 0
+            _ -> 1
+    , \x -> case x of
+            (1,2) -> 0
+            _ -> 1
+    , \x -> case x of
+            (2,1) -> 0
+            _ -> 1
+    , \x -> case x of
+            (3,0) -> 0
+            _ -> 1
+    , \x -> case x of
+            (0,1) -> 1
+            _ -> 2
+    , \x -> case x of
+            (1,0) -> 1
+            _ -> 2
+    , \x -> case x of
+            (0,0) -> 0
+            (0,1) -> 0
+            _ -> 2
+    , \x -> case x of
+            (0,0) -> 0
+            (1,0) -> 0
+            _ -> 2
+    , \x -> case x of
+            (0,2) -> 0
+            _ -> 2
+    , \x -> case x of
+            (1,1) -> 0
+            _ -> 2
+    , \x -> case x of
+            (2,0) -> 0
+            _ -> 2
+    , \x -> case x of
+            (0,0) -> 1
+            _ -> 3
+    , \x -> case x of
+            (0,1) -> 0
+            _ -> 3
+    , \x -> case x of
+            (1,0) -> 0
+            _ -> 3
+    , \x -> case x of
+            (0,0) -> 0
+            _ -> 4
+    , \_ -> 5
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Nat-Nat-Nat.out b/test/diff/tiers-default-Nat-Nat-Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Nat-Nat-Nat.out
@@ -0,0 +1,528 @@
+map length (tiers :: [[ Nat->Nat->Nat ]])  =  [1,1,5,13,35,81,...]
+
+length (list :: [ Nat->Nat->Nat ])  =  Infinity
+
+allUnique (list :: [ Nat->Nat->Nat ])  =  True
+
+ratioRepetitions (list :: [ Nat->Nat->Nat ])  =  0 % 1
+
+tiers :: [Nat->Nat->Nat]  =
+  [ [\_ _ -> 0]
+  , [\_ _ -> 1]
+  , [ \x _ -> case x of
+              0 -> 1
+              _ -> 0
+    , \x _ -> case x of
+              0 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              0 -> 0
+              _ -> 1
+    , \_ _ -> 2
+    ]
+  , [ \x y -> case (x,y) of
+              (0,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (0,_) -> 1
+              _ -> 0
+    , \x _ -> case x of
+              0 -> 2
+              _ -> 0
+    , \x _ -> case x of
+              1 -> 1
+              _ -> 0
+    , \x _ -> case x of
+              1 -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 0
+              _ -> 2
+    , \_ y -> case y of
+              0 -> 2
+              _ -> 0
+    , \_ y -> case y of
+              1 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              1 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 0
+              _ -> 2
+    , \_ _ -> 3
+    ]
+  , [ \x y -> case (x,y) of
+              (0,0) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (_,1) -> 0
+              (1,_) -> 0
+              (_,0) -> 0
+              (0,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (0,_) -> 2
+              _ -> 0
+    , \x _ -> case x of
+              0 -> 3
+              _ -> 0
+    , \x y -> case (x,y) of
+              (1,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (1,_) -> 1
+              _ -> 0
+    , \x _ -> case x of
+              1 -> 2
+              _ -> 0
+    , \x _ -> case x of
+              2 -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 1
+              (0,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 2
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 0
+              1 -> 0
+              _ -> 1
+    , \x _ -> case x of
+              2 -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,_) -> 0
+              (_,1) -> 0
+              (1,_) -> 0
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (1,_) -> 0
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 1
+              _ -> 2
+    , \x _ -> case x of
+              1 -> 0
+              _ -> 2
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (_,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,1) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              _ -> 2
+    , \x _ -> case x of
+              0 -> 0
+              _ -> 3
+    , \_ y -> case y of
+              0 -> 3
+              _ -> 0
+    , \_ y -> case y of
+              1 -> 2
+              _ -> 0
+    , \_ y -> case y of
+              2 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              0 -> 2
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 0
+              1 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              2 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 1
+              _ -> 2
+    , \_ y -> case y of
+              1 -> 0
+              _ -> 2
+    , \_ y -> case y of
+              0 -> 0
+              _ -> 3
+    , \_ _ -> 4
+    ]
+  , [ \x y -> case (x,y) of
+              (0,0) -> 3
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,1) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,2) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 2
+              (0,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (_,1) -> 0
+              (0,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,1) -> 1
+              (1,_) -> 0
+              (_,0) -> 0
+              (_,2) -> 0
+              (0,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,_) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 2
+              (_,1) -> 0
+              (1,_) -> 0
+              (_,0) -> 0
+              (0,_) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (0,_) -> 3
+              _ -> 0
+    , \x _ -> case x of
+              0 -> 4
+              _ -> 0
+    , \x y -> case (x,y) of
+              (1,0) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (1,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (1,0) -> 1
+              (_,1) -> 0
+              (2,_) -> 0
+              (_,0) -> 0
+              (1,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (1,_) -> 2
+              _ -> 0
+    , \x _ -> case x of
+              1 -> 3
+              _ -> 0
+    , \x _ -> case x of
+              0 -> 1
+              1 -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (2,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (1,_) -> 0
+              (2,_) -> 1
+              _ -> 0
+    , \x _ -> case x of
+              2 -> 2
+              _ -> 0
+    , \x _ -> case x of
+              3 -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 2
+              (0,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (_,1) -> 1
+              (1,_) -> 1
+              (_,0) -> 1
+              (0,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,1) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (0,_) -> 2
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 3
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 1
+              (1,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (1,0) -> 0
+              _ -> 1
+    , \x _ -> case x of
+              1 -> 2
+              _ -> 1
+    , \x _ -> case x of
+              0 -> 0
+              2 -> 0
+              _ -> 1
+    , \x _ -> case x of
+              3 -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (0,_) -> 1
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 2
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 1
+              (1,_) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (1,_) -> 0
+              (_,0) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,1) -> 0
+              (1,0) -> 1
+              (0,2) -> 0
+              (1,1) -> 0
+              (2,0) -> 0
+              (0,3) -> 0
+              (1,2) -> 0
+              ...
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,_) -> 0
+              (_,0) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 2
+              (_,0) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (0,_) -> 1
+              (_,1) -> 1
+              (1,_) -> 1
+              (_,0) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (1,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (2,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,0) -> 1
+              (0,_) -> 0
+              _ -> 2
+    , \x y -> case (x,y) of
+              (0,0) -> 0
+              (0,_) -> 1
+              _ -> 2
+    , \x _ -> case x of
+              1 -> 1
+              _ -> 2
+    , \x _ -> case x of
+              0 -> 0
+              1 -> 0
+              _ -> 2
+    , \x _ -> case x of
+              2 -> 0
+              _ -> 2
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,0) -> 2
+              (0,_) -> 0
+              (_,1) -> 0
+              (1,_) -> 0
+              (_,0) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (0,1) -> 1
+              (0,_) -> 0
+              (_,2) -> 0
+              (1,_) -> 0
+              (_,1) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 1
+              (_,1) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (_,1) -> 0
+              (1,_) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 1
+              (_,0) -> 0
+              _ -> 2
+    , \x y -> case (x,y) of
+              (_,0) -> 0
+              (1,_) -> 0
+              _ -> 2
+    , \x _ -> case x of
+              0 -> 1
+              _ -> 3
+    , \x _ -> case x of
+              1 -> 0
+              _ -> 3
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 3
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (_,1) -> 2
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (_,1) -> 0
+              (_,2) -> 1
+              _ -> 0
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 2
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              (_,1) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,2) -> 0
+              _ -> 1
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 1
+              _ -> 2
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,1) -> 0
+              _ -> 2
+    , \x y -> case (x,y) of
+              (0,_) -> 0
+              (_,0) -> 0
+              _ -> 3
+    , \x _ -> case x of
+              0 -> 0
+              _ -> 4
+    , \_ y -> case y of
+              0 -> 4
+              _ -> 0
+    , \_ y -> case y of
+              1 -> 3
+              _ -> 0
+    , \_ y -> case y of
+              0 -> 1
+              1 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              2 -> 2
+              _ -> 0
+    , \_ y -> case y of
+              3 -> 1
+              _ -> 0
+    , \_ y -> case y of
+              0 -> 3
+              _ -> 1
+    , \_ y -> case y of
+              1 -> 2
+              _ -> 1
+    , \_ y -> case y of
+              0 -> 0
+              2 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              3 -> 0
+              _ -> 1
+    , \_ y -> case y of
+              1 -> 1
+              _ -> 2
+    , \_ y -> case y of
+              0 -> 0
+              1 -> 0
+              _ -> 2
+    , \_ y -> case y of
+              2 -> 0
+              _ -> 2
+    , \_ y -> case y of
+              0 -> 1
+              _ -> 3
+    , \_ y -> case y of
+              1 -> 0
+              _ -> 3
+    , \_ y -> case y of
+              0 -> 0
+              _ -> 4
+    , \_ _ -> 5
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Nat-Nat.out b/test/diff/tiers-default-Nat-Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Nat-Nat.out
@@ -0,0 +1,670 @@
+map length (tiers :: [[ Nat->Nat ]])  =  [1,1,3,5,10,16,30,48,80,...]
+
+length (list :: [ Nat->Nat ])  =  Infinity
+
+allUnique (list :: [ Nat->Nat ])  =  True
+
+ratioRepetitions (list :: [ Nat->Nat ])  =  0 % 1
+
+tiers :: [Nat->Nat]  =
+  [ [\_ -> 0]
+  , [\_ -> 1]
+  , [ \x -> case x of
+            0 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 0
+            _ -> 1
+    , \_ -> 2
+    ]
+  , [ \x -> case x of
+            0 -> 2
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            _ -> 2
+    , \_ -> 3
+    ]
+  , [ \x -> case x of
+            0 -> 3
+            _ -> 0
+    , \x -> case x of
+            1 -> 2
+            _ -> 0
+    , \x -> case x of
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 1
+            _ -> 2
+    , \x -> case x of
+            1 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            _ -> 3
+    , \_ -> 4
+    ]
+  , [ \x -> case x of
+            0 -> 4
+            _ -> 0
+    , \x -> case x of
+            1 -> 3
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            2 -> 2
+            _ -> 0
+    , \x -> case x of
+            3 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 3
+            _ -> 1
+    , \x -> case x of
+            1 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            3 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> 2
+    , \x -> case x of
+            2 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            _ -> 3
+    , \x -> case x of
+            1 -> 0
+            _ -> 3
+    , \x -> case x of
+            0 -> 0
+            _ -> 4
+    , \_ -> 5
+    ]
+  , [ \x -> case x of
+            0 -> 5
+            _ -> 0
+    , \x -> case x of
+            1 -> 4
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            1 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            2 -> 3
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            3 -> 2
+            _ -> 0
+    , \x -> case x of
+            4 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 4
+            _ -> 1
+    , \x -> case x of
+            1 -> 3
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 2
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            3 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            4 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 3
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            1 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            1 -> 0
+            _ -> 2
+    , \x -> case x of
+            2 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            2 -> 0
+            _ -> 2
+    , \x -> case x of
+            3 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> 2
+            _ -> 3
+    , \x -> case x of
+            1 -> 1
+            _ -> 3
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> 3
+    , \x -> case x of
+            2 -> 0
+            _ -> 3
+    , \x -> case x of
+            0 -> 1
+            _ -> 4
+    , \x -> case x of
+            1 -> 0
+            _ -> 4
+    , \x -> case x of
+            0 -> 0
+            _ -> 5
+    , \_ -> 6
+    ]
+  , [ \x -> case x of
+            0 -> 6
+            _ -> 0
+    , \x -> case x of
+            1 -> 5
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            1 -> 3
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            1 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 3
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            2 -> 4
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            2 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            3 -> 3
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            3 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            4 -> 2
+            _ -> 0
+    , \x -> case x of
+            5 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 5
+            _ -> 1
+    , \x -> case x of
+            1 -> 4
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 3
+            _ -> 1
+    , \x -> case x of
+            0 -> 3
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> 3
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            2 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 2
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            3 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            4 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            3 -> 0
+            _ -> 1
+    , \x -> case x of
+            5 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 4
+            _ -> 2
+    , \x -> case x of
+            1 -> 3
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            1 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            2 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            2 -> 0
+            _ -> 2
+    , \x -> case x of
+            3 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            3 -> 0
+            _ -> 2
+    , \x -> case x of
+            1 -> 0
+            2 -> 0
+            _ -> 2
+    , \x -> case x of
+            4 -> 0
+            _ -> 2
+    , \x -> case x of
+            1 -> 2
+            _ -> 3
+    , \x -> case x of
+            0 -> 0
+            1 -> 1
+            _ -> 3
+    , \x -> case x of
+            0 -> 1
+            1 -> 0
+            _ -> 3
+    , \x -> case x of
+            2 -> 1
+            _ -> 3
+    , \x -> case x of
+            0 -> 0
+            2 -> 0
+            _ -> 3
+    , \x -> case x of
+            3 -> 0
+            _ -> 3
+    , \x -> case x of
+            0 -> 2
+            _ -> 4
+    , \x -> case x of
+            1 -> 1
+            _ -> 4
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> 4
+    , \x -> case x of
+            2 -> 0
+            _ -> 4
+    , \x -> case x of
+            0 -> 1
+            _ -> 5
+    , \x -> case x of
+            1 -> 0
+            _ -> 5
+    , \x -> case x of
+            0 -> 0
+            _ -> 6
+    , \_ -> 7
+    ]
+  , [ \x -> case x of
+            0 -> 7
+            _ -> 0
+    , \x -> case x of
+            1 -> 6
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            1 -> 4
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            1 -> 3
+            _ -> 0
+    , \x -> case x of
+            0 -> 3
+            1 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 4
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            2 -> 5
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            2 -> 3
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            2 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 3
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            3 -> 4
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            3 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 2
+            3 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            2 -> 2
+            _ -> 0
+    , \x -> case x of
+            1 -> 2
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            4 -> 3
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            4 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            3 -> 1
+            _ -> 0
+    , \x -> case x of
+            5 -> 2
+            _ -> 0
+    , \x -> case x of
+            6 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 6
+            _ -> 1
+    , \x -> case x of
+            1 -> 5
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 4
+            _ -> 1
+    , \x -> case x of
+            0 -> 2
+            1 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 4
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> 4
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            2 -> 3
+            _ -> 1
+    , \x -> case x of
+            0 -> 3
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            3 -> 3
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            3 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 2
+            3 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            2 -> 2
+            _ -> 1
+    , \x -> case x of
+            1 -> 2
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            4 -> 2
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            3 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 0
+            5 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            4 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> 0
+            3 -> 0
+            _ -> 1
+    , \x -> case x of
+            6 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 5
+            _ -> 2
+    , \x -> case x of
+            1 -> 4
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            1 -> 3
+            _ -> 2
+    , \x -> case x of
+            0 -> 3
+            1 -> 0
+            _ -> 2
+    , \x -> case x of
+            2 -> 3
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            2 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            3 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 1
+            3 -> 0
+            _ -> 2
+    , \x -> case x of
+            1 -> 0
+            2 -> 1
+            _ -> 2
+    , \x -> case x of
+            1 -> 1
+            2 -> 0
+            _ -> 2
+    , \x -> case x of
+            4 -> 1
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            2 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> 0
+            4 -> 0
+            _ -> 2
+    , \x -> case x of
+            1 -> 0
+            3 -> 0
+            _ -> 2
+    , \x -> case x of
+            5 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> 4
+            _ -> 3
+    , \x -> case x of
+            0 -> 0
+            1 -> 2
+            _ -> 3
+    , \x -> case x of
+            0 -> 1
+            1 -> 1
+            _ -> 3
+    , \x -> case x of
+            0 -> 2
+            1 -> 0
+            _ -> 3
+    , \x -> case x of
+            2 -> 2
+            _ -> 3
+    , \x -> case x of
+            0 -> 0
+            2 -> 1
+            _ -> 3
+    , \x -> case x of
+            0 -> 1
+            2 -> 0
+            _ -> 3
+    , \x -> case x of
+            3 -> 1
+            _ -> 3
+    , \x -> case x of
+            0 -> 0
+            3 -> 0
+            _ -> 3
+    , \x -> case x of
+            1 -> 0
+            2 -> 0
+            _ -> 3
+    , \x -> case x of
+            4 -> 0
+            _ -> 3
+    , \x -> case x of
+            0 -> 3
+            _ -> 4
+    , \x -> case x of
+            1 -> 2
+            _ -> 4
+    , \x -> case x of
+            0 -> 0
+            1 -> 1
+            _ -> 4
+    , \x -> case x of
+            0 -> 1
+            1 -> 0
+            _ -> 4
+    , \x -> case x of
+            2 -> 1
+            _ -> 4
+    , \x -> case x of
+            0 -> 0
+            2 -> 0
+            _ -> 4
+    , \x -> case x of
+            3 -> 0
+            _ -> 4
+    , \x -> case x of
+            0 -> 2
+            _ -> 5
+    , \x -> case x of
+            1 -> 1
+            _ -> 5
+    , \x -> case x of
+            0 -> 0
+            1 -> 0
+            _ -> 5
+    , \x -> case x of
+            2 -> 0
+            _ -> 5
+    , \x -> case x of
+            0 -> 1
+            _ -> 6
+    , \x -> case x of
+            1 -> 0
+            _ -> 6
+    , \x -> case x of
+            0 -> 0
+            _ -> 7
+    , \_ -> 8
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Nat-U.out b/test/diff/tiers-default-Nat-U.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Nat-U.out
@@ -0,0 +1,17 @@
+map length (tiers :: [[ Nat->() ]])  =  [1,0,0,0,0,0,...]
+
+length (list :: [ Nat->() ])  =  1
+
+allUnique (list :: [ Nat->() ])  =  True
+
+ratioRepetitions (list :: [ Nat->() ])  =  0 % 1
+
+tiers :: [Nat->()]  =
+  [ [\_ -> ()]
+  , []
+  , []
+  , []
+  , []
+  , []
+  , ...
+  ]
diff --git a/test/diff/tiers-default-Nat2-Nat2.out b/test/diff/tiers-default-Nat2-Nat2.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Nat2-Nat2.out
@@ -0,0 +1,19 @@
+map length (tiers :: [[ Nat2->Nat2 ]])  =  [1,2,1]
+
+length (list :: [ Nat2->Nat2 ])  =  4
+
+allUnique (list :: [ Nat2->Nat2 ])  =  True
+
+ratioRepetitions (list :: [ Nat2->Nat2 ])  =  0 % 1
+
+tiers :: [Nat2->Nat2]  =
+  [ [\_ -> 0]
+  , [ \x -> case x of
+            0 -> 0
+            1 -> 1
+    , \x -> case x of
+            0 -> 1
+            1 -> 0
+    ]
+  , [\_ -> 1]
+  ]
diff --git a/test/diff/tiers-default-Nat2-Nat3.out b/test/diff/tiers-default-Nat2-Nat3.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Nat2-Nat3.out
@@ -0,0 +1,34 @@
+map length (tiers :: [[ Nat2->Nat3 ]])  =  [1,2,3,2,1]
+
+length (list :: [ Nat2->Nat3 ])  =  9
+
+allUnique (list :: [ Nat2->Nat3 ])  =  True
+
+ratioRepetitions (list :: [ Nat2->Nat3 ])  =  0 % 1
+
+tiers :: [Nat2->Nat3]  =
+  [ [\_ -> 0]
+  , [ \x -> case x of
+            0 -> 0
+            1 -> 1
+    , \x -> case x of
+            0 -> 1
+            1 -> 0
+    ]
+  , [ \x -> case x of
+            0 -> 0
+            1 -> 2
+    , \_ -> 1
+    , \x -> case x of
+            0 -> 2
+            1 -> 0
+    ]
+  , [ \x -> case x of
+            0 -> 1
+            1 -> 2
+    , \x -> case x of
+            0 -> 2
+            1 -> 1
+    ]
+  , [\_ -> 2]
+  ]
diff --git a/test/diff/tiers-default-Nat3-Nat2.out b/test/diff/tiers-default-Nat3-Nat2.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Nat3-Nat2.out
@@ -0,0 +1,32 @@
+map length (tiers :: [[ Nat3->Nat2 ]])  =  [1,3,3,1]
+
+length (list :: [ Nat3->Nat2 ])  =  8
+
+allUnique (list :: [ Nat3->Nat2 ])  =  True
+
+ratioRepetitions (list :: [ Nat3->Nat2 ])  =  0 % 1
+
+tiers :: [Nat3->Nat2]  =
+  [ [\_ -> 0]
+  , [ \x -> case x of
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            _ -> 0
+    ]
+  , [ \x -> case x of
+            0 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> 0
+            _ -> 1
+    ]
+  , [\_ -> 1]
+  ]
diff --git a/test/diff/tiers-default-Nat3-Nat3.out b/test/diff/tiers-default-Nat3-Nat3.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Nat3-Nat3.out
@@ -0,0 +1,96 @@
+map length (tiers :: [[ Nat3->Nat3 ]])  =  [1,3,6,7,6,3,1]
+
+length (list :: [ Nat3->Nat3 ])  =  Infinity
+
+allUnique (list :: [ Nat3->Nat3 ])  =  True
+
+ratioRepetitions (list :: [ Nat3->Nat3 ])  =  0 % 1
+
+tiers :: [Nat3->Nat3]  =
+  [ [\_ -> 0]
+  , [ \x -> case x of
+            2 -> 1
+            _ -> 0
+    , \x -> case x of
+            1 -> 1
+            _ -> 0
+    , \x -> case x of
+            0 -> 1
+            _ -> 0
+    ]
+  , [ \x -> case x of
+            2 -> 2
+            _ -> 0
+    , \x -> case x of
+            0 -> 0
+            _ -> 1
+    , \x -> case x of
+            1 -> 2
+            _ -> 0
+    , \x -> case x of
+            1 -> 0
+            _ -> 1
+    , \x -> case x of
+            2 -> 0
+            _ -> 1
+    , \x -> case x of
+            0 -> 2
+            _ -> 0
+    ]
+  , [ \x -> case x of
+            0 -> 0
+            1 -> 1
+            2 -> 2
+    , \x -> case x of
+            0 -> 0
+            1 -> 2
+            2 -> 1
+    , \x -> case x of
+            0 -> 1
+            1 -> 0
+            2 -> 2
+    , \_ -> 1
+    , \x -> case x of
+            0 -> 1
+            1 -> 2
+            2 -> 0
+    , \x -> case x of
+            0 -> 2
+            1 -> 0
+            2 -> 1
+    , \x -> case x of
+            0 -> 2
+            1 -> 1
+            2 -> 0
+    ]
+  , [ \x -> case x of
+            0 -> 0
+            _ -> 2
+    , \x -> case x of
+            2 -> 2
+            _ -> 1
+    , \x -> case x of
+            1 -> 2
+            _ -> 1
+    , \x -> case x of
+            1 -> 0
+            _ -> 2
+    , \x -> case x of
+            0 -> 2
+            _ -> 1
+    , \x -> case x of
+            2 -> 0
+            _ -> 2
+    ]
+  , [ \x -> case x of
+            0 -> 1
+            _ -> 2
+    , \x -> case x of
+            1 -> 1
+            _ -> 2
+    , \x -> case x of
+            2 -> 1
+            _ -> 2
+    ]
+  , [\_ -> 2]
+  ]
diff --git a/test/diff/tiers-default-Nats-Nats.out b/test/diff/tiers-default-Nats-Nats.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Nats-Nats.out
@@ -0,0 +1,317 @@
+map length (tiers :: [[ [Nat]->[Nat] ]])  =  [1,1,4,10,29,75,...]
+
+length (list :: [ [Nat]->[Nat] ])  =  Infinity
+
+allUnique (list :: [ [Nat]->[Nat] ])  =  True
+
+ratioRepetitions (list :: [ [Nat]->[Nat] ])  =  0 % 1
+
+tiers :: [[Nat]->[Nat]]  =
+  [ [\_ -> []]
+  , [\_ -> [0]]
+  , [ \x -> case x of
+            [] -> [0]
+            _ -> []
+    , \x -> case x of
+            [] -> []
+            _ -> [0]
+    , \_ -> [0,0]
+    , \_ -> [1]
+    ]
+  , [ \x -> case x of
+            [] -> [0,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [1]
+            _ -> []
+    , \x -> case x of
+            [0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [1]
+    , \_ -> [0,0,0]
+    , \_ -> [0,1]
+    , \_ -> [1,0]
+    , \_ -> [2]
+    ]
+  , [ \x -> case x of
+            [] -> [0,0,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,1]
+            _ -> []
+    , \x -> case x of
+            [] -> [1,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [2]
+            _ -> []
+    , \x -> case x of
+            [0] -> [0,0]
+            _ -> []
+    , \x -> case x of
+            [0] -> [1]
+            _ -> []
+    , \x -> case x of
+            [0,0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [1] -> [0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,0]
+            _ -> [0]
+    , \x -> case x of
+            [] -> [1]
+            _ -> [0]
+    , \x -> case x of
+            [] -> []
+            [0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [0,0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [1] -> []
+            _ -> [0]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [0,0]
+    , \x -> case x of
+            [0] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [1]
+    , \x -> case x of
+            [0] -> []
+            _ -> [1]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,0,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,1]
+    , \x -> case x of
+            [] -> []
+            _ -> [1,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [2]
+    , \_ -> [0,0,0,0]
+    , \_ -> [0,0,1]
+    , \_ -> [0,1,0]
+    , \_ -> [0,2]
+    , \_ -> [1,0,0]
+    , \_ -> [1,1]
+    , \_ -> [2,0]
+    , \_ -> [3]
+    ]
+  , [ \x -> case x of
+            [] -> [0,0,0,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,0,1]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,1,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,2]
+            _ -> []
+    , \x -> case x of
+            [] -> [1,0,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [1,1]
+            _ -> []
+    , \x -> case x of
+            [] -> [2,0]
+            _ -> []
+    , \x -> case x of
+            [] -> [3]
+            _ -> []
+    , \x -> case x of
+            [0] -> [0,0,0]
+            _ -> []
+    , \x -> case x of
+            [0] -> [0,1]
+            _ -> []
+    , \x -> case x of
+            [0] -> [1,0]
+            _ -> []
+    , \x -> case x of
+            [0] -> [2]
+            _ -> []
+    , \x -> case x of
+            [] -> [0]
+            [0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [0,0] -> [0,0]
+            _ -> []
+    , \x -> case x of
+            [0,0] -> [1]
+            _ -> []
+    , \x -> case x of
+            [1] -> [0,0]
+            _ -> []
+    , \x -> case x of
+            [1] -> [1]
+            _ -> []
+    , \x -> case x of
+            [0,0,0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [0,1] -> [0]
+            _ -> []
+    , \x -> case x of
+            [1,0] -> [0]
+            _ -> []
+    , \x -> case x of
+            [2] -> [0]
+            _ -> []
+    , \x -> case x of
+            [] -> [0,0,0]
+            _ -> [0]
+    , \x -> case x of
+            [] -> [0,1]
+            _ -> [0]
+    , \x -> case x of
+            [] -> [1,0]
+            _ -> [0]
+    , \x -> case x of
+            [] -> [2]
+            _ -> [0]
+    , \x -> case x of
+            [0] -> [0,0]
+            _ -> [0]
+    , \x -> case x of
+            [0] -> [1]
+            _ -> [0]
+    , \x -> case x of
+            [] -> []
+            [0,0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [] -> []
+            [1] -> []
+            _ -> [0]
+    , \x -> case x of
+            [0,0,0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [0,1] -> []
+            _ -> [0]
+    , \x -> case x of
+            [1,0] -> []
+            _ -> [0]
+    , \x -> case x of
+            [2] -> []
+            _ -> [0]
+    , \x -> case x of
+            [] -> [1]
+            _ -> [0,0]
+    , \x -> case x of
+            [0] -> [0]
+            _ -> [0,0]
+    , \x -> case x of
+            [] -> []
+            [0] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [0,0] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [1] -> []
+            _ -> [0,0]
+    , \x -> case x of
+            [] -> [0,0]
+            _ -> [1]
+    , \x -> case x of
+            [0] -> [0]
+            _ -> [1]
+    , \x -> case x of
+            [] -> []
+            [0] -> []
+            _ -> [1]
+    , \x -> case x of
+            [0,0] -> []
+            _ -> [1]
+    , \x -> case x of
+            [1] -> []
+            _ -> [1]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [0,0,0]
+    , \x -> case x of
+            [0] -> []
+            _ -> [0,0,0]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [0,1]
+    , \x -> case x of
+            [0] -> []
+            _ -> [0,1]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [1,0]
+    , \x -> case x of
+            [0] -> []
+            _ -> [1,0]
+    , \x -> case x of
+            [] -> [0]
+            _ -> [2]
+    , \x -> case x of
+            [0] -> []
+            _ -> [2]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,0,0,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,0,1]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,1,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [0,2]
+    , \x -> case x of
+            [] -> []
+            _ -> [1,0,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [1,1]
+    , \x -> case x of
+            [] -> []
+            _ -> [2,0]
+    , \x -> case x of
+            [] -> []
+            _ -> [3]
+    , \_ -> [0,0,0,0,0]
+    , \_ -> [0,0,0,1]
+    , \_ -> [0,0,1,0]
+    , \_ -> [0,0,2]
+    , \_ -> [0,1,0,0]
+    , \_ -> [0,1,1]
+    , \_ -> [0,2,0]
+    , \_ -> [0,3]
+    , \_ -> [1,0,0,0]
+    , \_ -> [1,0,1]
+    , \_ -> [1,1,0]
+    , \_ -> [1,2]
+    , \_ -> [2,0,0]
+    , \_ -> [2,1]
+    , \_ -> [3,0]
+    , \_ -> [4]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-U-Bool.out b/test/diff/tiers-default-U-Bool.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-U-Bool.out
@@ -0,0 +1,13 @@
+map length (tiers :: [[ ()->Bool ]])  =  [2]
+
+length (list :: [ ()->Bool ])  =  2
+
+allUnique (list :: [ ()->Bool ])  =  True
+
+ratioRepetitions (list :: [ ()->Bool ])  =  0 % 1
+
+tiers :: [()->Bool]  =
+  [ [ \_ -> False
+    , \_ -> True
+    ]
+  ]
diff --git a/test/diff/tiers-default-U-Nat.out b/test/diff/tiers-default-U-Nat.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-U-Nat.out
@@ -0,0 +1,17 @@
+map length (tiers :: [[ ()->Nat ]])  =  [1,1,1,1,1,1,...]
+
+length (list :: [ ()->Nat ])  =  Infinity
+
+allUnique (list :: [ ()->Nat ])  =  True
+
+ratioRepetitions (list :: [ ()->Nat ])  =  0 % 1
+
+tiers :: [()->Nat]  =
+  [ [\_ -> 0]
+  , [\_ -> 1]
+  , [\_ -> 2]
+  , [\_ -> 3]
+  , [\_ -> 4]
+  , [\_ -> 5]
+  , ...
+  ]
diff --git a/test/diff/tiers-default-U-U.out b/test/diff/tiers-default-U-U.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-U-U.out
@@ -0,0 +1,10 @@
+map length (tiers :: [[ ()->() ]])  =  [1]
+
+length (list :: [ ()->() ])  =  1
+
+allUnique (list :: [ ()->() ])  =  True
+
+ratioRepetitions (list :: [ ()->() ])  =  0 % 1
+
+tiers :: [()->()]  =
+  [[\_ -> ()]]
diff --git a/test/diff/tiers-default-Us-Us.out b/test/diff/tiers-default-Us-Us.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers-default-Us-Us.out
@@ -0,0 +1,115 @@
+map length (tiers :: [[ [()]->[()] ]])  =  [1,1,3,5,10,16,...]
+
+length (list :: [ [()]->[()] ])  =  Infinity
+
+allUnique (list :: [ [()]->[()] ])  =  True
+
+ratioRepetitions (list :: [ [()]->[()] ])  =  0 % 1
+
+tiers :: [[()]->[()]]  =
+  [ [\_ -> []]
+  , [\_ -> [()]]
+  , [ \x -> case x of
+            [] -> [()]
+            _ -> []
+    , \x -> case x of
+            [] -> []
+            _ -> [()]
+    , \_ -> [(),()]
+    ]
+  , [ \x -> case x of
+            [] -> [(),()]
+            _ -> []
+    , \x -> case x of
+            [()] -> [()]
+            _ -> []
+    , \x -> case x of
+            [()] -> []
+            _ -> [()]
+    , \x -> case x of
+            [] -> []
+            _ -> [(),()]
+    , \_ -> [(),(),()]
+    ]
+  , [ \x -> case x of
+            [] -> [(),(),()]
+            _ -> []
+    , \x -> case x of
+            [()] -> [(),()]
+            _ -> []
+    , \x -> case x of
+            [(),()] -> [()]
+            _ -> []
+    , \x -> case x of
+            [] -> [(),()]
+            _ -> [()]
+    , \x -> case x of
+            [] -> []
+            [()] -> []
+            _ -> [()]
+    , \x -> case x of
+            [(),()] -> []
+            _ -> [()]
+    , \x -> case x of
+            [] -> [()]
+            _ -> [(),()]
+    , \x -> case x of
+            [()] -> []
+            _ -> [(),()]
+    , \x -> case x of
+            [] -> []
+            _ -> [(),(),()]
+    , \_ -> [(),(),(),()]
+    ]
+  , [ \x -> case x of
+            [] -> [(),(),(),()]
+            _ -> []
+    , \x -> case x of
+            [()] -> [(),(),()]
+            _ -> []
+    , \x -> case x of
+            [] -> [()]
+            [()] -> [()]
+            _ -> []
+    , \x -> case x of
+            [(),()] -> [(),()]
+            _ -> []
+    , \x -> case x of
+            [(),(),()] -> [()]
+            _ -> []
+    , \x -> case x of
+            [] -> [(),(),()]
+            _ -> [()]
+    , \x -> case x of
+            [()] -> [(),()]
+            _ -> [()]
+    , \x -> case x of
+            [] -> []
+            [(),()] -> []
+            _ -> [()]
+    , \x -> case x of
+            [(),(),()] -> []
+            _ -> [()]
+    , \x -> case x of
+            [()] -> [()]
+            _ -> [(),()]
+    , \x -> case x of
+            [] -> []
+            [()] -> []
+            _ -> [(),()]
+    , \x -> case x of
+            [(),()] -> []
+            _ -> [(),()]
+    , \x -> case x of
+            [] -> [()]
+            _ -> [(),(),()]
+    , \x -> case x of
+            [()] -> []
+            _ -> [(),(),()]
+    , \x -> case x of
+            [] -> []
+            _ -> [(),(),(),()]
+    , \_ -> [(),(),(),(),()]
+    ]
+  , ...
+  ]
diff --git a/test/diff/tiers.out b/test/diff/tiers.out
new file mode 100644
--- /dev/null
+++ b/test/diff/tiers.out
@@ -0,0 +1,10 @@
+map length (tiers :: [[ () ]])  =  [1]
+
+length (list :: [ () ])  =  1
+
+allUnique (list :: [ () ])  =  True
+
+ratioRepetitions (list :: [ () ])  =  0 % 1
+
+tiers :: [()]  =
+  [[()]]
diff --git a/test/error.hs b/test/error.hs
new file mode 100644
--- /dev/null
+++ b/test/error.hs
@@ -0,0 +1,64 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test ()
+
+import System.Exit (exitFailure)
+import Data.List (elemIndices,sort)
+
+import Test.LeanCheck.Error
+import Test.LeanCheck.Utils.Types (Nat)
+import Data.List (sort)
+
+main :: IO ()
+main =
+  case elemIndices False (tests 100) of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+tests n =
+  [ True
+
+  , not $ holds     n prop_sortMinE
+  , fails           n prop_sortMinE
+  , counterExample  n prop_sortMinE == Just ["[]"]
+  , counterExamples n prop_sortMinE == [["[]"]]
+
+  , holds           n prop_sortMin
+  , not $ fails     n prop_sortMin
+  , counterExample  n prop_sortMin == Nothing
+  , counterExamples n prop_sortMin == []
+
+  , exists          n someNumbers
+  , witness         n someNumbers == Just ["2"]
+  , witnesses       n someNumbers == map ((:[]).show) [2,3,5,7,11,13,17]
+
+  , exists          n someOthers
+  , witness         n someOthers == Just ["2","2"]
+  , witnesses (100*n) someOthers == (map.map) show [[2,2],[2,4],[3,3]
+                                                   ,[2,8],[3,9],[3,27]]
+  ]
+
+prop_sortMinE :: [Nat] -> Bool
+prop_sortMinE xs = head (sort xs) == minimum (xs::[Nat])
+
+prop_sortMin :: [Nat] -> Bool
+prop_sortMin xs = not (null xs)
+              ==> head (sort xs) == minimum (xs::[Nat])
+
+someNumbers :: Int -> Bool
+someNumbers  2 = True
+someNumbers  3 = True
+someNumbers  5 = True
+someNumbers  7 = True
+someNumbers 11 = True
+someNumbers 13 = True
+someNumbers 17 = True
+
+someOthers :: Int -> Int -> Bool
+someOthers = \x -> case x of 2 -> \y -> case y of 2 -> True
+                                                  4 -> True
+                                                  8 -> True
+                             3 -> \y -> case y of 3 -> True
+                                                  9 -> True
+                                                  27 -> True
diff --git a/test/fun.hs b/test/fun.hs
new file mode 100644
--- /dev/null
+++ b/test/fun.hs
@@ -0,0 +1,29 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test
+
+import System.Exit (exitFailure)
+import Data.List (elemIndices, sort, nub, delete)
+
+import Test.LeanCheck
+import Test.LeanCheck.Function.ListsOfPairs
+import Test.LeanCheck.Utils
+
+
+main :: IO ()
+main =
+  case elemIndices False tests of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+tests =
+  [ True
+  -- TODO: add some tests here
+  ]
+
+allUnique :: Ord a => [a] -> Bool
+allUnique [] = True
+allUnique (x:xs) = x `notElem` xs
+                && allUnique (filter (< x) xs)
+                && allUnique (filter (> x) xs)
diff --git a/test/funshow.hs b/test/funshow.hs
new file mode 100644
--- /dev/null
+++ b/test/funshow.hs
@@ -0,0 +1,158 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test
+
+import System.Exit (exitFailure)
+import Data.List (elemIndices,sort)
+import Test.LeanCheck.Function.ShowFunction
+import Test.LeanCheck.Function.Show
+import Test.LeanCheck.Utils.TypeBinding
+
+main :: IO ()
+main =
+  case elemIndices False tests of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+
+tests =
+  [ True
+
+  -- undefined values --
+  , showFunction 2 int == "undefined"
+  , showFunction 2 bool == "undefined"
+  , showFunction 2 char == "undefined"
+  , showFunctionLine 10 (int  >- int) == "\\_ -> undefined"
+  , showFunctionLine 10 (bool >- bool) == "\\_ -> undefined"
+
+  -- partially defined --
+  , showFunctionLine 2 (\x -> case x of True -> True)
+                   == "\\x -> case x of True -> True"
+  , showFunctionLine 10 (\x -> case (x::Int) of 3 -> (4::Int); 5 -> 6)
+                    == "\\x -> case x of 3 -> 4; 5 -> 6"
+  , showFunctionLine 10 (\x y -> case (x::Int,y::Int) of (1,2) -> (3::Int); (2,1) -> 3)
+                    == "\\x y -> case (x,y) of (1,2) -> 3; (2,1) -> 3"
+
+  -- fully defined, infinite --
+  , showFunction 3 ((+) -:> int)
+    == "\\x y -> case (x,y) of\n"
+    ++ "        (0,0) -> 0\n"
+    ++ "        (0,1) -> 1\n"
+    ++ "        (1,0) -> 1\n"
+    ++ "        ...\n"
+  , showFunction 3 ((++) -:> [int])
+    == "\\x y -> case (x,y) of\n"
+    ++ "        ([],[]) -> []\n"
+    ++ "        ([],[0]) -> [0]\n"
+    ++ "        ([0],[]) -> [0]\n"
+    ++ "        ...\n"
+  , showFunction 4 (sort -:> [char])
+    == "\\x -> case x of\n"
+    ++ "      \"\" -> \"\"\n"
+    ++ "      \"a\" -> \"a\"\n"
+    ++ "      \"aa\" -> \"aa\"\n"
+    ++ "      \" \" -> \" \"\n"
+    ++ "      ...\n"
+
+
+  -- fully defined, finite --
+  , showFunction 1 not
+    == "\\x -> case x of\n"
+    ++ "      False -> True\n"
+    ++ "      ...\n"
+  , showFunction 2 not
+    == "\\x -> case x of\n"
+    ++ "      False -> True\n"
+    ++ "      True -> False\n"
+  , showFunction 3 (&&)
+    == "\\x y -> case (x,y) of\n"
+    ++ "        (True,True) -> True\n"
+    ++ "        _ -> False\n"
+  , showFunction 4 (&&)
+    == "\\x y -> case (x,y) of\n"
+    ++ "        (True,True) -> True\n"
+    ++ "        _ -> False\n"
+  , showFunction 3 (||)
+    == "\\x y -> case (x,y) of\n"
+    ++ "        (False,False) -> False\n"
+    ++ "        _ -> True\n"
+  , showFunction 4 (||)
+    == "\\x y -> case (x,y) of\n"
+    ++ "        (False,False) -> False\n"
+    ++ "        _ -> True\n"
+
+  , showFunction 4 arg1of1is0
+    == "\\x -> case x of\n"
+    ++ "      0 -> True\n"
+    ++ "      _ -> False\n"
+  , showFunction 4 arg1of1isnt1
+    == "\\x -> case x of\n"
+    ++ "      1 -> False\n"
+    ++ "      _ -> True\n"
+
+  , showFunction 4 arg1of2is0
+    == "\\x _ -> case x of\n"
+    ++ "        0 -> True\n"
+    ++ "        _ -> False\n"
+  , showFunction 4 arg2of2is0
+    == "\\_ y -> case y of\n"
+    ++ "        0 -> True\n"
+    ++ "        _ -> False\n"
+  , showFunction 4 arg2of3isnt2
+    == "\\_ y _ -> case y of\n"
+    ++ "          2 -> False\n"
+    ++ "          _ -> True\n"
+  , showFunction 4 args1or3of3are0
+    == "\\x _ z -> case (x,z) of\n"
+    ++ "          (0,_) -> True\n"
+    ++ "          (_,0) -> True\n"
+    ++ "          _ -> False\n"
+  , showFunction 4 args13of3arent0
+    == "\\x _ z -> case (x,z) of\n"
+    ++ "          (0,0) -> False\n"
+    ++ "          _ -> True\n"
+  ]
+
+arg1of1is0 :: Int -> Bool
+arg1of1is0 =
+  \x -> case x of
+        0 -> True
+        _ -> False
+
+arg1of1isnt1 :: Int -> Bool
+arg1of1isnt1 =
+  \x -> case x of
+        1 -> False
+        _ -> True
+
+arg1of2is0 :: Int -> Int -> Bool
+arg1of2is0 =
+  \x y -> case (x,y) of
+          (0,_) -> True
+          _ -> False
+
+arg2of2is0 :: Int -> Int -> Bool
+arg2of2is0 =
+  \x y -> case (x,y) of
+          (_,0) -> True
+          _ -> False
+
+arg2of3isnt2 :: Int -> Int -> Int -> Bool
+arg2of3isnt2 =
+  \x y z -> case (x,y,z) of
+            (_,2,_) -> False
+            _ -> True
+
+args1or3of3are0 :: Int -> Int -> Int -> Bool
+args1or3of3are0 =
+  \x y z -> case (x,y,z) of
+            (0,_,_) -> True
+            (_,_,0) -> True
+            _ -> False
+
+args13of3arent0 :: Int -> Int -> Int -> Bool
+args13of3arent0 =
+  \x y z -> case (x,y,z) of
+            (0,_,0) -> False
+            _ -> True
diff --git a/test/generic.hs b/test/generic.hs
new file mode 100644
--- /dev/null
+++ b/test/generic.hs
@@ -0,0 +1,65 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+{-# LANGUAGE DeriveGeneric, StandaloneDeriving #-}
+import Test
+import Test.LeanCheck
+import Test.LeanCheck.Generic
+import System.Exit (exitFailure)
+import Data.List (elemIndices,sort)
+import Test.LeanCheck.Utils.Operators
+import GHC.Generics (Generic)
+
+data D0       = D0                    deriving (Eq, Show, Generic)
+data D1 a     = D1 a                  deriving (Eq, Show, Generic)
+data D2 a b   = D2 a b                deriving (Eq, Show, Generic)
+data D3 a b c = D3 a b c              deriving (Eq, Show, Generic)
+data C1 a     =           C11 a | C10 deriving (Eq, Show, Generic)
+data C2 a b   = C22 a b | C21 a | C20 deriving (Eq, Show, Generic)
+data I a b    = a :+ b                deriving (Eq, Show, Generic)
+
+instance Listable D0                   where tiers = genericTiers
+
+instance Listable a => Listable (D1 a) where tiers = genericTiers
+
+instance (Listable a, Listable b)
+      => Listable (D2 a b)             where tiers = genericTiers
+
+instance (Listable a, Listable b, Listable c)
+      => Listable (D3 a b c)           where tiers = genericTiers
+
+instance Listable a => Listable (C1 a) where tiers = genericTiers
+
+instance (Listable a, Listable b)
+      => Listable (C2 a b)             where tiers = genericTiers
+
+instance (Listable a, Listable b)
+      => Listable (I a b)              where tiers = genericTiers
+
+main :: IO ()
+main =
+  case elemIndices False (tests 100) of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+tests n =
+  [ True
+
+  , map unD0 list =| n |= list
+  , map unD1 list =| n |= (list :: [Int])
+  , map unD2 list =| n |= (list :: [(Int,Int)])
+  , map unD3 list =| n |= (list :: [(Int,Int,Int)])
+
+  , map unD1 list == (list :: [()])
+  , map unD2 list == (list :: [((),())])
+  , map unD3 list == (list :: [((),(),())])
+
+  , map unD1 list == (list :: [Bool])
+  , map unD2 list == (list :: [(Bool,Bool)])
+  , map unD3 list == (list :: [(Bool,Bool,Bool)])
+  ]
+  where
+  unD0 (D0)       = ()
+  unD1 (D1 x)     = (x)
+  unD2 (D2 x y)   = (x,y)
+  unD3 (D3 x y z) = (x,y,z)
diff --git a/test/io.hs b/test/io.hs
new file mode 100644
--- /dev/null
+++ b/test/io.hs
@@ -0,0 +1,10 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test
+import Test.LeanCheck.IO
+
+main :: IO ()
+main = do
+  check $ \x -> (x::Int) + x == 2*x    -- should pass
+--check $ \x -> (x::Int) + x == x      -- should fail, falsifiable
+--check $ \x -> (x::Int) `div` x == 1  -- should fail, exception
diff --git a/test/main.hs b/test/main.hs
new file mode 100644
--- /dev/null
+++ b/test/main.hs
@@ -0,0 +1,101 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test
+
+import System.Exit (exitFailure)
+import Data.List (elemIndices)
+
+import Test.LeanCheck
+import Test.LeanCheck.Utils
+
+import Data.Ratio
+import Data.Word (Word)
+
+main :: IO ()
+main =
+  case elemIndices False tests of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+tests :: [Bool]
+tests =
+  [ True
+
+  -- interleave
+  , [1,2,3] +| [0,0,0] == [1,0,2,0,3,0]
+  , take 3 ([1,2] +| (0:undefined)) == [1,0,2]
+  , [0,2..] +| [1,3..] =| 100 |= [0,1..]
+
+  -- etc
+  , tNatPairOrd 100
+  , tNatTripleOrd 200
+  , tNatQuadrupleOrd 300
+  , tNatQuintupleOrd 400
+  , tNatListOrd 500
+  , tListsOfNatOrd 500
+  , listsOf (tiers::[[Nat]]) =| 10 |= tiers
+
+  -- tests!
+  , counterExample 10 (\x y -> x + y /= (x::Int)) == Just ["0", "0"]
+  , counterExample 10 (\x y -> x + y == (x::Int)) == Just ["0", "1"]
+  , counterExample 10 (maybe True (==(0::Int))) == Just ["(Just 1)"]
+  , holds 100 (\x -> x == (x::Int))
+
+  -- For when NaN is in the enumeration (by default, it is not):
+  --, fails 100 (\x -> x == (x::Float))  -- NaN != NaN  :-)
+  --, counterExample 100 (\x -> x == (x::Float)) == Just ["NaN"]
+  , counterExample 10 (\x y -> x + y == (x::Float))  == Just ["0.0","1.0"]
+  , counterExample 10 (\x y -> x + y == (x::Double)) == Just ["0.0","1.0"]
+  , holds          50 (\x -> x + 1 /= (x::Int))
+  , counterExample 50 (\x -> x + 1 /= (x::Float))  == Just ["Infinity"]
+    || counterExample 50 (\x -> x + 1 /= (x::Float)) == Just ["inf"] -- bug on Hugs 2006-09?
+  , counterExample 50 (\x -> x + 1 /= (x::Double)) == Just ["Infinity"]
+    || counterExample 50 (\x -> x + 1 /= (x::Float)) == Just ["inf"] -- bug on Hugs 2006-09?
+  , allUnique (take 100 list :: [Float])
+  , allUnique (take 500 list :: [Double])
+
+  , allUnique (take 500 list :: [Rational])
+  , allUnique (take 100 list :: [Ratio Nat])
+  , orderedOn (\r -> numerator r + denominator r) (take 500 (list :: [Ratio Nat]))
+  , orderedOn (\r -> abs (numerator r) + abs(denominator r)) (take 500 (list :: [Rational]))
+
+  , list == [LT, EQ, GT]
+  , orderedOn length (take 500 (list :: [[Ordering]]))
+  , orderedOn length (take 500 (list :: [[Bool]]))
+
+  , strictlyOrderedOn (\xs -> (sum $ map (+1) xs, xs)) (take 500 (list :: [[Word]]))
+
+  , tPairEqParams 100
+  , tTripleEqParams 100
+
+  , tProductsIsFilterByLength (tiers :: [[ Nat ]])   10 `all` [1..10]
+  , tProductsIsFilterByLength (tiers :: [[ Bool ]])   6 `all` [1..10]
+  , tProductsIsFilterByLength (tiers :: [[ [Nat] ]])  6 `all` [1..10]
+
+  , holds 100 $  (\/)  ==== zipWith' (++) [] [] -:> [[uint2]]
+  , holds 100 $  (\/)  ==== zipWith' (++) [] [] -:> [[bool]]
+  , holds 100 $ (\\//) ==== zipWith' (+|) [] [] -:> [[uint2]]
+  , holds 100 $ (\\//) ==== zipWith' (+|) [] [] -:> [[bool]]
+  ]
+
+allUnique :: Ord a => [a] -> Bool
+allUnique [] = True
+allUnique (x:xs) = x `notElem` xs
+                && allUnique (filter (< x) xs)
+                && allUnique (filter (> x) xs)
+
+
+-- | 'zipwith\'' works similarly to 'zipWith', but takes neutral elements to
+--   operate when one of the lists is exhausted, so, you don't loose elements.
+--
+-- > zipWith' f z e [x,y] [a,b,c,d] == [f x a, f y b, f z c, f z d]
+--
+-- > zipWith' f z e [x,y,z] [a] == [f x a, f y e, f z e]
+--
+-- > zipWith' (+) 0 0 [1,2,3] [1,2,3,4,5,6] == [2,4,6,4,5,6]
+zipWith' :: (a->b->c) -> a -> b  -> [a] -> [b] -> [c]
+zipWith' _ _  _  []     [] = []
+zipWith' f _  zy xs     [] = map (`f` zy) xs
+zipWith' f zx _  []     ys = map (f zx) ys
+zipWith' f zx zy (x:xs) (y:ys) = f x y : zipWith' f zx zy xs ys
diff --git a/test/operators.hs b/test/operators.hs
new file mode 100644
--- /dev/null
+++ b/test/operators.hs
@@ -0,0 +1,143 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test
+
+import System.Exit (exitFailure)
+import Data.List (elemIndices,sort)
+import Test.LeanCheck
+import Test.LeanCheck.Utils
+
+import Data.List (isPrefixOf)
+import Data.Function (on)
+
+main :: IO ()
+main =
+  case elemIndices False (tests 100) of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+tests :: Int -> [Bool]
+tests n =
+  [ True
+
+  , holds n $ (not . not) === id
+  , fails n $ abs === (* (-1))             -:> int
+  , holds n $ (+) ==== (\x y -> sum [x,y]) -:> int
+  , fails n $ (+) ==== (*)                 -:> int
+
+  , holds n $ const True  &&& const True  -:> bool
+  , fails n $ const False &&& const True  -:> int
+  , holds n $ const False ||| const True  -:> int
+  , fails n $ const False ||| const False -:> int
+
+  , holds n $ commutative (+)  -:> int
+  , holds n $ commutative (*)  -:> int
+  , holds n $ commutative (++) -:> [()]
+  , holds n $ commutative (&&)
+  , holds n $ commutative (||)
+  , fails n $ commutative (-)  -:> int
+  , fails n $ commutative (++) -:> [bool]
+  , fails n $ commutative (==>)
+
+  , holds n $ associative (+)  -:> int
+  , holds n $ associative (*)  -:> int
+  , holds n $ associative (++) -:> [int]
+  , holds n $ associative (&&)
+  , holds n $ associative (||)
+  , fails n $ associative (-)  -:> int
+  , fails n $ associative (==>)
+
+  , holds n $ distributive (*) (+) -:> int
+  , fails n $ distributive (+) (*) -:> int
+
+  , holds n $ symmetric (==) -:> int
+  , holds n $ symmetric (/=) -:> int
+  , fails n $ symmetric (<=) -:> int
+
+  , holds n $   reflexive (==) -:> int
+  , holds n $ irreflexive (/=) -:> int
+
+  , holds n $ (<)  `symmetric2` (>)  -:> int
+  , holds n $ (<=) `symmetric2` (>=) -:> int
+  , fails n $ (<)  `symmetric2` (>=) -:> int
+  , fails n $ (<=) `symmetric2` (>)  -:> int
+
+  , holds n $ transitive (==) -:> bool
+  , holds n $ transitive (<)  -:> bool
+  , holds n $ transitive (<=) -:> bool
+  , fails n $ transitive (/=) -:> bool
+  , holds n $ transitive (==) -:> int
+  , holds n $ transitive (<)  -:> int
+  , holds n $ transitive (<=) -:> int
+  , fails n $ transitive (/=) -:> int
+
+  , holds n $ asymmetric    (<)  -:> int
+  , holds n $ antisymmetric (<=) -:> int
+  , fails n $ asymmetric    (<=) -:> int
+  , holds n $ asymmetric    (>)  -:> int
+  , holds n $ antisymmetric (>=) -:> int
+  , fails n $ asymmetric    (>=) -:> int
+
+  , holds n $ equivalence (==) -:> int
+  , holds n $ equivalence ((==) `on` fst) -:> (int,int)
+  , holds n $ equivalence ((==) `on` length) -:> [int]
+
+  , holds n $       totalOrder (<=) -:> int
+  , holds n $ strictTotalOrder (<)  -:> int
+  , fails n $       totalOrder (<)  -:> int
+  , fails n $ strictTotalOrder (<=) -:> int
+  , holds n $       totalOrder (>=) -:> int
+  , holds n $ strictTotalOrder (>)  -:> int
+  , fails n $       totalOrder (>)  -:> int
+  , fails n $ strictTotalOrder (>=) -:> int
+
+  , holds n $ partialOrder isPrefixOf -:> [int]
+  , fails n $   totalOrder isPrefixOf -:> [int]
+
+  , holds n $ comparison compare -:> int
+  , holds n $ comparison compare -:> bool
+  , holds n $ comparison compare -:> ()
+
+  , holds n $ okEqOrd -:> ()
+  , holds n $ okEqOrd -:> int
+  , holds n $ okEqOrd -:> char
+  , holds n $ okEqOrd -:> bool
+  , holds n $ okEqOrd -:> [()]
+  , holds n $ okEqOrd -:> [int]
+  , holds n $ okEqOrd -:> [bool]
+  , 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
+-- NOTE: the following two fail on Hugs due to a bug on Hugs.
+--, 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 $ okNumNonNegative -:> nat
+  , holds n $ okNumNonNegative -:> natural
+  , holds n $ (\x y -> x < y ==> x - y == 0) -:> nat
+  , holds n $ (\x y -> x < y ==> x - y == 0) -:> natural
+
+  , holds n $ idempotent id   -:> int
+  , holds n $ idempotent abs  -:> int
+  , holds n $ idempotent sort -:> [bool]
+  , fails n $ idempotent not
+
+  , holds n $ identity id   -:> int
+  , holds n $ identity (+0) -:> int
+  , holds n $ identity sort -:> [()]
+  , holds n $ identity (not . not)
+  , fails n $ identity not
+
+  , holds n $ neverIdentity not
+  , fails n $ neverIdentity abs    -:> int
+  , fails n $ neverIdentity negate -:> int
+  ]
+
+none :: (a -> Bool) -> [a] -> Bool
+none p = not . or . map p
diff --git a/test/sdist b/test/sdist
new file mode 100644
--- /dev/null
+++ b/test/sdist
@@ -0,0 +1,33 @@
+#!/bin/bash
+#
+# test/sdist: tests the package generated by "cabal sdist".
+#
+# Copyright (c) 2015-2018 Rudy Matela.
+# Distributed under the 3-Clause BSD licence.
+export LC_ALL=C  # consistent sort
+pkgver=` cat *.cabal | grep "^version:" | sed -e "s/version: *//"`
+pkgname=`cat *.cabal | grep "^name:"    | sed -e "s/name: *//"`
+pkg=$pkgname-$pkgver
+set -x
+cabal sdist &&
+cd dist &&
+tar -tf $pkg.tar.gz | sort --ignore-case          > ls-cabal-i  &&
+tar -tf $pkg.tar.gz | sort --ignore-case --unique > ls-cabal-iu &&
+diff -rud ls-cabal-i ls-cabal-iu &&
+rm -f ls-cabal ls-cabal-ignore-case &&
+if [ -d ../.git ]
+then
+	# on git repo, test if files are the same
+	git -C .. ls-files                                      | sort > ls-git   &&
+	tar -tf $pkg.tar.gz | grep -v "/$" | sed -e "s,$pkg/,," | sort > ls-cabal &&
+	diff -rud ls-git ls-cabal &&
+	rm -f ls-git ls-cabal
+else
+	# outside of git repo, test build
+	rm -rf $pkg/ &&
+	tar -xzf $pkg.tar.gz &&
+	cd $pkg/ &&
+	cabal configure --enable-tests --enable-benchmarks &&
+	cabal build &&
+	cabal test
+fi
diff --git a/test/stats.hs b/test/stats.hs
new file mode 100644
--- /dev/null
+++ b/test/stats.hs
@@ -0,0 +1,55 @@
+-- Copyright (c) 2017-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test
+
+import System.Exit (exitFailure)
+import Data.List (elemIndices,sort)
+import Test.LeanCheck
+import Test.LeanCheck.Stats
+
+import Data.List (isPrefixOf)
+import Data.Function (on)
+
+main :: IO ()
+main = do
+  putStrLn "sum :: [Int] -> Bool"
+  classStats 100 (sum     :: [Int] -> Int)
+
+  putStrLn "length :: [Int] -> Int"
+  classStats 100 (length  :: [Int] -> Int)
+
+  putStrLn "take 1 :: [Int] -> [Int]"
+  classStats 100 (take 1  :: [Int] -> [Int])
+
+  conditionStats 1000 [ ("odd", odd :: Int -> Bool)
+                      , ("even", even) ]
+
+  conditionStats 1000 [ ("ordered",ordered :: [Int] -> Bool)
+                      , ("ordered . reverse", ordered . reverse) ]
+
+  putStrLn "sum :: [Int] -> Bool"
+  classStatsT 6 (sum     :: [Int] -> Int)
+
+  putStrLn "length :: [Int] -> Int"
+  classStatsT 6 (length  :: [Int] -> Int)
+
+  putStrLn "take 1 :: [Int] -> [Int]"
+  classStatsT 6 (take 1  :: [Int] -> [Int])
+
+
+  case elemIndices False (tests 100) of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+tests :: Int -> [Bool]
+tests n =
+  [ True
+
+  , classify                   [1,2,3,4,1,2,3,1,2,1] == [[1,1,1,1],[2,2,2],[3,3],[4]]
+  , classifyBy ((==) `on` odd) [1,2,3,4,1,2,3,1,2,1] == [[1,3,1,3,1,1],[2,4,2,2]]
+  , classifyOn odd             [1,2,3,4,1,2,3,1,2,1] == [[1,3,1,3,1,1],[2,4,2,2]]
+  , counts                   [1,2,3,4,1,2,3,1,2,1] == [(1,4),(2,3),(3,2),(4,1)]
+  , countsBy ((==) `on` odd) [1,2,3,4,1,2,3,1,2,1] == [(1,6),(2,4)]
+  , countsOn odd             [1,2,3,4,1,2,3,1,2,1::Int] == [(True,6),(False,4)]
+  ]
diff --git a/test/tiers.hs b/test/tiers.hs
new file mode 100644
--- /dev/null
+++ b/test/tiers.hs
@@ -0,0 +1,113 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test
+
+import System.Exit (exitFailure)
+import Data.List (elemIndices, sort, nub, delete)
+
+import Test.LeanCheck
+import Test.LeanCheck.Utils
+
+import Test.LeanCheck.Tiers
+
+main :: IO ()
+main =
+  case elemIndices False tests of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+tests =
+  [ True
+
+  , checkNoDup 12
+  , checkBags 18
+  , checkSets 20
+  , checkDistinctPairs 20
+  , checkUnorderedPairs 20
+  , checkUnorderedDistinctPairs 20
+  , checkLengthListingsOfLength 5 5
+  , checkSizesListingsOfLength 5 5
+
+  , all (uncurry (/=)) . concat . take 100 $ distinctPairs (tiers :: [[Nat]])
+
+  , productMaybeWith ($) [[const Nothing, Just]] [[1],[2],[3],[4]] == [[1],[2],[3],[4]]
+  , productMaybeWith (flip ($))
+                     [[1],[2],[3],[4]]
+                     [[const Nothing],[Just]] == [[],[1],[2],[3],[4]]
+
+  , holds 100 $ deleteT_is_map_delete 10 -:> nat
+  , holds 100 $ deleteT_is_map_delete 10 -:> int
+  , holds 100 $ deleteT_is_map_delete 10 -:> bool
+  , holds 100 $ deleteT_is_map_delete 10 -:> int2
+
+  , finite (tiers :: [[ Bool ]])  == True
+  , finite (tiers :: [[ (Bool,Bool) ]]) == True
+  , finite (tiers :: [[ Nat1 ]])  == True
+  , finite (tiers :: [[ Nat2 ]])  == True
+  , finite (tiers :: [[ Nat3 ]])  == True
+  , finite (tiers :: [[ Nat4 ]])  == True
+  , finite (tiers :: [[ Nat5 ]])  == True
+  , finite (tiers :: [[ Nat6 ]])  == True
+  , finite (tiers :: [[ Nat7 ]])  == True
+  , finite (tiers :: [[ Word1 ]])  == True
+  , finite (tiers :: [[ Word2 ]])  == True
+  , finite (tiers :: [[ Word3 ]])  == True
+
+  , finite (tiers :: [[ Nat ]])   == False
+  , finite (tiers :: [[ Int ]])   == False
+  , finite (tiers :: [[ [Int] ]]) == False
+  , finite (tiers :: [[ [()] ]])  == False
+
+  -- false negatives, more than 12 values:
+  , finite (tiers :: [[ Word4 ]])  == False
+  , finite (tiers :: [[ (Bool,Bool,Bool,Bool,Bool) ]]) == False
+  , finite (tiers :: [[ (Bool,Bool,Bool,Bool,Bool,Bool) ]]) == False
+
+  , holds 100 $ \xss -> ordered . concat $ discardLaterT (<)  (xss::[[Int]])
+  , holds 100 $ \xss -> ordered . concat $ discardLaterT (<=) (xss::[[Int]])
+  , (length . concat $ discardLaterT (<=) [[1..100]]) == 100
+  , (length . concat $ discardLaterT (<=) [[00..99],[100..199::Int]]) == 200
+  , holds 100 $ \xss -> nub (concat xss) == concat (nubT xss :: [[Int]])
+  ]
+
+deleteT_is_map_delete :: (Eq a, Listable a) => Int -> a -> Bool
+deleteT_is_map_delete n x = deleteT x tiers
+                    =| n |= normalizeT (map (delete x) tiers)
+
+checkNoDup :: Int -> Bool
+checkNoDup n = noDupListsOf (tiers :: [[Int]]) =| n |= tiers `suchThat` noDup
+  where noDup xs = nub (sort xs) == sort xs
+
+checkBags :: Int -> Bool
+checkBags n = bagsOf (tiers :: [[Nat]]) =| n |= tiers `suchThat` ordered
+
+checkSets :: Int -> Bool
+checkSets n = setsOf (tiers :: [[Nat]]) =| n |= tiers `suchThat` strictlyOrdered
+
+checkDistinctPairs :: Int -> Bool
+checkDistinctPairs n =
+  distinctPairs (tiers :: [[Nat]]) =| n |= tiers `suchThat` uncurry (/=)
+
+checkUnorderedDistinctPairs :: Int -> Bool
+checkUnorderedDistinctPairs n =
+  unorderedDistinctPairs (tiers :: [[Nat]]) =| n |= tiers `suchThat` uncurry (<)
+
+checkUnorderedPairs :: Int -> Bool
+checkUnorderedPairs n =
+  unorderedPairs (tiers :: [[Nat]]) =| n |= tiers `suchThat` uncurry (<=)
+
+checkLengthListingsOfLength :: Int -> Int -> Bool
+checkLengthListingsOfLength n m = all check [1..m]
+  where check m = all (\xs -> length xs == m)
+                $ concat . take n
+                $ listsOfLength m natTiers
+
+checkSizesListingsOfLength :: Int -> Int -> Bool
+checkSizesListingsOfLength n m = all check [1..m]
+  where check m = orderedBy compare
+                $ map sum . concat . take n
+                $ listsOfLength m natTiers
+
+natTiers :: [[Nat]]
+natTiers = tiers
diff --git a/test/types.hs b/test/types.hs
new file mode 100644
--- /dev/null
+++ b/test/types.hs
@@ -0,0 +1,187 @@
+-- Copyright (c) 2015-2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+import Test
+import System.Exit (exitFailure)
+import Data.List (elemIndices,delete,isPrefixOf)
+import Test.LeanCheck.Utils.Types
+import Test.LeanCheck (list,fails)
+import Data.Word
+import Data.Int
+import Data.Char hiding (Space)
+
+main :: IO ()
+main =
+  case elemIndices False tests of
+    [] -> putStrLn "Tests passed!"
+    is -> do putStrLn ("Failed tests:" ++ show is)
+             exitFailure
+
+
+-- | Given the number of bits, generates a range for signed/unsigned integers
+--   of that width.
+signedRange,unsignedRange :: (Num n) => Int -> [n]
+signedRange n   = map fromIntegral [-(2^(n-1))..(2^(n-1))-1]
+unsignedRange n = map fromIntegral [0..(2^n)-1]
+
+
+tests =
+  [ True
+
+  , list `permutation` [minBound..maxBound :: Int1]
+  , list `permutation` [minBound..maxBound :: Int2]
+  , list `permutation` [minBound..maxBound :: Int3]
+  , list `permutation` [minBound..maxBound :: Int4]
+
+  , list `permutation` [minBound..maxBound :: UInt1]
+  , list `permutation` [minBound..maxBound :: UInt2]
+  , list `permutation` [minBound..maxBound :: UInt3]
+  , list `permutation` [minBound..maxBound :: UInt4]
+
+  , list `permutation` [minBound..maxBound :: Nat1]
+  , list `permutation` [minBound..maxBound :: Nat2]
+  , list `permutation` [minBound..maxBound :: Nat3]
+  , list `permutation` [minBound..maxBound :: Nat4]
+  , list `permutation` [minBound..maxBound :: Nat5]
+  , 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]
+-- 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]
+-- 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]
+
+  , (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
+
+  , (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
+
+
+  , [minBound..maxBound :: Int1] == signedRange 1
+  , [minBound..maxBound :: Int2] == signedRange 2
+  , [minBound..maxBound :: Int3] == signedRange 3
+  , [minBound..maxBound :: Int4] == signedRange 4
+
+  , [minBound..maxBound :: UInt1] == unsignedRange 1
+  , [minBound..maxBound :: UInt2] == unsignedRange 2
+  , [minBound..maxBound :: UInt3] == unsignedRange 3
+  , [minBound..maxBound :: UInt4] == unsignedRange 4
+
+
+  -- abs minBound == minBound
+  , fails 100 (\i -> abs i > (0::Int1))
+  , fails 100 (\i -> abs i > (0::Int2))
+  , fails 100 (\i -> abs i > (0::Int3))
+  , fails 100 (\i -> abs i > (0::Int4))
+
+  -- maxBound + 1 == minBound
+  , fails 100 (\i -> i + 1 < (i::Int1))
+  , 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)
+
+  , holds 100 $ \(Space c) -> isSpace c
+  , holds 100 $ \(Lower c) -> isLower c
+  , holds 100 $ \(Upper c) -> isUpper c
+  , holds 100 $ \(Alpha c) -> isAlpha c
+  , holds 100 $ \(Digit c) -> isDigit c
+  , holds 100 $ \(AlphaNum c) -> isAlphaNum c
+  , holds 100 $ \(Letter c) -> isLetter c
+
+  , holds 100 $ \(Spaces s) -> all isSpace s
+  , holds 100 $ \(Lowers s) -> all isLower s
+  , holds 100 $ \(Uppers s) -> all isUpper s
+  , holds 100 $ \(Alphas s) -> all isAlpha s
+  , holds 100 $ \(Digits s) -> all isDigit s
+  , holds 100 $ \(AlphaNums s) -> all isAlphaNum s
+  , holds 100 $ \(Letters s)   -> all isLetter s
+  ]
+  where
+  unXs (Xs xs) = xs
+
+
+prefiX :: (Bounded a, Integral a) => [a]
+prefiX =
+  [ 0
+  , 1, -1
+  , maxBound, minBound
+  , 2, -2
+  , maxBound-1, minBound+1
+  , 3, -3
+  , maxBound-2, minBound+2
+  ]
+
+prefiXs :: (Bounded a, Integral a) => [[a]]
+prefiXs =
+  [ []
+  , [0]
+  , [0,0], [1]
+  , [0,0,0], [0,1], [1,0], [-1]
+  , [0,0,0,0], [0,0,1], [0,1,0], [0,-1], [1,0,0], [1,1], [-1,0], [maxBound]
+  , [0,0,0,0,0], [0,0,0,1], [0,0,1,0], [0,0,-1]
+    , [0,1,0,0], [0,1,1], [0,-1,0], [0,maxBound]
+    , [1,0,0,0], [1,0,1], [1,1,0], [1,-1]
+    , [-1,0,0], [-1,1], [maxBound,0], [minBound]
+  ]
+
+prefiXN :: (Bounded a, Integral a) => [a]
+prefiXN =
+  [ 0
+  , 1, 2
+  , maxBound
+  , 3, 4
+  , maxBound-1
+  , 5, 6
+  , maxBound-2
+  ]
+
+prefiXNs :: (Bounded a, Integral a) => [[a]]
+prefiXNs =
+  [ []
+  , [0]
+  , [0,0], [1]
+  , [0,0,0], [0,1], [1,0], [2]
+  , [0,0,0,0], [0,0,1], [0,1,0], [0,2], [1,0,0], [1,1], [2,0], [maxBound]
+  ]
+
+permutation :: Eq a => [a] -> [a] -> Bool
+[]     `permutation` []    = True
+(_:_)  `permutation` []    = False
+[]     `permutation` (_:_) = False
+(x:xs) `permutation` ys    = x `elem` ys  &&  xs `permutation` delete x ys
diff --git a/tests/Test.hs b/tests/Test.hs
deleted file mode 100644
--- a/tests/Test.hs
+++ /dev/null
@@ -1,143 +0,0 @@
--- |
--- Module      : Test
--- Copyright   : (c) 2015-2018 Rudy Matela
--- License     : 3-Clause BSD  (see the file LICENSE)
--- Maintainer  : Rudy Matela <rudy@matela.com.br>
---
--- This module is part of LeanCheck,
--- a simple enumerative property-based testing library.
---
--- Some helper functios to test LeanCheck itself.
-module Test
-  ( module Test.LeanCheck
-
-  , tNatPairOrd
-  , tNatTripleOrd
-  , tNatQuadrupleOrd
-  , tNatQuintupleOrd
-  , tNatListOrd
-  , tListsOfNatOrd
-  , tPairEqParams
-  , tTripleEqParams
-  , tProductsIsFilterByLength
-
-  , ordered
-  , orderedBy
-  , orderedOn
-  , strictlyOrdered
-  , strictlyOrderedBy
-  , strictlyOrderedOn
-  )
-where
-
-import Test.LeanCheck
-import Data.List
-import Data.Ord
-import Test.LeanCheck.Utils.Types (Nat(..))
-
--- | check if a list is ordered
-ordered :: Ord a => [a] -> Bool
-ordered = orderedBy compare
--- ordered [] = True
--- ordered [_] = True
--- ordered (x:y:xs) = x <= y && ordered (y:xs)
-
-strictlyOrdered :: Ord a => [a] -> Bool
-strictlyOrdered = strictlyOrderedBy compare
-
--- | check if a list is ordered by a given ordering function
-orderedBy :: (a -> a -> Ordering) -> [a] -> Bool
-orderedBy _ [] = True
-orderedBy _ [_] = True
-orderedBy cmp (x:y:xs) = case x `cmp` y of
-                           GT -> False
-                           _  -> orderedBy cmp (y:xs)
-
-orderedOn :: Ord b => (a -> b) -> [a] -> Bool
-orderedOn f = orderedBy (comparing f)
-
--- | check if a list is strictly ordered by a given ordering function
-strictlyOrderedBy :: (a -> a -> Ordering) -> [a] -> Bool
-strictlyOrderedBy _ [] = True
-strictlyOrderedBy _ [_] = True
-strictlyOrderedBy cmp (x:y:xs) = case x `cmp` y of
-                                   LT -> strictlyOrderedBy cmp (y:xs)
-                                   _  -> False
-
-strictlyOrderedOn :: Ord b => (a -> b) -> [a] -> Bool
-strictlyOrderedOn f = strictlyOrderedBy (comparing f)
-
-ifNotEq :: Ordering -> Ordering -> Ordering
--- Could be implemented as:  ifNotEq = mappend
-ifNotEq EQ p = p
-ifNotEq  o _ = o
-
-thn :: (a->a->Ordering) -> (a->a->Ordering) -> a -> a -> Ordering
-thn cmp1 cmp2 x y = (x `cmp1` y) `ifNotEq` (x `cmp2` y)
-infixr 9 `thn`
-
-
--- | checks if the first 'n' elements on tiers are ordered by 'cmp'.
---
--- > (n `seriesOrderedBy`) comparing (id :: Type)
-tOrderedBy :: Listable a => Int -> (a -> a -> Ordering) -> Bool
-tOrderedBy n cmp = orderedBy cmp $ take n list
-infixr 9 `tOrderedBy`
-
-tStrictlyOrderedBy :: Listable a => Int -> (a -> a -> Ordering) -> Bool
-tStrictlyOrderedBy n cmp = strictlyOrderedBy cmp $ take n list
-infixr 9 `tStrictlyOrderedBy`
-
-tNatPairOrd :: Int -> Bool
-tNatPairOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
-  where sum' (x,y) = x+y :: Nat
-
-tNatTripleOrd :: Int -> Bool
-tNatTripleOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
-  where sum' (x,y,z) = x+y+z :: Nat
-
-tNatQuadrupleOrd :: Int -> Bool
-tNatQuadrupleOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
-  where sum' (x,y,z,w) = x+y+z+w :: Nat
-
-tNatQuintupleOrd :: Int -> Bool
-tNatQuintupleOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
-  where sum' (x,y,z,w,v) = x+y+z+w+v :: Nat
-
-tNatListOrd :: Int -> Bool
-tNatListOrd n = n `tStrictlyOrderedBy`  comparing sum' `thn` compare
-  where sum' = sum . map (+1) :: [Nat] -> Nat
-
-tListsOfStrictlyOrderedBy :: Int
-                           -> (a -> a -> Ordering)
-                           -> [[a]]
-                           -> Bool
-tListsOfStrictlyOrderedBy n cmp = strictlyOrderedBy cmp . take n . concat
-infixr 9 `tListsOfStrictlyOrderedBy`
-
-tListsOfNatOrd :: Int -> Bool
-tListsOfNatOrd n = tListsOfStrictlyOrderedBy n (comparing sum' `thn` compare) tiers
-  where sum' = sum . map (+1) :: [Nat] -> Nat
-
-tPairEqParams :: Int -> Bool
-tPairEqParams n = ces == srs
-  where
-    ces = map (map read) $ counterExamples n fail
-    srs = map pairToList $ take n list
-    pairToList (x,y) = [x,y :: Nat]
-    fail :: Nat -> Nat -> Bool
-    fail x y = False
-
-tTripleEqParams :: Int -> Bool
-tTripleEqParams n = ces == srs
-  where
-    ces = map (map read) $ counterExamples n fail
-    srs = map tripleToList $ take n list
-    tripleToList (x,y,z) = [x,y,z :: Nat]
-    fail :: Nat -> Nat -> Nat -> Bool
-    fail x y z = False
-
-tProductsIsFilterByLength :: Eq a => [[a]] -> Int -> Int -> Bool
-tProductsIsFilterByLength values m n = concat (take m byProduct) `isPrefixOf` concat byFilter
-  where byProduct = products $ replicate n values
-        byFilter  = ((==n) . length) `filterT` listsOf values
diff --git a/tests/diff/eg/higher-order.out b/tests/diff/eg/higher-order.out
deleted file mode 100644
--- a/tests/diff/eg/higher-order.out
+++ /dev/null
@@ -1,50 +0,0 @@
-*** Failed! Falsifiable (after 75 tests):
-\x y -> case (x,y) of
-          (0,0) -> 1
-          (0,1) -> 1
-          (1,0) -> 0
-          (0,-1) -> 1
-          (1,1) -> 0
-          (-1,0) -> 0
-          (0,2) -> 1
-          (1,-1) -> 0
-          ...
-0
-[0,0]
-
-*** Failed! Falsifiable (after 130 tests):
-\x y -> case (x,y) of
-          (0,0) -> 1
-          (0,1) -> 1
-          (1,0) -> 0
-          (0,-1) -> 1
-          (1,1) -> 0
-          (-1,0) -> 0
-          (0,2) -> 1
-          (1,-1) -> 0
-          ...
-[0,0,0]
-
-*** Failed! Falsifiable (after 36 tests):
-\x -> case x of
-        0 -> 0
-        1 -> 0
-        -1 -> 0
-        2 -> 0
-        -2 -> 0
-        3 -> 0
-        -3 -> 0
-        4 -> 0
-        ...
-\x -> case x of
-        0 -> True
-        1 -> False
-        -1 -> False
-        2 -> False
-        -2 -> False
-        3 -> False
-        -3 -> False
-        4 -> False
-        ...
-[1]
-
diff --git a/tests/diff/eg/overflow.out b/tests/diff/eg/overflow.out
deleted file mode 100644
--- a/tests/diff/eg/overflow.out
+++ /dev/null
@@ -1,2 +0,0 @@
-*** Failed! Falsifiable (after 8792 tests):
-(T [] [] [] [-1] [-32768])
diff --git a/tests/diff/eg/test-bool.out b/tests/diff/eg/test-bool.out
deleted file mode 100644
--- a/tests/diff/eg/test-bool.out
+++ /dev/null
@@ -1,29 +0,0 @@
-not . not === id
-+++ OK, passed 2 tests (exhausted).
-(&&) commutes
-+++ OK, passed 4 tests (exhausted).
-(||) commutes
-+++ OK, passed 4 tests (exhausted).
-
-All boolean operators are commutative (wrong).
-*** Failed! Falsifiable (after 10 tests):
-\x y -> case (x,y) of
-          (False,False) -> False
-          (False,True) -> False
-          (True,False) -> True
-          (True,True) -> False
-False
-True
-
-
-All boolean operators are associative (wrong).
-*** Failed! Falsifiable (after 22 tests):
-\x y -> case (x,y) of
-          (False,False) -> False
-          (False,True) -> False
-          (True,False) -> True
-          (True,True) -> False
-True
-False
-True
-
diff --git a/tests/diff/eg/test-list.out b/tests/diff/eg/test-list.out
deleted file mode 100644
--- a/tests/diff/eg/test-list.out
+++ /dev/null
@@ -1,6 +0,0 @@
-*** Failed! Falsifiable (after 4 tests):
-[] [0,0]
-*** Failed! Falsifiable (after 1 tests):
-[]
-*** Failed! Exception '...' (after 1 tests):
-[]
diff --git a/tests/diff/eg/test-sort.out b/tests/diff/eg/test-sort.out
deleted file mode 100644
--- a/tests/diff/eg/test-sort.out
+++ /dev/null
@@ -1,4 +0,0 @@
-+++ OK, passed 200 tests.
-*** Failed! Falsifiable (after 4 tests):
-0 [0,0]
-+++ OK, passed 200 tests.
diff --git a/tests/diff/tiers-BagBool.out b/tests/diff/tiers-BagBool.out
deleted file mode 100644
--- a/tests/diff/tiers-BagBool.out
+++ /dev/null
@@ -1,100 +0,0 @@
-map length (tiers :: [[ Bag Bool ]])  =  [1,2,3,4,5,6,7,8,9,10,11,12,...]
-
-length (list :: [ Bag Bool ])  =  Infinity
-
-allUnique (list :: [ Bag Bool ])  =  True
-
-ratioRepetitions (list :: [ Bag Bool ])  =  0 % 1
-
-tiers :: [Bag Bool]  =
-  [ [Bag []]
-  , [ Bag [False]
-    , Bag [True]
-    ]
-  , [ Bag [False,False]
-    , Bag [False,True]
-    , Bag [True,True]
-    ]
-  , [ Bag [False,False,False]
-    , Bag [False,False,True]
-    , Bag [False,True,True]
-    , Bag [True,True,True]
-    ]
-  , [ Bag [False,False,False,False]
-    , Bag [False,False,False,True]
-    , Bag [False,False,True,True]
-    , Bag [False,True,True,True]
-    , Bag [True,True,True,True]
-    ]
-  , [ Bag [False,False,False,False,False]
-    , Bag [False,False,False,False,True]
-    , Bag [False,False,False,True,True]
-    , Bag [False,False,True,True,True]
-    , Bag [False,True,True,True,True]
-    , Bag [True,True,True,True,True]
-    ]
-  , [ Bag [False,False,False,False,False,False]
-    , Bag [False,False,False,False,False,True]
-    , Bag [False,False,False,False,True,True]
-    , Bag [False,False,False,True,True,True]
-    , Bag [False,False,True,True,True,True]
-    , Bag [False,True,True,True,True,True]
-    , Bag [True,True,True,True,True,True]
-    ]
-  , [ Bag [False,False,False,False,False,False,False]
-    , Bag [False,False,False,False,False,False,True]
-    , Bag [False,False,False,False,False,True,True]
-    , Bag [False,False,False,False,True,True,True]
-    , Bag [False,False,False,True,True,True,True]
-    , Bag [False,False,True,True,True,True,True]
-    , Bag [False,True,True,True,True,True,True]
-    , Bag [True,True,True,True,True,True,True]
-    ]
-  , [ Bag [False,False,False,False,False,False,False,False]
-    , Bag [False,False,False,False,False,False,False,True]
-    , Bag [False,False,False,False,False,False,True,True]
-    , Bag [False,False,False,False,False,True,True,True]
-    , Bag [False,False,False,False,True,True,True,True]
-    , Bag [False,False,False,True,True,True,True,True]
-    , Bag [False,False,True,True,True,True,True,True]
-    , Bag [False,True,True,True,True,True,True,True]
-    , Bag [True,True,True,True,True,True,True,True]
-    ]
-  , [ Bag [False,False,False,False,False,False,False,False,False]
-    , Bag [False,False,False,False,False,False,False,False,True]
-    , Bag [False,False,False,False,False,False,False,True,True]
-    , Bag [False,False,False,False,False,False,True,True,True]
-    , Bag [False,False,False,False,False,True,True,True,True]
-    , Bag [False,False,False,False,True,True,True,True,True]
-    , Bag [False,False,False,True,True,True,True,True,True]
-    , Bag [False,False,True,True,True,True,True,True,True]
-    , Bag [False,True,True,True,True,True,True,True,True]
-    , Bag [True,True,True,True,True,True,True,True,True]
-    ]
-  , [ Bag [False,False,False,False,False,False,False,False,False,False]
-    , Bag [False,False,False,False,False,False,False,False,False,True]
-    , Bag [False,False,False,False,False,False,False,False,True,True]
-    , Bag [False,False,False,False,False,False,False,True,True,True]
-    , Bag [False,False,False,False,False,False,True,True,True,True]
-    , Bag [False,False,False,False,False,True,True,True,True,True]
-    , Bag [False,False,False,False,True,True,True,True,True,True]
-    , Bag [False,False,False,True,True,True,True,True,True,True]
-    , Bag [False,False,True,True,True,True,True,True,True,True]
-    , Bag [False,True,True,True,True,True,True,True,True,True]
-    , Bag [True,True,True,True,True,True,True,True,True,True]
-    ]
-  , [ Bag [False,False,False,False,False,False,False,False,False,False,False]
-    , Bag [False,False,False,False,False,False,False,False,False,False,True]
-    , Bag [False,False,False,False,False,False,False,False,False,True,True]
-    , Bag [False,False,False,False,False,False,False,False,True,True,True]
-    , Bag [False,False,False,False,False,False,False,True,True,True,True]
-    , Bag [False,False,False,False,False,False,True,True,True,True,True]
-    , Bag [False,False,False,False,False,True,True,True,True,True,True]
-    , Bag [False,False,False,False,True,True,True,True,True,True,True]
-    , Bag [False,False,False,True,True,True,True,True,True,True,True]
-    , Bag [False,False,True,True,True,True,True,True,True,True,True]
-    , Bag [False,True,True,True,True,True,True,True,True,True,True]
-    , Bag [True,True,True,True,True,True,True,True,True,True,True]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-BagNat.out b/tests/diff/tiers-BagNat.out
deleted file mode 100644
--- a/tests/diff/tiers-BagNat.out
+++ /dev/null
@@ -1,216 +0,0 @@
-map length (tiers :: [[ Bag Nat ]])  =  [1,1,2,3,5,7,11,15,22,30,42,56,...]
-
-length (list :: [ Bag Nat ])  =  Infinity
-
-allUnique (list :: [ Bag Nat ])  =  True
-
-ratioRepetitions (list :: [ Bag Nat ])  =  0 % 1
-
-tiers :: [Bag Nat]  =
-  [ [Bag []]
-  , [Bag [0]]
-  , [ Bag [0,0]
-    , Bag [1]
-    ]
-  , [ Bag [0,0,0]
-    , Bag [0,1]
-    , Bag [2]
-    ]
-  , [ Bag [0,0,0,0]
-    , Bag [0,0,1]
-    , Bag [0,2]
-    , Bag [1,1]
-    , Bag [3]
-    ]
-  , [ Bag [0,0,0,0,0]
-    , Bag [0,0,0,1]
-    , Bag [0,0,2]
-    , Bag [0,1,1]
-    , Bag [0,3]
-    , Bag [1,2]
-    , Bag [4]
-    ]
-  , [ Bag [0,0,0,0,0,0]
-    , Bag [0,0,0,0,1]
-    , Bag [0,0,0,2]
-    , Bag [0,0,1,1]
-    , Bag [0,0,3]
-    , Bag [0,1,2]
-    , Bag [0,4]
-    , Bag [1,1,1]
-    , Bag [1,3]
-    , Bag [2,2]
-    , Bag [5]
-    ]
-  , [ Bag [0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,1]
-    , Bag [0,0,0,0,2]
-    , Bag [0,0,0,1,1]
-    , Bag [0,0,0,3]
-    , Bag [0,0,1,2]
-    , Bag [0,0,4]
-    , Bag [0,1,1,1]
-    , Bag [0,1,3]
-    , Bag [0,2,2]
-    , Bag [0,5]
-    , Bag [1,1,2]
-    , Bag [1,4]
-    , Bag [2,3]
-    , Bag [6]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,2]
-    , Bag [0,0,0,0,1,1]
-    , Bag [0,0,0,0,3]
-    , Bag [0,0,0,1,2]
-    , Bag [0,0,0,4]
-    , Bag [0,0,1,1,1]
-    , Bag [0,0,1,3]
-    , Bag [0,0,2,2]
-    , Bag [0,0,5]
-    , Bag [0,1,1,2]
-    , Bag [0,1,4]
-    , Bag [0,2,3]
-    , Bag [0,6]
-    , Bag [1,1,1,1]
-    , Bag [1,1,3]
-    , Bag [1,2,2]
-    , Bag [1,5]
-    , Bag [2,4]
-    , Bag [3,3]
-    , Bag [7]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,0,2]
-    , Bag [0,0,0,0,0,1,1]
-    , Bag [0,0,0,0,0,3]
-    , Bag [0,0,0,0,1,2]
-    , Bag [0,0,0,0,4]
-    , Bag [0,0,0,1,1,1]
-    , Bag [0,0,0,1,3]
-    , Bag [0,0,0,2,2]
-    , Bag [0,0,0,5]
-    , Bag [0,0,1,1,2]
-    , Bag [0,0,1,4]
-    , Bag [0,0,2,3]
-    , Bag [0,0,6]
-    , Bag [0,1,1,1,1]
-    , Bag [0,1,1,3]
-    , Bag [0,1,2,2]
-    , Bag [0,1,5]
-    , Bag [0,2,4]
-    , Bag [0,3,3]
-    , Bag [0,7]
-    , Bag [1,1,1,2]
-    , Bag [1,1,4]
-    , Bag [1,2,3]
-    , Bag [1,6]
-    , Bag [2,2,2]
-    , Bag [2,5]
-    , Bag [3,4]
-    , Bag [8]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,0,0,2]
-    , Bag [0,0,0,0,0,0,1,1]
-    , Bag [0,0,0,0,0,0,3]
-    , Bag [0,0,0,0,0,1,2]
-    , Bag [0,0,0,0,0,4]
-    , Bag [0,0,0,0,1,1,1]
-    , Bag [0,0,0,0,1,3]
-    , Bag [0,0,0,0,2,2]
-    , Bag [0,0,0,0,5]
-    , Bag [0,0,0,1,1,2]
-    , Bag [0,0,0,1,4]
-    , Bag [0,0,0,2,3]
-    , Bag [0,0,0,6]
-    , Bag [0,0,1,1,1,1]
-    , Bag [0,0,1,1,3]
-    , Bag [0,0,1,2,2]
-    , Bag [0,0,1,5]
-    , Bag [0,0,2,4]
-    , Bag [0,0,3,3]
-    , Bag [0,0,7]
-    , Bag [0,1,1,1,2]
-    , Bag [0,1,1,4]
-    , Bag [0,1,2,3]
-    , Bag [0,1,6]
-    , Bag [0,2,2,2]
-    , Bag [0,2,5]
-    , Bag [0,3,4]
-    , Bag [0,8]
-    , Bag [1,1,1,1,1]
-    , Bag [1,1,1,3]
-    , Bag [1,1,2,2]
-    , Bag [1,1,5]
-    , Bag [1,2,4]
-    , Bag [1,3,3]
-    , Bag [1,7]
-    , Bag [2,2,3]
-    , Bag [2,6]
-    , Bag [3,5]
-    , Bag [4,4]
-    , Bag [9]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,0,0,0,2]
-    , Bag [0,0,0,0,0,0,0,1,1]
-    , Bag [0,0,0,0,0,0,0,3]
-    , Bag [0,0,0,0,0,0,1,2]
-    , Bag [0,0,0,0,0,0,4]
-    , Bag [0,0,0,0,0,1,1,1]
-    , Bag [0,0,0,0,0,1,3]
-    , Bag [0,0,0,0,0,2,2]
-    , Bag [0,0,0,0,0,5]
-    , Bag [0,0,0,0,1,1,2]
-    , Bag [0,0,0,0,1,4]
-    , Bag [0,0,0,0,2,3]
-    , Bag [0,0,0,0,6]
-    , Bag [0,0,0,1,1,1,1]
-    , Bag [0,0,0,1,1,3]
-    , Bag [0,0,0,1,2,2]
-    , Bag [0,0,0,1,5]
-    , Bag [0,0,0,2,4]
-    , Bag [0,0,0,3,3]
-    , Bag [0,0,0,7]
-    , Bag [0,0,1,1,1,2]
-    , Bag [0,0,1,1,4]
-    , Bag [0,0,1,2,3]
-    , Bag [0,0,1,6]
-    , Bag [0,0,2,2,2]
-    , Bag [0,0,2,5]
-    , Bag [0,0,3,4]
-    , Bag [0,0,8]
-    , Bag [0,1,1,1,1,1]
-    , Bag [0,1,1,1,3]
-    , Bag [0,1,1,2,2]
-    , Bag [0,1,1,5]
-    , Bag [0,1,2,4]
-    , Bag [0,1,3,3]
-    , Bag [0,1,7]
-    , Bag [0,2,2,3]
-    , Bag [0,2,6]
-    , Bag [0,3,5]
-    , Bag [0,4,4]
-    , Bag [0,9]
-    , Bag [1,1,1,1,2]
-    , Bag [1,1,1,4]
-    , Bag [1,1,2,3]
-    , Bag [1,1,6]
-    , Bag [1,2,2,2]
-    , Bag [1,2,5]
-    , Bag [1,3,4]
-    , Bag [1,8]
-    , Bag [2,2,4]
-    , Bag [2,3,3]
-    , Bag [2,7]
-    , Bag [3,6]
-    , Bag [4,5]
-    , Bag [10]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-BagNat2.out b/tests/diff/tiers-BagNat2.out
deleted file mode 100644
--- a/tests/diff/tiers-BagNat2.out
+++ /dev/null
@@ -1,63 +0,0 @@
-map length (tiers :: [[ Bag Nat2 ]])  =  [1,1,2,2,3,3,4,4,5,5,6,6,...]
-
-length (list :: [ Bag Nat2 ])  =  Infinity
-
-allUnique (list :: [ Bag Nat2 ])  =  True
-
-ratioRepetitions (list :: [ Bag Nat2 ])  =  0 % 1
-
-tiers :: [Bag Nat2]  =
-  [ [Bag []]
-  , [Bag [0]]
-  , [ Bag [0,0]
-    , Bag [1]
-    ]
-  , [ Bag [0,0,0]
-    , Bag [0,1]
-    ]
-  , [ Bag [0,0,0,0]
-    , Bag [0,0,1]
-    , Bag [1,1]
-    ]
-  , [ Bag [0,0,0,0,0]
-    , Bag [0,0,0,1]
-    , Bag [0,1,1]
-    ]
-  , [ Bag [0,0,0,0,0,0]
-    , Bag [0,0,0,0,1]
-    , Bag [0,0,1,1]
-    , Bag [1,1,1]
-    ]
-  , [ Bag [0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,1]
-    , Bag [0,0,0,1,1]
-    , Bag [0,1,1,1]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,1,1]
-    , Bag [0,0,1,1,1]
-    , Bag [1,1,1,1]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,1,1]
-    , Bag [0,0,0,1,1,1]
-    , Bag [0,1,1,1,1]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,0,1,1]
-    , Bag [0,0,0,0,1,1,1]
-    , Bag [0,0,1,1,1,1]
-    , Bag [1,1,1,1,1]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,0,0,1,1]
-    , Bag [0,0,0,0,0,1,1,1]
-    , Bag [0,0,0,1,1,1,1]
-    , Bag [0,1,1,1,1,1]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-BagNat3.out b/tests/diff/tiers-BagNat3.out
deleted file mode 100644
--- a/tests/diff/tiers-BagNat3.out
+++ /dev/null
@@ -1,104 +0,0 @@
-map length (tiers :: [[ Bag Nat3 ]])  =  [1,1,2,3,4,5,7,8,10,12,14,16,...]
-
-length (list :: [ Bag Nat3 ])  =  Infinity
-
-allUnique (list :: [ Bag Nat3 ])  =  True
-
-ratioRepetitions (list :: [ Bag Nat3 ])  =  0 % 1
-
-tiers :: [Bag Nat3]  =
-  [ [Bag []]
-  , [Bag [0]]
-  , [ Bag [0,0]
-    , Bag [1]
-    ]
-  , [ Bag [0,0,0]
-    , Bag [0,1]
-    , Bag [2]
-    ]
-  , [ Bag [0,0,0,0]
-    , Bag [0,0,1]
-    , Bag [0,2]
-    , Bag [1,1]
-    ]
-  , [ Bag [0,0,0,0,0]
-    , Bag [0,0,0,1]
-    , Bag [0,0,2]
-    , Bag [0,1,1]
-    , Bag [1,2]
-    ]
-  , [ Bag [0,0,0,0,0,0]
-    , Bag [0,0,0,0,1]
-    , Bag [0,0,0,2]
-    , Bag [0,0,1,1]
-    , Bag [0,1,2]
-    , Bag [1,1,1]
-    , Bag [2,2]
-    ]
-  , [ Bag [0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,1]
-    , Bag [0,0,0,0,2]
-    , Bag [0,0,0,1,1]
-    , Bag [0,0,1,2]
-    , Bag [0,1,1,1]
-    , Bag [0,2,2]
-    , Bag [1,1,2]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,2]
-    , Bag [0,0,0,0,1,1]
-    , Bag [0,0,0,1,2]
-    , Bag [0,0,1,1,1]
-    , Bag [0,0,2,2]
-    , Bag [0,1,1,2]
-    , Bag [1,1,1,1]
-    , Bag [1,2,2]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,0,2]
-    , Bag [0,0,0,0,0,1,1]
-    , Bag [0,0,0,0,1,2]
-    , Bag [0,0,0,1,1,1]
-    , Bag [0,0,0,2,2]
-    , Bag [0,0,1,1,2]
-    , Bag [0,1,1,1,1]
-    , Bag [0,1,2,2]
-    , Bag [1,1,1,2]
-    , Bag [2,2,2]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,0,0,2]
-    , Bag [0,0,0,0,0,0,1,1]
-    , Bag [0,0,0,0,0,1,2]
-    , Bag [0,0,0,0,1,1,1]
-    , Bag [0,0,0,0,2,2]
-    , Bag [0,0,0,1,1,2]
-    , Bag [0,0,1,1,1,1]
-    , Bag [0,0,1,2,2]
-    , Bag [0,1,1,1,2]
-    , Bag [0,2,2,2]
-    , Bag [1,1,1,1,1]
-    , Bag [1,1,2,2]
-    ]
-  , [ Bag [0,0,0,0,0,0,0,0,0,0,0]
-    , Bag [0,0,0,0,0,0,0,0,0,1]
-    , Bag [0,0,0,0,0,0,0,0,2]
-    , Bag [0,0,0,0,0,0,0,1,1]
-    , Bag [0,0,0,0,0,0,1,2]
-    , Bag [0,0,0,0,0,1,1,1]
-    , Bag [0,0,0,0,0,2,2]
-    , Bag [0,0,0,0,1,1,2]
-    , Bag [0,0,0,1,1,1,1]
-    , Bag [0,0,0,1,2,2]
-    , Bag [0,0,1,1,1,2]
-    , Bag [0,0,2,2,2]
-    , Bag [0,1,1,1,1,1]
-    , Bag [0,1,1,2,2]
-    , Bag [1,1,1,1,2]
-    , Bag [1,2,2,2]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-BagU.out b/tests/diff/tiers-BagU.out
deleted file mode 100644
--- a/tests/diff/tiers-BagU.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ Bag () ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
-
-length (list :: [ Bag () ])  =  Infinity
-
-allUnique (list :: [ Bag () ])  =  True
-
-ratioRepetitions (list :: [ Bag () ])  =  0 % 1
-
-tiers :: [Bag ()]  =
-  [ [Bag []]
-  , [Bag [()]]
-  , [Bag [(),()]]
-  , [Bag [(),(),()]]
-  , [Bag [(),(),(),()]]
-  , [Bag [(),(),(),(),()]]
-  , [Bag [(),(),(),(),(),()]]
-  , [Bag [(),(),(),(),(),(),()]]
-  , [Bag [(),(),(),(),(),(),(),()]]
-  , [Bag [(),(),(),(),(),(),(),(),()]]
-  , [Bag [(),(),(),(),(),(),(),(),(),()]]
-  , [Bag [(),(),(),(),(),(),(),(),(),(),()]]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Bool.out b/tests/diff/tiers-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-Bool.out
+++ /dev/null
@@ -1,13 +0,0 @@
-map length (tiers :: [[ Bool ]])  =  [2]
-
-length (list :: [ Bool ])  =  2
-
-allUnique (list :: [ Bool ])  =  True
-
-ratioRepetitions (list :: [ Bool ])  =  0 % 1
-
-tiers :: [Bool]  =
-  [ [ False
-    , True
-    ]
-  ]
diff --git a/tests/diff/tiers-Bools.out b/tests/diff/tiers-Bools.out
deleted file mode 100644
--- a/tests/diff/tiers-Bools.out
+++ /dev/null
@@ -1,79 +0,0 @@
-map length (tiers :: [[ [Bool] ]])  =  [1,2,4,8,16,32,...]
-
-length (list :: [ [Bool] ])  =  Infinity
-
-allUnique (list :: [ [Bool] ])  =  True
-
-ratioRepetitions (list :: [ [Bool] ])  =  0 % 1
-
-tiers :: [[Bool]]  =
-  [ [[]]
-  , [ [False]
-    , [True]
-    ]
-  , [ [False,False]
-    , [False,True]
-    , [True,False]
-    , [True,True]
-    ]
-  , [ [False,False,False]
-    , [False,False,True]
-    , [False,True,False]
-    , [False,True,True]
-    , [True,False,False]
-    , [True,False,True]
-    , [True,True,False]
-    , [True,True,True]
-    ]
-  , [ [False,False,False,False]
-    , [False,False,False,True]
-    , [False,False,True,False]
-    , [False,False,True,True]
-    , [False,True,False,False]
-    , [False,True,False,True]
-    , [False,True,True,False]
-    , [False,True,True,True]
-    , [True,False,False,False]
-    , [True,False,False,True]
-    , [True,False,True,False]
-    , [True,False,True,True]
-    , [True,True,False,False]
-    , [True,True,False,True]
-    , [True,True,True,False]
-    , [True,True,True,True]
-    ]
-  , [ [False,False,False,False,False]
-    , [False,False,False,False,True]
-    , [False,False,False,True,False]
-    , [False,False,False,True,True]
-    , [False,False,True,False,False]
-    , [False,False,True,False,True]
-    , [False,False,True,True,False]
-    , [False,False,True,True,True]
-    , [False,True,False,False,False]
-    , [False,True,False,False,True]
-    , [False,True,False,True,False]
-    , [False,True,False,True,True]
-    , [False,True,True,False,False]
-    , [False,True,True,False,True]
-    , [False,True,True,True,False]
-    , [False,True,True,True,True]
-    , [True,False,False,False,False]
-    , [True,False,False,False,True]
-    , [True,False,False,True,False]
-    , [True,False,False,True,True]
-    , [True,False,True,False,False]
-    , [True,False,True,False,True]
-    , [True,False,True,True,False]
-    , [True,False,True,True,True]
-    , [True,True,False,False,False]
-    , [True,True,False,False,True]
-    , [True,True,False,True,False]
-    , [True,True,False,True,True]
-    , [True,True,True,False,False]
-    , [True,True,True,False,True]
-    , [True,True,True,True,False]
-    , [True,True,True,True,True]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Char.out b/tests/diff/tiers-Char.out
deleted file mode 100644
--- a/tests/diff/tiers-Char.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ Char ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
-
-length (list :: [ Char ])  =  Infinity
-
-allUnique (list :: [ Char ])  =  True
-
-ratioRepetitions (list :: [ Char ])  =  0 % 1
-
-tiers :: [Char]  =
-  [ ['a']
-  , [' ']
-  , ['b']
-  , ['A']
-  , ['c']
-  , ['\n']
-  , ['d']
-  , ['0']
-  , ['e']
-  , ['B']
-  , ['f']
-  , ['!']
-  , ...
-  ]
diff --git a/tests/diff/tiers-Int,Int,Int.out b/tests/diff/tiers-Int,Int,Int.out
deleted file mode 100644
--- a/tests/diff/tiers-Int,Int,Int.out
+++ /dev/null
@@ -1,72 +0,0 @@
-map length (tiers :: [[ (Int,Int,Int) ]])  =  [1,3,6,10,15,21,...]
-
-length (list :: [ (Int,Int,Int) ])  =  Infinity
-
-allUnique (list :: [ (Int,Int,Int) ])  =  True
-
-ratioRepetitions (list :: [ (Int,Int,Int) ])  =  0 % 1
-
-tiers :: [(Int,Int,Int)]  =
-  [ [(0,0,0)]
-  , [ (0,0,1)
-    , (0,1,0)
-    , (1,0,0)
-    ]
-  , [ (0,0,-1)
-    , (0,1,1)
-    , (0,-1,0)
-    , (1,0,1)
-    , (1,1,0)
-    , (-1,0,0)
-    ]
-  , [ (0,0,2)
-    , (0,1,-1)
-    , (0,-1,1)
-    , (0,2,0)
-    , (1,0,-1)
-    , (1,1,1)
-    , (1,-1,0)
-    , (-1,0,1)
-    , (-1,1,0)
-    , (2,0,0)
-    ]
-  , [ (0,0,-2)
-    , (0,1,2)
-    , (0,-1,-1)
-    , (0,2,1)
-    , (0,-2,0)
-    , (1,0,2)
-    , (1,1,-1)
-    , (1,-1,1)
-    , (1,2,0)
-    , (-1,0,-1)
-    , (-1,1,1)
-    , (-1,-1,0)
-    , (2,0,1)
-    , (2,1,0)
-    , (-2,0,0)
-    ]
-  , [ (0,0,3)
-    , (0,1,-2)
-    , (0,-1,2)
-    , (0,2,-1)
-    , (0,-2,1)
-    , (0,3,0)
-    , (1,0,-2)
-    , (1,1,2)
-    , (1,-1,-1)
-    , (1,2,1)
-    , (1,-2,0)
-    , (-1,0,2)
-    , (-1,1,-1)
-    , (-1,-1,1)
-    , (-1,2,0)
-    , (2,0,-1)
-    , (2,1,1)
-    , (2,-1,0)
-    , (-2,0,1)
-    , (-2,1,0)
-    , (3,0,0)
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Int,Int.out b/tests/diff/tiers-Int,Int.out
deleted file mode 100644
--- a/tests/diff/tiers-Int,Int.out
+++ /dev/null
@@ -1,100 +0,0 @@
-map length (tiers :: [[ (Int,Int) ]])  =  [1,2,3,4,5,6,7,8,9,10,11,12,...]
-
-length (list :: [ (Int,Int) ])  =  Infinity
-
-allUnique (list :: [ (Int,Int) ])  =  True
-
-ratioRepetitions (list :: [ (Int,Int) ])  =  0 % 1
-
-tiers :: [(Int,Int)]  =
-  [ [(0,0)]
-  , [ (0,1)
-    , (1,0)
-    ]
-  , [ (0,-1)
-    , (1,1)
-    , (-1,0)
-    ]
-  , [ (0,2)
-    , (1,-1)
-    , (-1,1)
-    , (2,0)
-    ]
-  , [ (0,-2)
-    , (1,2)
-    , (-1,-1)
-    , (2,1)
-    , (-2,0)
-    ]
-  , [ (0,3)
-    , (1,-2)
-    , (-1,2)
-    , (2,-1)
-    , (-2,1)
-    , (3,0)
-    ]
-  , [ (0,-3)
-    , (1,3)
-    , (-1,-2)
-    , (2,2)
-    , (-2,-1)
-    , (3,1)
-    , (-3,0)
-    ]
-  , [ (0,4)
-    , (1,-3)
-    , (-1,3)
-    , (2,-2)
-    , (-2,2)
-    , (3,-1)
-    , (-3,1)
-    , (4,0)
-    ]
-  , [ (0,-4)
-    , (1,4)
-    , (-1,-3)
-    , (2,3)
-    , (-2,-2)
-    , (3,2)
-    , (-3,-1)
-    , (4,1)
-    , (-4,0)
-    ]
-  , [ (0,5)
-    , (1,-4)
-    , (-1,4)
-    , (2,-3)
-    , (-2,3)
-    , (3,-2)
-    , (-3,2)
-    , (4,-1)
-    , (-4,1)
-    , (5,0)
-    ]
-  , [ (0,-5)
-    , (1,5)
-    , (-1,-4)
-    , (2,4)
-    , (-2,-3)
-    , (3,3)
-    , (-3,-2)
-    , (4,2)
-    , (-4,-1)
-    , (5,1)
-    , (-5,0)
-    ]
-  , [ (0,6)
-    , (1,-5)
-    , (-1,5)
-    , (2,-4)
-    , (-2,4)
-    , (3,-3)
-    , (-3,3)
-    , (4,-2)
-    , (-4,2)
-    , (5,-1)
-    , (-5,1)
-    , (6,0)
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Int.out b/tests/diff/tiers-Int.out
deleted file mode 100644
--- a/tests/diff/tiers-Int.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ Int ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
-
-length (list :: [ Int ])  =  Infinity
-
-allUnique (list :: [ Int ])  =  True
-
-ratioRepetitions (list :: [ Int ])  =  0 % 1
-
-tiers :: [Int]  =
-  [ [0]
-  , [1]
-  , [-1]
-  , [2]
-  , [-2]
-  , [3]
-  , [-3]
-  , [4]
-  , [-4]
-  , [5]
-  , [-5]
-  , [6]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Integer.out b/tests/diff/tiers-Integer.out
deleted file mode 100644
--- a/tests/diff/tiers-Integer.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ Integer ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
-
-length (list :: [ Integer ])  =  Infinity
-
-allUnique (list :: [ Integer ])  =  True
-
-ratioRepetitions (list :: [ Integer ])  =  0 % 1
-
-tiers :: [Integer]  =
-  [ [0]
-  , [1]
-  , [-1]
-  , [2]
-  , [-2]
-  , [3]
-  , [-3]
-  , [4]
-  , [-4]
-  , [5]
-  , [-5]
-  , [6]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Ints.out b/tests/diff/tiers-Ints.out
deleted file mode 100644
--- a/tests/diff/tiers-Ints.out
+++ /dev/null
@@ -1,47 +0,0 @@
-map length (tiers :: [[ [Int] ]])  =  [1,1,2,4,8,16,...]
-
-length (list :: [ [Int] ])  =  Infinity
-
-allUnique (list :: [ [Int] ])  =  True
-
-ratioRepetitions (list :: [ [Int] ])  =  0 % 1
-
-tiers :: [[Int]]  =
-  [ [[]]
-  , [[0]]
-  , [ [0,0]
-    , [1]
-    ]
-  , [ [0,0,0]
-    , [0,1]
-    , [1,0]
-    , [-1]
-    ]
-  , [ [0,0,0,0]
-    , [0,0,1]
-    , [0,1,0]
-    , [0,-1]
-    , [1,0,0]
-    , [1,1]
-    , [-1,0]
-    , [2]
-    ]
-  , [ [0,0,0,0,0]
-    , [0,0,0,1]
-    , [0,0,1,0]
-    , [0,0,-1]
-    , [0,1,0,0]
-    , [0,1,1]
-    , [0,-1,0]
-    , [0,2]
-    , [1,0,0,0]
-    , [1,0,1]
-    , [1,1,0]
-    , [1,-1]
-    , [-1,0,0]
-    , [-1,1]
-    , [2,0]
-    , [-2]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-MapBoolBool.out b/tests/diff/tiers-MapBoolBool.out
deleted file mode 100644
--- a/tests/diff/tiers-MapBoolBool.out
+++ /dev/null
@@ -1,21 +0,0 @@
-map length (tiers :: [[ Map Bool Bool ]])  =  [1,4,4]
-
-length (list :: [ Map Bool Bool ])  =  9
-
-allUnique (list :: [ Map Bool Bool ])  =  True
-
-ratioRepetitions (list :: [ Map Bool Bool ])  =  0 % 1
-
-tiers :: [Map Bool Bool]  =
-  [ [Map []]
-  , [ Map [(False,False)]
-    , Map [(False,True)]
-    , Map [(True,False)]
-    , Map [(True,True)]
-    ]
-  , [ Map [(False,False),(True,False)]
-    , Map [(False,False),(True,True)]
-    , Map [(False,True),(True,False)]
-    , Map [(False,True),(True,True)]
-    ]
-  ]
diff --git a/tests/diff/tiers-MapNat2Nat2.out b/tests/diff/tiers-MapNat2Nat2.out
deleted file mode 100644
--- a/tests/diff/tiers-MapNat2Nat2.out
+++ /dev/null
@@ -1,22 +0,0 @@
-map length (tiers :: [[ Map Nat2 Nat2 ]])  =  [1,1,2,2,2,1]
-
-length (list :: [ Map Nat2 Nat2 ])  =  9
-
-allUnique (list :: [ Map Nat2 Nat2 ])  =  True
-
-ratioRepetitions (list :: [ Map Nat2 Nat2 ])  =  0 % 1
-
-tiers :: [Map Nat2 Nat2]  =
-  [ [Map []]
-  , [Map [(0,0)]]
-  , [ Map [(0,1)]
-    , Map [(1,0)]
-    ]
-  , [ Map [(1,1)]
-    , Map [(0,0),(1,0)]
-    ]
-  , [ Map [(0,0),(1,1)]
-    , Map [(0,1),(1,0)]
-    ]
-  , [Map [(0,1),(1,1)]]
-  ]
diff --git a/tests/diff/tiers-MapNat3Nat3.out b/tests/diff/tiers-MapNat3Nat3.out
deleted file mode 100644
--- a/tests/diff/tiers-MapNat3Nat3.out
+++ /dev/null
@@ -1,84 +0,0 @@
-map length (tiers :: [[ Map Nat3 Nat3 ]])  =  [1,1,2,4,5,7,8,9,9,8,6,3,...]
-
-length (list :: [ Map Nat3 Nat3 ])  =  Infinity
-
-allUnique (list :: [ Map Nat3 Nat3 ])  =  True
-
-ratioRepetitions (list :: [ Map Nat3 Nat3 ])  =  0 % 1
-
-tiers :: [Map Nat3 Nat3]  =
-  [ [Map []]
-  , [Map [(0,0)]]
-  , [ Map [(0,1)]
-    , Map [(1,0)]
-    ]
-  , [ Map [(0,2)]
-    , Map [(1,1)]
-    , Map [(0,0),(1,0)]
-    , Map [(2,0)]
-    ]
-  , [ Map [(1,2)]
-    , Map [(0,0),(1,1)]
-    , Map [(0,1),(1,0)]
-    , Map [(2,1)]
-    , Map [(0,0),(2,0)]
-    ]
-  , [ Map [(0,0),(1,2)]
-    , Map [(0,1),(1,1)]
-    , Map [(0,2),(1,0)]
-    , Map [(2,2)]
-    , Map [(0,0),(2,1)]
-    , Map [(0,1),(2,0)]
-    , Map [(1,0),(2,0)]
-    ]
-  , [ Map [(0,1),(1,2)]
-    , Map [(0,2),(1,1)]
-    , Map [(0,0),(2,2)]
-    , Map [(0,1),(2,1)]
-    , Map [(0,2),(2,0)]
-    , Map [(1,0),(2,1)]
-    , Map [(1,1),(2,0)]
-    , Map [(0,0),(1,0),(2,0)]
-    ]
-  , [ Map [(0,2),(1,2)]
-    , Map [(0,1),(2,2)]
-    , Map [(0,2),(2,1)]
-    , Map [(1,0),(2,2)]
-    , Map [(1,1),(2,1)]
-    , Map [(1,2),(2,0)]
-    , Map [(0,0),(1,0),(2,1)]
-    , Map [(0,0),(1,1),(2,0)]
-    , Map [(0,1),(1,0),(2,0)]
-    ]
-  , [ Map [(0,2),(2,2)]
-    , Map [(1,1),(2,2)]
-    , Map [(1,2),(2,1)]
-    , Map [(0,0),(1,0),(2,2)]
-    , Map [(0,0),(1,1),(2,1)]
-    , Map [(0,0),(1,2),(2,0)]
-    , Map [(0,1),(1,0),(2,1)]
-    , Map [(0,1),(1,1),(2,0)]
-    , Map [(0,2),(1,0),(2,0)]
-    ]
-  , [ Map [(1,2),(2,2)]
-    , Map [(0,0),(1,1),(2,2)]
-    , Map [(0,0),(1,2),(2,1)]
-    , Map [(0,1),(1,0),(2,2)]
-    , Map [(0,1),(1,1),(2,1)]
-    , Map [(0,1),(1,2),(2,0)]
-    , Map [(0,2),(1,0),(2,1)]
-    , Map [(0,2),(1,1),(2,0)]
-    ]
-  , [ Map [(0,0),(1,2),(2,2)]
-    , Map [(0,1),(1,1),(2,2)]
-    , Map [(0,1),(1,2),(2,1)]
-    , Map [(0,2),(1,0),(2,2)]
-    , Map [(0,2),(1,1),(2,1)]
-    , Map [(0,2),(1,2),(2,0)]
-    ]
-  , [ Map [(0,1),(1,2),(2,2)]
-    , Map [(0,2),(1,1),(2,2)]
-    , Map [(0,2),(1,2),(2,1)]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-MapNatNat.out b/tests/diff/tiers-MapNatNat.out
deleted file mode 100644
--- a/tests/diff/tiers-MapNatNat.out
+++ /dev/null
@@ -1,571 +0,0 @@
-map length (tiers :: [[ Map Nat Nat ]])  =  [1,1,2,4,7,12,20,33,53,84,131,202,...]
-
-length (list :: [ Map Nat Nat ])  =  Infinity
-
-allUnique (list :: [ Map Nat Nat ])  =  True
-
-ratioRepetitions (list :: [ Map Nat Nat ])  =  0 % 1
-
-tiers :: [Map Nat Nat]  =
-  [ [Map []]
-  , [Map [(0,0)]]
-  , [ Map [(0,1)]
-    , Map [(1,0)]
-    ]
-  , [ Map [(0,2)]
-    , Map [(1,1)]
-    , Map [(0,0),(1,0)]
-    , Map [(2,0)]
-    ]
-  , [ Map [(0,3)]
-    , Map [(1,2)]
-    , Map [(0,0),(1,1)]
-    , Map [(0,1),(1,0)]
-    , Map [(2,1)]
-    , Map [(0,0),(2,0)]
-    , Map [(3,0)]
-    ]
-  , [ Map [(0,4)]
-    , Map [(1,3)]
-    , Map [(0,0),(1,2)]
-    , Map [(0,1),(1,1)]
-    , Map [(0,2),(1,0)]
-    , Map [(2,2)]
-    , Map [(0,0),(2,1)]
-    , Map [(0,1),(2,0)]
-    , Map [(3,1)]
-    , Map [(0,0),(3,0)]
-    , Map [(1,0),(2,0)]
-    , Map [(4,0)]
-    ]
-  , [ Map [(0,5)]
-    , Map [(1,4)]
-    , Map [(0,0),(1,3)]
-    , Map [(0,1),(1,2)]
-    , Map [(0,2),(1,1)]
-    , Map [(0,3),(1,0)]
-    , Map [(2,3)]
-    , Map [(0,0),(2,2)]
-    , Map [(0,1),(2,1)]
-    , Map [(0,2),(2,0)]
-    , Map [(3,2)]
-    , Map [(0,0),(3,1)]
-    , Map [(0,1),(3,0)]
-    , Map [(1,0),(2,1)]
-    , Map [(1,1),(2,0)]
-    , Map [(4,1)]
-    , Map [(0,0),(1,0),(2,0)]
-    , Map [(0,0),(4,0)]
-    , Map [(1,0),(3,0)]
-    , Map [(5,0)]
-    ]
-  , [ Map [(0,6)]
-    , Map [(1,5)]
-    , Map [(0,0),(1,4)]
-    , Map [(0,1),(1,3)]
-    , Map [(0,2),(1,2)]
-    , Map [(0,3),(1,1)]
-    , Map [(0,4),(1,0)]
-    , Map [(2,4)]
-    , Map [(0,0),(2,3)]
-    , Map [(0,1),(2,2)]
-    , Map [(0,2),(2,1)]
-    , Map [(0,3),(2,0)]
-    , Map [(3,3)]
-    , Map [(0,0),(3,2)]
-    , Map [(0,1),(3,1)]
-    , Map [(0,2),(3,0)]
-    , Map [(1,0),(2,2)]
-    , Map [(1,1),(2,1)]
-    , Map [(1,2),(2,0)]
-    , Map [(4,2)]
-    , Map [(0,0),(1,0),(2,1)]
-    , Map [(0,0),(1,1),(2,0)]
-    , Map [(0,1),(1,0),(2,0)]
-    , Map [(0,0),(4,1)]
-    , Map [(0,1),(4,0)]
-    , Map [(1,0),(3,1)]
-    , Map [(1,1),(3,0)]
-    , Map [(5,1)]
-    , Map [(0,0),(1,0),(3,0)]
-    , Map [(0,0),(5,0)]
-    , Map [(1,0),(4,0)]
-    , Map [(2,0),(3,0)]
-    , Map [(6,0)]
-    ]
-  , [ Map [(0,7)]
-    , Map [(1,6)]
-    , Map [(0,0),(1,5)]
-    , Map [(0,1),(1,4)]
-    , Map [(0,2),(1,3)]
-    , Map [(0,3),(1,2)]
-    , Map [(0,4),(1,1)]
-    , Map [(0,5),(1,0)]
-    , Map [(2,5)]
-    , Map [(0,0),(2,4)]
-    , Map [(0,1),(2,3)]
-    , Map [(0,2),(2,2)]
-    , Map [(0,3),(2,1)]
-    , Map [(0,4),(2,0)]
-    , Map [(3,4)]
-    , Map [(0,0),(3,3)]
-    , Map [(0,1),(3,2)]
-    , Map [(0,2),(3,1)]
-    , Map [(0,3),(3,0)]
-    , Map [(1,0),(2,3)]
-    , Map [(1,1),(2,2)]
-    , Map [(1,2),(2,1)]
-    , Map [(1,3),(2,0)]
-    , Map [(4,3)]
-    , Map [(0,0),(1,0),(2,2)]
-    , Map [(0,0),(1,1),(2,1)]
-    , Map [(0,0),(1,2),(2,0)]
-    , Map [(0,1),(1,0),(2,1)]
-    , Map [(0,1),(1,1),(2,0)]
-    , Map [(0,2),(1,0),(2,0)]
-    , Map [(0,0),(4,2)]
-    , Map [(0,1),(4,1)]
-    , Map [(0,2),(4,0)]
-    , Map [(1,0),(3,2)]
-    , Map [(1,1),(3,1)]
-    , Map [(1,2),(3,0)]
-    , Map [(5,2)]
-    , Map [(0,0),(1,0),(3,1)]
-    , Map [(0,0),(1,1),(3,0)]
-    , Map [(0,1),(1,0),(3,0)]
-    , Map [(0,0),(5,1)]
-    , Map [(0,1),(5,0)]
-    , Map [(1,0),(4,1)]
-    , Map [(1,1),(4,0)]
-    , Map [(2,0),(3,1)]
-    , Map [(2,1),(3,0)]
-    , Map [(6,1)]
-    , Map [(0,0),(1,0),(4,0)]
-    , Map [(0,0),(2,0),(3,0)]
-    , Map [(0,0),(6,0)]
-    , Map [(1,0),(5,0)]
-    , Map [(2,0),(4,0)]
-    , Map [(7,0)]
-    ]
-  , [ Map [(0,8)]
-    , Map [(1,7)]
-    , Map [(0,0),(1,6)]
-    , Map [(0,1),(1,5)]
-    , Map [(0,2),(1,4)]
-    , Map [(0,3),(1,3)]
-    , Map [(0,4),(1,2)]
-    , Map [(0,5),(1,1)]
-    , Map [(0,6),(1,0)]
-    , Map [(2,6)]
-    , Map [(0,0),(2,5)]
-    , Map [(0,1),(2,4)]
-    , Map [(0,2),(2,3)]
-    , Map [(0,3),(2,2)]
-    , Map [(0,4),(2,1)]
-    , Map [(0,5),(2,0)]
-    , Map [(3,5)]
-    , Map [(0,0),(3,4)]
-    , Map [(0,1),(3,3)]
-    , Map [(0,2),(3,2)]
-    , Map [(0,3),(3,1)]
-    , Map [(0,4),(3,0)]
-    , Map [(1,0),(2,4)]
-    , Map [(1,1),(2,3)]
-    , Map [(1,2),(2,2)]
-    , Map [(1,3),(2,1)]
-    , Map [(1,4),(2,0)]
-    , Map [(4,4)]
-    , Map [(0,0),(1,0),(2,3)]
-    , Map [(0,0),(1,1),(2,2)]
-    , Map [(0,0),(1,2),(2,1)]
-    , Map [(0,0),(1,3),(2,0)]
-    , Map [(0,1),(1,0),(2,2)]
-    , Map [(0,1),(1,1),(2,1)]
-    , Map [(0,1),(1,2),(2,0)]
-    , Map [(0,2),(1,0),(2,1)]
-    , Map [(0,2),(1,1),(2,0)]
-    , Map [(0,3),(1,0),(2,0)]
-    , Map [(0,0),(4,3)]
-    , Map [(0,1),(4,2)]
-    , Map [(0,2),(4,1)]
-    , Map [(0,3),(4,0)]
-    , Map [(1,0),(3,3)]
-    , Map [(1,1),(3,2)]
-    , Map [(1,2),(3,1)]
-    , Map [(1,3),(3,0)]
-    , Map [(5,3)]
-    , Map [(0,0),(1,0),(3,2)]
-    , Map [(0,0),(1,1),(3,1)]
-    , Map [(0,0),(1,2),(3,0)]
-    , Map [(0,1),(1,0),(3,1)]
-    , Map [(0,1),(1,1),(3,0)]
-    , Map [(0,2),(1,0),(3,0)]
-    , Map [(0,0),(5,2)]
-    , Map [(0,1),(5,1)]
-    , Map [(0,2),(5,0)]
-    , Map [(1,0),(4,2)]
-    , Map [(1,1),(4,1)]
-    , Map [(1,2),(4,0)]
-    , Map [(2,0),(3,2)]
-    , Map [(2,1),(3,1)]
-    , Map [(2,2),(3,0)]
-    , Map [(6,2)]
-    , Map [(0,0),(1,0),(4,1)]
-    , Map [(0,0),(1,1),(4,0)]
-    , Map [(0,1),(1,0),(4,0)]
-    , Map [(0,0),(2,0),(3,1)]
-    , Map [(0,0),(2,1),(3,0)]
-    , Map [(0,1),(2,0),(3,0)]
-    , Map [(0,0),(6,1)]
-    , Map [(0,1),(6,0)]
-    , Map [(1,0),(5,1)]
-    , Map [(1,1),(5,0)]
-    , Map [(2,0),(4,1)]
-    , Map [(2,1),(4,0)]
-    , Map [(7,1)]
-    , Map [(0,0),(1,0),(5,0)]
-    , Map [(0,0),(2,0),(4,0)]
-    , Map [(0,0),(7,0)]
-    , Map [(1,0),(2,0),(3,0)]
-    , Map [(1,0),(6,0)]
-    , Map [(2,0),(5,0)]
-    , Map [(3,0),(4,0)]
-    , Map [(8,0)]
-    ]
-  , [ Map [(0,9)]
-    , Map [(1,8)]
-    , Map [(0,0),(1,7)]
-    , Map [(0,1),(1,6)]
-    , Map [(0,2),(1,5)]
-    , Map [(0,3),(1,4)]
-    , Map [(0,4),(1,3)]
-    , Map [(0,5),(1,2)]
-    , Map [(0,6),(1,1)]
-    , Map [(0,7),(1,0)]
-    , Map [(2,7)]
-    , Map [(0,0),(2,6)]
-    , Map [(0,1),(2,5)]
-    , Map [(0,2),(2,4)]
-    , Map [(0,3),(2,3)]
-    , Map [(0,4),(2,2)]
-    , Map [(0,5),(2,1)]
-    , Map [(0,6),(2,0)]
-    , Map [(3,6)]
-    , Map [(0,0),(3,5)]
-    , Map [(0,1),(3,4)]
-    , Map [(0,2),(3,3)]
-    , Map [(0,3),(3,2)]
-    , Map [(0,4),(3,1)]
-    , Map [(0,5),(3,0)]
-    , Map [(1,0),(2,5)]
-    , Map [(1,1),(2,4)]
-    , Map [(1,2),(2,3)]
-    , Map [(1,3),(2,2)]
-    , Map [(1,4),(2,1)]
-    , Map [(1,5),(2,0)]
-    , Map [(4,5)]
-    , Map [(0,0),(1,0),(2,4)]
-    , Map [(0,0),(1,1),(2,3)]
-    , Map [(0,0),(1,2),(2,2)]
-    , Map [(0,0),(1,3),(2,1)]
-    , Map [(0,0),(1,4),(2,0)]
-    , Map [(0,1),(1,0),(2,3)]
-    , Map [(0,1),(1,1),(2,2)]
-    , Map [(0,1),(1,2),(2,1)]
-    , Map [(0,1),(1,3),(2,0)]
-    , Map [(0,2),(1,0),(2,2)]
-    , Map [(0,2),(1,1),(2,1)]
-    , Map [(0,2),(1,2),(2,0)]
-    , Map [(0,3),(1,0),(2,1)]
-    , Map [(0,3),(1,1),(2,0)]
-    , Map [(0,4),(1,0),(2,0)]
-    , Map [(0,0),(4,4)]
-    , Map [(0,1),(4,3)]
-    , Map [(0,2),(4,2)]
-    , Map [(0,3),(4,1)]
-    , Map [(0,4),(4,0)]
-    , Map [(1,0),(3,4)]
-    , Map [(1,1),(3,3)]
-    , Map [(1,2),(3,2)]
-    , Map [(1,3),(3,1)]
-    , Map [(1,4),(3,0)]
-    , Map [(5,4)]
-    , Map [(0,0),(1,0),(3,3)]
-    , Map [(0,0),(1,1),(3,2)]
-    , Map [(0,0),(1,2),(3,1)]
-    , Map [(0,0),(1,3),(3,0)]
-    , Map [(0,1),(1,0),(3,2)]
-    , Map [(0,1),(1,1),(3,1)]
-    , Map [(0,1),(1,2),(3,0)]
-    , Map [(0,2),(1,0),(3,1)]
-    , Map [(0,2),(1,1),(3,0)]
-    , Map [(0,3),(1,0),(3,0)]
-    , Map [(0,0),(5,3)]
-    , Map [(0,1),(5,2)]
-    , Map [(0,2),(5,1)]
-    , Map [(0,3),(5,0)]
-    , Map [(1,0),(4,3)]
-    , Map [(1,1),(4,2)]
-    , Map [(1,2),(4,1)]
-    , Map [(1,3),(4,0)]
-    , Map [(2,0),(3,3)]
-    , Map [(2,1),(3,2)]
-    , Map [(2,2),(3,1)]
-    , Map [(2,3),(3,0)]
-    , Map [(6,3)]
-    , Map [(0,0),(1,0),(4,2)]
-    , Map [(0,0),(1,1),(4,1)]
-    , Map [(0,0),(1,2),(4,0)]
-    , Map [(0,1),(1,0),(4,1)]
-    , Map [(0,1),(1,1),(4,0)]
-    , Map [(0,2),(1,0),(4,0)]
-    , Map [(0,0),(2,0),(3,2)]
-    , Map [(0,0),(2,1),(3,1)]
-    , Map [(0,0),(2,2),(3,0)]
-    , Map [(0,1),(2,0),(3,1)]
-    , Map [(0,1),(2,1),(3,0)]
-    , Map [(0,2),(2,0),(3,0)]
-    , Map [(0,0),(6,2)]
-    , Map [(0,1),(6,1)]
-    , Map [(0,2),(6,0)]
-    , Map [(1,0),(5,2)]
-    , Map [(1,1),(5,1)]
-    , Map [(1,2),(5,0)]
-    , Map [(2,0),(4,2)]
-    , Map [(2,1),(4,1)]
-    , Map [(2,2),(4,0)]
-    , Map [(7,2)]
-    , Map [(0,0),(1,0),(5,1)]
-    , Map [(0,0),(1,1),(5,0)]
-    , Map [(0,1),(1,0),(5,0)]
-    , Map [(0,0),(2,0),(4,1)]
-    , Map [(0,0),(2,1),(4,0)]
-    , Map [(0,1),(2,0),(4,0)]
-    , Map [(0,0),(7,1)]
-    , Map [(0,1),(7,0)]
-    , Map [(1,0),(2,0),(3,1)]
-    , Map [(1,0),(2,1),(3,0)]
-    , Map [(1,1),(2,0),(3,0)]
-    , Map [(1,0),(6,1)]
-    , Map [(1,1),(6,0)]
-    , Map [(2,0),(5,1)]
-    , Map [(2,1),(5,0)]
-    , Map [(3,0),(4,1)]
-    , Map [(3,1),(4,0)]
-    , Map [(8,1)]
-    , Map [(0,0),(1,0),(2,0),(3,0)]
-    , Map [(0,0),(1,0),(6,0)]
-    , Map [(0,0),(2,0),(5,0)]
-    , Map [(0,0),(3,0),(4,0)]
-    , Map [(0,0),(8,0)]
-    , Map [(1,0),(2,0),(4,0)]
-    , Map [(1,0),(7,0)]
-    , Map [(2,0),(6,0)]
-    , Map [(3,0),(5,0)]
-    , Map [(9,0)]
-    ]
-  , [ Map [(0,10)]
-    , Map [(1,9)]
-    , Map [(0,0),(1,8)]
-    , Map [(0,1),(1,7)]
-    , Map [(0,2),(1,6)]
-    , Map [(0,3),(1,5)]
-    , Map [(0,4),(1,4)]
-    , Map [(0,5),(1,3)]
-    , Map [(0,6),(1,2)]
-    , Map [(0,7),(1,1)]
-    , Map [(0,8),(1,0)]
-    , Map [(2,8)]
-    , Map [(0,0),(2,7)]
-    , Map [(0,1),(2,6)]
-    , Map [(0,2),(2,5)]
-    , Map [(0,3),(2,4)]
-    , Map [(0,4),(2,3)]
-    , Map [(0,5),(2,2)]
-    , Map [(0,6),(2,1)]
-    , Map [(0,7),(2,0)]
-    , Map [(3,7)]
-    , Map [(0,0),(3,6)]
-    , Map [(0,1),(3,5)]
-    , Map [(0,2),(3,4)]
-    , Map [(0,3),(3,3)]
-    , Map [(0,4),(3,2)]
-    , Map [(0,5),(3,1)]
-    , Map [(0,6),(3,0)]
-    , Map [(1,0),(2,6)]
-    , Map [(1,1),(2,5)]
-    , Map [(1,2),(2,4)]
-    , Map [(1,3),(2,3)]
-    , Map [(1,4),(2,2)]
-    , Map [(1,5),(2,1)]
-    , Map [(1,6),(2,0)]
-    , Map [(4,6)]
-    , Map [(0,0),(1,0),(2,5)]
-    , Map [(0,0),(1,1),(2,4)]
-    , Map [(0,0),(1,2),(2,3)]
-    , Map [(0,0),(1,3),(2,2)]
-    , Map [(0,0),(1,4),(2,1)]
-    , Map [(0,0),(1,5),(2,0)]
-    , Map [(0,1),(1,0),(2,4)]
-    , Map [(0,1),(1,1),(2,3)]
-    , Map [(0,1),(1,2),(2,2)]
-    , Map [(0,1),(1,3),(2,1)]
-    , Map [(0,1),(1,4),(2,0)]
-    , Map [(0,2),(1,0),(2,3)]
-    , Map [(0,2),(1,1),(2,2)]
-    , Map [(0,2),(1,2),(2,1)]
-    , Map [(0,2),(1,3),(2,0)]
-    , Map [(0,3),(1,0),(2,2)]
-    , Map [(0,3),(1,1),(2,1)]
-    , Map [(0,3),(1,2),(2,0)]
-    , Map [(0,4),(1,0),(2,1)]
-    , Map [(0,4),(1,1),(2,0)]
-    , Map [(0,5),(1,0),(2,0)]
-    , Map [(0,0),(4,5)]
-    , Map [(0,1),(4,4)]
-    , Map [(0,2),(4,3)]
-    , Map [(0,3),(4,2)]
-    , Map [(0,4),(4,1)]
-    , Map [(0,5),(4,0)]
-    , Map [(1,0),(3,5)]
-    , Map [(1,1),(3,4)]
-    , Map [(1,2),(3,3)]
-    , Map [(1,3),(3,2)]
-    , Map [(1,4),(3,1)]
-    , Map [(1,5),(3,0)]
-    , Map [(5,5)]
-    , Map [(0,0),(1,0),(3,4)]
-    , Map [(0,0),(1,1),(3,3)]
-    , Map [(0,0),(1,2),(3,2)]
-    , Map [(0,0),(1,3),(3,1)]
-    , Map [(0,0),(1,4),(3,0)]
-    , Map [(0,1),(1,0),(3,3)]
-    , Map [(0,1),(1,1),(3,2)]
-    , Map [(0,1),(1,2),(3,1)]
-    , Map [(0,1),(1,3),(3,0)]
-    , Map [(0,2),(1,0),(3,2)]
-    , Map [(0,2),(1,1),(3,1)]
-    , Map [(0,2),(1,2),(3,0)]
-    , Map [(0,3),(1,0),(3,1)]
-    , Map [(0,3),(1,1),(3,0)]
-    , Map [(0,4),(1,0),(3,0)]
-    , Map [(0,0),(5,4)]
-    , Map [(0,1),(5,3)]
-    , Map [(0,2),(5,2)]
-    , Map [(0,3),(5,1)]
-    , Map [(0,4),(5,0)]
-    , Map [(1,0),(4,4)]
-    , Map [(1,1),(4,3)]
-    , Map [(1,2),(4,2)]
-    , Map [(1,3),(4,1)]
-    , Map [(1,4),(4,0)]
-    , Map [(2,0),(3,4)]
-    , Map [(2,1),(3,3)]
-    , Map [(2,2),(3,2)]
-    , Map [(2,3),(3,1)]
-    , Map [(2,4),(3,0)]
-    , Map [(6,4)]
-    , Map [(0,0),(1,0),(4,3)]
-    , Map [(0,0),(1,1),(4,2)]
-    , Map [(0,0),(1,2),(4,1)]
-    , Map [(0,0),(1,3),(4,0)]
-    , Map [(0,1),(1,0),(4,2)]
-    , Map [(0,1),(1,1),(4,1)]
-    , Map [(0,1),(1,2),(4,0)]
-    , Map [(0,2),(1,0),(4,1)]
-    , Map [(0,2),(1,1),(4,0)]
-    , Map [(0,3),(1,0),(4,0)]
-    , Map [(0,0),(2,0),(3,3)]
-    , Map [(0,0),(2,1),(3,2)]
-    , Map [(0,0),(2,2),(3,1)]
-    , Map [(0,0),(2,3),(3,0)]
-    , Map [(0,1),(2,0),(3,2)]
-    , Map [(0,1),(2,1),(3,1)]
-    , Map [(0,1),(2,2),(3,0)]
-    , Map [(0,2),(2,0),(3,1)]
-    , Map [(0,2),(2,1),(3,0)]
-    , Map [(0,3),(2,0),(3,0)]
-    , Map [(0,0),(6,3)]
-    , Map [(0,1),(6,2)]
-    , Map [(0,2),(6,1)]
-    , Map [(0,3),(6,0)]
-    , Map [(1,0),(5,3)]
-    , Map [(1,1),(5,2)]
-    , Map [(1,2),(5,1)]
-    , Map [(1,3),(5,0)]
-    , Map [(2,0),(4,3)]
-    , Map [(2,1),(4,2)]
-    , Map [(2,2),(4,1)]
-    , Map [(2,3),(4,0)]
-    , Map [(7,3)]
-    , Map [(0,0),(1,0),(5,2)]
-    , Map [(0,0),(1,1),(5,1)]
-    , Map [(0,0),(1,2),(5,0)]
-    , Map [(0,1),(1,0),(5,1)]
-    , Map [(0,1),(1,1),(5,0)]
-    , Map [(0,2),(1,0),(5,0)]
-    , Map [(0,0),(2,0),(4,2)]
-    , Map [(0,0),(2,1),(4,1)]
-    , Map [(0,0),(2,2),(4,0)]
-    , Map [(0,1),(2,0),(4,1)]
-    , Map [(0,1),(2,1),(4,0)]
-    , Map [(0,2),(2,0),(4,0)]
-    , Map [(0,0),(7,2)]
-    , Map [(0,1),(7,1)]
-    , Map [(0,2),(7,0)]
-    , Map [(1,0),(2,0),(3,2)]
-    , Map [(1,0),(2,1),(3,1)]
-    , Map [(1,0),(2,2),(3,0)]
-    , Map [(1,1),(2,0),(3,1)]
-    , Map [(1,1),(2,1),(3,0)]
-    , Map [(1,2),(2,0),(3,0)]
-    , Map [(1,0),(6,2)]
-    , Map [(1,1),(6,1)]
-    , Map [(1,2),(6,0)]
-    , Map [(2,0),(5,2)]
-    , Map [(2,1),(5,1)]
-    , Map [(2,2),(5,0)]
-    , Map [(3,0),(4,2)]
-    , Map [(3,1),(4,1)]
-    , Map [(3,2),(4,0)]
-    , Map [(8,2)]
-    , Map [(0,0),(1,0),(2,0),(3,1)]
-    , Map [(0,0),(1,0),(2,1),(3,0)]
-    , Map [(0,0),(1,1),(2,0),(3,0)]
-    , Map [(0,1),(1,0),(2,0),(3,0)]
-    , Map [(0,0),(1,0),(6,1)]
-    , Map [(0,0),(1,1),(6,0)]
-    , Map [(0,1),(1,0),(6,0)]
-    , Map [(0,0),(2,0),(5,1)]
-    , Map [(0,0),(2,1),(5,0)]
-    , Map [(0,1),(2,0),(5,0)]
-    , Map [(0,0),(3,0),(4,1)]
-    , Map [(0,0),(3,1),(4,0)]
-    , Map [(0,1),(3,0),(4,0)]
-    , Map [(0,0),(8,1)]
-    , Map [(0,1),(8,0)]
-    , Map [(1,0),(2,0),(4,1)]
-    , Map [(1,0),(2,1),(4,0)]
-    , Map [(1,1),(2,0),(4,0)]
-    , Map [(1,0),(7,1)]
-    , Map [(1,1),(7,0)]
-    , Map [(2,0),(6,1)]
-    , Map [(2,1),(6,0)]
-    , Map [(3,0),(5,1)]
-    , Map [(3,1),(5,0)]
-    , Map [(9,1)]
-    , Map [(0,0),(1,0),(2,0),(4,0)]
-    , Map [(0,0),(1,0),(7,0)]
-    , Map [(0,0),(2,0),(6,0)]
-    , Map [(0,0),(3,0),(5,0)]
-    , Map [(0,0),(9,0)]
-    , Map [(1,0),(2,0),(5,0)]
-    , Map [(1,0),(3,0),(4,0)]
-    , Map [(1,0),(8,0)]
-    , Map [(2,0),(7,0)]
-    , Map [(3,0),(6,0)]
-    , Map [(4,0),(5,0)]
-    , Map [(10,0)]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-MapUU.out b/tests/diff/tiers-MapUU.out
deleted file mode 100644
--- a/tests/diff/tiers-MapUU.out
+++ /dev/null
@@ -1,12 +0,0 @@
-map length (tiers :: [[ Map () () ]])  =  [1,1]
-
-length (list :: [ Map () () ])  =  2
-
-allUnique (list :: [ Map () () ])  =  True
-
-ratioRepetitions (list :: [ Map () () ])  =  0 % 1
-
-tiers :: [Map () ()]  =
-  [ [Map []]
-  , [Map [((),())]]
-  ]
diff --git a/tests/diff/tiers-Nat,Nat,Nat.out b/tests/diff/tiers-Nat,Nat,Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-Nat,Nat,Nat.out
+++ /dev/null
@@ -1,72 +0,0 @@
-map length (tiers :: [[ (Nat,Nat,Nat) ]])  =  [1,3,6,10,15,21,...]
-
-length (list :: [ (Nat,Nat,Nat) ])  =  Infinity
-
-allUnique (list :: [ (Nat,Nat,Nat) ])  =  True
-
-ratioRepetitions (list :: [ (Nat,Nat,Nat) ])  =  0 % 1
-
-tiers :: [(Nat,Nat,Nat)]  =
-  [ [(0,0,0)]
-  , [ (0,0,1)
-    , (0,1,0)
-    , (1,0,0)
-    ]
-  , [ (0,0,2)
-    , (0,1,1)
-    , (0,2,0)
-    , (1,0,1)
-    , (1,1,0)
-    , (2,0,0)
-    ]
-  , [ (0,0,3)
-    , (0,1,2)
-    , (0,2,1)
-    , (0,3,0)
-    , (1,0,2)
-    , (1,1,1)
-    , (1,2,0)
-    , (2,0,1)
-    , (2,1,0)
-    , (3,0,0)
-    ]
-  , [ (0,0,4)
-    , (0,1,3)
-    , (0,2,2)
-    , (0,3,1)
-    , (0,4,0)
-    , (1,0,3)
-    , (1,1,2)
-    , (1,2,1)
-    , (1,3,0)
-    , (2,0,2)
-    , (2,1,1)
-    , (2,2,0)
-    , (3,0,1)
-    , (3,1,0)
-    , (4,0,0)
-    ]
-  , [ (0,0,5)
-    , (0,1,4)
-    , (0,2,3)
-    , (0,3,2)
-    , (0,4,1)
-    , (0,5,0)
-    , (1,0,4)
-    , (1,1,3)
-    , (1,2,2)
-    , (1,3,1)
-    , (1,4,0)
-    , (2,0,3)
-    , (2,1,2)
-    , (2,2,1)
-    , (2,3,0)
-    , (3,0,2)
-    , (3,1,1)
-    , (3,2,0)
-    , (4,0,1)
-    , (4,1,0)
-    , (5,0,0)
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Nat,Nat.out b/tests/diff/tiers-Nat,Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-Nat,Nat.out
+++ /dev/null
@@ -1,100 +0,0 @@
-map length (tiers :: [[ (Nat,Nat) ]])  =  [1,2,3,4,5,6,7,8,9,10,11,12,...]
-
-length (list :: [ (Nat,Nat) ])  =  Infinity
-
-allUnique (list :: [ (Nat,Nat) ])  =  True
-
-ratioRepetitions (list :: [ (Nat,Nat) ])  =  0 % 1
-
-tiers :: [(Nat,Nat)]  =
-  [ [(0,0)]
-  , [ (0,1)
-    , (1,0)
-    ]
-  , [ (0,2)
-    , (1,1)
-    , (2,0)
-    ]
-  , [ (0,3)
-    , (1,2)
-    , (2,1)
-    , (3,0)
-    ]
-  , [ (0,4)
-    , (1,3)
-    , (2,2)
-    , (3,1)
-    , (4,0)
-    ]
-  , [ (0,5)
-    , (1,4)
-    , (2,3)
-    , (3,2)
-    , (4,1)
-    , (5,0)
-    ]
-  , [ (0,6)
-    , (1,5)
-    , (2,4)
-    , (3,3)
-    , (4,2)
-    , (5,1)
-    , (6,0)
-    ]
-  , [ (0,7)
-    , (1,6)
-    , (2,5)
-    , (3,4)
-    , (4,3)
-    , (5,2)
-    , (6,1)
-    , (7,0)
-    ]
-  , [ (0,8)
-    , (1,7)
-    , (2,6)
-    , (3,5)
-    , (4,4)
-    , (5,3)
-    , (6,2)
-    , (7,1)
-    , (8,0)
-    ]
-  , [ (0,9)
-    , (1,8)
-    , (2,7)
-    , (3,6)
-    , (4,5)
-    , (5,4)
-    , (6,3)
-    , (7,2)
-    , (8,1)
-    , (9,0)
-    ]
-  , [ (0,10)
-    , (1,9)
-    , (2,8)
-    , (3,7)
-    , (4,6)
-    , (5,5)
-    , (6,4)
-    , (7,3)
-    , (8,2)
-    , (9,1)
-    , (10,0)
-    ]
-  , [ (0,11)
-    , (1,10)
-    , (2,9)
-    , (3,8)
-    , (4,7)
-    , (5,6)
-    , (6,5)
-    , (7,4)
-    , (8,3)
-    , (9,2)
-    , (10,1)
-    , (11,0)
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Nat.out b/tests/diff/tiers-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-Nat.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ Nat ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
-
-length (list :: [ Nat ])  =  Infinity
-
-allUnique (list :: [ Nat ])  =  True
-
-ratioRepetitions (list :: [ Nat ])  =  0 % 1
-
-tiers :: [Nat]  =
-  [ [0]
-  , [1]
-  , [2]
-  , [3]
-  , [4]
-  , [5]
-  , [6]
-  , [7]
-  , [8]
-  , [9]
-  , [10]
-  , [11]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Nats.out b/tests/diff/tiers-Nats.out
deleted file mode 100644
--- a/tests/diff/tiers-Nats.out
+++ /dev/null
@@ -1,47 +0,0 @@
-map length (tiers :: [[ [Nat] ]])  =  [1,1,2,4,8,16,...]
-
-length (list :: [ [Nat] ])  =  Infinity
-
-allUnique (list :: [ [Nat] ])  =  True
-
-ratioRepetitions (list :: [ [Nat] ])  =  0 % 1
-
-tiers :: [[Nat]]  =
-  [ [[]]
-  , [[0]]
-  , [ [0,0]
-    , [1]
-    ]
-  , [ [0,0,0]
-    , [0,1]
-    , [1,0]
-    , [2]
-    ]
-  , [ [0,0,0,0]
-    , [0,0,1]
-    , [0,1,0]
-    , [0,2]
-    , [1,0,0]
-    , [1,1]
-    , [2,0]
-    , [3]
-    ]
-  , [ [0,0,0,0,0]
-    , [0,0,0,1]
-    , [0,0,1,0]
-    , [0,0,2]
-    , [0,1,0,0]
-    , [0,1,1]
-    , [0,2,0]
-    , [0,3]
-    , [1,0,0,0]
-    , [1,0,1]
-    , [1,1,0]
-    , [1,2]
-    , [2,0,0]
-    , [2,1]
-    , [3,0]
-    , [4]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-NoDupBool.out b/tests/diff/tiers-NoDupBool.out
deleted file mode 100644
--- a/tests/diff/tiers-NoDupBool.out
+++ /dev/null
@@ -1,17 +0,0 @@
-map length (tiers :: [[ NoDup Bool ]])  =  [1,2,2]
-
-length (list :: [ NoDup Bool ])  =  5
-
-allUnique (list :: [ NoDup Bool ])  =  True
-
-ratioRepetitions (list :: [ NoDup Bool ])  =  0 % 1
-
-tiers :: [NoDup Bool]  =
-  [ [NoDup []]
-  , [ NoDup [False]
-    , NoDup [True]
-    ]
-  , [ NoDup [False,True]
-    , NoDup [True,False]
-    ]
-  ]
diff --git a/tests/diff/tiers-NoDupNat.out b/tests/diff/tiers-NoDupNat.out
deleted file mode 100644
--- a/tests/diff/tiers-NoDupNat.out
+++ /dev/null
@@ -1,226 +0,0 @@
-map length (tiers :: [[ NoDup Nat ]])  =  [1,1,1,3,3,5,11,13,19,27,57,65,...]
-
-length (list :: [ NoDup Nat ])  =  Infinity
-
-allUnique (list :: [ NoDup Nat ])  =  True
-
-ratioRepetitions (list :: [ NoDup Nat ])  =  0 % 1
-
-tiers :: [NoDup Nat]  =
-  [ [NoDup []]
-  , [NoDup [0]]
-  , [NoDup [1]]
-  , [ NoDup [0,1]
-    , NoDup [1,0]
-    , NoDup [2]
-    ]
-  , [ NoDup [0,2]
-    , NoDup [2,0]
-    , NoDup [3]
-    ]
-  , [ NoDup [0,3]
-    , NoDup [1,2]
-    , NoDup [2,1]
-    , NoDup [3,0]
-    , NoDup [4]
-    ]
-  , [ NoDup [0,1,2]
-    , NoDup [0,2,1]
-    , NoDup [0,4]
-    , NoDup [1,0,2]
-    , NoDup [1,2,0]
-    , NoDup [1,3]
-    , NoDup [2,0,1]
-    , NoDup [2,1,0]
-    , NoDup [3,1]
-    , NoDup [4,0]
-    , NoDup [5]
-    ]
-  , [ NoDup [0,1,3]
-    , NoDup [0,3,1]
-    , NoDup [0,5]
-    , NoDup [1,0,3]
-    , NoDup [1,3,0]
-    , NoDup [1,4]
-    , NoDup [2,3]
-    , NoDup [3,0,1]
-    , NoDup [3,1,0]
-    , NoDup [3,2]
-    , NoDup [4,1]
-    , NoDup [5,0]
-    , NoDup [6]
-    ]
-  , [ NoDup [0,1,4]
-    , NoDup [0,2,3]
-    , NoDup [0,3,2]
-    , NoDup [0,4,1]
-    , NoDup [0,6]
-    , NoDup [1,0,4]
-    , NoDup [1,4,0]
-    , NoDup [1,5]
-    , NoDup [2,0,3]
-    , NoDup [2,3,0]
-    , NoDup [2,4]
-    , NoDup [3,0,2]
-    , NoDup [3,2,0]
-    , NoDup [4,0,1]
-    , NoDup [4,1,0]
-    , NoDup [4,2]
-    , NoDup [5,1]
-    , NoDup [6,0]
-    , NoDup [7]
-    ]
-  , [ NoDup [0,1,5]
-    , NoDup [0,2,4]
-    , NoDup [0,4,2]
-    , NoDup [0,5,1]
-    , NoDup [0,7]
-    , NoDup [1,0,5]
-    , NoDup [1,2,3]
-    , NoDup [1,3,2]
-    , NoDup [1,5,0]
-    , NoDup [1,6]
-    , NoDup [2,0,4]
-    , NoDup [2,1,3]
-    , NoDup [2,3,1]
-    , NoDup [2,4,0]
-    , NoDup [2,5]
-    , NoDup [3,1,2]
-    , NoDup [3,2,1]
-    , NoDup [3,4]
-    , NoDup [4,0,2]
-    , NoDup [4,2,0]
-    , NoDup [4,3]
-    , NoDup [5,0,1]
-    , NoDup [5,1,0]
-    , NoDup [5,2]
-    , NoDup [6,1]
-    , NoDup [7,0]
-    , NoDup [8]
-    ]
-  , [ NoDup [0,1,2,3]
-    , NoDup [0,1,3,2]
-    , NoDup [0,1,6]
-    , NoDup [0,2,1,3]
-    , NoDup [0,2,3,1]
-    , NoDup [0,2,5]
-    , NoDup [0,3,1,2]
-    , NoDup [0,3,2,1]
-    , NoDup [0,3,4]
-    , NoDup [0,4,3]
-    , NoDup [0,5,2]
-    , NoDup [0,6,1]
-    , NoDup [0,8]
-    , NoDup [1,0,2,3]
-    , NoDup [1,0,3,2]
-    , NoDup [1,0,6]
-    , NoDup [1,2,0,3]
-    , NoDup [1,2,3,0]
-    , NoDup [1,2,4]
-    , NoDup [1,3,0,2]
-    , NoDup [1,3,2,0]
-    , NoDup [1,4,2]
-    , NoDup [1,6,0]
-    , NoDup [1,7]
-    , NoDup [2,0,1,3]
-    , NoDup [2,0,3,1]
-    , NoDup [2,0,5]
-    , NoDup [2,1,0,3]
-    , NoDup [2,1,3,0]
-    , NoDup [2,1,4]
-    , NoDup [2,3,0,1]
-    , NoDup [2,3,1,0]
-    , NoDup [2,4,1]
-    , NoDup [2,5,0]
-    , NoDup [2,6]
-    , NoDup [3,0,1,2]
-    , NoDup [3,0,2,1]
-    , NoDup [3,0,4]
-    , NoDup [3,1,0,2]
-    , NoDup [3,1,2,0]
-    , NoDup [3,2,0,1]
-    , NoDup [3,2,1,0]
-    , NoDup [3,4,0]
-    , NoDup [3,5]
-    , NoDup [4,0,3]
-    , NoDup [4,1,2]
-    , NoDup [4,2,1]
-    , NoDup [4,3,0]
-    , NoDup [5,0,2]
-    , NoDup [5,2,0]
-    , NoDup [5,3]
-    , NoDup [6,0,1]
-    , NoDup [6,1,0]
-    , NoDup [6,2]
-    , NoDup [7,1]
-    , NoDup [8,0]
-    , NoDup [9]
-    ]
-  , [ NoDup [0,1,2,4]
-    , NoDup [0,1,4,2]
-    , NoDup [0,1,7]
-    , NoDup [0,2,1,4]
-    , NoDup [0,2,4,1]
-    , NoDup [0,2,6]
-    , NoDup [0,3,5]
-    , NoDup [0,4,1,2]
-    , NoDup [0,4,2,1]
-    , NoDup [0,5,3]
-    , NoDup [0,6,2]
-    , NoDup [0,7,1]
-    , NoDup [0,9]
-    , NoDup [1,0,2,4]
-    , NoDup [1,0,4,2]
-    , NoDup [1,0,7]
-    , NoDup [1,2,0,4]
-    , NoDup [1,2,4,0]
-    , NoDup [1,2,5]
-    , NoDup [1,3,4]
-    , NoDup [1,4,0,2]
-    , NoDup [1,4,2,0]
-    , NoDup [1,4,3]
-    , NoDup [1,5,2]
-    , NoDup [1,7,0]
-    , NoDup [1,8]
-    , NoDup [2,0,1,4]
-    , NoDup [2,0,4,1]
-    , NoDup [2,0,6]
-    , NoDup [2,1,0,4]
-    , NoDup [2,1,4,0]
-    , NoDup [2,1,5]
-    , NoDup [2,4,0,1]
-    , NoDup [2,4,1,0]
-    , NoDup [2,5,1]
-    , NoDup [2,6,0]
-    , NoDup [2,7]
-    , NoDup [3,0,5]
-    , NoDup [3,1,4]
-    , NoDup [3,4,1]
-    , NoDup [3,5,0]
-    , NoDup [3,6]
-    , NoDup [4,0,1,2]
-    , NoDup [4,0,2,1]
-    , NoDup [4,1,0,2]
-    , NoDup [4,1,2,0]
-    , NoDup [4,1,3]
-    , NoDup [4,2,0,1]
-    , NoDup [4,2,1,0]
-    , NoDup [4,3,1]
-    , NoDup [4,5]
-    , NoDup [5,0,3]
-    , NoDup [5,1,2]
-    , NoDup [5,2,1]
-    , NoDup [5,3,0]
-    , NoDup [5,4]
-    , NoDup [6,0,2]
-    , NoDup [6,2,0]
-    , NoDup [6,3]
-    , NoDup [7,0,1]
-    , NoDup [7,1,0]
-    , NoDup [7,2]
-    , NoDup [8,1]
-    , NoDup [9,0]
-    , NoDup [10]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-NoDupNat2.out b/tests/diff/tiers-NoDupNat2.out
deleted file mode 100644
--- a/tests/diff/tiers-NoDupNat2.out
+++ /dev/null
@@ -1,16 +0,0 @@
-map length (tiers :: [[ NoDup Nat2 ]])  =  [1,1,1,2]
-
-length (list :: [ NoDup Nat2 ])  =  5
-
-allUnique (list :: [ NoDup Nat2 ])  =  True
-
-ratioRepetitions (list :: [ NoDup Nat2 ])  =  0 % 1
-
-tiers :: [NoDup Nat2]  =
-  [ [NoDup []]
-  , [NoDup [0]]
-  , [NoDup [1]]
-  , [ NoDup [0,1]
-    , NoDup [1,0]
-    ]
-  ]
diff --git a/tests/diff/tiers-NoDupNat3.out b/tests/diff/tiers-NoDupNat3.out
deleted file mode 100644
--- a/tests/diff/tiers-NoDupNat3.out
+++ /dev/null
@@ -1,30 +0,0 @@
-map length (tiers :: [[ NoDup Nat3 ]])  =  [1,1,1,3,2,2,6]
-
-length (list :: [ NoDup Nat3 ])  =  Infinity
-
-allUnique (list :: [ NoDup Nat3 ])  =  True
-
-ratioRepetitions (list :: [ NoDup Nat3 ])  =  0 % 1
-
-tiers :: [NoDup Nat3]  =
-  [ [NoDup []]
-  , [NoDup [0]]
-  , [NoDup [1]]
-  , [ NoDup [0,1]
-    , NoDup [1,0]
-    , NoDup [2]
-    ]
-  , [ NoDup [0,2]
-    , NoDup [2,0]
-    ]
-  , [ NoDup [1,2]
-    , NoDup [2,1]
-    ]
-  , [ NoDup [0,1,2]
-    , NoDup [0,2,1]
-    , NoDup [1,0,2]
-    , NoDup [1,2,0]
-    , NoDup [2,0,1]
-    , NoDup [2,1,0]
-    ]
-  ]
diff --git a/tests/diff/tiers-NoDupU.out b/tests/diff/tiers-NoDupU.out
deleted file mode 100644
--- a/tests/diff/tiers-NoDupU.out
+++ /dev/null
@@ -1,12 +0,0 @@
-map length (tiers :: [[ NoDup () ]])  =  [1,1]
-
-length (list :: [ NoDup () ])  =  2
-
-allUnique (list :: [ NoDup () ])  =  True
-
-ratioRepetitions (list :: [ NoDup () ])  =  0 % 1
-
-tiers :: [NoDup ()]  =
-  [ [NoDup []]
-  , [NoDup [()]]
-  ]
diff --git a/tests/diff/tiers-SetBool.out b/tests/diff/tiers-SetBool.out
deleted file mode 100644
--- a/tests/diff/tiers-SetBool.out
+++ /dev/null
@@ -1,15 +0,0 @@
-map length (tiers :: [[ Set Bool ]])  =  [1,2,1]
-
-length (list :: [ Set Bool ])  =  4
-
-allUnique (list :: [ Set Bool ])  =  True
-
-ratioRepetitions (list :: [ Set Bool ])  =  0 % 1
-
-tiers :: [Set Bool]  =
-  [ [Set []]
-  , [ Set [False]
-    , Set [True]
-    ]
-  , [Set [False,True]]
-  ]
diff --git a/tests/diff/tiers-SetNat.out b/tests/diff/tiers-SetNat.out
deleted file mode 100644
--- a/tests/diff/tiers-SetNat.out
+++ /dev/null
@@ -1,75 +0,0 @@
-map length (tiers :: [[ Set Nat ]])  =  [1,1,1,2,2,3,4,5,6,8,10,12,...]
-
-length (list :: [ Set Nat ])  =  Infinity
-
-allUnique (list :: [ Set Nat ])  =  True
-
-ratioRepetitions (list :: [ Set Nat ])  =  0 % 1
-
-tiers :: [Set Nat]  =
-  [ [Set []]
-  , [Set [0]]
-  , [Set [1]]
-  , [ Set [0,1]
-    , Set [2]
-    ]
-  , [ Set [0,2]
-    , Set [3]
-    ]
-  , [ Set [0,3]
-    , Set [1,2]
-    , Set [4]
-    ]
-  , [ Set [0,1,2]
-    , Set [0,4]
-    , Set [1,3]
-    , Set [5]
-    ]
-  , [ Set [0,1,3]
-    , Set [0,5]
-    , Set [1,4]
-    , Set [2,3]
-    , Set [6]
-    ]
-  , [ Set [0,1,4]
-    , Set [0,2,3]
-    , Set [0,6]
-    , Set [1,5]
-    , Set [2,4]
-    , Set [7]
-    ]
-  , [ Set [0,1,5]
-    , Set [0,2,4]
-    , Set [0,7]
-    , Set [1,2,3]
-    , Set [1,6]
-    , Set [2,5]
-    , Set [3,4]
-    , Set [8]
-    ]
-  , [ Set [0,1,2,3]
-    , Set [0,1,6]
-    , Set [0,2,5]
-    , Set [0,3,4]
-    , Set [0,8]
-    , Set [1,2,4]
-    , Set [1,7]
-    , Set [2,6]
-    , Set [3,5]
-    , Set [9]
-    ]
-  , [ Set [0,1,2,4]
-    , Set [0,1,7]
-    , Set [0,2,6]
-    , Set [0,3,5]
-    , Set [0,9]
-    , Set [1,2,5]
-    , Set [1,3,4]
-    , Set [1,8]
-    , Set [2,7]
-    , Set [3,6]
-    , Set [4,5]
-    , Set [10]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-SetNat2.out b/tests/diff/tiers-SetNat2.out
deleted file mode 100644
--- a/tests/diff/tiers-SetNat2.out
+++ /dev/null
@@ -1,14 +0,0 @@
-map length (tiers :: [[ Set Nat2 ]])  =  [1,1,1,1]
-
-length (list :: [ Set Nat2 ])  =  4
-
-allUnique (list :: [ Set Nat2 ])  =  True
-
-ratioRepetitions (list :: [ Set Nat2 ])  =  0 % 1
-
-tiers :: [Set Nat2]  =
-  [ [Set []]
-  , [Set [0]]
-  , [Set [1]]
-  , [Set [0,1]]
-  ]
diff --git a/tests/diff/tiers-SetNat3.out b/tests/diff/tiers-SetNat3.out
deleted file mode 100644
--- a/tests/diff/tiers-SetNat3.out
+++ /dev/null
@@ -1,19 +0,0 @@
-map length (tiers :: [[ Set Nat3 ]])  =  [1,1,1,2,1,1,1]
-
-length (list :: [ Set Nat3 ])  =  8
-
-allUnique (list :: [ Set Nat3 ])  =  True
-
-ratioRepetitions (list :: [ Set Nat3 ])  =  0 % 1
-
-tiers :: [Set Nat3]  =
-  [ [Set []]
-  , [Set [0]]
-  , [Set [1]]
-  , [ Set [0,1]
-    , Set [2]
-    ]
-  , [Set [0,2]]
-  , [Set [1,2]]
-  , [Set [0,1,2]]
-  ]
diff --git a/tests/diff/tiers-SetU.out b/tests/diff/tiers-SetU.out
deleted file mode 100644
--- a/tests/diff/tiers-SetU.out
+++ /dev/null
@@ -1,12 +0,0 @@
-map length (tiers :: [[ Set () ]])  =  [1,1]
-
-length (list :: [ Set () ])  =  2
-
-allUnique (list :: [ Set () ])  =  True
-
-ratioRepetitions (list :: [ Set () ])  =  0 % 1
-
-tiers :: [Set ()]  =
-  [ [Set []]
-  , [Set [()]]
-  ]
diff --git a/tests/diff/tiers-String.out b/tests/diff/tiers-String.out
deleted file mode 100644
--- a/tests/diff/tiers-String.out
+++ /dev/null
@@ -1,47 +0,0 @@
-map length (tiers :: [[ String ]])  =  [1,1,2,4,8,16,...]
-
-length (list :: [ String ])  =  Infinity
-
-allUnique (list :: [ String ])  =  True
-
-ratioRepetitions (list :: [ String ])  =  0 % 1
-
-tiers :: [String]  =
-  [ [""]
-  , ["a"]
-  , [ "aa"
-    , " "
-    ]
-  , [ "aaa"
-    , "a "
-    , " a"
-    , "b"
-    ]
-  , [ "aaaa"
-    , "aa "
-    , "a a"
-    , "ab"
-    , " aa"
-    , "  "
-    , "ba"
-    , "A"
-    ]
-  , [ "aaaaa"
-    , "aaa "
-    , "aa a"
-    , "aab"
-    , "a aa"
-    , "a  "
-    , "aba"
-    , "aA"
-    , " aaa"
-    , " a "
-    , "  a"
-    , " b"
-    , "baa"
-    , "b "
-    , "Aa"
-    , "c"
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-U,Us.out b/tests/diff/tiers-U,Us.out
deleted file mode 100644
--- a/tests/diff/tiers-U,Us.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ [((),())] ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
-
-length (list :: [ [((),())] ])  =  Infinity
-
-allUnique (list :: [ [((),())] ])  =  True
-
-ratioRepetitions (list :: [ [((),())] ])  =  0 % 1
-
-tiers :: [[((),())]]  =
-  [ [[]]
-  , [[((),())]]
-  , [[((),()),((),())]]
-  , [[((),()),((),()),((),())]]
-  , [[((),()),((),()),((),()),((),())]]
-  , [[((),()),((),()),((),()),((),()),((),())]]
-  , [[((),()),((),()),((),()),((),()),((),()),((),())]]
-  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
-  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
-  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
-  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
-  , [[((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),()),((),())]]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Us,Us.out b/tests/diff/tiers-Us,Us.out
deleted file mode 100644
--- a/tests/diff/tiers-Us,Us.out
+++ /dev/null
@@ -1,100 +0,0 @@
-map length (tiers :: [[ ([()],[()]) ]])  =  [1,2,3,4,5,6,7,8,9,10,11,12,...]
-
-length (list :: [ ([()],[()]) ])  =  Infinity
-
-allUnique (list :: [ ([()],[()]) ])  =  True
-
-ratioRepetitions (list :: [ ([()],[()]) ])  =  0 % 1
-
-tiers :: [([()],[()])]  =
-  [ [([],[])]
-  , [ ([],[()])
-    , ([()],[])
-    ]
-  , [ ([],[(),()])
-    , ([()],[()])
-    , ([(),()],[])
-    ]
-  , [ ([],[(),(),()])
-    , ([()],[(),()])
-    , ([(),()],[()])
-    , ([(),(),()],[])
-    ]
-  , [ ([],[(),(),(),()])
-    , ([()],[(),(),()])
-    , ([(),()],[(),()])
-    , ([(),(),()],[()])
-    , ([(),(),(),()],[])
-    ]
-  , [ ([],[(),(),(),(),()])
-    , ([()],[(),(),(),()])
-    , ([(),()],[(),(),()])
-    , ([(),(),()],[(),()])
-    , ([(),(),(),()],[()])
-    , ([(),(),(),(),()],[])
-    ]
-  , [ ([],[(),(),(),(),(),()])
-    , ([()],[(),(),(),(),()])
-    , ([(),()],[(),(),(),()])
-    , ([(),(),()],[(),(),()])
-    , ([(),(),(),()],[(),()])
-    , ([(),(),(),(),()],[()])
-    , ([(),(),(),(),(),()],[])
-    ]
-  , [ ([],[(),(),(),(),(),(),()])
-    , ([()],[(),(),(),(),(),()])
-    , ([(),()],[(),(),(),(),()])
-    , ([(),(),()],[(),(),(),()])
-    , ([(),(),(),()],[(),(),()])
-    , ([(),(),(),(),()],[(),()])
-    , ([(),(),(),(),(),()],[()])
-    , ([(),(),(),(),(),(),()],[])
-    ]
-  , [ ([],[(),(),(),(),(),(),(),()])
-    , ([()],[(),(),(),(),(),(),()])
-    , ([(),()],[(),(),(),(),(),()])
-    , ([(),(),()],[(),(),(),(),()])
-    , ([(),(),(),()],[(),(),(),()])
-    , ([(),(),(),(),()],[(),(),()])
-    , ([(),(),(),(),(),()],[(),()])
-    , ([(),(),(),(),(),(),()],[()])
-    , ([(),(),(),(),(),(),(),()],[])
-    ]
-  , [ ([],[(),(),(),(),(),(),(),(),()])
-    , ([()],[(),(),(),(),(),(),(),()])
-    , ([(),()],[(),(),(),(),(),(),()])
-    , ([(),(),()],[(),(),(),(),(),()])
-    , ([(),(),(),()],[(),(),(),(),()])
-    , ([(),(),(),(),()],[(),(),(),()])
-    , ([(),(),(),(),(),()],[(),(),()])
-    , ([(),(),(),(),(),(),()],[(),()])
-    , ([(),(),(),(),(),(),(),()],[()])
-    , ([(),(),(),(),(),(),(),(),()],[])
-    ]
-  , [ ([],[(),(),(),(),(),(),(),(),(),()])
-    , ([()],[(),(),(),(),(),(),(),(),()])
-    , ([(),()],[(),(),(),(),(),(),(),()])
-    , ([(),(),()],[(),(),(),(),(),(),()])
-    , ([(),(),(),()],[(),(),(),(),(),()])
-    , ([(),(),(),(),()],[(),(),(),(),()])
-    , ([(),(),(),(),(),()],[(),(),(),()])
-    , ([(),(),(),(),(),(),()],[(),(),()])
-    , ([(),(),(),(),(),(),(),()],[(),()])
-    , ([(),(),(),(),(),(),(),(),()],[()])
-    , ([(),(),(),(),(),(),(),(),(),()],[])
-    ]
-  , [ ([],[(),(),(),(),(),(),(),(),(),(),()])
-    , ([()],[(),(),(),(),(),(),(),(),(),()])
-    , ([(),()],[(),(),(),(),(),(),(),(),()])
-    , ([(),(),()],[(),(),(),(),(),(),(),()])
-    , ([(),(),(),()],[(),(),(),(),(),(),()])
-    , ([(),(),(),(),()],[(),(),(),(),(),()])
-    , ([(),(),(),(),(),()],[(),(),(),(),()])
-    , ([(),(),(),(),(),(),()],[(),(),(),()])
-    , ([(),(),(),(),(),(),(),()],[(),(),()])
-    , ([(),(),(),(),(),(),(),(),()],[(),()])
-    , ([(),(),(),(),(),(),(),(),(),()],[()])
-    , ([(),(),(),(),(),(),(),(),(),(),()],[])
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-Us.out b/tests/diff/tiers-Us.out
deleted file mode 100644
--- a/tests/diff/tiers-Us.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ [()] ]])  =  [1,1,1,1,1,1,1,1,1,1,1,1,...]
-
-length (list :: [ [()] ])  =  Infinity
-
-allUnique (list :: [ [()] ])  =  True
-
-ratioRepetitions (list :: [ [()] ])  =  0 % 1
-
-tiers :: [[()]]  =
-  [ [[]]
-  , [[()]]
-  , [[(),()]]
-  , [[(),(),()]]
-  , [[(),(),(),()]]
-  , [[(),(),(),(),()]]
-  , [[(),(),(),(),(),()]]
-  , [[(),(),(),(),(),(),()]]
-  , [[(),(),(),(),(),(),(),()]]
-  , [[(),(),(),(),(),(),(),(),()]]
-  , [[(),(),(),(),(),(),(),(),(),()]]
-  , [[(),(),(),(),(),(),(),(),(),(),()]]
-  , ...
-  ]
diff --git a/tests/diff/tiers-XInt4.out b/tests/diff/tiers-XInt4.out
deleted file mode 100644
--- a/tests/diff/tiers-XInt4.out
+++ /dev/null
@@ -1,23 +0,0 @@
-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]
-  , ...
-  ]
diff --git a/tests/diff/tiers-XNat7.out b/tests/diff/tiers-XNat7.out
deleted file mode 100644
--- a/tests/diff/tiers-XNat7.out
+++ /dev/null
@@ -1,17 +0,0 @@
-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]
-  ]
diff --git a/tests/diff/tiers-XWord4.out b/tests/diff/tiers-XWord4.out
deleted file mode 100644
--- a/tests/diff/tiers-XWord4.out
+++ /dev/null
@@ -1,23 +0,0 @@
-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]
-  , ...
-  ]
diff --git a/tests/diff/tiers-XsInt4.out b/tests/diff/tiers-XsInt4.out
deleted file mode 100644
--- a/tests/diff/tiers-XsInt4.out
+++ /dev/null
@@ -1,1045 +0,0 @@
-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]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-XsNat7.out b/tests/diff/tiers-XsNat7.out
deleted file mode 100644
--- a/tests/diff/tiers-XsNat7.out
+++ /dev/null
@@ -1,1033 +0,0 @@
-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]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-XsWord4.out b/tests/diff/tiers-XsWord4.out
deleted file mode 100644
--- a/tests/diff/tiers-XsWord4.out
+++ /dev/null
@@ -1,1045 +0,0 @@
-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]
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-Bool-Bool.out b/tests/diff/tiers-colistable-Bool-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Bool-Bool.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ Bool->Bool ]])  =  [4]
-
-length (list :: [ Bool->Bool ])  =  4
-
-allUnique (list :: [ Bool->Bool ])  =  True
-
-ratioRepetitions (list :: [ Bool->Bool ])  =  0 % 1
-
-tiers :: [Bool->Bool]  =
-  [ [ \x -> case x of
-              False -> False
-              True -> False
-    , \x -> case x of
-              False -> True
-              True -> False
-    , \x -> case x of
-              False -> False
-              True -> True
-    , \x -> case x of
-              False -> True
-              True -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-Bool-MBool.out b/tests/diff/tiers-colistable-Bool-MBool.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Bool-MBool.out
+++ /dev/null
@@ -1,40 +0,0 @@
-map length (tiers :: [[ Bool->Maybe Bool ]])  =  [1,4,4]
-
-length (list :: [ Bool->Maybe Bool ])  =  9
-
-allUnique (list :: [ Bool->Maybe Bool ])  =  True
-
-ratioRepetitions (list :: [ Bool->Maybe Bool ])  =  0 % 1
-
-tiers :: [Bool->Maybe Bool]  =
-  [ [ \x -> case x of
-              False -> Nothing
-              True -> Nothing
-    ]
-  , [ \x -> case x of
-              False -> Just False
-              True -> Nothing
-    , \x -> case x of
-              False -> Just True
-              True -> Nothing
-    , \x -> case x of
-              False -> Nothing
-              True -> Just False
-    , \x -> case x of
-              False -> Nothing
-              True -> Just True
-    ]
-  , [ \x -> case x of
-              False -> Just False
-              True -> Just False
-    , \x -> case x of
-              False -> Just True
-              True -> Just False
-    , \x -> case x of
-              False -> Just False
-              True -> Just True
-    , \x -> case x of
-              False -> Just True
-              True -> Just True
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-Bool-U.out b/tests/diff/tiers-colistable-Bool-U.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Bool-U.out
+++ /dev/null
@@ -1,14 +0,0 @@
-map length (tiers :: [[ Bool->() ]])  =  [1]
-
-length (list :: [ Bool->() ])  =  1
-
-allUnique (list :: [ Bool->() ])  =  True
-
-ratioRepetitions (list :: [ Bool->() ])  =  0 % 1
-
-tiers :: [Bool->()]  =
-  [ [ \x -> case x of
-              False -> ()
-              True -> ()
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-Bools-Bools.out b/tests/diff/tiers-colistable-Bools-Bools.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Bools-Bools.out
+++ /dev/null
@@ -1,745 +0,0 @@
-map length (tiers :: [[ [Bool]->[Bool] ]])  =  [1,3,12,57,...]
-
-length (list :: [ [Bool]->[Bool] ])  =  Infinity
-
-allUnique (list :: [ [Bool]->[Bool] ])  =  False
-
-ratioRepetitions (list :: [ [Bool]->[Bool] ])  =  16 % 73
-
-tiers :: [[Bool]->[Bool]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False]
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False,False]
-              [False] -> [False,False]
-              [True] -> [False,False]
-              [False,False] -> [False,False]
-              [False,True] -> [False,False]
-              [True,False] -> [False,False]
-              [True,True] -> [False,False]
-              [False,False,False] -> [False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True]
-              [False] -> [False,True]
-              [True] -> [False,True]
-              [False,False] -> [False,True]
-              [False,True] -> [False,True]
-              [True,False] -> [False,True]
-              [True,True] -> [False,True]
-              [False,False,False] -> [False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False]
-              [False] -> [True,False]
-              [True] -> [True,False]
-              [False,False] -> [True,False]
-              [False,True] -> [True,False]
-              [True,False] -> [True,False]
-              [True,True] -> [True,False]
-              [False,False,False] -> [True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True]
-              [False] -> [True,True]
-              [True] -> [True,True]
-              [False,False] -> [True,True]
-              [False,True] -> [True,True]
-              [True,False] -> [True,True]
-              [True,True] -> [True,True]
-              [False,False,False] -> [True,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False,False,False]
-              [False] -> [False,False,False]
-              [True] -> [False,False,False]
-              [False,False] -> [False,False,False]
-              [False,True] -> [False,False,False]
-              [True,False] -> [False,False,False]
-              [True,True] -> [False,False,False]
-              [False,False,False] -> [False,False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,False,True]
-              [False] -> [False,False,True]
-              [True] -> [False,False,True]
-              [False,False] -> [False,False,True]
-              [False,True] -> [False,False,True]
-              [True,False] -> [False,False,True]
-              [True,True] -> [False,False,True]
-              [False,False,False] -> [False,False,True]
-              ...
-    , \x -> case x of
-              [] -> [False,True,False]
-              [False] -> [False,True,False]
-              [True] -> [False,True,False]
-              [False,False] -> [False,True,False]
-              [False,True] -> [False,True,False]
-              [True,False] -> [False,True,False]
-              [True,True] -> [False,True,False]
-              [False,False,False] -> [False,True,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True,True]
-              [False] -> [False,True,True]
-              [True] -> [False,True,True]
-              [False,False] -> [False,True,True]
-              [False,True] -> [False,True,True]
-              [True,False] -> [False,True,True]
-              [True,True] -> [False,True,True]
-              [False,False,False] -> [False,True,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False,False]
-              [False] -> [True,False,False]
-              [True] -> [True,False,False]
-              [False,False] -> [True,False,False]
-              [False,True] -> [True,False,False]
-              [True,False] -> [True,False,False]
-              [True,True] -> [True,False,False]
-              [False,False,False] -> [True,False,False]
-              ...
-    , \x -> case x of
-              [] -> [True,False,True]
-              [False] -> [True,False,True]
-              [True] -> [True,False,True]
-              [False,False] -> [True,False,True]
-              [False,True] -> [True,False,True]
-              [True,False] -> [True,False,True]
-              [True,True] -> [True,False,True]
-              [False,False,False] -> [True,False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,True,False]
-              [False] -> [True,True,False]
-              [True] -> [True,True,False]
-              [False,False] -> [True,True,False]
-              [False,True] -> [True,True,False]
-              [True,False] -> [True,True,False]
-              [True,True] -> [True,True,False]
-              [False,False,False] -> [True,True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True,True]
-              [False] -> [True,True,True]
-              [True] -> [True,True,True]
-              [False,False] -> [True,True,True]
-              [False,True] -> [True,True,True]
-              [True,False] -> [True,True,True]
-              [True,True] -> [True,True,True]
-              [False,False,False] -> [True,True,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False,False]
-              [True] -> []
-              [False,False] -> [False,False]
-              [False,True] -> [False,False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False,False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False,True]
-              [True] -> []
-              [False,False] -> [False,True]
-              [False,True] -> [False,True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True,False]
-              [True] -> []
-              [False,False] -> [True,False]
-              [False,True] -> [True,False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True,False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True,True]
-              [True] -> []
-              [False,False] -> [True,True]
-              [False,True] -> [True,True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> [False]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> [True]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False,False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False,False]
-              [True,True] -> [False,False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False,True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False,True]
-              [True,True] -> [False,True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True,False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True,False]
-              [True,True] -> [True,False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True,True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True,True]
-              [True,True] -> [True,True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False,False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False,True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True,False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True,True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-Int-Int-Int.out b/tests/diff/tiers-colistable-Int-Int-Int.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Int-Int-Int.out
+++ /dev/null
@@ -1,625 +0,0 @@
-map length (tiers :: [[ Int->Int->Int ]])  =  [1,3,11,46,...]
-
-length (list :: [ Int->Int->Int ])  =  Infinity
-
-allUnique (list :: [ Int->Int->Int ])  =  False
-
-ratioRepetitions (list :: [ Int->Int->Int ])  =  37 % 61
-
-tiers :: [Int->Int->Int]  =
-  [ [ \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,-1) -> 2
-                (1,1) -> 2
-                (-1,0) -> 2
-                (0,2) -> 2
-                (1,-1) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> -1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-Int-Int.out b/tests/diff/tiers-colistable-Int-Int.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Int-Int.out
+++ /dev/null
@@ -1,2637 +0,0 @@
-map length (tiers :: [[ Int->Int ]])  =  [1,2,5,15,51,188,...]
-
-length (list :: [ Int->Int ])  =  Infinity
-
-allUnique (list :: [ Int->Int ])  =  False
-
-ratioRepetitions (list :: [ Int->Int ])  =  96 % 131
-
-tiers :: [Int->Int]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> -2
-              1 -> -2
-              -1 -> -2
-              2 -> -2
-              -2 -> -2
-              3 -> -2
-              -3 -> -2
-              4 -> -2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 2
-              2 -> 0
-              -2 -> 2
-              3 -> 0
-              -3 -> 2
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> -1
-              2 -> 1
-              -2 -> -1
-              3 -> 1
-              -3 -> -1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 1
-              2 -> -1
-              -2 -> 1
-              3 -> -1
-              -3 -> 1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 0
-              2 -> 2
-              -2 -> 0
-              3 -> 2
-              -3 -> 0
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 3
-              1 -> 3
-              -1 -> 3
-              2 -> 3
-              -2 -> 3
-              3 -> 3
-              -3 -> 3
-              4 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -2
-              2 -> 0
-              -2 -> -2
-              3 -> 0
-              -3 -> -2
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 2
-              3 -> 0
-              -3 -> 2
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 2
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 2
-              2 -> 1
-              -2 -> 2
-              3 -> 1
-              -3 -> 2
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> -1
-              3 -> 1
-              -3 -> -1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> -1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 2
-              2 -> 0
-              -2 -> 2
-              3 -> 0
-              -3 -> 2
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 1
-              3 -> -1
-              -3 -> 1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 1
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> -1
-              2 -> 1
-              -2 -> -1
-              3 -> 1
-              -3 -> -1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 1
-              2 -> 2
-              -2 -> 1
-              3 -> 2
-              -3 -> 1
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 0
-              2 -> 2
-              -2 -> 0
-              3 -> 2
-              -3 -> 0
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 1
-              2 -> -1
-              -2 -> 1
-              3 -> -1
-              -3 -> 1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -2
-              1 -> -2
-              -1 -> 0
-              2 -> -2
-              -2 -> 0
-              3 -> -2
-              -3 -> 0
-              4 -> -2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              -1 -> 0
-              2 -> 2
-              -2 -> 0
-              3 -> 2
-              -3 -> 0
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-Ints-Ints.out b/tests/diff/tiers-colistable-Ints-Ints.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Ints-Ints.out
+++ /dev/null
@@ -1,315 +0,0 @@
-map length (tiers :: [[ [Int]->[Int] ]])  =  [1,2,6,21,...]
-
-length (list :: [ [Int]->[Int] ])  =  Infinity
-
-allUnique (list :: [ [Int]->[Int] ])  =  False
-
-ratioRepetitions (list :: [ [Int]->[Int] ])  =  2 % 5
-
-tiers :: [[Int]->[Int]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [-1] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [-1] -> [1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [-1] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [-1] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [-1] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [-1]
-              [0] -> [-1]
-              [0,0] -> [-1]
-              [1] -> [-1]
-              [0,0,0] -> [-1]
-              [0,1] -> [-1]
-              [1,0] -> [-1]
-              [-1] -> [-1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [-1] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [-1] -> [1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> [0]
-              [1] -> []
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> []
-              [1] -> [0]
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-MBool-Bool.out b/tests/diff/tiers-colistable-MBool-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-MBool-Bool.out
+++ /dev/null
@@ -1,43 +0,0 @@
-map length (tiers :: [[ Maybe Bool->Bool ]])  =  [8]
-
-length (list :: [ Maybe Bool->Bool ])  =  8
-
-allUnique (list :: [ Maybe Bool->Bool ])  =  True
-
-ratioRepetitions (list :: [ Maybe Bool->Bool ])  =  0 % 1
-
-tiers :: [Maybe Bool->Bool]  =
-  [ [ \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-MBool-MBool.out b/tests/diff/tiers-colistable-MBool-MBool.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-MBool-MBool.out
+++ /dev/null
@@ -1,122 +0,0 @@
-map length (tiers :: [[ Maybe Bool->Maybe Bool ]])  =  [1,6,12,8]
-
-length (list :: [ Maybe Bool->Maybe Bool ])  =  Infinity
-
-allUnique (list :: [ Maybe Bool->Maybe Bool ])  =  True
-
-ratioRepetitions (list :: [ Maybe Bool->Maybe Bool ])  =  0 % 1
-
-tiers :: [Maybe Bool->Maybe Bool]  =
-  [ [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Nothing
-    ]
-  , [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Nothing
-    ]
-  , [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just True
-    ]
-  , [ \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just True
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-Nat,Nat-Nat.out b/tests/diff/tiers-colistable-Nat,Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Nat,Nat-Nat.out
+++ /dev/null
@@ -1,625 +0,0 @@
-map length (tiers :: [[ (Nat,Nat)->Nat ]])  =  [1,3,11,46,...]
-
-length (list :: [ (Nat,Nat)->Nat ])  =  Infinity
-
-allUnique (list :: [ (Nat,Nat)->Nat ])  =  False
-
-ratioRepetitions (list :: [ (Nat,Nat)->Nat ])  =  37 % 61
-
-tiers :: [(Nat,Nat)->Nat]  =
-  [ [ \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 2
-              (1,0) -> 2
-              (0,2) -> 2
-              (1,1) -> 2
-              (2,0) -> 2
-              (0,3) -> 2
-              (1,2) -> 2
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              (0,0) -> 3
-              (0,1) -> 3
-              (1,0) -> 3
-              (0,2) -> 3
-              (1,1) -> 3
-              (2,0) -> 3
-              (0,3) -> 3
-              (1,2) -> 3
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 2
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 2
-              (2,0) -> 0
-              (0,3) -> 2
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 0
-              (1,0) -> 2
-              (0,2) -> 2
-              (1,1) -> 0
-              (2,0) -> 2
-              (0,3) -> 0
-              (1,2) -> 2
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 2
-              (0,2) -> 0
-              (1,1) -> 2
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 2
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 2
-              (1,0) -> 0
-              (0,2) -> 2
-              (1,1) -> 0
-              (2,0) -> 2
-              (0,3) -> 2
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-Nat-Nat-Nat.out b/tests/diff/tiers-colistable-Nat-Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Nat-Nat-Nat.out
+++ /dev/null
@@ -1,625 +0,0 @@
-map length (tiers :: [[ Nat->Nat->Nat ]])  =  [1,3,11,46,...]
-
-length (list :: [ Nat->Nat->Nat ])  =  Infinity
-
-allUnique (list :: [ Nat->Nat->Nat ])  =  False
-
-ratioRepetitions (list :: [ Nat->Nat->Nat ])  =  37 % 61
-
-tiers :: [Nat->Nat->Nat]  =
-  [ [ \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,2) -> 2
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 3
-                (0,1) -> 3
-                (1,0) -> 3
-                (0,2) -> 3
-                (1,1) -> 3
-                (2,0) -> 3
-                (0,3) -> 3
-                (1,2) -> 3
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-Nat-Nat.out b/tests/diff/tiers-colistable-Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Nat-Nat.out
+++ /dev/null
@@ -1,2637 +0,0 @@
-map length (tiers :: [[ Nat->Nat ]])  =  [1,2,5,15,51,188,...]
-
-length (list :: [ Nat->Nat ])  =  Infinity
-
-allUnique (list :: [ Nat->Nat ])  =  False
-
-ratioRepetitions (list :: [ Nat->Nat ])  =  82 % 131
-
-tiers :: [Nat->Nat]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 3
-              1 -> 3
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 4
-              1 -> 4
-              2 -> 4
-              3 -> 4
-              4 -> 4
-              5 -> 4
-              6 -> 4
-              7 -> 4
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 0
-              3 -> 3
-              4 -> 0
-              5 -> 3
-              6 -> 0
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-              3 -> 2
-              4 -> 1
-              5 -> 2
-              6 -> 1
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-              3 -> 1
-              4 -> 2
-              5 -> 1
-              6 -> 2
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 3
-              3 -> 0
-              4 -> 3
-              5 -> 0
-              6 -> 3
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 5
-              1 -> 5
-              2 -> 5
-              3 -> 5
-              4 -> 5
-              5 -> 5
-              6 -> 5
-              7 -> 5
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 4
-              2 -> 0
-              3 -> 4
-              4 -> 0
-              5 -> 4
-              6 -> 0
-              7 -> 4
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 3
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 3
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 3
-              2 -> 1
-              3 -> 3
-              4 -> 1
-              5 -> 3
-              6 -> 1
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 2
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 2
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 0
-              3 -> 3
-              4 -> 0
-              5 -> 3
-              6 -> 0
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 1
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 1
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 1
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 1
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 1
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 1
-              2 -> 3
-              3 -> 1
-              4 -> 3
-              5 -> 1
-              6 -> 3
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 3
-              3 -> 0
-              4 -> 3
-              5 -> 0
-              6 -> 3
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 2
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 2
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 2
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 4
-              1 -> 0
-              2 -> 4
-              3 -> 0
-              4 -> 4
-              5 -> 0
-              6 -> 4
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 3
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 3
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 3
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-Nat-U.out b/tests/diff/tiers-colistable-Nat-U.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Nat-U.out
+++ /dev/null
@@ -1,667 +0,0 @@
-map length (tiers :: [[ Nat->() ]])  =  [1,1,2,5,14,42,...]
-
-length (list :: [ Nat->() ])  =  Infinity
-
-allUnique (list :: [ Nat->() ])  =  False
-
-ratioRepetitions (list :: [ Nat->() ])  =  64 % 65
-
-tiers :: [Nat->()]  =
-  [ [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-Nat2-Nat2.out b/tests/diff/tiers-colistable-Nat2-Nat2.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Nat2-Nat2.out
+++ /dev/null
@@ -1,25 +0,0 @@
-map length (tiers :: [[ Nat2->Nat2 ]])  =  [1,2,1]
-
-length (list :: [ Nat2->Nat2 ])  =  4
-
-allUnique (list :: [ Nat2->Nat2 ])  =  True
-
-ratioRepetitions (list :: [ Nat2->Nat2 ])  =  0 % 1
-
-tiers :: [Nat2->Nat2]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-Nat2-Nat3.out b/tests/diff/tiers-colistable-Nat2-Nat3.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Nat2-Nat3.out
+++ /dev/null
@@ -1,42 +0,0 @@
-map length (tiers :: [[ Nat2->Nat3 ]])  =  [1,2,3,2,1]
-
-length (list :: [ Nat2->Nat3 ])  =  9
-
-allUnique (list :: [ Nat2->Nat3 ])  =  True
-
-ratioRepetitions (list :: [ Nat2->Nat3 ])  =  0 % 1
-
-tiers :: [Nat2->Nat3]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 2
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-Nat3-Nat2.out b/tests/diff/tiers-colistable-Nat3-Nat2.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Nat3-Nat2.out
+++ /dev/null
@@ -1,46 +0,0 @@
-map length (tiers :: [[ Nat3->Nat2 ]])  =  [1,3,3,1]
-
-length (list :: [ Nat3->Nat2 ])  =  8
-
-allUnique (list :: [ Nat3->Nat2 ])  =  True
-
-ratioRepetitions (list :: [ Nat3->Nat2 ])  =  0 % 1
-
-tiers :: [Nat3->Nat2]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-Nat3-Nat3.out b/tests/diff/tiers-colistable-Nat3-Nat3.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Nat3-Nat3.out
+++ /dev/null
@@ -1,125 +0,0 @@
-map length (tiers :: [[ Nat3->Nat3 ]])  =  [1,3,6,7,6,3,1]
-
-length (list :: [ Nat3->Nat3 ])  =  Infinity
-
-allUnique (list :: [ Nat3->Nat3 ])  =  True
-
-ratioRepetitions (list :: [ Nat3->Nat3 ])  =  0 % 1
-
-tiers :: [Nat3->Nat3]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 0
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 1
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-Nats-Nats.out b/tests/diff/tiers-colistable-Nats-Nats.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Nats-Nats.out
+++ /dev/null
@@ -1,315 +0,0 @@
-map length (tiers :: [[ [Nat]->[Nat] ]])  =  [1,2,6,21,...]
-
-length (list :: [ [Nat]->[Nat] ])  =  Infinity
-
-allUnique (list :: [ [Nat]->[Nat] ])  =  False
-
-ratioRepetitions (list :: [ [Nat]->[Nat] ])  =  2 % 5
-
-tiers :: [[Nat]->[Nat]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [2] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [2] -> [1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [2] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [2] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [2] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [2]
-              [0] -> [2]
-              [0,0] -> [2]
-              [1] -> [2]
-              [0,0,0] -> [2]
-              [0,1] -> [2]
-              [1,0] -> [2]
-              [2] -> [2]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [2] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [2] -> [1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> [0]
-              [1] -> []
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> []
-              [1] -> [0]
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> [0]
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> [0]
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> []
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> []
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-U-Bool.out b/tests/diff/tiers-colistable-U-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-U-Bool.out
+++ /dev/null
@@ -1,15 +0,0 @@
-map length (tiers :: [[ ()->Bool ]])  =  [2]
-
-length (list :: [ ()->Bool ])  =  2
-
-allUnique (list :: [ ()->Bool ])  =  True
-
-ratioRepetitions (list :: [ ()->Bool ])  =  0 % 1
-
-tiers :: [()->Bool]  =
-  [ [ \x -> case x of
-              () -> False
-    , \x -> case x of
-              () -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-U-Nat.out b/tests/diff/tiers-colistable-U-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-U-Nat.out
+++ /dev/null
@@ -1,29 +0,0 @@
-map length (tiers :: [[ ()->Nat ]])  =  [1,1,1,1,1,1,...]
-
-length (list :: [ ()->Nat ])  =  Infinity
-
-allUnique (list :: [ ()->Nat ])  =  True
-
-ratioRepetitions (list :: [ ()->Nat ])  =  0 % 1
-
-tiers :: [()->Nat]  =
-  [ [ \x -> case x of
-              () -> 0
-    ]
-  , [ \x -> case x of
-              () -> 1
-    ]
-  , [ \x -> case x of
-              () -> 2
-    ]
-  , [ \x -> case x of
-              () -> 3
-    ]
-  , [ \x -> case x of
-              () -> 4
-    ]
-  , [ \x -> case x of
-              () -> 5
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-colistable-U-U.out b/tests/diff/tiers-colistable-U-U.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-U-U.out
+++ /dev/null
@@ -1,13 +0,0 @@
-map length (tiers :: [[ ()->() ]])  =  [1]
-
-length (list :: [ ()->() ])  =  1
-
-allUnique (list :: [ ()->() ])  =  True
-
-ratioRepetitions (list :: [ ()->() ])  =  0 % 1
-
-tiers :: [()->()]  =
-  [ [ \x -> case x of
-              () -> ()
-    ]
-  ]
diff --git a/tests/diff/tiers-colistable-Us-Us.out b/tests/diff/tiers-colistable-Us-Us.out
deleted file mode 100644
--- a/tests/diff/tiers-colistable-Us-Us.out
+++ /dev/null
@@ -1,165 +0,0 @@
-map length (tiers :: [[ [()]->[()] ]])  =  [1,2,4,8,...]
-
-length (list :: [ [()]->[()] ])  =  Infinity
-
-allUnique (list :: [ [()]->[()] ])  =  False
-
-ratioRepetitions (list :: [ [()]->[()] ])  =  1 % 3
-
-tiers :: [[()]->[()]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [()]
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [(),()]
-              [()] -> [(),()]
-              [(),()] -> [(),()]
-              [(),(),()] -> [(),()]
-              [(),(),(),()] -> [(),()]
-              [(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),(),()] -> [(),()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> [()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [(),(),()]
-              [()] -> [(),(),()]
-              [(),()] -> [(),(),()]
-              [(),(),()] -> [(),(),()]
-              [(),(),(),()] -> [(),(),()]
-              [(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),(),()] -> [(),(),()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [(),()]
-              [(),()] -> [(),()]
-              [(),(),()] -> [(),()]
-              [(),(),(),()] -> [(),()]
-              [(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),(),()] -> [(),()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [()]
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> [()]
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> [()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> [(),()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-funlistable-Bool-Bool.out b/tests/diff/tiers-funlistable-Bool-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Bool-Bool.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ Bool->Bool ]])  =  [4]
-
-length (list :: [ Bool->Bool ])  =  4
-
-allUnique (list :: [ Bool->Bool ])  =  True
-
-ratioRepetitions (list :: [ Bool->Bool ])  =  0 % 1
-
-tiers :: [Bool->Bool]  =
-  [ [ \x -> case x of
-              False -> False
-              True -> False
-    , \x -> case x of
-              False -> True
-              True -> False
-    , \x -> case x of
-              False -> False
-              True -> True
-    , \x -> case x of
-              False -> True
-              True -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-funlistable-Bool-MBool.out b/tests/diff/tiers-funlistable-Bool-MBool.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Bool-MBool.out
+++ /dev/null
@@ -1,40 +0,0 @@
-map length (tiers :: [[ Bool->Maybe Bool ]])  =  [1,4,4]
-
-length (list :: [ Bool->Maybe Bool ])  =  9
-
-allUnique (list :: [ Bool->Maybe Bool ])  =  True
-
-ratioRepetitions (list :: [ Bool->Maybe Bool ])  =  0 % 1
-
-tiers :: [Bool->Maybe Bool]  =
-  [ [ \x -> case x of
-              False -> Nothing
-              True -> Nothing
-    ]
-  , [ \x -> case x of
-              False -> Just False
-              True -> Nothing
-    , \x -> case x of
-              False -> Just True
-              True -> Nothing
-    , \x -> case x of
-              False -> Nothing
-              True -> Just False
-    , \x -> case x of
-              False -> Nothing
-              True -> Just True
-    ]
-  , [ \x -> case x of
-              False -> Just False
-              True -> Just False
-    , \x -> case x of
-              False -> Just True
-              True -> Just False
-    , \x -> case x of
-              False -> Just False
-              True -> Just True
-    , \x -> case x of
-              False -> Just True
-              True -> Just True
-    ]
-  ]
diff --git a/tests/diff/tiers-funlistable-Bool-U.out b/tests/diff/tiers-funlistable-Bool-U.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Bool-U.out
+++ /dev/null
@@ -1,14 +0,0 @@
-map length (tiers :: [[ Bool->() ]])  =  [1]
-
-length (list :: [ Bool->() ])  =  1
-
-allUnique (list :: [ Bool->() ])  =  True
-
-ratioRepetitions (list :: [ Bool->() ])  =  0 % 1
-
-tiers :: [Bool->()]  =
-  [ [ \x -> case x of
-              False -> ()
-              True -> ()
-    ]
-  ]
diff --git a/tests/diff/tiers-funlistable-Bools-Bools.out b/tests/diff/tiers-funlistable-Bools-Bools.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Bools-Bools.out
+++ /dev/null
@@ -1,165 +0,0 @@
-map length (tiers :: [[ [Bool]->[Bool] ]])  =  [1,2,4,8,...]
-
-length (list :: [ [Bool]->[Bool] ])  =  Infinity
-
-allUnique (list :: [ [Bool]->[Bool] ])  =  True
-
-ratioRepetitions (list :: [ [Bool]->[Bool] ])  =  0 % 1
-
-tiers :: [[Bool]->[Bool]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False]
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False,False]
-              [False] -> [False,False]
-              [True] -> [False,False]
-              [False,False] -> [False,False]
-              [False,True] -> [False,False]
-              [True,False] -> [False,False]
-              [True,True] -> [False,False]
-              [False,False,False] -> [False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True]
-              [False] -> [False,True]
-              [True] -> [False,True]
-              [False,False] -> [False,True]
-              [False,True] -> [False,True]
-              [True,False] -> [False,True]
-              [True,True] -> [False,True]
-              [False,False,False] -> [False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False]
-              [False] -> [True,False]
-              [True] -> [True,False]
-              [False,False] -> [True,False]
-              [False,True] -> [True,False]
-              [True,False] -> [True,False]
-              [True,True] -> [True,False]
-              [False,False,False] -> [True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True]
-              [False] -> [True,True]
-              [True] -> [True,True]
-              [False,False] -> [True,True]
-              [False,True] -> [True,True]
-              [True,False] -> [True,True]
-              [True,True] -> [True,True]
-              [False,False,False] -> [True,True]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False,False,False]
-              [False] -> [False,False,False]
-              [True] -> [False,False,False]
-              [False,False] -> [False,False,False]
-              [False,True] -> [False,False,False]
-              [True,False] -> [False,False,False]
-              [True,True] -> [False,False,False]
-              [False,False,False] -> [False,False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,False,True]
-              [False] -> [False,False,True]
-              [True] -> [False,False,True]
-              [False,False] -> [False,False,True]
-              [False,True] -> [False,False,True]
-              [True,False] -> [False,False,True]
-              [True,True] -> [False,False,True]
-              [False,False,False] -> [False,False,True]
-              ...
-    , \x -> case x of
-              [] -> [False,True,False]
-              [False] -> [False,True,False]
-              [True] -> [False,True,False]
-              [False,False] -> [False,True,False]
-              [False,True] -> [False,True,False]
-              [True,False] -> [False,True,False]
-              [True,True] -> [False,True,False]
-              [False,False,False] -> [False,True,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True,True]
-              [False] -> [False,True,True]
-              [True] -> [False,True,True]
-              [False,False] -> [False,True,True]
-              [False,True] -> [False,True,True]
-              [True,False] -> [False,True,True]
-              [True,True] -> [False,True,True]
-              [False,False,False] -> [False,True,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False,False]
-              [False] -> [True,False,False]
-              [True] -> [True,False,False]
-              [False,False] -> [True,False,False]
-              [False,True] -> [True,False,False]
-              [True,False] -> [True,False,False]
-              [True,True] -> [True,False,False]
-              [False,False,False] -> [True,False,False]
-              ...
-    , \x -> case x of
-              [] -> [True,False,True]
-              [False] -> [True,False,True]
-              [True] -> [True,False,True]
-              [False,False] -> [True,False,True]
-              [False,True] -> [True,False,True]
-              [True,False] -> [True,False,True]
-              [True,True] -> [True,False,True]
-              [False,False,False] -> [True,False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,True,False]
-              [False] -> [True,True,False]
-              [True] -> [True,True,False]
-              [False,False] -> [True,True,False]
-              [False,True] -> [True,True,False]
-              [True,False] -> [True,True,False]
-              [True,True] -> [True,True,False]
-              [False,False,False] -> [True,True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True,True]
-              [False] -> [True,True,True]
-              [True] -> [True,True,True]
-              [False,False] -> [True,True,True]
-              [False,True] -> [True,True,True]
-              [True,False] -> [True,True,True]
-              [True,True] -> [True,True,True]
-              [False,False,False] -> [True,True,True]
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-funlistable-Int-Int-Int.out b/tests/diff/tiers-funlistable-Int-Int-Int.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Int-Int-Int.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ Int->Int->Int ]])  =  [0]
-
-length (list :: [ Int->Int->Int ])  =  0
-
-allUnique (list :: [ Int->Int->Int ])  =  True
-
-ratioRepetitions (list :: [ Int->Int->Int ])  =  0 % 1
-
-tiers :: [Int->Int->Int]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Int-Int.out b/tests/diff/tiers-funlistable-Int-Int.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Int-Int.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ Int->Int ]])  =  [0]
-
-length (list :: [ Int->Int ])  =  0
-
-allUnique (list :: [ Int->Int ])  =  True
-
-ratioRepetitions (list :: [ Int->Int ])  =  0 % 1
-
-tiers :: [Int->Int]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Ints-Ints.out b/tests/diff/tiers-funlistable-Ints-Ints.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Ints-Ints.out
+++ /dev/null
@@ -1,95 +0,0 @@
-map length (tiers :: [[ [Int]->[Int] ]])  =  [1,1,2,4,...]
-
-length (list :: [ [Int]->[Int] ])  =  Infinity
-
-allUnique (list :: [ [Int]->[Int] ])  =  True
-
-ratioRepetitions (list :: [ [Int]->[Int] ])  =  0 % 1
-
-tiers :: [[Int]->[Int]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [-1] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [-1] -> [1]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [-1] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [-1] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [-1] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [-1]
-              [0] -> [-1]
-              [0,0] -> [-1]
-              [1] -> [-1]
-              [0,0,0] -> [-1]
-              [0,1] -> [-1]
-              [1,0] -> [-1]
-              [-1] -> [-1]
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-funlistable-MBool-Bool.out b/tests/diff/tiers-funlistable-MBool-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-MBool-Bool.out
+++ /dev/null
@@ -1,43 +0,0 @@
-map length (tiers :: [[ Maybe Bool->Bool ]])  =  [8]
-
-length (list :: [ Maybe Bool->Bool ])  =  8
-
-allUnique (list :: [ Maybe Bool->Bool ])  =  True
-
-ratioRepetitions (list :: [ Maybe Bool->Bool ])  =  0 % 1
-
-tiers :: [Maybe Bool->Bool]  =
-  [ [ \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-funlistable-MBool-MBool.out b/tests/diff/tiers-funlistable-MBool-MBool.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-MBool-MBool.out
+++ /dev/null
@@ -1,122 +0,0 @@
-map length (tiers :: [[ Maybe Bool->Maybe Bool ]])  =  [1,6,12,8]
-
-length (list :: [ Maybe Bool->Maybe Bool ])  =  Infinity
-
-allUnique (list :: [ Maybe Bool->Maybe Bool ])  =  True
-
-ratioRepetitions (list :: [ Maybe Bool->Maybe Bool ])  =  0 % 1
-
-tiers :: [Maybe Bool->Maybe Bool]  =
-  [ [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Nothing
-    ]
-  , [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Nothing
-    ]
-  , [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just True
-    ]
-  , [ \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just True
-    ]
-  ]
diff --git a/tests/diff/tiers-funlistable-Nat,Nat-Nat.out b/tests/diff/tiers-funlistable-Nat,Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Nat,Nat-Nat.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ (Nat,Nat)->Nat ]])  =  [0]
-
-length (list :: [ (Nat,Nat)->Nat ])  =  0
-
-allUnique (list :: [ (Nat,Nat)->Nat ])  =  True
-
-ratioRepetitions (list :: [ (Nat,Nat)->Nat ])  =  0 % 1
-
-tiers :: [(Nat,Nat)->Nat]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Nat-Nat-Nat.out b/tests/diff/tiers-funlistable-Nat-Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Nat-Nat-Nat.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ Nat->Nat->Nat ]])  =  [0]
-
-length (list :: [ Nat->Nat->Nat ])  =  0
-
-allUnique (list :: [ Nat->Nat->Nat ])  =  True
-
-ratioRepetitions (list :: [ Nat->Nat->Nat ])  =  0 % 1
-
-tiers :: [Nat->Nat->Nat]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Nat-Nat.out b/tests/diff/tiers-funlistable-Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Nat-Nat.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ Nat->Nat ]])  =  [0]
-
-length (list :: [ Nat->Nat ])  =  0
-
-allUnique (list :: [ Nat->Nat ])  =  True
-
-ratioRepetitions (list :: [ Nat->Nat ])  =  0 % 1
-
-tiers :: [Nat->Nat]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Nat-U.out b/tests/diff/tiers-funlistable-Nat-U.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Nat-U.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ Nat->() ]])  =  [0]
-
-length (list :: [ Nat->() ])  =  0
-
-allUnique (list :: [ Nat->() ])  =  True
-
-ratioRepetitions (list :: [ Nat->() ])  =  0 % 1
-
-tiers :: [Nat->()]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Nat2-Nat2.out b/tests/diff/tiers-funlistable-Nat2-Nat2.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Nat2-Nat2.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ Nat2->Nat2 ]])  =  [0]
-
-length (list :: [ Nat2->Nat2 ])  =  0
-
-allUnique (list :: [ Nat2->Nat2 ])  =  True
-
-ratioRepetitions (list :: [ Nat2->Nat2 ])  =  0 % 1
-
-tiers :: [Nat2->Nat2]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Nat2-Nat3.out b/tests/diff/tiers-funlistable-Nat2-Nat3.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Nat2-Nat3.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ Nat2->Nat3 ]])  =  [0]
-
-length (list :: [ Nat2->Nat3 ])  =  0
-
-allUnique (list :: [ Nat2->Nat3 ])  =  True
-
-ratioRepetitions (list :: [ Nat2->Nat3 ])  =  0 % 1
-
-tiers :: [Nat2->Nat3]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Nat3-Nat2.out b/tests/diff/tiers-funlistable-Nat3-Nat2.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Nat3-Nat2.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ Nat3->Nat2 ]])  =  [0]
-
-length (list :: [ Nat3->Nat2 ])  =  0
-
-allUnique (list :: [ Nat3->Nat2 ])  =  True
-
-ratioRepetitions (list :: [ Nat3->Nat2 ])  =  0 % 1
-
-tiers :: [Nat3->Nat2]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Nat3-Nat3.out b/tests/diff/tiers-funlistable-Nat3-Nat3.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Nat3-Nat3.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ Nat3->Nat3 ]])  =  [0]
-
-length (list :: [ Nat3->Nat3 ])  =  0
-
-allUnique (list :: [ Nat3->Nat3 ])  =  True
-
-ratioRepetitions (list :: [ Nat3->Nat3 ])  =  0 % 1
-
-tiers :: [Nat3->Nat3]  =
-  [[]]
diff --git a/tests/diff/tiers-funlistable-Nats-Nats.out b/tests/diff/tiers-funlistable-Nats-Nats.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Nats-Nats.out
+++ /dev/null
@@ -1,95 +0,0 @@
-map length (tiers :: [[ [Nat]->[Nat] ]])  =  [1,1,2,4,...]
-
-length (list :: [ [Nat]->[Nat] ])  =  Infinity
-
-allUnique (list :: [ [Nat]->[Nat] ])  =  True
-
-ratioRepetitions (list :: [ [Nat]->[Nat] ])  =  0 % 1
-
-tiers :: [[Nat]->[Nat]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [2] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [2] -> [1]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [2] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [2] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [2] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [2]
-              [0] -> [2]
-              [0,0] -> [2]
-              [1] -> [2]
-              [0,0,0] -> [2]
-              [0,1] -> [2]
-              [1,0] -> [2]
-              [2] -> [2]
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-funlistable-U-Bool.out b/tests/diff/tiers-funlistable-U-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-U-Bool.out
+++ /dev/null
@@ -1,15 +0,0 @@
-map length (tiers :: [[ ()->Bool ]])  =  [2]
-
-length (list :: [ ()->Bool ])  =  2
-
-allUnique (list :: [ ()->Bool ])  =  True
-
-ratioRepetitions (list :: [ ()->Bool ])  =  0 % 1
-
-tiers :: [()->Bool]  =
-  [ [ \x -> case x of
-              () -> False
-    , \x -> case x of
-              () -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-funlistable-U-Nat.out b/tests/diff/tiers-funlistable-U-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-U-Nat.out
+++ /dev/null
@@ -1,29 +0,0 @@
-map length (tiers :: [[ ()->Nat ]])  =  [1,1,1,1,1,1,...]
-
-length (list :: [ ()->Nat ])  =  Infinity
-
-allUnique (list :: [ ()->Nat ])  =  True
-
-ratioRepetitions (list :: [ ()->Nat ])  =  0 % 1
-
-tiers :: [()->Nat]  =
-  [ [ \x -> case x of
-              () -> 0
-    ]
-  , [ \x -> case x of
-              () -> 1
-    ]
-  , [ \x -> case x of
-              () -> 2
-    ]
-  , [ \x -> case x of
-              () -> 3
-    ]
-  , [ \x -> case x of
-              () -> 4
-    ]
-  , [ \x -> case x of
-              () -> 5
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-funlistable-U-U.out b/tests/diff/tiers-funlistable-U-U.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-U-U.out
+++ /dev/null
@@ -1,13 +0,0 @@
-map length (tiers :: [[ ()->() ]])  =  [1]
-
-length (list :: [ ()->() ])  =  1
-
-allUnique (list :: [ ()->() ])  =  True
-
-ratioRepetitions (list :: [ ()->() ])  =  0 % 1
-
-tiers :: [()->()]  =
-  [ [ \x -> case x of
-              () -> ()
-    ]
-  ]
diff --git a/tests/diff/tiers-funlistable-Us-Us.out b/tests/diff/tiers-funlistable-Us-Us.out
deleted file mode 100644
--- a/tests/diff/tiers-funlistable-Us-Us.out
+++ /dev/null
@@ -1,55 +0,0 @@
-map length (tiers :: [[ [()]->[()] ]])  =  [1,1,1,1,...]
-
-length (list :: [ [()]->[()] ])  =  Infinity
-
-allUnique (list :: [ [()]->[()] ])  =  True
-
-ratioRepetitions (list :: [ [()]->[()] ])  =  0 % 1
-
-tiers :: [[()]->[()]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [()]
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [(),()]
-              [()] -> [(),()]
-              [(),()] -> [(),()]
-              [(),(),()] -> [(),()]
-              [(),(),(),()] -> [(),()]
-              [(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),(),()] -> [(),()]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [(),(),()]
-              [()] -> [(),(),()]
-              [(),()] -> [(),(),()]
-              [(),(),()] -> [(),(),()]
-              [(),(),(),()] -> [(),(),()]
-              [(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),(),()] -> [(),(),()]
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Bool-Bool.out b/tests/diff/tiers-listsofpairs-Bool-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Bool-Bool.out
+++ /dev/null
@@ -1,23 +0,0 @@
-map length (tiers :: [[ Bool->Bool ]])  =  [4]
-
-length (list :: [ Bool->Bool ])  =  4
-
-allUnique (list :: [ Bool->Bool ])  =  True
-
-ratioRepetitions (list :: [ Bool->Bool ])  =  0 % 1
-
-tiers :: [Bool->Bool]  =
-  [ [ \x -> case x of
-              False -> False
-              True -> False
-    , \x -> case x of
-              False -> False
-              True -> True
-    , \x -> case x of
-              False -> True
-              True -> False
-    , \x -> case x of
-              False -> True
-              True -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Bool-MBool.out b/tests/diff/tiers-listsofpairs-Bool-MBool.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Bool-MBool.out
+++ /dev/null
@@ -1,40 +0,0 @@
-map length (tiers :: [[ Bool->Maybe Bool ]])  =  [1,4,4]
-
-length (list :: [ Bool->Maybe Bool ])  =  9
-
-allUnique (list :: [ Bool->Maybe Bool ])  =  True
-
-ratioRepetitions (list :: [ Bool->Maybe Bool ])  =  0 % 1
-
-tiers :: [Bool->Maybe Bool]  =
-  [ [ \x -> case x of
-              False -> Nothing
-              True -> Nothing
-    ]
-  , [ \x -> case x of
-              False -> Nothing
-              True -> Just False
-    , \x -> case x of
-              False -> Nothing
-              True -> Just True
-    , \x -> case x of
-              False -> Just False
-              True -> Nothing
-    , \x -> case x of
-              False -> Just True
-              True -> Nothing
-    ]
-  , [ \x -> case x of
-              False -> Just False
-              True -> Just False
-    , \x -> case x of
-              False -> Just False
-              True -> Just True
-    , \x -> case x of
-              False -> Just True
-              True -> Just False
-    , \x -> case x of
-              False -> Just True
-              True -> Just True
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Bool-U.out b/tests/diff/tiers-listsofpairs-Bool-U.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Bool-U.out
+++ /dev/null
@@ -1,14 +0,0 @@
-map length (tiers :: [[ Bool->() ]])  =  [1]
-
-length (list :: [ Bool->() ])  =  1
-
-allUnique (list :: [ Bool->() ])  =  True
-
-ratioRepetitions (list :: [ Bool->() ])  =  0 % 1
-
-tiers :: [Bool->()]  =
-  [ [ \x -> case x of
-              False -> ()
-              True -> ()
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Bools-Bools.out b/tests/diff/tiers-listsofpairs-Bools-Bools.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Bools-Bools.out
+++ /dev/null
@@ -1,385 +0,0 @@
-map length (tiers :: [[ [Bool]->[Bool] ]])  =  [1,2,8,26,...]
-
-length (list :: [ [Bool]->[Bool] ])  =  Infinity
-
-allUnique (list :: [ [Bool]->[Bool] ])  =  True
-
-ratioRepetitions (list :: [ [Bool]->[Bool] ])  =  0 % 1
-
-tiers :: [[Bool]->[Bool]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False]
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [False,False]
-              [False] -> [False,False]
-              [True] -> [False,False]
-              [False,False] -> [False,False]
-              [False,True] -> [False,False]
-              [True,False] -> [False,False]
-              [True,True] -> [False,False]
-              [False,False,False] -> [False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True]
-              [False] -> [False,True]
-              [True] -> [False,True]
-              [False,False] -> [False,True]
-              [False,True] -> [False,True]
-              [True,False] -> [False,True]
-              [True,True] -> [False,True]
-              [False,False,False] -> [False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False]
-              [False] -> [True,False]
-              [True] -> [True,False]
-              [False,False] -> [True,False]
-              [False,True] -> [True,False]
-              [True,False] -> [True,False]
-              [True,True] -> [True,False]
-              [False,False,False] -> [True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True]
-              [False] -> [True,True]
-              [True] -> [True,True]
-              [False,False] -> [True,True]
-              [False,True] -> [True,True]
-              [True,False] -> [True,True]
-              [True,True] -> [True,True]
-              [False,False,False] -> [True,True]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False,False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False,True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True,False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True,True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False,False]
-              [True] -> [False,False]
-              [False,False] -> [False,False]
-              [False,True] -> [False,False]
-              [True,False] -> [False,False]
-              [True,True] -> [False,False]
-              [False,False,False] -> [False,False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False,True]
-              [True] -> [False,True]
-              [False,False] -> [False,True]
-              [False,True] -> [False,True]
-              [True,False] -> [False,True]
-              [True,True] -> [False,True]
-              [False,False,False] -> [False,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True,False]
-              [True] -> [True,False]
-              [False,False] -> [True,False]
-              [False,True] -> [True,False]
-              [True,False] -> [True,False]
-              [True,True] -> [True,False]
-              [False,False,False] -> [True,False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True,True]
-              [True] -> [True,True]
-              [False,False] -> [True,True]
-              [False,True] -> [True,True]
-              [True,False] -> [True,True]
-              [True,True] -> [True,True]
-              [False,False,False] -> [True,True]
-              ...
-    , \x -> case x of
-              [] -> [False,False,False]
-              [False] -> [False,False,False]
-              [True] -> [False,False,False]
-              [False,False] -> [False,False,False]
-              [False,True] -> [False,False,False]
-              [True,False] -> [False,False,False]
-              [True,True] -> [False,False,False]
-              [False,False,False] -> [False,False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,False,True]
-              [False] -> [False,False,True]
-              [True] -> [False,False,True]
-              [False,False] -> [False,False,True]
-              [False,True] -> [False,False,True]
-              [True,False] -> [False,False,True]
-              [True,True] -> [False,False,True]
-              [False,False,False] -> [False,False,True]
-              ...
-    , \x -> case x of
-              [] -> [False,True,False]
-              [False] -> [False,True,False]
-              [True] -> [False,True,False]
-              [False,False] -> [False,True,False]
-              [False,True] -> [False,True,False]
-              [True,False] -> [False,True,False]
-              [True,True] -> [False,True,False]
-              [False,False,False] -> [False,True,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True,True]
-              [False] -> [False,True,True]
-              [True] -> [False,True,True]
-              [False,False] -> [False,True,True]
-              [False,True] -> [False,True,True]
-              [True,False] -> [False,True,True]
-              [True,True] -> [False,True,True]
-              [False,False,False] -> [False,True,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False,False]
-              [False] -> [True,False,False]
-              [True] -> [True,False,False]
-              [False,False] -> [True,False,False]
-              [False,True] -> [True,False,False]
-              [True,False] -> [True,False,False]
-              [True,True] -> [True,False,False]
-              [False,False,False] -> [True,False,False]
-              ...
-    , \x -> case x of
-              [] -> [True,False,True]
-              [False] -> [True,False,True]
-              [True] -> [True,False,True]
-              [False,False] -> [True,False,True]
-              [False,True] -> [True,False,True]
-              [True,False] -> [True,False,True]
-              [True,True] -> [True,False,True]
-              [False,False,False] -> [True,False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,True,False]
-              [False] -> [True,True,False]
-              [True] -> [True,True,False]
-              [False,False] -> [True,True,False]
-              [False,True] -> [True,True,False]
-              [True,False] -> [True,True,False]
-              [True,True] -> [True,True,False]
-              [False,False,False] -> [True,True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True,True]
-              [False] -> [True,True,True]
-              [True] -> [True,True,True]
-              [False,False] -> [True,True,True]
-              [False,True] -> [True,True,True]
-              [True,False] -> [True,True,True]
-              [True,True] -> [True,True,True]
-              [False,False,False] -> [True,True,True]
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Int-Int-Int.out b/tests/diff/tiers-listsofpairs-Int-Int-Int.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Int-Int-Int.out
+++ /dev/null
@@ -1,215 +0,0 @@
-map length (tiers :: [[ Int->Int->Int ]])  =  [1,1,5,13,...]
-
-length (list :: [ Int->Int->Int ])  =  Infinity
-
-allUnique (list :: [ Int->Int->Int ])  =  True
-
-ratioRepetitions (list :: [ Int->Int->Int ])  =  0 % 1
-
-tiers :: [Int->Int->Int]  =
-  [ [ \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> 0
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> -1
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,-1) -> 2
-                (1,1) -> 2
-                (-1,0) -> 2
-                (0,2) -> 2
-                (1,-1) -> 2
-                ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Int-Int.out b/tests/diff/tiers-listsofpairs-Int-Int.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Int-Int.out
+++ /dev/null
@@ -1,377 +0,0 @@
-map length (tiers :: [[ Int->Int ]])  =  [1,1,3,5,10,16,...]
-
-length (list :: [ Int->Int ])  =  Infinity
-
-allUnique (list :: [ Int->Int ])  =  True
-
-ratioRepetitions (list :: [ Int->Int ])  =  0 % 1
-
-tiers :: [Int->Int]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> -2
-              1 -> -2
-              -1 -> -2
-              2 -> -2
-              -2 -> -2
-              3 -> -2
-              -3 -> -2
-              4 -> -2
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> -2
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> -1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -2
-              -1 -> -2
-              2 -> -2
-              -2 -> -2
-              3 -> -2
-              -3 -> -2
-              4 -> -2
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 3
-              -1 -> 3
-              2 -> 3
-              -2 -> 3
-              3 -> 3
-              -3 -> 3
-              4 -> 3
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Ints-Ints.out b/tests/diff/tiers-listsofpairs-Ints-Ints.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Ints-Ints.out
+++ /dev/null
@@ -1,175 +0,0 @@
-map length (tiers :: [[ [Int]->[Int] ]])  =  [1,1,4,10,...]
-
-length (list :: [ [Int]->[Int] ])  =  Infinity
-
-allUnique (list :: [ [Int]->[Int] ])  =  True
-
-ratioRepetitions (list :: [ [Int]->[Int] ])  =  0 % 1
-
-tiers :: [[Int]->[Int]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [-1] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [-1] -> [1]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [-1] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [-1] -> [1]
-              ...
-    , \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [-1] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [-1] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [-1] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [-1]
-              [0] -> [-1]
-              [0,0] -> [-1]
-              [1] -> [-1]
-              [0,0,0] -> [-1]
-              [0,1] -> [-1]
-              [1,0] -> [-1]
-              [-1] -> [-1]
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-MBool-Bool.out b/tests/diff/tiers-listsofpairs-MBool-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-MBool-Bool.out
+++ /dev/null
@@ -1,43 +0,0 @@
-map length (tiers :: [[ Maybe Bool->Bool ]])  =  [8]
-
-length (list :: [ Maybe Bool->Bool ])  =  8
-
-allUnique (list :: [ Maybe Bool->Bool ])  =  True
-
-ratioRepetitions (list :: [ Maybe Bool->Bool ])  =  0 % 1
-
-tiers :: [Maybe Bool->Bool]  =
-  [ [ \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-MBool-MBool.out b/tests/diff/tiers-listsofpairs-MBool-MBool.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-MBool-MBool.out
+++ /dev/null
@@ -1,122 +0,0 @@
-map length (tiers :: [[ Maybe Bool->Maybe Bool ]])  =  [1,6,12,8]
-
-length (list :: [ Maybe Bool->Maybe Bool ])  =  Infinity
-
-allUnique (list :: [ Maybe Bool->Maybe Bool ])  =  True
-
-ratioRepetitions (list :: [ Maybe Bool->Maybe Bool ])  =  0 % 1
-
-tiers :: [Maybe Bool->Maybe Bool]  =
-  [ [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Nothing
-    ]
-  , [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Nothing
-    ]
-  , [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Nothing
-    ]
-  , [ \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just True
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Nat,Nat-Nat.out b/tests/diff/tiers-listsofpairs-Nat,Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Nat,Nat-Nat.out
+++ /dev/null
@@ -1,135 +0,0 @@
-map length (tiers :: [[ (Nat,Nat)->Nat ]])  =  [1,1,3,7,...]
-
-length (list :: [ (Nat,Nat)->Nat ])  =  Infinity
-
-allUnique (list :: [ (Nat,Nat)->Nat ])  =  True
-
-ratioRepetitions (list :: [ (Nat,Nat)->Nat ])  =  0 % 1
-
-tiers :: [(Nat,Nat)->Nat]  =
-  [ [ \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    ]
-  , [ \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 2
-              (1,0) -> 2
-              (0,2) -> 2
-              (1,1) -> 2
-              (2,0) -> 2
-              (0,3) -> 2
-              (1,2) -> 2
-              ...
-    ]
-  , [ \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 2
-              (1,0) -> 2
-              (0,2) -> 2
-              (1,1) -> 2
-              (2,0) -> 2
-              (0,3) -> 2
-              (1,2) -> 2
-              ...
-    , \x -> case x of
-              (0,0) -> 3
-              (0,1) -> 3
-              (1,0) -> 3
-              (0,2) -> 3
-              (1,1) -> 3
-              (2,0) -> 3
-              (0,3) -> 3
-              (1,2) -> 3
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Nat-Nat-Nat.out b/tests/diff/tiers-listsofpairs-Nat-Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Nat-Nat-Nat.out
+++ /dev/null
@@ -1,215 +0,0 @@
-map length (tiers :: [[ Nat->Nat->Nat ]])  =  [1,1,5,13,...]
-
-length (list :: [ Nat->Nat->Nat ])  =  Infinity
-
-allUnique (list :: [ Nat->Nat->Nat ])  =  True
-
-ratioRepetitions (list :: [ Nat->Nat->Nat ])  =  0 % 1
-
-tiers :: [Nat->Nat->Nat]  =
-  [ [ \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,2) -> 2
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 2
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 3
-                (0,1) -> 3
-                (1,0) -> 3
-                (0,2) -> 3
-                (1,1) -> 3
-                (2,0) -> 3
-                (0,3) -> 3
-                (1,2) -> 3
-                ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Nat-Nat.out b/tests/diff/tiers-listsofpairs-Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Nat-Nat.out
+++ /dev/null
@@ -1,377 +0,0 @@
-map length (tiers :: [[ Nat->Nat ]])  =  [1,1,3,5,10,16,...]
-
-length (list :: [ Nat->Nat ])  =  Infinity
-
-allUnique (list :: [ Nat->Nat ])  =  True
-
-ratioRepetitions (list :: [ Nat->Nat ])  =  0 % 1
-
-tiers :: [Nat->Nat]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 3
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 4
-              1 -> 4
-              2 -> 4
-              3 -> 4
-              4 -> 4
-              5 -> 4
-              6 -> 4
-              7 -> 4
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 4
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 3
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 4
-              2 -> 4
-              3 -> 4
-              4 -> 4
-              5 -> 4
-              6 -> 4
-              7 -> 4
-              ...
-    , \x -> case x of
-              0 -> 5
-              1 -> 5
-              2 -> 5
-              3 -> 5
-              4 -> 5
-              5 -> 5
-              6 -> 5
-              7 -> 5
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Nat-U.out b/tests/diff/tiers-listsofpairs-Nat-U.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Nat-U.out
+++ /dev/null
@@ -1,27 +0,0 @@
-map length (tiers :: [[ Nat->() ]])  =  [1,0,0,0,0,0,...]
-
-length (list :: [ Nat->() ])  =  1
-
-allUnique (list :: [ Nat->() ])  =  True
-
-ratioRepetitions (list :: [ Nat->() ])  =  0 % 1
-
-tiers :: [Nat->()]  =
-  [ [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , []
-  , []
-  , []
-  , []
-  , []
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Nat2-Nat2.out b/tests/diff/tiers-listsofpairs-Nat2-Nat2.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Nat2-Nat2.out
+++ /dev/null
@@ -1,25 +0,0 @@
-map length (tiers :: [[ Nat2->Nat2 ]])  =  [1,2,1]
-
-length (list :: [ Nat2->Nat2 ])  =  4
-
-allUnique (list :: [ Nat2->Nat2 ])  =  True
-
-ratioRepetitions (list :: [ Nat2->Nat2 ])  =  0 % 1
-
-tiers :: [Nat2->Nat2]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Nat2-Nat3.out b/tests/diff/tiers-listsofpairs-Nat2-Nat3.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Nat2-Nat3.out
+++ /dev/null
@@ -1,42 +0,0 @@
-map length (tiers :: [[ Nat2->Nat3 ]])  =  [1,2,3,2,1]
-
-length (list :: [ Nat2->Nat3 ])  =  9
-
-allUnique (list :: [ Nat2->Nat3 ])  =  True
-
-ratioRepetitions (list :: [ Nat2->Nat3 ])  =  0 % 1
-
-tiers :: [Nat2->Nat3]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 2
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Nat3-Nat2.out b/tests/diff/tiers-listsofpairs-Nat3-Nat2.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Nat3-Nat2.out
+++ /dev/null
@@ -1,46 +0,0 @@
-map length (tiers :: [[ Nat3->Nat2 ]])  =  [1,3,3,1]
-
-length (list :: [ Nat3->Nat2 ])  =  8
-
-allUnique (list :: [ Nat3->Nat2 ])  =  True
-
-ratioRepetitions (list :: [ Nat3->Nat2 ])  =  0 % 1
-
-tiers :: [Nat3->Nat2]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Nat3-Nat3.out b/tests/diff/tiers-listsofpairs-Nat3-Nat3.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Nat3-Nat3.out
+++ /dev/null
@@ -1,125 +0,0 @@
-map length (tiers :: [[ Nat3->Nat3 ]])  =  [1,3,6,7,6,3,1]
-
-length (list :: [ Nat3->Nat3 ])  =  Infinity
-
-allUnique (list :: [ Nat3->Nat3 ])  =  True
-
-ratioRepetitions (list :: [ Nat3->Nat3 ])  =  0 % 1
-
-tiers :: [Nat3->Nat3]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 0
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 1
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Nats-Nats.out b/tests/diff/tiers-listsofpairs-Nats-Nats.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Nats-Nats.out
+++ /dev/null
@@ -1,175 +0,0 @@
-map length (tiers :: [[ [Nat]->[Nat] ]])  =  [1,1,4,10,...]
-
-length (list :: [ [Nat]->[Nat] ])  =  Infinity
-
-allUnique (list :: [ [Nat]->[Nat] ])  =  True
-
-ratioRepetitions (list :: [ [Nat]->[Nat] ])  =  0 % 1
-
-tiers :: [[Nat]->[Nat]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [2] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [2] -> [1]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [2] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [2] -> [1]
-              ...
-    , \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [2] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [2] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [2] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [2]
-              [0] -> [2]
-              [0,0] -> [2]
-              [1] -> [2]
-              [0,0,0] -> [2]
-              [0,1] -> [2]
-              [1,0] -> [2]
-              [2] -> [2]
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-U-Bool.out b/tests/diff/tiers-listsofpairs-U-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-U-Bool.out
+++ /dev/null
@@ -1,15 +0,0 @@
-map length (tiers :: [[ ()->Bool ]])  =  [2]
-
-length (list :: [ ()->Bool ])  =  2
-
-allUnique (list :: [ ()->Bool ])  =  True
-
-ratioRepetitions (list :: [ ()->Bool ])  =  0 % 1
-
-tiers :: [()->Bool]  =
-  [ [ \x -> case x of
-              () -> False
-    , \x -> case x of
-              () -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-U-Nat.out b/tests/diff/tiers-listsofpairs-U-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-U-Nat.out
+++ /dev/null
@@ -1,29 +0,0 @@
-map length (tiers :: [[ ()->Nat ]])  =  [1,1,1,1,1,1,...]
-
-length (list :: [ ()->Nat ])  =  Infinity
-
-allUnique (list :: [ ()->Nat ])  =  True
-
-ratioRepetitions (list :: [ ()->Nat ])  =  0 % 1
-
-tiers :: [()->Nat]  =
-  [ [ \x -> case x of
-              () -> 0
-    ]
-  , [ \x -> case x of
-              () -> 1
-    ]
-  , [ \x -> case x of
-              () -> 2
-    ]
-  , [ \x -> case x of
-              () -> 3
-    ]
-  , [ \x -> case x of
-              () -> 4
-    ]
-  , [ \x -> case x of
-              () -> 5
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-listsofpairs-U-U.out b/tests/diff/tiers-listsofpairs-U-U.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-U-U.out
+++ /dev/null
@@ -1,13 +0,0 @@
-map length (tiers :: [[ ()->() ]])  =  [1]
-
-length (list :: [ ()->() ])  =  1
-
-allUnique (list :: [ ()->() ])  =  True
-
-ratioRepetitions (list :: [ ()->() ])  =  0 % 1
-
-tiers :: [()->()]  =
-  [ [ \x -> case x of
-              () -> ()
-    ]
-  ]
diff --git a/tests/diff/tiers-listsofpairs-Us-Us.out b/tests/diff/tiers-listsofpairs-Us-Us.out
deleted file mode 100644
--- a/tests/diff/tiers-listsofpairs-Us-Us.out
+++ /dev/null
@@ -1,115 +0,0 @@
-map length (tiers :: [[ [()]->[()] ]])  =  [1,1,3,5,...]
-
-length (list :: [ [()]->[()] ])  =  Infinity
-
-allUnique (list :: [ [()]->[()] ])  =  True
-
-ratioRepetitions (list :: [ [()]->[()] ])  =  0 % 1
-
-tiers :: [[()]->[()]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [()]
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> [(),()]
-              [()] -> [(),()]
-              [(),()] -> [(),()]
-              [(),(),()] -> [(),()]
-              [(),(),(),()] -> [(),()]
-              [(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),(),()] -> [(),()]
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [(),()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [()]
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> [()]
-              [()] -> []
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [(),()]
-              [(),()] -> [(),()]
-              [(),(),()] -> [(),()]
-              [(),(),(),()] -> [(),()]
-              [(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),(),()] -> [(),()]
-              ...
-    , \x -> case x of
-              [] -> [(),(),()]
-              [()] -> [(),(),()]
-              [(),()] -> [(),(),()]
-              [(),(),()] -> [(),(),()]
-              [(),(),(),()] -> [(),(),()]
-              [(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),(),()] -> [(),(),()]
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-Bool-Bool.out b/tests/diff/tiers-mixed-Bool-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Bool-Bool.out
+++ /dev/null
@@ -1,35 +0,0 @@
-map length (tiers :: [[ Bool->Bool ]])  =  [8]
-
-length (list :: [ Bool->Bool ])  =  8
-
-allUnique (list :: [ Bool->Bool ])  =  False
-
-ratioRepetitions (list :: [ Bool->Bool ])  =  1 % 2
-
-tiers :: [Bool->Bool]  =
-  [ [ \x -> case x of
-              False -> False
-              True -> False
-    , \x -> case x of
-              False -> False
-              True -> True
-    , \x -> case x of
-              False -> True
-              True -> False
-    , \x -> case x of
-              False -> True
-              True -> True
-    , \x -> case x of
-              False -> False
-              True -> False
-    , \x -> case x of
-              False -> True
-              True -> False
-    , \x -> case x of
-              False -> False
-              True -> True
-    , \x -> case x of
-              False -> True
-              True -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-Bool-MBool.out b/tests/diff/tiers-mixed-Bool-MBool.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Bool-MBool.out
+++ /dev/null
@@ -1,67 +0,0 @@
-map length (tiers :: [[ Bool->Maybe Bool ]])  =  [2,8,8]
-
-length (list :: [ Bool->Maybe Bool ])  =  Infinity
-
-allUnique (list :: [ Bool->Maybe Bool ])  =  False
-
-ratioRepetitions (list :: [ Bool->Maybe Bool ])  =  1 % 2
-
-tiers :: [Bool->Maybe Bool]  =
-  [ [ \x -> case x of
-              False -> Nothing
-              True -> Nothing
-    , \x -> case x of
-              False -> Nothing
-              True -> Nothing
-    ]
-  , [ \x -> case x of
-              False -> Nothing
-              True -> Just False
-    , \x -> case x of
-              False -> Nothing
-              True -> Just True
-    , \x -> case x of
-              False -> Just False
-              True -> Nothing
-    , \x -> case x of
-              False -> Just True
-              True -> Nothing
-    , \x -> case x of
-              False -> Just False
-              True -> Nothing
-    , \x -> case x of
-              False -> Just True
-              True -> Nothing
-    , \x -> case x of
-              False -> Nothing
-              True -> Just False
-    , \x -> case x of
-              False -> Nothing
-              True -> Just True
-    ]
-  , [ \x -> case x of
-              False -> Just False
-              True -> Just False
-    , \x -> case x of
-              False -> Just False
-              True -> Just True
-    , \x -> case x of
-              False -> Just True
-              True -> Just False
-    , \x -> case x of
-              False -> Just True
-              True -> Just True
-    , \x -> case x of
-              False -> Just False
-              True -> Just False
-    , \x -> case x of
-              False -> Just True
-              True -> Just False
-    , \x -> case x of
-              False -> Just False
-              True -> Just True
-    , \x -> case x of
-              False -> Just True
-              True -> Just True
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-Bool-U.out b/tests/diff/tiers-mixed-Bool-U.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Bool-U.out
+++ /dev/null
@@ -1,17 +0,0 @@
-map length (tiers :: [[ Bool->() ]])  =  [2]
-
-length (list :: [ Bool->() ])  =  2
-
-allUnique (list :: [ Bool->() ])  =  False
-
-ratioRepetitions (list :: [ Bool->() ])  =  1 % 2
-
-tiers :: [Bool->()]  =
-  [ [ \x -> case x of
-              False -> ()
-              True -> ()
-    , \x -> case x of
-              False -> ()
-              True -> ()
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-Bools-Bools.out b/tests/diff/tiers-mixed-Bools-Bools.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Bools-Bools.out
+++ /dev/null
@@ -1,1115 +0,0 @@
-map length (tiers :: [[ [Bool]->[Bool] ]])  =  [2,5,20,83,...]
-
-length (list :: [ [Bool]->[Bool] ])  =  Infinity
-
-allUnique (list :: [ [Bool]->[Bool] ])  =  False
-
-ratioRepetitions (list :: [ [Bool]->[Bool] ])  =  43 % 110
-
-tiers :: [[Bool]->[Bool]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False]
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [False,False]
-              [False] -> [False,False]
-              [True] -> [False,False]
-              [False,False] -> [False,False]
-              [False,True] -> [False,False]
-              [True,False] -> [False,False]
-              [True,True] -> [False,False]
-              [False,False,False] -> [False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True]
-              [False] -> [False,True]
-              [True] -> [False,True]
-              [False,False] -> [False,True]
-              [False,True] -> [False,True]
-              [True,False] -> [False,True]
-              [True,True] -> [False,True]
-              [False,False,False] -> [False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False]
-              [False] -> [True,False]
-              [True] -> [True,False]
-              [False,False] -> [True,False]
-              [False,True] -> [True,False]
-              [True,False] -> [True,False]
-              [True,True] -> [True,False]
-              [False,False,False] -> [True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True]
-              [False] -> [True,True]
-              [True] -> [True,True]
-              [False,False] -> [True,True]
-              [False,True] -> [True,True]
-              [True,False] -> [True,True]
-              [True,True] -> [True,True]
-              [False,False,False] -> [True,True]
-              ...
-    , \x -> case x of
-              [] -> [False,False]
-              [False] -> [False,False]
-              [True] -> [False,False]
-              [False,False] -> [False,False]
-              [False,True] -> [False,False]
-              [True,False] -> [False,False]
-              [True,True] -> [False,False]
-              [False,False,False] -> [False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True]
-              [False] -> [False,True]
-              [True] -> [False,True]
-              [False,False] -> [False,True]
-              [False,True] -> [False,True]
-              [True,False] -> [False,True]
-              [True,True] -> [False,True]
-              [False,False,False] -> [False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False]
-              [False] -> [True,False]
-              [True] -> [True,False]
-              [False,False] -> [True,False]
-              [False,True] -> [True,False]
-              [True,False] -> [True,False]
-              [True,True] -> [True,False]
-              [False,False,False] -> [True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True]
-              [False] -> [True,True]
-              [True] -> [True,True]
-              [False,False] -> [True,True]
-              [False,True] -> [True,True]
-              [True,False] -> [True,True]
-              [True,True] -> [True,True]
-              [False,False,False] -> [True,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [False,False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False,True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True,False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True,True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False,False]
-              [True] -> [False,False]
-              [False,False] -> [False,False]
-              [False,True] -> [False,False]
-              [True,False] -> [False,False]
-              [True,True] -> [False,False]
-              [False,False,False] -> [False,False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False,True]
-              [True] -> [False,True]
-              [False,False] -> [False,True]
-              [False,True] -> [False,True]
-              [True,False] -> [False,True]
-              [True,True] -> [False,True]
-              [False,False,False] -> [False,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True,False]
-              [True] -> [True,False]
-              [False,False] -> [True,False]
-              [False,True] -> [True,False]
-              [True,False] -> [True,False]
-              [True,True] -> [True,False]
-              [False,False,False] -> [True,False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True,True]
-              [True] -> [True,True]
-              [False,False] -> [True,True]
-              [False,True] -> [True,True]
-              [True,False] -> [True,True]
-              [True,True] -> [True,True]
-              [False,False,False] -> [True,True]
-              ...
-    , \x -> case x of
-              [] -> [False,False,False]
-              [False] -> [False,False,False]
-              [True] -> [False,False,False]
-              [False,False] -> [False,False,False]
-              [False,True] -> [False,False,False]
-              [True,False] -> [False,False,False]
-              [True,True] -> [False,False,False]
-              [False,False,False] -> [False,False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,False,True]
-              [False] -> [False,False,True]
-              [True] -> [False,False,True]
-              [False,False] -> [False,False,True]
-              [False,True] -> [False,False,True]
-              [True,False] -> [False,False,True]
-              [True,True] -> [False,False,True]
-              [False,False,False] -> [False,False,True]
-              ...
-    , \x -> case x of
-              [] -> [False,True,False]
-              [False] -> [False,True,False]
-              [True] -> [False,True,False]
-              [False,False] -> [False,True,False]
-              [False,True] -> [False,True,False]
-              [True,False] -> [False,True,False]
-              [True,True] -> [False,True,False]
-              [False,False,False] -> [False,True,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True,True]
-              [False] -> [False,True,True]
-              [True] -> [False,True,True]
-              [False,False] -> [False,True,True]
-              [False,True] -> [False,True,True]
-              [True,False] -> [False,True,True]
-              [True,True] -> [False,True,True]
-              [False,False,False] -> [False,True,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False,False]
-              [False] -> [True,False,False]
-              [True] -> [True,False,False]
-              [False,False] -> [True,False,False]
-              [False,True] -> [True,False,False]
-              [True,False] -> [True,False,False]
-              [True,True] -> [True,False,False]
-              [False,False,False] -> [True,False,False]
-              ...
-    , \x -> case x of
-              [] -> [True,False,True]
-              [False] -> [True,False,True]
-              [True] -> [True,False,True]
-              [False,False] -> [True,False,True]
-              [False,True] -> [True,False,True]
-              [True,False] -> [True,False,True]
-              [True,True] -> [True,False,True]
-              [False,False,False] -> [True,False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,True,False]
-              [False] -> [True,True,False]
-              [True] -> [True,True,False]
-              [False,False] -> [True,True,False]
-              [False,True] -> [True,True,False]
-              [True,False] -> [True,True,False]
-              [True,True] -> [True,True,False]
-              [False,False,False] -> [True,True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True,True]
-              [False] -> [True,True,True]
-              [True] -> [True,True,True]
-              [False,False] -> [True,True,True]
-              [False,True] -> [True,True,True]
-              [True,False] -> [True,True,True]
-              [True,True] -> [True,True,True]
-              [False,False,False] -> [True,True,True]
-              ...
-    , \x -> case x of
-              [] -> [False,False,False]
-              [False] -> [False,False,False]
-              [True] -> [False,False,False]
-              [False,False] -> [False,False,False]
-              [False,True] -> [False,False,False]
-              [True,False] -> [False,False,False]
-              [True,True] -> [False,False,False]
-              [False,False,False] -> [False,False,False]
-              ...
-    , \x -> case x of
-              [] -> [False,False,True]
-              [False] -> [False,False,True]
-              [True] -> [False,False,True]
-              [False,False] -> [False,False,True]
-              [False,True] -> [False,False,True]
-              [True,False] -> [False,False,True]
-              [True,True] -> [False,False,True]
-              [False,False,False] -> [False,False,True]
-              ...
-    , \x -> case x of
-              [] -> [False,True,False]
-              [False] -> [False,True,False]
-              [True] -> [False,True,False]
-              [False,False] -> [False,True,False]
-              [False,True] -> [False,True,False]
-              [True,False] -> [False,True,False]
-              [True,True] -> [False,True,False]
-              [False,False,False] -> [False,True,False]
-              ...
-    , \x -> case x of
-              [] -> [False,True,True]
-              [False] -> [False,True,True]
-              [True] -> [False,True,True]
-              [False,False] -> [False,True,True]
-              [False,True] -> [False,True,True]
-              [True,False] -> [False,True,True]
-              [True,True] -> [False,True,True]
-              [False,False,False] -> [False,True,True]
-              ...
-    , \x -> case x of
-              [] -> [True,False,False]
-              [False] -> [True,False,False]
-              [True] -> [True,False,False]
-              [False,False] -> [True,False,False]
-              [False,True] -> [True,False,False]
-              [True,False] -> [True,False,False]
-              [True,True] -> [True,False,False]
-              [False,False,False] -> [True,False,False]
-              ...
-    , \x -> case x of
-              [] -> [True,False,True]
-              [False] -> [True,False,True]
-              [True] -> [True,False,True]
-              [False,False] -> [True,False,True]
-              [False,True] -> [True,False,True]
-              [True,False] -> [True,False,True]
-              [True,True] -> [True,False,True]
-              [False,False,False] -> [True,False,True]
-              ...
-    , \x -> case x of
-              [] -> [True,True,False]
-              [False] -> [True,True,False]
-              [True] -> [True,True,False]
-              [False,False] -> [True,True,False]
-              [False,True] -> [True,True,False]
-              [True,False] -> [True,True,False]
-              [True,True] -> [True,True,False]
-              [False,False,False] -> [True,True,False]
-              ...
-    , \x -> case x of
-              [] -> [True,True,True]
-              [False] -> [True,True,True]
-              [True] -> [True,True,True]
-              [False,False] -> [True,True,True]
-              [False,True] -> [True,True,True]
-              [True,False] -> [True,True,True]
-              [True,True] -> [True,True,True]
-              [False,False,False] -> [True,True,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False,False]
-              [True] -> []
-              [False,False] -> [False,False]
-              [False,True] -> [False,False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False,False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False,True]
-              [True] -> []
-              [False,False] -> [False,True]
-              [False,True] -> [False,True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True,False]
-              [True] -> []
-              [False,False] -> [True,False]
-              [False,True] -> [True,False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True,False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True,True]
-              [True] -> []
-              [False,False] -> [True,True]
-              [False,True] -> [True,True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True,True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> [False]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> [False]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> [True]
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> [True]
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False,False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False,False]
-              [True,True] -> [False,False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False,True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False,True]
-              [True,True] -> [False,True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True,False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True,False]
-              [True,True] -> [True,False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True,True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True,True]
-              [True,True] -> [True,True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [False]
-              [True] -> []
-              [False,False] -> [False]
-              [False,True] -> [False]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [False]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> [True]
-              [True] -> []
-              [False,False] -> [True]
-              [False,True] -> [True]
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> [True]
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> [False]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [False]
-              [True,True] -> [False]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> [True]
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> [True]
-              [True,True] -> [True]
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False,False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [False,True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True,False]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    , \x -> case x of
-              [] -> [True,True]
-              [False] -> []
-              [True] -> []
-              [False,False] -> []
-              [False,True] -> []
-              [True,False] -> []
-              [True,True] -> []
-              [False,False,False] -> []
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-Int-Int-Int.out b/tests/diff/tiers-mixed-Int-Int-Int.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Int-Int-Int.out
+++ /dev/null
@@ -1,3625 +0,0 @@
-map length (tiers :: [[ Int->Int->Int ]])  =  [4,12,58,287,...]
-
-length (list :: [ Int->Int->Int ])  =  Infinity
-
-allUnique (list :: [ Int->Int->Int ])  =  False
-
-ratioRepetitions (list :: [ Int->Int->Int ])  =  315 % 361
-
-tiers :: [Int->Int->Int]  =
-  [ [ \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> 0
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> -1
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,-1) -> 2
-                (1,1) -> 2
-                (-1,0) -> 2
-                (0,2) -> 2
-                (1,-1) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,-1) -> 2
-                (1,1) -> 2
-                (-1,0) -> 2
-                (0,2) -> 2
-                (1,-1) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> -1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> 0
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> -1
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,-1) -> 2
-                (1,1) -> 2
-                (-1,0) -> 2
-                (0,2) -> 2
-                (1,-1) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,-1) -> 2
-                (1,1) -> 2
-                (-1,0) -> 2
-                (0,2) -> 2
-                (1,-1) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> -1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> 0
-                (1,1) -> -1
-                (-1,0) -> -1
-                (0,2) -> -1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> -1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 1
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 1
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> -1
-                (0,1) -> -1
-                (1,0) -> -1
-                (0,-1) -> -1
-                (1,1) -> -1
-                (-1,0) -> 0
-                (0,2) -> -1
-                (1,-1) -> -1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,-1) -> 1
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 1
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,-1) -> 0
-                (1,1) -> 1
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,-1) -> 0
-                (1,1) -> 0
-                (-1,0) -> 0
-                (0,2) -> 0
-                (1,-1) -> 0
-                ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-Int-Int.out b/tests/diff/tiers-mixed-Int-Int.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Int-Int.out
+++ /dev/null
@@ -1,2997 +0,0 @@
-map length (tiers :: [[ Int->Int ]])  =  [2,3,8,20,61,204,...]
-
-length (list :: [ Int->Int ])  =  Infinity
-
-allUnique (list :: [ Int->Int ])  =  False
-
-ratioRepetitions (list :: [ Int->Int ])  =  211 % 298
-
-tiers :: [Int->Int]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> -2
-              1 -> -2
-              -1 -> -2
-              2 -> -2
-              -2 -> -2
-              3 -> -2
-              -3 -> -2
-              4 -> -2
-              ...
-    , \x -> case x of
-              0 -> -2
-              1 -> -2
-              -1 -> -2
-              2 -> -2
-              -2 -> -2
-              3 -> -2
-              -3 -> -2
-              4 -> -2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 2
-              2 -> 0
-              -2 -> 2
-              3 -> 0
-              -3 -> 2
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> -1
-              2 -> 1
-              -2 -> -1
-              3 -> 1
-              -3 -> -1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 1
-              2 -> -1
-              -2 -> 1
-              3 -> -1
-              -3 -> 1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 0
-              2 -> 2
-              -2 -> 0
-              3 -> 2
-              -3 -> 0
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> -2
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> -1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              -1 -> 2
-              2 -> 2
-              -2 -> 2
-              3 -> 2
-              -3 -> 2
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -2
-              -1 -> -2
-              2 -> -2
-              -2 -> -2
-              3 -> -2
-              -3 -> -2
-              4 -> -2
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 3
-              -1 -> 3
-              2 -> 3
-              -2 -> 3
-              3 -> 3
-              -3 -> 3
-              4 -> 3
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 3
-              -1 -> 3
-              2 -> 3
-              -2 -> 3
-              3 -> 3
-              -3 -> 3
-              4 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -2
-              2 -> 0
-              -2 -> -2
-              3 -> 0
-              -3 -> -2
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 2
-              3 -> 0
-              -3 -> 2
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 2
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 2
-              2 -> 1
-              -2 -> 2
-              3 -> 1
-              -3 -> 2
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> -1
-              3 -> 1
-              -3 -> -1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> -1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 2
-              2 -> 0
-              -2 -> 2
-              3 -> 0
-              -3 -> 2
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> -1
-              2 -> -1
-              -2 -> -1
-              3 -> -1
-              -3 -> -1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 1
-              3 -> -1
-              -3 -> 1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 1
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> -1
-              2 -> 1
-              -2 -> -1
-              3 -> 1
-              -3 -> -1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> -1
-              2 -> 0
-              -2 -> -1
-              3 -> 0
-              -3 -> -1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 1
-              2 -> 2
-              -2 -> 1
-              3 -> 2
-              -3 -> 1
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              -1 -> 0
-              2 -> 2
-              -2 -> 0
-              3 -> 2
-              -3 -> 0
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 1
-              2 -> -1
-              -2 -> 1
-              3 -> -1
-              -3 -> 1
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 1
-              -2 -> 1
-              3 -> 1
-              -3 -> 1
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 1
-              2 -> 0
-              -2 -> 1
-              3 -> 0
-              -3 -> 1
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -2
-              1 -> -2
-              -1 -> 0
-              2 -> -2
-              -2 -> 0
-              3 -> -2
-              -3 -> 0
-              4 -> -2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> -1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              -1 -> 0
-              2 -> 2
-              -2 -> 0
-              3 -> 2
-              -3 -> 0
-              4 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> -1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> -1
-              -2 -> 0
-              3 -> -1
-              -3 -> 0
-              4 -> -1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 1
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 1
-              -3 -> 0
-              4 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              -1 -> 0
-              2 -> 0
-              -2 -> 0
-              3 -> 0
-              -3 -> 0
-              4 -> 0
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-Ints-Ints.out b/tests/diff/tiers-mixed-Ints-Ints.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Ints-Ints.out
+++ /dev/null
@@ -1,475 +0,0 @@
-map length (tiers :: [[ [Int]->[Int] ]])  =  [2,3,10,31,...]
-
-length (list :: [ [Int]->[Int] ])  =  Infinity
-
-allUnique (list :: [ [Int]->[Int] ])  =  False
-
-ratioRepetitions (list :: [ [Int]->[Int] ])  =  13 % 23
-
-tiers :: [[Int]->[Int]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [-1] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [-1] -> [1]
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [-1] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [-1] -> [1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [-1] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [-1] -> [1]
-              ...
-    , \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [-1] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [-1] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [-1] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [-1]
-              [0] -> [-1]
-              [0,0] -> [-1]
-              [1] -> [-1]
-              [0,0,0] -> [-1]
-              [0,1] -> [-1]
-              [1,0] -> [-1]
-              [-1] -> [-1]
-              ...
-    , \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [-1] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [-1] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [-1] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [-1]
-              [0] -> [-1]
-              [0,0] -> [-1]
-              [1] -> [-1]
-              [0,0,0] -> [-1]
-              [0,1] -> [-1]
-              [1,0] -> [-1]
-              [-1] -> [-1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [-1] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [-1] -> [1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> [0]
-              [1] -> []
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> []
-              [1] -> [0]
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [-1] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [-1] -> []
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-MBool-Bool.out b/tests/diff/tiers-mixed-MBool-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-MBool-Bool.out
+++ /dev/null
@@ -1,75 +0,0 @@
-map length (tiers :: [[ Maybe Bool->Bool ]])  =  [16]
-
-length (list :: [ Maybe Bool->Bool ])  =  Infinity
-
-allUnique (list :: [ Maybe Bool->Bool ])  =  False
-
-ratioRepetitions (list :: [ Maybe Bool->Bool ])  =  1 % 2
-
-tiers :: [Maybe Bool->Bool]  =
-  [ [ \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> True
-    , \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> False
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> False
-              Just False -> True
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> False
-    , \x -> case x of
-              Nothing -> True
-              Just False -> False
-              Just True -> True
-    , \x -> case x of
-              Nothing -> True
-              Just False -> True
-              Just True -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-MBool-MBool.out b/tests/diff/tiers-mixed-MBool-MBool.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-MBool-MBool.out
+++ /dev/null
@@ -1,230 +0,0 @@
-map length (tiers :: [[ Maybe Bool->Maybe Bool ]])  =  [2,12,24,16]
-
-length (list :: [ Maybe Bool->Maybe Bool ])  =  Infinity
-
-allUnique (list :: [ Maybe Bool->Maybe Bool ])  =  False
-
-ratioRepetitions (list :: [ Maybe Bool->Maybe Bool ])  =  1 % 2
-
-tiers :: [Maybe Bool->Maybe Bool]  =
-  [ [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Nothing
-    ]
-  , [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Nothing
-    ]
-  , [ \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Nothing
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Nothing
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Nothing
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Nothing
-              Just True -> Just True
-    ]
-  , [ \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just False
-              Just False -> Just True
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just False
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just False
-              Just True -> Just True
-    , \x -> case x of
-              Nothing -> Just True
-              Just False -> Just True
-              Just True -> Just True
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-Nat,Nat-Nat.out b/tests/diff/tiers-mixed-Nat,Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Nat,Nat-Nat.out
+++ /dev/null
@@ -1,745 +0,0 @@
-map length (tiers :: [[ (Nat,Nat)->Nat ]])  =  [2,4,14,53,...]
-
-length (list :: [ (Nat,Nat)->Nat ])  =  Infinity
-
-allUnique (list :: [ (Nat,Nat)->Nat ])  =  False
-
-ratioRepetitions (list :: [ (Nat,Nat)->Nat ])  =  41 % 73
-
-tiers :: [(Nat,Nat)->Nat]  =
-  [ [ \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 2
-              (1,0) -> 2
-              (0,2) -> 2
-              (1,1) -> 2
-              (2,0) -> 2
-              (0,3) -> 2
-              (1,2) -> 2
-              ...
-    , \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 2
-              (1,0) -> 2
-              (0,2) -> 2
-              (1,1) -> 2
-              (2,0) -> 2
-              (0,3) -> 2
-              (1,2) -> 2
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 2
-              (1,0) -> 2
-              (0,2) -> 2
-              (1,1) -> 2
-              (2,0) -> 2
-              (0,3) -> 2
-              (1,2) -> 2
-              ...
-    , \x -> case x of
-              (0,0) -> 3
-              (0,1) -> 3
-              (1,0) -> 3
-              (0,2) -> 3
-              (1,1) -> 3
-              (2,0) -> 3
-              (0,3) -> 3
-              (1,2) -> 3
-              ...
-    , \x -> case x of
-              (0,0) -> 3
-              (0,1) -> 3
-              (1,0) -> 3
-              (0,2) -> 3
-              (1,1) -> 3
-              (2,0) -> 3
-              (0,3) -> 3
-              (1,2) -> 3
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 2
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 2
-              (2,0) -> 0
-              (0,3) -> 2
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 0
-              (1,0) -> 2
-              (0,2) -> 2
-              (1,1) -> 0
-              (2,0) -> 2
-              (0,3) -> 0
-              (1,2) -> 2
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 2
-              (0,2) -> 0
-              (1,1) -> 2
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 2
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 1
-              (0,2) -> 1
-              (1,1) -> 1
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 1
-              (0,2) -> 0
-              (1,1) -> 1
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 1
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 2
-              (0,1) -> 2
-              (1,0) -> 0
-              (0,2) -> 2
-              (1,1) -> 0
-              (2,0) -> 2
-              (0,3) -> 2
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 1
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 1
-              (0,1) -> 1
-              (1,0) -> 0
-              (0,2) -> 1
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 1
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    , \x -> case x of
-              (0,0) -> 0
-              (0,1) -> 0
-              (1,0) -> 0
-              (0,2) -> 0
-              (1,1) -> 0
-              (2,0) -> 0
-              (0,3) -> 0
-              (1,2) -> 0
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-Nat-Nat-Nat.out b/tests/diff/tiers-mixed-Nat-Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Nat-Nat-Nat.out
+++ /dev/null
@@ -1,3625 +0,0 @@
-map length (tiers :: [[ Nat->Nat->Nat ]])  =  [4,12,58,287,...]
-
-length (list :: [ Nat->Nat->Nat ])  =  Infinity
-
-allUnique (list :: [ Nat->Nat->Nat ])  =  False
-
-ratioRepetitions (list :: [ Nat->Nat->Nat ])  =  313 % 361
-
-tiers :: [Nat->Nat->Nat]  =
-  [ [ \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,2) -> 2
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,2) -> 2
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,2) -> 2
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 2
-                (0,2) -> 2
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    ]
-  , [ \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 3
-                (0,1) -> 3
-                (1,0) -> 3
-                (0,2) -> 3
-                (1,1) -> 3
-                (2,0) -> 3
-                (0,3) -> 3
-                (1,2) -> 3
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 3
-                (0,1) -> 3
-                (1,0) -> 3
-                (0,2) -> 3
-                (1,1) -> 3
-                (2,0) -> 3
-                (0,3) -> 3
-                (1,2) -> 3
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 3
-                (0,1) -> 3
-                (1,0) -> 3
-                (0,2) -> 3
-                (1,1) -> 3
-                (2,0) -> 3
-                (0,3) -> 3
-                (1,2) -> 3
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 3
-                (0,1) -> 3
-                (1,0) -> 3
-                (0,2) -> 3
-                (1,1) -> 3
-                (2,0) -> 3
-                (0,3) -> 3
-                (1,2) -> 3
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 2
-                (0,2) -> 0
-                (1,1) -> 2
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 2
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 1
-                (0,2) -> 1
-                (1,1) -> 1
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 1
-                (0,2) -> 0
-                (1,1) -> 1
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 1
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 2
-                (0,1) -> 2
-                (1,0) -> 0
-                (0,2) -> 2
-                (1,1) -> 0
-                (2,0) -> 2
-                (0,3) -> 2
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 1
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 1
-                (0,1) -> 1
-                (1,0) -> 0
-                (0,2) -> 1
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 1
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    , \x y -> case (x,y) of
-                (0,0) -> 0
-                (0,1) -> 0
-                (1,0) -> 0
-                (0,2) -> 0
-                (1,1) -> 0
-                (2,0) -> 0
-                (0,3) -> 0
-                (1,2) -> 0
-                ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-Nat-Nat.out b/tests/diff/tiers-mixed-Nat-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Nat-Nat.out
+++ /dev/null
@@ -1,2997 +0,0 @@
-map length (tiers :: [[ Nat->Nat ]])  =  [2,3,8,20,61,204,...]
-
-length (list :: [ Nat->Nat ])  =  Infinity
-
-allUnique (list :: [ Nat->Nat ])  =  False
-
-ratioRepetitions (list :: [ Nat->Nat ])  =  85 % 149
-
-tiers :: [Nat->Nat]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 3
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 3
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 4
-              1 -> 4
-              2 -> 4
-              3 -> 4
-              4 -> 4
-              5 -> 4
-              6 -> 4
-              7 -> 4
-              ...
-    , \x -> case x of
-              0 -> 4
-              1 -> 4
-              2 -> 4
-              3 -> 4
-              4 -> 4
-              5 -> 4
-              6 -> 4
-              7 -> 4
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 0
-              3 -> 3
-              4 -> 0
-              5 -> 3
-              6 -> 0
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-              3 -> 2
-              4 -> 1
-              5 -> 2
-              6 -> 1
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-              3 -> 1
-              4 -> 2
-              5 -> 1
-              6 -> 2
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 3
-              3 -> 0
-              4 -> 3
-              5 -> 0
-              6 -> 3
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> 4
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 3
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 3
-              3 -> 3
-              4 -> 3
-              5 -> 3
-              6 -> 3
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 4
-              2 -> 4
-              3 -> 4
-              4 -> 4
-              5 -> 4
-              6 -> 4
-              7 -> 4
-              ...
-    , \x -> case x of
-              0 -> 5
-              1 -> 5
-              2 -> 5
-              3 -> 5
-              4 -> 5
-              5 -> 5
-              6 -> 5
-              7 -> 5
-              ...
-    , \x -> case x of
-              0 -> 5
-              1 -> 5
-              2 -> 5
-              3 -> 5
-              4 -> 5
-              5 -> 5
-              6 -> 5
-              7 -> 5
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 4
-              2 -> 0
-              3 -> 4
-              4 -> 0
-              5 -> 4
-              6 -> 0
-              7 -> 4
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 3
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 3
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 3
-              2 -> 1
-              3 -> 3
-              4 -> 1
-              5 -> 3
-              6 -> 1
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 2
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 2
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 3
-              2 -> 0
-              3 -> 3
-              4 -> 0
-              5 -> 3
-              6 -> 0
-              7 -> 3
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-              3 -> 2
-              4 -> 2
-              5 -> 2
-              6 -> 2
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 1
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 1
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 1
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 1
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 1
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-              3 -> 2
-              4 -> 0
-              5 -> 2
-              6 -> 0
-              7 -> 2
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 1
-              2 -> 3
-              3 -> 1
-              4 -> 3
-              5 -> 1
-              6 -> 3
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 3
-              3 -> 0
-              4 -> 3
-              5 -> 0
-              6 -> 3
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 2
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 2
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 1
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 2
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 1
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-              3 -> 1
-              4 -> 0
-              5 -> 1
-              6 -> 0
-              7 -> 1
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 4
-              1 -> 0
-              2 -> 4
-              3 -> 0
-              4 -> 4
-              5 -> 0
-              6 -> 4
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 3
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 3
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 2
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 1
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 3
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 3
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 2
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 1
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-              3 -> 0
-              4 -> 0
-              5 -> 0
-              6 -> 0
-              7 -> 0
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-Nat-U.out b/tests/diff/tiers-mixed-Nat-U.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Nat-U.out
+++ /dev/null
@@ -1,677 +0,0 @@
-map length (tiers :: [[ Nat->() ]])  =  [2,1,2,5,14,42,...]
-
-length (list :: [ Nat->() ])  =  Infinity
-
-allUnique (list :: [ Nat->() ])  =  False
-
-ratioRepetitions (list :: [ Nat->() ])  =  65 % 66
-
-tiers :: [Nat->()]  =
-  [ [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , [ \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    , \x -> case x of
-              0 -> ()
-              1 -> ()
-              2 -> ()
-              3 -> ()
-              4 -> ()
-              5 -> ()
-              6 -> ()
-              7 -> ()
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-Nat2-Nat2.out b/tests/diff/tiers-mixed-Nat2-Nat2.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Nat2-Nat2.out
+++ /dev/null
@@ -1,37 +0,0 @@
-map length (tiers :: [[ Nat2->Nat2 ]])  =  [2,4,2]
-
-length (list :: [ Nat2->Nat2 ])  =  8
-
-allUnique (list :: [ Nat2->Nat2 ])  =  False
-
-ratioRepetitions (list :: [ Nat2->Nat2 ])  =  1 % 2
-
-tiers :: [Nat2->Nat2]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-Nat2-Nat3.out b/tests/diff/tiers-mixed-Nat2-Nat3.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Nat2-Nat3.out
+++ /dev/null
@@ -1,69 +0,0 @@
-map length (tiers :: [[ Nat2->Nat3 ]])  =  [2,4,6,4,2]
-
-length (list :: [ Nat2->Nat3 ])  =  Infinity
-
-allUnique (list :: [ Nat2->Nat3 ])  =  False
-
-ratioRepetitions (list :: [ Nat2->Nat3 ])  =  1 % 2
-
-tiers :: [Nat2->Nat3]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-Nat3-Nat2.out b/tests/diff/tiers-mixed-Nat3-Nat2.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Nat3-Nat2.out
+++ /dev/null
@@ -1,78 +0,0 @@
-map length (tiers :: [[ Nat3->Nat2 ]])  =  [2,6,6,2]
-
-length (list :: [ Nat3->Nat2 ])  =  Infinity
-
-allUnique (list :: [ Nat3->Nat2 ])  =  False
-
-ratioRepetitions (list :: [ Nat3->Nat2 ])  =  1 % 2
-
-tiers :: [Nat3->Nat2]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-Nat3-Nat3.out b/tests/diff/tiers-mixed-Nat3-Nat3.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Nat3-Nat3.out
+++ /dev/null
@@ -1,233 +0,0 @@
-map length (tiers :: [[ Nat3->Nat3 ]])  =  [2,6,12,14,12,6,2]
-
-length (list :: [ Nat3->Nat3 ])  =  Infinity
-
-allUnique (list :: [ Nat3->Nat3 ])  =  False
-
-ratioRepetitions (list :: [ Nat3->Nat3 ])  =  1 % 2
-
-tiers :: [Nat3->Nat3]  =
-  [ [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 0
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 0
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 0
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 0
-    , \x -> case x of
-              0 -> 0
-              1 -> 2
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 0
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 1
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 0
-    ]
-  , [ \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 1
-    , \x -> case x of
-              0 -> 1
-              1 -> 2
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 1
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 1
-    ]
-  , [ \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-    , \x -> case x of
-              0 -> 2
-              1 -> 2
-              2 -> 2
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-Nats-Nats.out b/tests/diff/tiers-mixed-Nats-Nats.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Nats-Nats.out
+++ /dev/null
@@ -1,475 +0,0 @@
-map length (tiers :: [[ [Nat]->[Nat] ]])  =  [2,3,10,31,...]
-
-length (list :: [ [Nat]->[Nat] ])  =  Infinity
-
-allUnique (list :: [ [Nat]->[Nat] ])  =  False
-
-ratioRepetitions (list :: [ [Nat]->[Nat] ])  =  13 % 23
-
-tiers :: [[Nat]->[Nat]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [2] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [2] -> [1]
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [2] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [2] -> [1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [0,0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [2] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [2] -> [1]
-              ...
-    , \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [2] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [2] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [2] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [2]
-              [0] -> [2]
-              [0,0] -> [2]
-              [1] -> [2]
-              [0,0,0] -> [2]
-              [0,1] -> [2]
-              [1,0] -> [2]
-              [2] -> [2]
-              ...
-    , \x -> case x of
-              [] -> [0,0,0]
-              [0] -> [0,0,0]
-              [0,0] -> [0,0,0]
-              [1] -> [0,0,0]
-              [0,0,0] -> [0,0,0]
-              [0,1] -> [0,0,0]
-              [1,0] -> [0,0,0]
-              [2] -> [0,0,0]
-              ...
-    , \x -> case x of
-              [] -> [0,1]
-              [0] -> [0,1]
-              [0,0] -> [0,1]
-              [1] -> [0,1]
-              [0,0,0] -> [0,1]
-              [0,1] -> [0,1]
-              [1,0] -> [0,1]
-              [2] -> [0,1]
-              ...
-    , \x -> case x of
-              [] -> [1,0]
-              [0] -> [1,0]
-              [0,0] -> [1,0]
-              [1] -> [1,0]
-              [0,0,0] -> [1,0]
-              [0,1] -> [1,0]
-              [1,0] -> [1,0]
-              [2] -> [1,0]
-              ...
-    , \x -> case x of
-              [] -> [2]
-              [0] -> [2]
-              [0,0] -> [2]
-              [1] -> [2]
-              [0,0,0] -> [2]
-              [0,1] -> [2]
-              [1,0] -> [2]
-              [2] -> [2]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0,0]
-              [0,0] -> [0,0]
-              [1] -> [0,0]
-              [0,0,0] -> [0,0]
-              [0,1] -> [0,0]
-              [1,0] -> [0,0]
-              [2] -> [0,0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [1]
-              [0,0] -> [1]
-              [1] -> [1]
-              [0,0,0] -> [1]
-              [0,1] -> [1]
-              [1,0] -> [1]
-              [2] -> [1]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> [0]
-              [1] -> []
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> []
-              [1] -> [0]
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> [0]
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> [0]
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> []
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> []
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> [0]
-              [0,0] -> [0]
-              [1] -> [0]
-              [0,0,0] -> [0]
-              [0,1] -> [0]
-              [1,0] -> [0]
-              [2] -> [0]
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [0,0]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    , \x -> case x of
-              [] -> [1]
-              [0] -> []
-              [0,0] -> []
-              [1] -> []
-              [0,0,0] -> []
-              [0,1] -> []
-              [1,0] -> []
-              [2] -> []
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-U-Bool.out b/tests/diff/tiers-mixed-U-Bool.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-U-Bool.out
+++ /dev/null
@@ -1,19 +0,0 @@
-map length (tiers :: [[ ()->Bool ]])  =  [4]
-
-length (list :: [ ()->Bool ])  =  4
-
-allUnique (list :: [ ()->Bool ])  =  False
-
-ratioRepetitions (list :: [ ()->Bool ])  =  1 % 2
-
-tiers :: [()->Bool]  =
-  [ [ \x -> case x of
-              () -> False
-    , \x -> case x of
-              () -> True
-    , \x -> case x of
-              () -> False
-    , \x -> case x of
-              () -> True
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-U-Nat.out b/tests/diff/tiers-mixed-U-Nat.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-U-Nat.out
+++ /dev/null
@@ -1,41 +0,0 @@
-map length (tiers :: [[ ()->Nat ]])  =  [2,2,2,2,2,2,...]
-
-length (list :: [ ()->Nat ])  =  Infinity
-
-allUnique (list :: [ ()->Nat ])  =  False
-
-ratioRepetitions (list :: [ ()->Nat ])  =  1 % 2
-
-tiers :: [()->Nat]  =
-  [ [ \x -> case x of
-              () -> 0
-    , \x -> case x of
-              () -> 0
-    ]
-  , [ \x -> case x of
-              () -> 1
-    , \x -> case x of
-              () -> 1
-    ]
-  , [ \x -> case x of
-              () -> 2
-    , \x -> case x of
-              () -> 2
-    ]
-  , [ \x -> case x of
-              () -> 3
-    , \x -> case x of
-              () -> 3
-    ]
-  , [ \x -> case x of
-              () -> 4
-    , \x -> case x of
-              () -> 4
-    ]
-  , [ \x -> case x of
-              () -> 5
-    , \x -> case x of
-              () -> 5
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers-mixed-U-U.out b/tests/diff/tiers-mixed-U-U.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-U-U.out
+++ /dev/null
@@ -1,15 +0,0 @@
-map length (tiers :: [[ ()->() ]])  =  [2]
-
-length (list :: [ ()->() ])  =  2
-
-allUnique (list :: [ ()->() ])  =  False
-
-ratioRepetitions (list :: [ ()->() ])  =  1 % 2
-
-tiers :: [()->()]  =
-  [ [ \x -> case x of
-              () -> ()
-    , \x -> case x of
-              () -> ()
-    ]
-  ]
diff --git a/tests/diff/tiers-mixed-Us-Us.out b/tests/diff/tiers-mixed-Us-Us.out
deleted file mode 100644
--- a/tests/diff/tiers-mixed-Us-Us.out
+++ /dev/null
@@ -1,265 +0,0 @@
-map length (tiers :: [[ [()]->[()] ]])  =  [2,3,7,13,...]
-
-length (list :: [ [()]->[()] ])  =  Infinity
-
-allUnique (list :: [ [()]->[()] ])  =  False
-
-ratioRepetitions (list :: [ [()]->[()] ])  =  14 % 25
-
-tiers :: [[()]->[()]]  =
-  [ [ \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [()]
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> [()]
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> [(),()]
-              [()] -> [(),()]
-              [(),()] -> [(),()]
-              [(),(),()] -> [(),()]
-              [(),(),(),()] -> [(),()]
-              [(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),(),()] -> [(),()]
-              ...
-    , \x -> case x of
-              [] -> [(),()]
-              [()] -> [(),()]
-              [(),()] -> [(),()]
-              [(),(),()] -> [(),()]
-              [(),(),(),()] -> [(),()]
-              [(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),(),()] -> [(),()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> [()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , [ \x -> case x of
-              [] -> [(),()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [()]
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> [()]
-              [()] -> []
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [(),()]
-              [(),()] -> [(),()]
-              [(),(),()] -> [(),()]
-              [(),(),(),()] -> [(),()]
-              [(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),(),()] -> [(),()]
-              ...
-    , \x -> case x of
-              [] -> [(),(),()]
-              [()] -> [(),(),()]
-              [(),()] -> [(),(),()]
-              [(),(),()] -> [(),(),()]
-              [(),(),(),()] -> [(),(),()]
-              [(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),(),()] -> [(),(),()]
-              ...
-    , \x -> case x of
-              [] -> [(),(),()]
-              [()] -> [(),(),()]
-              [(),()] -> [(),(),()]
-              [(),(),()] -> [(),(),()]
-              [(),(),(),()] -> [(),(),()]
-              [(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),()] -> [(),(),()]
-              [(),(),(),(),(),(),()] -> [(),(),()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [(),()]
-              [(),()] -> [(),()]
-              [(),(),()] -> [(),()]
-              [(),(),(),()] -> [(),()]
-              [(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),()] -> [(),()]
-              [(),(),(),(),(),(),()] -> [(),()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> []
-              [()] -> [()]
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> [()]
-              [()] -> [()]
-              [(),()] -> [()]
-              [(),(),()] -> [()]
-              [(),(),(),()] -> [()]
-              [(),(),(),(),()] -> [()]
-              [(),(),(),(),(),()] -> [()]
-              [(),(),(),(),(),(),()] -> [()]
-              ...
-    , \x -> case x of
-              [] -> [()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    , \x -> case x of
-              [] -> [(),()]
-              [()] -> []
-              [(),()] -> []
-              [(),(),()] -> []
-              [(),(),(),()] -> []
-              [(),(),(),(),()] -> []
-              [(),(),(),(),(),()] -> []
-              [(),(),(),(),(),(),()] -> []
-              ...
-    ]
-  , ...
-  ]
diff --git a/tests/diff/tiers.out b/tests/diff/tiers.out
deleted file mode 100644
--- a/tests/diff/tiers.out
+++ /dev/null
@@ -1,10 +0,0 @@
-map length (tiers :: [[ () ]])  =  [1]
-
-length (list :: [ () ])  =  1
-
-allUnique (list :: [ () ])  =  True
-
-ratioRepetitions (list :: [ () ])  =  0 % 1
-
-tiers :: [()]  =
-  [[()]]
diff --git a/tests/test-derive.hs b/tests/test-derive.hs
deleted file mode 100644
--- a/tests/test-derive.hs
+++ /dev/null
@@ -1,106 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-{-# LANGUAGE TemplateHaskell, CPP #-}
-import Test
-import Test.LeanCheck
-import Test.LeanCheck.Derive
-import System.Exit (exitFailure)
-import Data.List (elemIndices,sort)
-import Test.LeanCheck.Utils.Operators
-
-data D0       = D0                    deriving Show
-data D1 a     = D1 a                  deriving Show
-data D2 a b   = D2 a b                deriving Show
-data D3 a b c = D3 a b c              deriving Show
-data C1 a     =           C11 a | C10 deriving Show
-data C2 a b   = C22 a b | C21 a | C20 deriving Show
-data I a b    = a :+ b                deriving Show
-
-deriveListable ''D0
-deriveListable ''D1
-deriveListable ''D2
-deriveListable ''D3
-deriveListable ''C1
-deriveListable ''C2
-deriveListable ''I
-
--- Nested datatype cascade
-data Nested = Nested N0 (N1 Int) (N2 Int Int)
-data N0     = R0 Int
-data N1 a   = R1 a
-data N2 a b = R2 a b
-deriveListableCascading ''Nested
-
--- Recursive nested datatype cascade
-data RN      = RN RN0 (RN1 Int) (RN2 Int RN)
-data RN0     = Nest0 Int | Recurse0 RN
-data RN1 a   = Nest1 a   | Recurse1 RN
-data RN2 a b = Nest2 a b | Recurse2 RN
-deriveListableCascading ''RN
-
--- Type synonyms
-data Pair a = Pair a a
-type Alias a = Pair a
--- deriveListable ''Alias -- this will fail
-deriveListableCascading ''Alias
-deriveListableIfNeeded ''Alias -- only works because instance already exists
-
--- Nested type synonyms
-data Triple a = Triple a a a
-type Tralias a = Triple a
-data Pairiple a = Pairriple (Tralias a) (Tralias a)
-deriveListableCascading ''Pairiple
-
--- Those should have no effect (instance already exists):
-{- uncommenting those should generate warnings
-deriveListable ''Bool
-deriveListable ''Maybe
-deriveListable ''Either
--}
-
--- Those should not generate warnings
-deriveListableIfNeeded ''Bool
-deriveListableIfNeeded ''Maybe
-deriveListableIfNeeded ''Either
-
-main :: IO ()
-main =
-  case elemIndices False (tests 100) of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-tests n =
-  [ True
-
-  , map unD0 list =| n |= list
-  , map unD1 list =| n |= (list :: [Int])
-  , map unD2 list =| n |= (list :: [(Int,Int)])
-  , map unD3 list =| n |= (list :: [(Int,Int,Int)])
-
-  , map unD1 list == (list :: [()])
-  , map unD2 list == (list :: [((),())])
-  , map unD3 list == (list :: [((),(),())])
-
-  , map unD1 list == (list :: [Bool])
-  , map unD2 list == (list :: [(Bool,Bool)])
-  , map unD3 list == (list :: [(Bool,Bool,Bool)])
-
-  , (tiers :: [[ Bool       ]]) =| 6 |= $(deriveTiers ''Bool)
-  , (tiers :: [[ [Int]      ]]) =| 6 |= $(deriveTiers ''[])
-  , (tiers :: [[ [Bool]     ]]) =| 6 |= $(deriveTiers ''[])
-  , (tiers :: [[ Maybe Int  ]]) =| 6 |= $(deriveTiers ''Maybe)
-  , (tiers :: [[ Maybe Bool ]]) =| 6 |= $(deriveTiers ''Maybe)
-  , ([]:tiers :: [[Either Bool Int]]) =$ map sort . take 6 $= $(deriveTiers ''Either)
-
-  , (list :: [ Bool       ]) =| n |= $(deriveList ''Bool)
-  , (list :: [ [Int]      ]) =| n |= $(deriveList ''[])
-  , (list :: [ [Bool]     ]) =| n |= $(deriveList ''[])
-  , (list :: [ Maybe Int  ]) =| n |= $(deriveList ''Maybe)
-  , (list :: [ Maybe Bool ]) =| n |= $(deriveList ''Maybe)
-  ]
-  where
-  unD0 (D0)       = ()
-  unD1 (D1 x)     = (x)
-  unD2 (D2 x y)   = (x,y)
-  unD3 (D3 x y z) = (x,y,z)
diff --git a/tests/test-error.hs b/tests/test-error.hs
deleted file mode 100644
--- a/tests/test-error.hs
+++ /dev/null
@@ -1,64 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-import Test ()
-
-import System.Exit (exitFailure)
-import Data.List (elemIndices,sort)
-
-import Test.LeanCheck.Error
-import Test.LeanCheck.Utils.Types (Nat)
-import Data.List (sort)
-
-main :: IO ()
-main =
-  case elemIndices False (tests 100) of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-tests n =
-  [ True
-
-  , not $ holds     n prop_sortMinE
-  , fails           n prop_sortMinE
-  , counterExample  n prop_sortMinE == Just ["[]"]
-  , counterExamples n prop_sortMinE == [["[]"]]
-
-  , holds           n prop_sortMin
-  , not $ fails     n prop_sortMin
-  , counterExample  n prop_sortMin == Nothing
-  , counterExamples n prop_sortMin == []
-
-  , exists          n someNumbers
-  , witness         n someNumbers == Just ["2"]
-  , witnesses       n someNumbers == map ((:[]).show) [2,3,5,7,11,13,17]
-
-  , exists          n someOthers
-  , witness         n someOthers == Just ["2","2"]
-  , witnesses (100*n) someOthers == (map.map) show [[2,2],[2,4],[3,3]
-                                                   ,[2,8],[3,9],[3,27]]
-  ]
-
-prop_sortMinE :: [Nat] -> Bool
-prop_sortMinE xs = head (sort xs) == minimum (xs::[Nat])
-
-prop_sortMin :: [Nat] -> Bool
-prop_sortMin xs = not (null xs)
-              ==> head (sort xs) == minimum (xs::[Nat])
-
-someNumbers :: Int -> Bool
-someNumbers  2 = True
-someNumbers  3 = True
-someNumbers  5 = True
-someNumbers  7 = True
-someNumbers 11 = True
-someNumbers 13 = True
-someNumbers 17 = True
-
-someOthers :: Int -> Int -> Bool
-someOthers = \x -> case x of 2 -> \y -> case y of 2 -> True
-                                                  4 -> True
-                                                  8 -> True
-                             3 -> \y -> case y of 3 -> True
-                                                  9 -> True
-                                                  27 -> True
diff --git a/tests/test-fun.hs b/tests/test-fun.hs
deleted file mode 100644
--- a/tests/test-fun.hs
+++ /dev/null
@@ -1,29 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-import Test
-
-import System.Exit (exitFailure)
-import Data.List (elemIndices, sort, nub, delete)
-
-import Test.LeanCheck
-import Test.LeanCheck.Function.ListsOfPairs
-import Test.LeanCheck.Utils
-
-
-main :: IO ()
-main =
-  case elemIndices False tests of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-tests =
-  [ True
-  -- TODO: add some tests here
-  ]
-
-allUnique :: Ord a => [a] -> Bool
-allUnique [] = True
-allUnique (x:xs) = x `notElem` xs
-                && allUnique (filter (< x) xs)
-                && allUnique (filter (> x) xs)
diff --git a/tests/test-funshow.hs b/tests/test-funshow.hs
deleted file mode 100644
--- a/tests/test-funshow.hs
+++ /dev/null
@@ -1,80 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-import Test
-
-import System.Exit (exitFailure)
-import Data.List (elemIndices,sort)
-import Test.LeanCheck.Function.ShowFunction
-import Test.LeanCheck.Function.Show
-import Test.LeanCheck.Utils.TypeBinding
-
-main :: IO ()
-main =
-  case elemIndices False tests of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-
-tests =
-  [ True
-
-  -- undefined values --
-  , showFunction 2 int == "undefined"
-  , showFunction 2 bool == "undefined"
-  , showFunction 2 char == "undefined"
-  , showFunctionLine 10 (int  >- int) == "\\x -> case x of ..."
-  , showFunctionLine 10 (bool >- bool) == "\\x -> undefined"
-
-  -- partially defined --
-  , showFunctionLine 2 (\x -> case x of True -> True)
-                   == "\\x -> case x of True -> True"
-  , showFunctionLine 10 (\x -> case (x::Int) of 3 -> (4::Int); 5 -> 6)
-                    == "\\x -> case x of 3 -> 4; 5 -> 6; ..."
-  , showFunctionLine 10 (\x y -> case (x::Int,y::Int) of (1,2) -> (3::Int); (2,1) -> 3)
-                    == "\\x y -> case (x,y) of (1,2) -> 3; (2,1) -> 3; ..."
-
-  -- fully defined, infinite --
-  , showFunction 3 ((+) -:> int)
-    == "\\x y -> case (x,y) of\n"
-    ++ "          (0,0) -> 0\n"
-    ++ "          (0,1) -> 1\n"
-    ++ "          (1,0) -> 1\n"
-    ++ "          ...\n"
-  , showFunction 3 ((++) -:> [int])
-    == "\\x y -> case (x,y) of\n"
-    ++ "          ([],[]) -> []\n"
-    ++ "          ([],[0]) -> [0]\n"
-    ++ "          ([0],[]) -> [0]\n"
-    ++ "          ...\n"
-  , showFunction 4 (sort -:> [char])
-    == "\\x -> case x of\n"
-    ++ "        \"\" -> \"\"\n"
-    ++ "        \"a\" -> \"a\"\n"
-    ++ "        \"aa\" -> \"aa\"\n"
-    ++ "        \" \" -> \" \"\n"
-    ++ "        ...\n"
-
-
-  -- fully defined, finite --
-  , showFunction 1 not
-    == "\\x -> case x of\n"
-    ++ "        False -> True\n"
-    ++ "        ...\n"
-  , showFunction 2 not
-    == "\\x -> case x of\n"
-    ++ "        False -> True\n"
-    ++ "        True -> False\n"
-  , showFunction 3 (&&)
-    == "\\x y -> case (x,y) of\n"
-    ++ "          (False,False) -> False\n"
-    ++ "          (False,True) -> False\n"
-    ++ "          (True,False) -> False\n"
-    ++ "          ...\n"
-  , showFunction 4 (&&)
-    == "\\x y -> case (x,y) of\n"
-    ++ "          (False,False) -> False\n"
-    ++ "          (False,True) -> False\n"
-    ++ "          (True,False) -> False\n"
-    ++ "          (True,True) -> True\n"
-  ]
diff --git a/tests/test-generic.hs b/tests/test-generic.hs
deleted file mode 100644
--- a/tests/test-generic.hs
+++ /dev/null
@@ -1,65 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-{-# LANGUAGE DeriveGeneric, StandaloneDeriving #-}
-import Test
-import Test.LeanCheck
-import Test.LeanCheck.Generic
-import System.Exit (exitFailure)
-import Data.List (elemIndices,sort)
-import Test.LeanCheck.Utils.Operators
-import GHC.Generics (Generic)
-
-data D0       = D0                    deriving (Eq, Show, Generic)
-data D1 a     = D1 a                  deriving (Eq, Show, Generic)
-data D2 a b   = D2 a b                deriving (Eq, Show, Generic)
-data D3 a b c = D3 a b c              deriving (Eq, Show, Generic)
-data C1 a     =           C11 a | C10 deriving (Eq, Show, Generic)
-data C2 a b   = C22 a b | C21 a | C20 deriving (Eq, Show, Generic)
-data I a b    = a :+ b                deriving (Eq, Show, Generic)
-
-instance Listable D0                   where tiers = genericTiers
-
-instance Listable a => Listable (D1 a) where tiers = genericTiers
-
-instance (Listable a, Listable b)
-      => Listable (D2 a b)             where tiers = genericTiers
-
-instance (Listable a, Listable b, Listable c)
-      => Listable (D3 a b c)           where tiers = genericTiers
-
-instance Listable a => Listable (C1 a) where tiers = genericTiers
-
-instance (Listable a, Listable b)
-      => Listable (C2 a b)             where tiers = genericTiers
-
-instance (Listable a, Listable b)
-      => Listable (I a b)              where tiers = genericTiers
-
-main :: IO ()
-main =
-  case elemIndices False (tests 100) of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-tests n =
-  [ True
-
-  , map unD0 list =| n |= list
-  , map unD1 list =| n |= (list :: [Int])
-  , map unD2 list =| n |= (list :: [(Int,Int)])
-  , map unD3 list =| n |= (list :: [(Int,Int,Int)])
-
-  , map unD1 list == (list :: [()])
-  , map unD2 list == (list :: [((),())])
-  , map unD3 list == (list :: [((),(),())])
-
-  , map unD1 list == (list :: [Bool])
-  , map unD2 list == (list :: [(Bool,Bool)])
-  , map unD3 list == (list :: [(Bool,Bool,Bool)])
-  ]
-  where
-  unD0 (D0)       = ()
-  unD1 (D1 x)     = (x)
-  unD2 (D2 x y)   = (x,y)
-  unD3 (D3 x y z) = (x,y,z)
diff --git a/tests/test-io.hs b/tests/test-io.hs
deleted file mode 100644
--- a/tests/test-io.hs
+++ /dev/null
@@ -1,10 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-import Test
-import Test.LeanCheck.IO
-
-main :: IO ()
-main = do
-  check $ \x -> (x::Int) + x == 2*x    -- should pass
---check $ \x -> (x::Int) + x == x      -- should fail, falsifiable
---check $ \x -> (x::Int) `div` x == 1  -- should fail, exception
diff --git a/tests/test-main.hs b/tests/test-main.hs
deleted file mode 100644
--- a/tests/test-main.hs
+++ /dev/null
@@ -1,101 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-import Test
-
-import System.Exit (exitFailure)
-import Data.List (elemIndices)
-
-import Test.LeanCheck
-import Test.LeanCheck.Utils
-
-import Data.Ratio
-import Data.Word (Word)
-
-main :: IO ()
-main =
-  case elemIndices False tests of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-tests :: [Bool]
-tests =
-  [ True
-
-  -- interleave
-  , [1,2,3] +| [0,0,0] == [1,0,2,0,3,0]
-  , take 3 ([1,2] +| (0:undefined)) == [1,0,2]
-  , [0,2..] +| [1,3..] =| 100 |= [0,1..]
-
-  -- etc
-  , tNatPairOrd 100
-  , tNatTripleOrd 200
-  , tNatQuadrupleOrd 300
-  , tNatQuintupleOrd 400
-  , tNatListOrd 500
-  , tListsOfNatOrd 500
-  , listsOf (tiers::[[Nat]]) =| 10 |= tiers
-
-  -- tests!
-  , counterExample 10 (\x y -> x + y /= (x::Int)) == Just ["0", "0"]
-  , counterExample 10 (\x y -> x + y == (x::Int)) == Just ["0", "1"]
-  , counterExample 10 (maybe True (==(0::Int))) == Just ["(Just 1)"]
-  , holds 100 (\x -> x == (x::Int))
-
-  -- For when NaN is in the enumeration (by default, it is not):
-  --, fails 100 (\x -> x == (x::Float))  -- NaN != NaN  :-)
-  --, counterExample 100 (\x -> x == (x::Float)) == Just ["NaN"]
-  , counterExample 10 (\x y -> x + y == (x::Float))  == Just ["0.0","1.0"]
-  , counterExample 10 (\x y -> x + y == (x::Double)) == Just ["0.0","1.0"]
-  , holds          50 (\x -> x + 1 /= (x::Int))
-  , counterExample 50 (\x -> x + 1 /= (x::Float))  == Just ["Infinity"]
-    || counterExample 50 (\x -> x + 1 /= (x::Float)) == Just ["inf"] -- bug on Hugs 2006-09?
-  , counterExample 50 (\x -> x + 1 /= (x::Double)) == Just ["Infinity"]
-    || counterExample 50 (\x -> x + 1 /= (x::Float)) == Just ["inf"] -- bug on Hugs 2006-09?
-  , allUnique (take 100 list :: [Float])
-  , allUnique (take 500 list :: [Double])
-
-  , allUnique (take 500 list :: [Rational])
-  , allUnique (take 100 list :: [Ratio Nat])
-  , orderedOn (\r -> numerator r + denominator r) (take 500 (list :: [Ratio Nat]))
-  , orderedOn (\r -> abs (numerator r) + abs(denominator r)) (take 500 (list :: [Rational]))
-
-  , list == [LT, EQ, GT]
-  , orderedOn length (take 500 (list :: [[Ordering]]))
-  , orderedOn length (take 500 (list :: [[Bool]]))
-
-  , strictlyOrderedOn (\xs -> (sum $ map (+1) xs, xs)) (take 500 (list :: [[Word]]))
-
-  , tPairEqParams 100
-  , tTripleEqParams 100
-
-  , tProductsIsFilterByLength (tiers :: [[ Nat ]])   10 `all` [1..10]
-  , tProductsIsFilterByLength (tiers :: [[ Bool ]])   6 `all` [1..10]
-  , tProductsIsFilterByLength (tiers :: [[ [Nat] ]])  6 `all` [1..10]
-
-  , holds 100 $  (\/)  ==== zipWith' (++) [] [] -:> [[uint2]]
-  , holds 100 $  (\/)  ==== zipWith' (++) [] [] -:> [[bool]]
-  , holds 100 $ (\\//) ==== zipWith' (+|) [] [] -:> [[uint2]]
-  , holds 100 $ (\\//) ==== zipWith' (+|) [] [] -:> [[bool]]
-  ]
-
-allUnique :: Ord a => [a] -> Bool
-allUnique [] = True
-allUnique (x:xs) = x `notElem` xs
-                && allUnique (filter (< x) xs)
-                && allUnique (filter (> x) xs)
-
-
--- | 'zipwith\'' works similarly to 'zipWith', but takes neutral elements to
---   operate when one of the lists is exhausted, so, you don't loose elements.
---
--- > zipWith' f z e [x,y] [a,b,c,d] == [f x a, f y b, f z c, f z d]
---
--- > zipWith' f z e [x,y,z] [a] == [f x a, f y e, f z e]
---
--- > zipWith' (+) 0 0 [1,2,3] [1,2,3,4,5,6] == [2,4,6,4,5,6]
-zipWith' :: (a->b->c) -> a -> b  -> [a] -> [b] -> [c]
-zipWith' _ _  _  []     [] = []
-zipWith' f _  zy xs     [] = map (`f` zy) xs
-zipWith' f zx _  []     ys = map (f zx) ys
-zipWith' f zx zy (x:xs) (y:ys) = f x y : zipWith' f zx zy xs ys
diff --git a/tests/test-operators.hs b/tests/test-operators.hs
deleted file mode 100644
--- a/tests/test-operators.hs
+++ /dev/null
@@ -1,141 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-import Test
-
-import System.Exit (exitFailure)
-import Data.List (elemIndices,sort)
-import Test.LeanCheck
-import Test.LeanCheck.Utils
-
-import Data.List (isPrefixOf)
-import Data.Function (on)
-
-main :: IO ()
-main =
-  case elemIndices False (tests 100) of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-tests :: Int -> [Bool]
-tests n =
-  [ True
-
-  , holds n $ (not . not) === id
-  , fails n $ abs === (* (-1))             -:> int
-  , holds n $ (+) ==== (\x y -> sum [x,y]) -:> int
-  , fails n $ (+) ==== (*)                 -:> int
-
-  , holds n $ const True  &&& const True  -:> bool
-  , fails n $ const False &&& const True  -:> int
-  , holds n $ const False ||| const True  -:> int
-  , fails n $ const False ||| const False -:> int
-
-  , holds n $ commutative (+)  -:> int
-  , holds n $ commutative (*)  -:> int
-  , holds n $ commutative (++) -:> [()]
-  , holds n $ commutative (&&)
-  , holds n $ commutative (||)
-  , fails n $ commutative (-)  -:> int
-  , fails n $ commutative (++) -:> [bool]
-  , fails n $ commutative (==>)
-
-  , holds n $ associative (+)  -:> int
-  , holds n $ associative (*)  -:> int
-  , holds n $ associative (++) -:> [int]
-  , holds n $ associative (&&)
-  , holds n $ associative (||)
-  , fails n $ associative (-)  -:> int
-  , fails n $ associative (==>)
-
-  , holds n $ distributive (*) (+) -:> int
-  , fails n $ distributive (+) (*) -:> int
-
-  , holds n $ symmetric (==) -:> int
-  , holds n $ symmetric (/=) -:> int
-  , fails n $ symmetric (<=) -:> int
-
-  , holds n $   reflexive (==) -:> int
-  , holds n $ irreflexive (/=) -:> int
-
-  , holds n $ (<)  `symmetric2` (>)  -:> int
-  , holds n $ (<=) `symmetric2` (>=) -:> int
-  , fails n $ (<)  `symmetric2` (>=) -:> int
-  , fails n $ (<=) `symmetric2` (>)  -:> int
-
-  , holds n $ transitive (==) -:> bool
-  , holds n $ transitive (<)  -:> bool
-  , holds n $ transitive (<=) -:> bool
-  , fails n $ transitive (/=) -:> bool
-  , holds n $ transitive (==) -:> int
-  , holds n $ transitive (<)  -:> int
-  , holds n $ transitive (<=) -:> int
-  , fails n $ transitive (/=) -:> int
-
-  , holds n $ asymmetric    (<)  -:> int
-  , holds n $ antisymmetric (<=) -:> int
-  , fails n $ asymmetric    (<=) -:> int
-  , holds n $ asymmetric    (>)  -:> int
-  , holds n $ antisymmetric (>=) -:> int
-  , fails n $ asymmetric    (>=) -:> int
-
-  , holds n $ equivalence (==) -:> int
-  , holds n $ equivalence ((==) `on` fst) -:> (int,int)
-  , holds n $ equivalence ((==) `on` length) -:> [int]
-
-  , holds n $       totalOrder (<=) -:> int
-  , holds n $ strictTotalOrder (<)  -:> int
-  , fails n $       totalOrder (<)  -:> int
-  , fails n $ strictTotalOrder (<=) -:> int
-  , holds n $       totalOrder (>=) -:> int
-  , holds n $ strictTotalOrder (>)  -:> int
-  , fails n $       totalOrder (>)  -:> int
-  , fails n $ strictTotalOrder (>=) -:> int
-
-  , holds n $ partialOrder isPrefixOf -:> [int]
-  , fails n $   totalOrder isPrefixOf -:> [int]
-
-  , holds n $ comparison compare -:> int
-  , holds n $ comparison compare -:> bool
-  , holds n $ comparison compare -:> ()
-
-  , holds n $ okEqOrd -:> ()
-  , holds n $ okEqOrd -:> int
-  , holds n $ okEqOrd -:> char
-  , holds n $ okEqOrd -:> bool
-  , holds n $ okEqOrd -:> [()]
-  , holds n $ okEqOrd -:> [int]
-  , holds n $ okEqOrd -:> [bool]
-  , 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
--- NOTE: the following two fail on Hugs due to a bug on Hugs.
---, 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
-  , holds n $ idempotent sort -:> [bool]
-  , fails n $ idempotent not
-
-  , holds n $ identity id   -:> int
-  , holds n $ identity (+0) -:> int
-  , holds n $ identity sort -:> [()]
-  , holds n $ identity (not . not)
-  , fails n $ identity not
-
-  , holds n $ neverIdentity not
-  , fails n $ neverIdentity abs    -:> int
-  , fails n $ neverIdentity negate -:> int
-  ]
-
-none :: (a -> Bool) -> [a] -> Bool
-none p = not . or . map p
diff --git a/tests/test-sdist b/tests/test-sdist
deleted file mode 100644
--- a/tests/test-sdist
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-#
-# test-sdist: tests the package generated by "cabal sdist".
-#
-# Copyright (c) 2015-2018 Rudy Matela.
-# Distributed under the 3-Clause BSD licence.
-export LC_ALL=C  # consistent sort
-pkgver=` cat *.cabal | grep "^version:" | sed -e "s/version: *//"`
-pkgname=`cat *.cabal | grep "^name:"    | sed -e "s/name: *//"`
-pkg=$pkgname-$pkgver
-set -x
-cabal sdist &&
-cd dist &&
-tar -tf $pkg.tar.gz | sort --ignore-case          > ls-cabal-i  &&
-tar -tf $pkg.tar.gz | sort --ignore-case --unique > ls-cabal-iu &&
-diff -rud ls-cabal-i ls-cabal-iu &&
-rm -f ls-cabal ls-cabal-ignore-case &&
-if [ -d ../.git ]
-then
-	# on git repo, test if files are the same
-	git -C .. ls-files                                      | sort > ls-git   &&
-	tar -tf $pkg.tar.gz | grep -v "/$" | sed -e "s,$pkg/,," | sort > ls-cabal &&
-	diff -rud ls-git ls-cabal &&
-	rm -f ls-git ls-cabal
-else
-	# outside of git repo, test build
-	rm -rf $pkg/ &&
-	tar -xzf $pkg.tar.gz &&
-	cd $pkg/ &&
-	cabal configure --enable-tests --enable-benchmarks &&
-	cabal build &&
-	cabal test
-fi
diff --git a/tests/test-stats.hs b/tests/test-stats.hs
deleted file mode 100644
--- a/tests/test-stats.hs
+++ /dev/null
@@ -1,55 +0,0 @@
--- Copyright (c) 2017-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-import Test
-
-import System.Exit (exitFailure)
-import Data.List (elemIndices,sort)
-import Test.LeanCheck
-import Test.LeanCheck.Stats
-
-import Data.List (isPrefixOf)
-import Data.Function (on)
-
-main :: IO ()
-main = do
-  putStrLn "sum :: [Int] -> Bool"
-  classStats 100 (sum     :: [Int] -> Int)
-
-  putStrLn "length :: [Int] -> Int"
-  classStats 100 (length  :: [Int] -> Int)
-
-  putStrLn "take 1 :: [Int] -> [Int]"
-  classStats 100 (take 1  :: [Int] -> [Int])
-
-  conditionStats 1000 [ ("odd", odd :: Int -> Bool)
-                      , ("even", even) ]
-
-  conditionStats 1000 [ ("ordered",ordered :: [Int] -> Bool)
-                      , ("ordered . reverse", ordered . reverse) ]
-
-  putStrLn "sum :: [Int] -> Bool"
-  classStatsT 6 (sum     :: [Int] -> Int)
-
-  putStrLn "length :: [Int] -> Int"
-  classStatsT 6 (length  :: [Int] -> Int)
-
-  putStrLn "take 1 :: [Int] -> [Int]"
-  classStatsT 6 (take 1  :: [Int] -> [Int])
-
-
-  case elemIndices False (tests 100) of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-tests :: Int -> [Bool]
-tests n =
-  [ True
-
-  , classify                   [1,2,3,4,1,2,3,1,2,1] == [[1,1,1,1],[2,2,2],[3,3],[4]]
-  , classifyBy ((==) `on` odd) [1,2,3,4,1,2,3,1,2,1] == [[1,3,1,3,1,1],[2,4,2,2]]
-  , classifyOn odd             [1,2,3,4,1,2,3,1,2,1] == [[1,3,1,3,1,1],[2,4,2,2]]
-  , counts                   [1,2,3,4,1,2,3,1,2,1] == [(1,4),(2,3),(3,2),(4,1)]
-  , countsBy ((==) `on` odd) [1,2,3,4,1,2,3,1,2,1] == [(1,6),(2,4)]
-  , countsOn odd             [1,2,3,4,1,2,3,1,2,1::Int] == [(True,6),(False,4)]
-  ]
diff --git a/tests/test-tiers.hs b/tests/test-tiers.hs
deleted file mode 100644
--- a/tests/test-tiers.hs
+++ /dev/null
@@ -1,113 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-import Test
-
-import System.Exit (exitFailure)
-import Data.List (elemIndices, sort, nub, delete)
-
-import Test.LeanCheck
-import Test.LeanCheck.Utils
-
-import Test.LeanCheck.Tiers
-
-main :: IO ()
-main =
-  case elemIndices False tests of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-tests =
-  [ True
-
-  , checkNoDup 12
-  , checkBags 18
-  , checkSets 20
-  , checkDistinctPairs 20
-  , checkUnorderedPairs 20
-  , checkUnorderedDistinctPairs 20
-  , checkLengthListingsOfLength 5 5
-  , checkSizesListingsOfLength 5 5
-
-  , all (uncurry (/=)) . concat . take 100 $ distinctPairs (tiers :: [[Nat]])
-
-  , productMaybeWith ($) [[const Nothing, Just]] [[1],[2],[3],[4]] == [[1],[2],[3],[4]]
-  , productMaybeWith (flip ($))
-                     [[1],[2],[3],[4]]
-                     [[const Nothing],[Just]] == [[],[1],[2],[3],[4]]
-
-  , holds 100 $ deleteT_is_map_delete 10 -:> nat
-  , holds 100 $ deleteT_is_map_delete 10 -:> int
-  , holds 100 $ deleteT_is_map_delete 10 -:> bool
-  , holds 100 $ deleteT_is_map_delete 10 -:> int2
-
-  , finite (tiers :: [[ Bool ]])  == True
-  , finite (tiers :: [[ (Bool,Bool) ]]) == True
-  , finite (tiers :: [[ Nat1 ]])  == True
-  , finite (tiers :: [[ Nat2 ]])  == True
-  , finite (tiers :: [[ Nat3 ]])  == True
-  , finite (tiers :: [[ Nat4 ]])  == True
-  , finite (tiers :: [[ Nat5 ]])  == True
-  , finite (tiers :: [[ Nat6 ]])  == True
-  , finite (tiers :: [[ Nat7 ]])  == True
-  , finite (tiers :: [[ Word1 ]])  == True
-  , finite (tiers :: [[ Word2 ]])  == True
-  , finite (tiers :: [[ Word3 ]])  == True
-
-  , finite (tiers :: [[ Nat ]])   == False
-  , finite (tiers :: [[ Int ]])   == False
-  , finite (tiers :: [[ [Int] ]]) == False
-  , finite (tiers :: [[ [()] ]])  == False
-
-  -- false negatives, more than 12 values:
-  , finite (tiers :: [[ Word4 ]])  == False
-  , finite (tiers :: [[ (Bool,Bool,Bool,Bool,Bool) ]]) == False
-  , finite (tiers :: [[ (Bool,Bool,Bool,Bool,Bool,Bool) ]]) == False
-
-  , holds 100 $ \xss -> ordered . concat $ discardLaterT (<)  (xss::[[Int]])
-  , holds 100 $ \xss -> ordered . concat $ discardLaterT (<=) (xss::[[Int]])
-  , (length . concat $ discardLaterT (<=) [[1..100]]) == 100
-  , (length . concat $ discardLaterT (<=) [[00..99],[100..199::Int]]) == 200
-  , holds 100 $ \xss -> nub (concat xss) == concat (nubT xss :: [[Int]])
-  ]
-
-deleteT_is_map_delete :: (Eq a, Listable a) => Int -> a -> Bool
-deleteT_is_map_delete n x = deleteT x tiers
-                    =| n |= normalizeT (map (delete x) tiers)
-
-checkNoDup :: Int -> Bool
-checkNoDup n = noDupListsOf (tiers :: [[Int]]) =| n |= tiers `suchThat` noDup
-  where noDup xs = nub (sort xs) == sort xs
-
-checkBags :: Int -> Bool
-checkBags n = bagsOf (tiers :: [[Nat]]) =| n |= tiers `suchThat` ordered
-
-checkSets :: Int -> Bool
-checkSets n = setsOf (tiers :: [[Nat]]) =| n |= tiers `suchThat` strictlyOrdered
-
-checkDistinctPairs :: Int -> Bool
-checkDistinctPairs n =
-  distinctPairs (tiers :: [[Nat]]) =| n |= tiers `suchThat` uncurry (/=)
-
-checkUnorderedDistinctPairs :: Int -> Bool
-checkUnorderedDistinctPairs n =
-  unorderedDistinctPairs (tiers :: [[Nat]]) =| n |= tiers `suchThat` uncurry (<)
-
-checkUnorderedPairs :: Int -> Bool
-checkUnorderedPairs n =
-  unorderedPairs (tiers :: [[Nat]]) =| n |= tiers `suchThat` uncurry (<=)
-
-checkLengthListingsOfLength :: Int -> Int -> Bool
-checkLengthListingsOfLength n m = all check [1..m]
-  where check m = all (\xs -> length xs == m)
-                $ concat . take n
-                $ listsOfLength m natTiers
-
-checkSizesListingsOfLength :: Int -> Int -> Bool
-checkSizesListingsOfLength n m = all check [1..m]
-  where check m = orderedBy compare
-                $ map sum . concat . take n
-                $ listsOfLength m natTiers
-
-natTiers :: [[Nat]]
-natTiers = tiers
diff --git a/tests/test-types.hs b/tests/test-types.hs
deleted file mode 100644
--- a/tests/test-types.hs
+++ /dev/null
@@ -1,170 +0,0 @@
--- Copyright (c) 2015-2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-import Test
-import System.Exit (exitFailure)
-import Data.List (elemIndices,delete,isPrefixOf)
-import Test.LeanCheck.Utils.Types
-import Test.LeanCheck (list,fails)
-import Data.Word
-import Data.Int
-
-main :: IO ()
-main =
-  case elemIndices False tests of
-    [] -> putStrLn "Tests passed!"
-    is -> do putStrLn ("Failed tests:" ++ show is)
-             exitFailure
-
-
--- | Given the number of bits, generates a range for signed/unsigned integers
---   of that width.
-signedRange,unsignedRange :: (Num n) => Int -> [n]
-signedRange n   = map fromIntegral [-(2^(n-1))..(2^(n-1))-1]
-unsignedRange n = map fromIntegral [0..(2^n)-1]
-
-
-tests =
-  [ True
-
-  , list `permutation` [minBound..maxBound :: Int1]
-  , list `permutation` [minBound..maxBound :: Int2]
-  , list `permutation` [minBound..maxBound :: Int3]
-  , list `permutation` [minBound..maxBound :: Int4]
-
-  , list `permutation` [minBound..maxBound :: UInt1]
-  , list `permutation` [minBound..maxBound :: UInt2]
-  , list `permutation` [minBound..maxBound :: UInt3]
-  , list `permutation` [minBound..maxBound :: UInt4]
-
-  , list `permutation` [minBound..maxBound :: Nat1]
-  , list `permutation` [minBound..maxBound :: Nat2]
-  , list `permutation` [minBound..maxBound :: Nat3]
-  , list `permutation` [minBound..maxBound :: Nat4]
-  , list `permutation` [minBound..maxBound :: Nat5]
-  , 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]
--- 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]
--- 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]
-
-  , (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
-
-  , (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
-
-
-  , [minBound..maxBound :: Int1] == signedRange 1
-  , [minBound..maxBound :: Int2] == signedRange 2
-  , [minBound..maxBound :: Int3] == signedRange 3
-  , [minBound..maxBound :: Int4] == signedRange 4
-
-  , [minBound..maxBound :: UInt1] == unsignedRange 1
-  , [minBound..maxBound :: UInt2] == unsignedRange 2
-  , [minBound..maxBound :: UInt3] == unsignedRange 3
-  , [minBound..maxBound :: UInt4] == unsignedRange 4
-
-
-  -- abs minBound == minBound
-  , fails 100 (\i -> abs i > (0::Int1))
-  , fails 100 (\i -> abs i > (0::Int2))
-  , fails 100 (\i -> abs i > (0::Int3))
-  , fails 100 (\i -> abs i > (0::Int4))
-
-  -- maxBound + 1 == minBound
-  , fails 100 (\i -> i + 1 < (i::Int1))
-  , 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]
-prefiX =
-  [ 0
-  , 1, -1
-  , maxBound, minBound
-  , 2, -2
-  , maxBound-1, minBound+1
-  , 3, -3
-  , maxBound-2, minBound+2
-  ]
-
-prefiXs :: (Bounded a, Integral a) => [[a]]
-prefiXs =
-  [ []
-  , [0]
-  , [0,0], [1]
-  , [0,0,0], [0,1], [1,0], [-1]
-  , [0,0,0,0], [0,0,1], [0,1,0], [0,-1], [1,0,0], [1,1], [-1,0], [maxBound]
-  , [0,0,0,0,0], [0,0,0,1], [0,0,1,0], [0,0,-1]
-    , [0,1,0,0], [0,1,1], [0,-1,0], [0,maxBound]
-    , [1,0,0,0], [1,0,1], [1,1,0], [1,-1]
-    , [-1,0,0], [-1,1], [maxBound,0], [minBound]
-  ]
-
-prefiXN :: (Bounded a, Integral a) => [a]
-prefiXN =
-  [ 0
-  , 1, 2
-  , maxBound
-  , 3, 4
-  , maxBound-1
-  , 5, 6
-  , maxBound-2
-  ]
-
-prefiXNs :: (Bounded a, Integral a) => [[a]]
-prefiXNs =
-  [ []
-  , [0]
-  , [0,0], [1]
-  , [0,0,0], [0,1], [1,0], [2]
-  , [0,0,0,0], [0,0,1], [0,1,0], [0,2], [1,0,0], [1,1], [2,0], [maxBound]
-  ]
-
-permutation :: Eq a => [a] -> [a] -> Bool
-[]     `permutation` []    = True
-(_:_)  `permutation` []    = False
-[]     `permutation` (_:_) = False
-(x:xs) `permutation` ys    = x `elem` ys  &&  xs `permutation` delete x ys
