diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,8 +1,8 @@
 # Builds and tests this Haskell project on "GitHub Actions"
 #
-# 2021-2023  Rudy Matela
+# 2021-2024  Rudy Matela
 #
-# some docs: https://github.com/haskell/actions/tree/main/setup
+# some docs: https://github.com/haskell-actions/setup
 #
 # The official haskell docker image: https://hub.docker.com/_/haskell
 name: build
@@ -63,6 +63,8 @@
     strategy:
       matrix:
         ghc:
+          - '9.8'
+          - '9.6'
           - '9.4'
           - '9.2'
           - '9.0'
@@ -117,7 +119,7 @@
     needs: build-and-test
     steps:
       - name: Setup Haskell's GHC and Cabal as required by current Stackage LTS
-        uses: haskell/actions/setup@v2
+        uses: haskell-actions/setup@v2
         with: # lts-19.19
           ghc-version: '9.0.2'
           cabal-version: '3.4'
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -25,8 +25,10 @@
 bench/pairs
 bench/sort
 bench/tiers
+bench/tiers-complete
 test/canon
 test/core
+test/basic
 test/express
 test/express-derive
 test/fixtures
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2019-2021, Rudy Matela
+Copyright (c) 2019-2024, Rudy Matela
 
 All rights reserved.
 
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,12 @@
 # Makefile for express
 #
-# Copyright:   (c) 2015-2021 Rudy Matela
+# Copyright:   (c) 2015-2024 Rudy Matela
 # License:     3-Clause BSD  (see the file LICENSE)
 # Maintainer:  Rudy Matela <rudy@matela.com.br>
 TESTS = \
   test/main \
   test/core \
+  test/basic \
   test/map \
   test/instances \
   test/fixtures \
@@ -34,6 +35,7 @@
   bench/pairs \
   bench/sort \
   bench/tiers \
+  bench/tiers-complete \
   $(EGS)
 GHCIMPORTDIRS = src:test
 GHCFLAGS = -O2 -v0 $(shell grep -q "Arch Linux" /etc/lsb-release && echo -dynamic)
@@ -41,8 +43,13 @@
 HUGSFLAGS = -98 -h32M
 RUNPARAMETERS =
 LIB_DEPS = base template-haskell
-INSTALL_DEPS = leancheck
+INSTALL_DEPS = leancheck template-haskell
 
+# to run a specific test suite under a specific GHC, do:
+# $ make clean
+# $ make GHC=ghc-9.6 GHCIMPORTDIRS=src:test:../leancheck/src test/utils.run
+# this is useful for troubleshooting CI failures
+
 all: mk/toplibs
 
 all-all: mk/All.o
@@ -91,15 +98,15 @@
 test-via-stack:
 	stack test express:test:main --ghc-options="$(GHCFLAGS) -O0" --system-ghc --no-install-ghc --no-terminal
 
-diff-test: $(patsubst %,%.diff-test,$(BENCHS))
+diff-test: $(patsubst %,%.diff,$(BENCHS))
 
-update-diff-test: $(patsubst %,%.update-diff-test,$(BENCHS))
+txt: $(patsubst %,%.txt,$(BENCHS))
 
-%.diff-test: %
-	./$< | diff -rud test/model/$<.out -
+%.diff: %
+	./$< | diff -rud $<.txt -
 
-%.update-diff-test: %
-	./$< >           test/model/$<.out
+%.txt: %
+	./$< >$<.txt
 
 test-via-everything: test test-via-cabal test-via-stack
 
@@ -138,11 +145,20 @@
 	cabal-ghc-7.8  v1-install $(ALL_DEPS)
 	# (v2-) library installation is supported on GHC 8.0+ only)
 
-hlint:
-	hlint \
+hlint: ..hlint
+
+test.hlint:  HLINT_EXTRA = --ignore "Redundant ==" \
+                           --ignore "Use null" \
+                           --ignore "Redundant $$" \
+                           --ignore "Use isNothing"
+
+%.hlint:
+	hlint $(HLINT_EXTRA) \
 	  --ignore "Use import/export shortcut" \
 	  --ignore "Redundant bracket" \
-	  .
+	  --ignore "Use lambda-case" \
+	  --ignore "Use typeRep" \
+	  $*
 
 markdown: README.html
 
diff --git a/bench/compare.hs b/bench/compare.hs
--- a/bench/compare.hs
+++ b/bench/compare.hs
@@ -1,6 +1,6 @@
 -- ord.hs -- prints results of the Ord Expr's instance
 --
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 import System.Environment (getArgs)
@@ -13,7 +13,7 @@
           (n:_) -> read n
   putStrLn . unlines . map showCompare $ take n (list :: [(Expr,Expr)])
   where
-  showCompare (e1,e2) = concat
+  showCompare (e1,e2)  =  concat
     [ show e1
     , " `compare` "
     , show e2
diff --git a/bench/compare.txt b/bench/compare.txt
new file mode 100644
--- /dev/null
+++ b/bench/compare.txt
@@ -0,0 +1,5041 @@
+_ :: Int `compare` _ :: Int  =  EQ
+_ :: Int `compare` x :: Int  =  LT
+_ :: Int `compare` 0 :: Int  =  LT
+_ :: Int `compare` id _ :: Int  =  LT
+_ :: Int `compare` _ :: Bool  =  GT
+_ :: Int `compare` _ :: Char  =  GT
+_ :: Int `compare` _ :: [Int]  =  LT
+x :: Int `compare` _ :: Int  =  GT
+0 :: Int `compare` _ :: Int  =  GT
+id _ :: Int `compare` _ :: Int  =  GT
+_ :: Bool `compare` _ :: Int  =  LT
+_ :: Char `compare` _ :: Int  =  LT
+_ :: [Int] `compare` _ :: Int  =  GT
+_ :: Int `compare` y :: Int  =  LT
+_ :: Int `compare` 1 :: Int  =  LT
+_ :: Int `compare` id x :: Int  =  LT
+_ :: Int `compare` id 0 :: Int  =  LT
+_ :: Int `compare` id (id _) :: Int  =  LT
+_ :: Int `compare` negate _ :: Int  =  LT
+_ :: Int `compare` abs _ :: Int  =  LT
+_ :: Int `compare` _ + _ :: Int  =  LT
+_ :: Int `compare` head _ :: Int  =  LT
+_ :: Int `compare` ord _ :: Int  =  LT
+_ :: Int `compare` p :: Bool  =  GT
+_ :: Int `compare` False :: Bool  =  LT
+_ :: Int `compare` True :: Bool  =  LT
+_ :: Int `compare` not _ :: Bool  =  LT
+_ :: Int `compare` c :: Char  =  GT
+_ :: Int `compare` 'a' :: Char  =  LT
+_ :: Int `compare` xs :: [Int]  =  LT
+_ :: Int `compare` [] :: [Int]  =  LT
+_ :: Int `compare` _:_ :: [Int]  =  LT
+_ :: Int `compare` id :: Int -> Int  =  LT
+_ :: Int `compare` (+) :: Int -> Int -> Int  =  LT
+x :: Int `compare` x :: Int  =  EQ
+x :: Int `compare` 0 :: Int  =  LT
+x :: Int `compare` id _ :: Int  =  LT
+x :: Int `compare` _ :: Bool  =  GT
+x :: Int `compare` _ :: Char  =  GT
+x :: Int `compare` _ :: [Int]  =  LT
+0 :: Int `compare` x :: Int  =  GT
+0 :: Int `compare` 0 :: Int  =  EQ
+0 :: Int `compare` id _ :: Int  =  LT
+0 :: Int `compare` _ :: Bool  =  GT
+0 :: Int `compare` _ :: Char  =  GT
+0 :: Int `compare` _ :: [Int]  =  GT
+id _ :: Int `compare` x :: Int  =  GT
+id _ :: Int `compare` 0 :: Int  =  GT
+id _ :: Int `compare` id _ :: Int  =  EQ
+id _ :: Int `compare` _ :: Bool  =  GT
+id _ :: Int `compare` _ :: Char  =  GT
+id _ :: Int `compare` _ :: [Int]  =  GT
+_ :: Bool `compare` x :: Int  =  LT
+_ :: Bool `compare` 0 :: Int  =  LT
+_ :: Bool `compare` id _ :: Int  =  LT
+_ :: Bool `compare` _ :: Bool  =  EQ
+_ :: Bool `compare` _ :: Char  =  LT
+_ :: Bool `compare` _ :: [Int]  =  LT
+_ :: Char `compare` x :: Int  =  LT
+_ :: Char `compare` 0 :: Int  =  LT
+_ :: Char `compare` id _ :: Int  =  LT
+_ :: Char `compare` _ :: Bool  =  GT
+_ :: Char `compare` _ :: Char  =  EQ
+_ :: Char `compare` _ :: [Int]  =  LT
+_ :: [Int] `compare` x :: Int  =  GT
+_ :: [Int] `compare` 0 :: Int  =  LT
+_ :: [Int] `compare` id _ :: Int  =  LT
+_ :: [Int] `compare` _ :: Bool  =  GT
+_ :: [Int] `compare` _ :: Char  =  GT
+_ :: [Int] `compare` _ :: [Int]  =  EQ
+y :: Int `compare` _ :: Int  =  GT
+1 :: Int `compare` _ :: Int  =  GT
+id x :: Int `compare` _ :: Int  =  GT
+id 0 :: Int `compare` _ :: Int  =  GT
+id (id _) :: Int `compare` _ :: Int  =  GT
+negate _ :: Int `compare` _ :: Int  =  GT
+abs _ :: Int `compare` _ :: Int  =  GT
+_ + _ :: Int `compare` _ :: Int  =  GT
+head _ :: Int `compare` _ :: Int  =  GT
+ord _ :: Int `compare` _ :: Int  =  GT
+p :: Bool `compare` _ :: Int  =  LT
+False :: Bool `compare` _ :: Int  =  GT
+True :: Bool `compare` _ :: Int  =  GT
+not _ :: Bool `compare` _ :: Int  =  GT
+c :: Char `compare` _ :: Int  =  LT
+'a' :: Char `compare` _ :: Int  =  GT
+xs :: [Int] `compare` _ :: Int  =  GT
+[] :: [Int] `compare` _ :: Int  =  GT
+_:_ :: [Int] `compare` _ :: Int  =  GT
+id :: Int -> Int `compare` _ :: Int  =  GT
+(+) :: Int -> Int -> Int `compare` _ :: Int  =  GT
+_ :: Int `compare` z :: Int  =  LT
+_ :: Int `compare` -1 :: Int  =  LT
+_ :: Int `compare` id y :: Int  =  LT
+_ :: Int `compare` id 1 :: Int  =  LT
+_ :: Int `compare` id (id x) :: Int  =  LT
+_ :: Int `compare` id (id 0) :: Int  =  LT
+_ :: Int `compare` id (id (id _)) :: Int  =  LT
+_ :: Int `compare` id (negate _) :: Int  =  LT
+_ :: Int `compare` id (abs _) :: Int  =  LT
+_ :: Int `compare` id (_ + _) :: Int  =  LT
+_ :: Int `compare` id (head _) :: Int  =  LT
+_ :: Int `compare` id (ord _) :: Int  =  LT
+_ :: Int `compare` negate x :: Int  =  LT
+_ :: Int `compare` negate 0 :: Int  =  LT
+_ :: Int `compare` negate (id _) :: Int  =  LT
+_ :: Int `compare` abs x :: Int  =  LT
+_ :: Int `compare` abs 0 :: Int  =  LT
+_ :: Int `compare` abs (id _) :: Int  =  LT
+_ :: Int `compare` _ + x :: Int  =  LT
+_ :: Int `compare` _ + 0 :: Int  =  LT
+_ :: Int `compare` _ + id _ :: Int  =  LT
+_ :: Int `compare` x + _ :: Int  =  LT
+_ :: Int `compare` 0 + _ :: Int  =  LT
+_ :: Int `compare` id _ + _ :: Int  =  LT
+_ :: Int `compare` _ * _ :: Int  =  LT
+_ :: Int `compare` f _ :: Int  =  LT
+_ :: Int `compare` head xs :: Int  =  LT
+_ :: Int `compare` head [] :: Int  =  LT
+_ :: Int `compare` head (_:_) :: Int  =  LT
+_ :: Int `compare` ord c :: Int  =  LT
+_ :: Int `compare` ord 'a' :: Int  =  LT
+_ :: Int `compare` q :: Bool  =  GT
+_ :: Int `compare` not p :: Bool  =  LT
+_ :: Int `compare` not False :: Bool  =  LT
+_ :: Int `compare` not True :: Bool  =  LT
+_ :: Int `compare` not (not _) :: Bool  =  LT
+_ :: Int `compare` _ || _ :: Bool  =  LT
+_ :: Int `compare` d :: Char  =  GT
+_ :: Int `compare` ' ' :: Char  =  LT
+_ :: Int `compare` ys :: [Int]  =  LT
+_ :: Int `compare` [0] :: [Int]  =  LT
+_ :: Int `compare` _:xs :: [Int]  =  LT
+_ :: Int `compare` [_] :: [Int]  =  LT
+_ :: Int `compare` _:_:_ :: [Int]  =  LT
+_ :: Int `compare` x:_ :: [Int]  =  LT
+_ :: Int `compare` 0:_ :: [Int]  =  LT
+_ :: Int `compare` id _:_ :: [Int]  =  LT
+_ :: Int `compare` tail _ :: [Int]  =  LT
+_ :: Int `compare` _ ++ _ :: [Int]  =  LT
+_ :: Int `compare` negate :: Int -> Int  =  LT
+_ :: Int `compare` abs :: Int -> Int  =  LT
+_ :: Int `compare` (_ +) :: Int -> Int  =  LT
+_ :: Int `compare` (*) :: Int -> Int -> Int  =  LT
+_ :: Int `compare` not :: Bool -> Bool  =  LT
+_ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
+x :: Int `compare` y :: Int  =  LT
+x :: Int `compare` 1 :: Int  =  LT
+x :: Int `compare` id x :: Int  =  LT
+x :: Int `compare` id 0 :: Int  =  LT
+x :: Int `compare` id (id _) :: Int  =  LT
+x :: Int `compare` negate _ :: Int  =  LT
+x :: Int `compare` abs _ :: Int  =  LT
+x :: Int `compare` _ + _ :: Int  =  LT
+x :: Int `compare` head _ :: Int  =  LT
+x :: Int `compare` ord _ :: Int  =  LT
+x :: Int `compare` p :: Bool  =  GT
+x :: Int `compare` False :: Bool  =  LT
+x :: Int `compare` True :: Bool  =  LT
+x :: Int `compare` not _ :: Bool  =  LT
+x :: Int `compare` c :: Char  =  GT
+x :: Int `compare` 'a' :: Char  =  LT
+x :: Int `compare` xs :: [Int]  =  LT
+x :: Int `compare` [] :: [Int]  =  LT
+x :: Int `compare` _:_ :: [Int]  =  LT
+x :: Int `compare` id :: Int -> Int  =  LT
+x :: Int `compare` (+) :: Int -> Int -> Int  =  LT
+0 :: Int `compare` y :: Int  =  GT
+0 :: Int `compare` 1 :: Int  =  LT
+0 :: Int `compare` id x :: Int  =  LT
+0 :: Int `compare` id 0 :: Int  =  LT
+0 :: Int `compare` id (id _) :: Int  =  LT
+0 :: Int `compare` negate _ :: Int  =  LT
+0 :: Int `compare` abs _ :: Int  =  LT
+0 :: Int `compare` _ + _ :: Int  =  LT
+0 :: Int `compare` head _ :: Int  =  LT
+0 :: Int `compare` ord _ :: Int  =  LT
+0 :: Int `compare` p :: Bool  =  GT
+0 :: Int `compare` False :: Bool  =  GT
+0 :: Int `compare` True :: Bool  =  GT
+0 :: Int `compare` not _ :: Bool  =  LT
+0 :: Int `compare` c :: Char  =  GT
+0 :: Int `compare` 'a' :: Char  =  GT
+0 :: Int `compare` xs :: [Int]  =  GT
+0 :: Int `compare` [] :: [Int]  =  LT
+0 :: Int `compare` _:_ :: [Int]  =  LT
+0 :: Int `compare` id :: Int -> Int  =  LT
+0 :: Int `compare` (+) :: Int -> Int -> Int  =  LT
+id _ :: Int `compare` y :: Int  =  GT
+id _ :: Int `compare` 1 :: Int  =  GT
+id _ :: Int `compare` id x :: Int  =  LT
+id _ :: Int `compare` id 0 :: Int  =  LT
+id _ :: Int `compare` id (id _) :: Int  =  LT
+id _ :: Int `compare` negate _ :: Int  =  LT
+id _ :: Int `compare` abs _ :: Int  =  LT
+id _ :: Int `compare` _ + _ :: Int  =  LT
+id _ :: Int `compare` head _ :: Int  =  LT
+id _ :: Int `compare` ord _ :: Int  =  GT
+id _ :: Int `compare` p :: Bool  =  GT
+id _ :: Int `compare` False :: Bool  =  GT
+id _ :: Int `compare` True :: Bool  =  GT
+id _ :: Int `compare` not _ :: Bool  =  GT
+id _ :: Int `compare` c :: Char  =  GT
+id _ :: Int `compare` 'a' :: Char  =  GT
+id _ :: Int `compare` xs :: [Int]  =  GT
+id _ :: Int `compare` [] :: [Int]  =  GT
+id _ :: Int `compare` _:_ :: [Int]  =  LT
+id _ :: Int `compare` id :: Int -> Int  =  GT
+id _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+_ :: Bool `compare` y :: Int  =  LT
+_ :: Bool `compare` 1 :: Int  =  LT
+_ :: Bool `compare` id x :: Int  =  LT
+_ :: Bool `compare` id 0 :: Int  =  LT
+_ :: Bool `compare` id (id _) :: Int  =  LT
+_ :: Bool `compare` negate _ :: Int  =  LT
+_ :: Bool `compare` abs _ :: Int  =  LT
+_ :: Bool `compare` _ + _ :: Int  =  LT
+_ :: Bool `compare` head _ :: Int  =  LT
+_ :: Bool `compare` ord _ :: Int  =  LT
+_ :: Bool `compare` p :: Bool  =  LT
+_ :: Bool `compare` False :: Bool  =  LT
+_ :: Bool `compare` True :: Bool  =  LT
+_ :: Bool `compare` not _ :: Bool  =  LT
+_ :: Bool `compare` c :: Char  =  LT
+_ :: Bool `compare` 'a' :: Char  =  LT
+_ :: Bool `compare` xs :: [Int]  =  LT
+_ :: Bool `compare` [] :: [Int]  =  LT
+_ :: Bool `compare` _:_ :: [Int]  =  LT
+_ :: Bool `compare` id :: Int -> Int  =  LT
+_ :: Bool `compare` (+) :: Int -> Int -> Int  =  LT
+_ :: Char `compare` y :: Int  =  LT
+_ :: Char `compare` 1 :: Int  =  LT
+_ :: Char `compare` id x :: Int  =  LT
+_ :: Char `compare` id 0 :: Int  =  LT
+_ :: Char `compare` id (id _) :: Int  =  LT
+_ :: Char `compare` negate _ :: Int  =  LT
+_ :: Char `compare` abs _ :: Int  =  LT
+_ :: Char `compare` _ + _ :: Int  =  LT
+_ :: Char `compare` head _ :: Int  =  LT
+_ :: Char `compare` ord _ :: Int  =  LT
+_ :: Char `compare` p :: Bool  =  GT
+_ :: Char `compare` False :: Bool  =  LT
+_ :: Char `compare` True :: Bool  =  LT
+_ :: Char `compare` not _ :: Bool  =  LT
+_ :: Char `compare` c :: Char  =  LT
+_ :: Char `compare` 'a' :: Char  =  LT
+_ :: Char `compare` xs :: [Int]  =  LT
+_ :: Char `compare` [] :: [Int]  =  LT
+_ :: Char `compare` _:_ :: [Int]  =  LT
+_ :: Char `compare` id :: Int -> Int  =  LT
+_ :: Char `compare` (+) :: Int -> Int -> Int  =  LT
+_ :: [Int] `compare` y :: Int  =  GT
+_ :: [Int] `compare` 1 :: Int  =  LT
+_ :: [Int] `compare` id x :: Int  =  LT
+_ :: [Int] `compare` id 0 :: Int  =  LT
+_ :: [Int] `compare` id (id _) :: Int  =  LT
+_ :: [Int] `compare` negate _ :: Int  =  LT
+_ :: [Int] `compare` abs _ :: Int  =  LT
+_ :: [Int] `compare` _ + _ :: Int  =  LT
+_ :: [Int] `compare` head _ :: Int  =  LT
+_ :: [Int] `compare` ord _ :: Int  =  LT
+_ :: [Int] `compare` p :: Bool  =  GT
+_ :: [Int] `compare` False :: Bool  =  LT
+_ :: [Int] `compare` True :: Bool  =  LT
+_ :: [Int] `compare` not _ :: Bool  =  LT
+_ :: [Int] `compare` c :: Char  =  GT
+_ :: [Int] `compare` 'a' :: Char  =  LT
+_ :: [Int] `compare` xs :: [Int]  =  LT
+_ :: [Int] `compare` [] :: [Int]  =  LT
+_ :: [Int] `compare` _:_ :: [Int]  =  LT
+_ :: [Int] `compare` id :: Int -> Int  =  LT
+_ :: [Int] `compare` (+) :: Int -> Int -> Int  =  LT
+y :: Int `compare` x :: Int  =  GT
+y :: Int `compare` 0 :: Int  =  LT
+y :: Int `compare` id _ :: Int  =  LT
+y :: Int `compare` _ :: Bool  =  GT
+y :: Int `compare` _ :: Char  =  GT
+y :: Int `compare` _ :: [Int]  =  LT
+1 :: Int `compare` x :: Int  =  GT
+1 :: Int `compare` 0 :: Int  =  GT
+1 :: Int `compare` id _ :: Int  =  LT
+1 :: Int `compare` _ :: Bool  =  GT
+1 :: Int `compare` _ :: Char  =  GT
+1 :: Int `compare` _ :: [Int]  =  GT
+id x :: Int `compare` x :: Int  =  GT
+id x :: Int `compare` 0 :: Int  =  GT
+id x :: Int `compare` id _ :: Int  =  GT
+id x :: Int `compare` _ :: Bool  =  GT
+id x :: Int `compare` _ :: Char  =  GT
+id x :: Int `compare` _ :: [Int]  =  GT
+id 0 :: Int `compare` x :: Int  =  GT
+id 0 :: Int `compare` 0 :: Int  =  GT
+id 0 :: Int `compare` id _ :: Int  =  GT
+id 0 :: Int `compare` _ :: Bool  =  GT
+id 0 :: Int `compare` _ :: Char  =  GT
+id 0 :: Int `compare` _ :: [Int]  =  GT
+id (id _) :: Int `compare` x :: Int  =  GT
+id (id _) :: Int `compare` 0 :: Int  =  GT
+id (id _) :: Int `compare` id _ :: Int  =  GT
+id (id _) :: Int `compare` _ :: Bool  =  GT
+id (id _) :: Int `compare` _ :: Char  =  GT
+id (id _) :: Int `compare` _ :: [Int]  =  GT
+negate _ :: Int `compare` x :: Int  =  GT
+negate _ :: Int `compare` 0 :: Int  =  GT
+negate _ :: Int `compare` id _ :: Int  =  GT
+negate _ :: Int `compare` _ :: Bool  =  GT
+negate _ :: Int `compare` _ :: Char  =  GT
+negate _ :: Int `compare` _ :: [Int]  =  GT
+abs _ :: Int `compare` x :: Int  =  GT
+abs _ :: Int `compare` 0 :: Int  =  GT
+abs _ :: Int `compare` id _ :: Int  =  GT
+abs _ :: Int `compare` _ :: Bool  =  GT
+abs _ :: Int `compare` _ :: Char  =  GT
+abs _ :: Int `compare` _ :: [Int]  =  GT
+_ + _ :: Int `compare` x :: Int  =  GT
+_ + _ :: Int `compare` 0 :: Int  =  GT
+_ + _ :: Int `compare` id _ :: Int  =  GT
+_ + _ :: Int `compare` _ :: Bool  =  GT
+_ + _ :: Int `compare` _ :: Char  =  GT
+_ + _ :: Int `compare` _ :: [Int]  =  GT
+head _ :: Int `compare` x :: Int  =  GT
+head _ :: Int `compare` 0 :: Int  =  GT
+head _ :: Int `compare` id _ :: Int  =  GT
+head _ :: Int `compare` _ :: Bool  =  GT
+head _ :: Int `compare` _ :: Char  =  GT
+head _ :: Int `compare` _ :: [Int]  =  GT
+ord _ :: Int `compare` x :: Int  =  GT
+ord _ :: Int `compare` 0 :: Int  =  GT
+ord _ :: Int `compare` id _ :: Int  =  LT
+ord _ :: Int `compare` _ :: Bool  =  GT
+ord _ :: Int `compare` _ :: Char  =  GT
+ord _ :: Int `compare` _ :: [Int]  =  GT
+p :: Bool `compare` x :: Int  =  LT
+p :: Bool `compare` 0 :: Int  =  LT
+p :: Bool `compare` id _ :: Int  =  LT
+p :: Bool `compare` _ :: Bool  =  GT
+p :: Bool `compare` _ :: Char  =  LT
+p :: Bool `compare` _ :: [Int]  =  LT
+False :: Bool `compare` x :: Int  =  GT
+False :: Bool `compare` 0 :: Int  =  LT
+False :: Bool `compare` id _ :: Int  =  LT
+False :: Bool `compare` _ :: Bool  =  GT
+False :: Bool `compare` _ :: Char  =  GT
+False :: Bool `compare` _ :: [Int]  =  GT
+True :: Bool `compare` x :: Int  =  GT
+True :: Bool `compare` 0 :: Int  =  LT
+True :: Bool `compare` id _ :: Int  =  LT
+True :: Bool `compare` _ :: Bool  =  GT
+True :: Bool `compare` _ :: Char  =  GT
+True :: Bool `compare` _ :: [Int]  =  GT
+not _ :: Bool `compare` x :: Int  =  GT
+not _ :: Bool `compare` 0 :: Int  =  GT
+not _ :: Bool `compare` id _ :: Int  =  LT
+not _ :: Bool `compare` _ :: Bool  =  GT
+not _ :: Bool `compare` _ :: Char  =  GT
+not _ :: Bool `compare` _ :: [Int]  =  GT
+c :: Char `compare` x :: Int  =  LT
+c :: Char `compare` 0 :: Int  =  LT
+c :: Char `compare` id _ :: Int  =  LT
+c :: Char `compare` _ :: Bool  =  GT
+c :: Char `compare` _ :: Char  =  GT
+c :: Char `compare` _ :: [Int]  =  LT
+'a' :: Char `compare` x :: Int  =  GT
+'a' :: Char `compare` 0 :: Int  =  LT
+'a' :: Char `compare` id _ :: Int  =  LT
+'a' :: Char `compare` _ :: Bool  =  GT
+'a' :: Char `compare` _ :: Char  =  GT
+'a' :: Char `compare` _ :: [Int]  =  GT
+xs :: [Int] `compare` x :: Int  =  GT
+xs :: [Int] `compare` 0 :: Int  =  LT
+xs :: [Int] `compare` id _ :: Int  =  LT
+xs :: [Int] `compare` _ :: Bool  =  GT
+xs :: [Int] `compare` _ :: Char  =  GT
+xs :: [Int] `compare` _ :: [Int]  =  GT
+[] :: [Int] `compare` x :: Int  =  GT
+[] :: [Int] `compare` 0 :: Int  =  GT
+[] :: [Int] `compare` id _ :: Int  =  LT
+[] :: [Int] `compare` _ :: Bool  =  GT
+[] :: [Int] `compare` _ :: Char  =  GT
+[] :: [Int] `compare` _ :: [Int]  =  GT
+_:_ :: [Int] `compare` x :: Int  =  GT
+_:_ :: [Int] `compare` 0 :: Int  =  GT
+_:_ :: [Int] `compare` id _ :: Int  =  GT
+_:_ :: [Int] `compare` _ :: Bool  =  GT
+_:_ :: [Int] `compare` _ :: Char  =  GT
+_:_ :: [Int] `compare` _ :: [Int]  =  GT
+id :: Int -> Int `compare` x :: Int  =  GT
+id :: Int -> Int `compare` 0 :: Int  =  GT
+id :: Int -> Int `compare` id _ :: Int  =  LT
+id :: Int -> Int `compare` _ :: Bool  =  GT
+id :: Int -> Int `compare` _ :: Char  =  GT
+id :: Int -> Int `compare` _ :: [Int]  =  GT
+(+) :: Int -> Int -> Int `compare` x :: Int  =  GT
+(+) :: Int -> Int -> Int `compare` 0 :: Int  =  GT
+(+) :: Int -> Int -> Int `compare` id _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` _ :: Bool  =  GT
+(+) :: Int -> Int -> Int `compare` _ :: Char  =  GT
+(+) :: Int -> Int -> Int `compare` _ :: [Int]  =  GT
+z :: Int `compare` _ :: Int  =  GT
+-1 :: Int `compare` _ :: Int  =  GT
+id y :: Int `compare` _ :: Int  =  GT
+id 1 :: Int `compare` _ :: Int  =  GT
+id (id x) :: Int `compare` _ :: Int  =  GT
+id (id 0) :: Int `compare` _ :: Int  =  GT
+id (id (id _)) :: Int `compare` _ :: Int  =  GT
+id (negate _) :: Int `compare` _ :: Int  =  GT
+id (abs _) :: Int `compare` _ :: Int  =  GT
+id (_ + _) :: Int `compare` _ :: Int  =  GT
+id (head _) :: Int `compare` _ :: Int  =  GT
+id (ord _) :: Int `compare` _ :: Int  =  GT
+negate x :: Int `compare` _ :: Int  =  GT
+negate 0 :: Int `compare` _ :: Int  =  GT
+negate (id _) :: Int `compare` _ :: Int  =  GT
+abs x :: Int `compare` _ :: Int  =  GT
+abs 0 :: Int `compare` _ :: Int  =  GT
+abs (id _) :: Int `compare` _ :: Int  =  GT
+_ + x :: Int `compare` _ :: Int  =  GT
+_ + 0 :: Int `compare` _ :: Int  =  GT
+_ + id _ :: Int `compare` _ :: Int  =  GT
+x + _ :: Int `compare` _ :: Int  =  GT
+0 + _ :: Int `compare` _ :: Int  =  GT
+id _ + _ :: Int `compare` _ :: Int  =  GT
+_ * _ :: Int `compare` _ :: Int  =  GT
+f _ :: Int `compare` _ :: Int  =  GT
+head xs :: Int `compare` _ :: Int  =  GT
+head [] :: Int `compare` _ :: Int  =  GT
+head (_:_) :: Int `compare` _ :: Int  =  GT
+ord c :: Int `compare` _ :: Int  =  GT
+ord 'a' :: Int `compare` _ :: Int  =  GT
+q :: Bool `compare` _ :: Int  =  LT
+not p :: Bool `compare` _ :: Int  =  GT
+not False :: Bool `compare` _ :: Int  =  GT
+not True :: Bool `compare` _ :: Int  =  GT
+not (not _) :: Bool `compare` _ :: Int  =  GT
+_ || _ :: Bool `compare` _ :: Int  =  GT
+d :: Char `compare` _ :: Int  =  LT
+' ' :: Char `compare` _ :: Int  =  GT
+ys :: [Int] `compare` _ :: Int  =  GT
+[0] :: [Int] `compare` _ :: Int  =  GT
+_:xs :: [Int] `compare` _ :: Int  =  GT
+[_] :: [Int] `compare` _ :: Int  =  GT
+_:_:_ :: [Int] `compare` _ :: Int  =  GT
+x:_ :: [Int] `compare` _ :: Int  =  GT
+0:_ :: [Int] `compare` _ :: Int  =  GT
+id _:_ :: [Int] `compare` _ :: Int  =  GT
+tail _ :: [Int] `compare` _ :: Int  =  GT
+_ ++ _ :: [Int] `compare` _ :: Int  =  GT
+negate :: Int -> Int `compare` _ :: Int  =  GT
+abs :: Int -> Int `compare` _ :: Int  =  GT
+(_ +) :: Int -> Int `compare` _ :: Int  =  GT
+(*) :: Int -> Int -> Int `compare` _ :: Int  =  GT
+not :: Bool -> Bool `compare` _ :: Int  =  GT
+(||) :: Bool -> Bool -> Bool `compare` _ :: Int  =  GT
+_ :: Int `compare` x' :: Int  =  LT
+_ :: Int `compare` 2 :: Int  =  LT
+_ :: Int `compare` id z :: Int  =  LT
+_ :: Int `compare` id (-1) :: Int  =  LT
+_ :: Int `compare` id (id y) :: Int  =  LT
+_ :: Int `compare` id (id 1) :: Int  =  LT
+_ :: Int `compare` id (id (id x)) :: Int  =  LT
+_ :: Int `compare` id (id (id 0)) :: Int  =  LT
+_ :: Int `compare` id (id (id (id _))) :: Int  =  LT
+_ :: Int `compare` id (id (negate _)) :: Int  =  LT
+_ :: Int `compare` id (id (abs _)) :: Int  =  LT
+_ :: Int `compare` id (id (_ + _)) :: Int  =  LT
+_ :: Int `compare` id (id (head _)) :: Int  =  LT
+_ :: Int `compare` id (id (ord _)) :: Int  =  LT
+_ :: Int `compare` id (negate x) :: Int  =  LT
+_ :: Int `compare` id (negate 0) :: Int  =  LT
+_ :: Int `compare` id (negate (id _)) :: Int  =  LT
+_ :: Int `compare` id (abs x) :: Int  =  LT
+_ :: Int `compare` id (abs 0) :: Int  =  LT
+_ :: Int `compare` id (abs (id _)) :: Int  =  LT
+_ :: Int `compare` id (_ + x) :: Int  =  LT
+_ :: Int `compare` id (_ + 0) :: Int  =  LT
+_ :: Int `compare` id (_ + id _) :: Int  =  LT
+_ :: Int `compare` id (x + _) :: Int  =  LT
+_ :: Int `compare` id (0 + _) :: Int  =  LT
+_ :: Int `compare` id (id _ + _) :: Int  =  LT
+_ :: Int `compare` id (_ * _) :: Int  =  LT
+_ :: Int `compare` id (f _) :: Int  =  LT
+_ :: Int `compare` id (head xs) :: Int  =  LT
+_ :: Int `compare` id (head []) :: Int  =  LT
+_ :: Int `compare` id (head (_:_)) :: Int  =  LT
+_ :: Int `compare` id (ord c) :: Int  =  LT
+_ :: Int `compare` id (ord 'a') :: Int  =  LT
+_ :: Int `compare` negate y :: Int  =  LT
+_ :: Int `compare` negate 1 :: Int  =  LT
+_ :: Int `compare` negate (id x) :: Int  =  LT
+_ :: Int `compare` negate (id 0) :: Int  =  LT
+_ :: Int `compare` negate (id (id _)) :: Int  =  LT
+_ :: Int `compare` negate (negate _) :: Int  =  LT
+_ :: Int `compare` negate (abs _) :: Int  =  LT
+_ :: Int `compare` negate (_ + _) :: Int  =  LT
+_ :: Int `compare` negate (head _) :: Int  =  LT
+_ :: Int `compare` negate (ord _) :: Int  =  LT
+_ :: Int `compare` abs y :: Int  =  LT
+_ :: Int `compare` abs 1 :: Int  =  LT
+_ :: Int `compare` abs (id x) :: Int  =  LT
+_ :: Int `compare` abs (id 0) :: Int  =  LT
+_ :: Int `compare` abs (id (id _)) :: Int  =  LT
+_ :: Int `compare` abs (negate _) :: Int  =  LT
+_ :: Int `compare` abs (abs _) :: Int  =  LT
+_ :: Int `compare` abs (_ + _) :: Int  =  LT
+_ :: Int `compare` abs (head _) :: Int  =  LT
+_ :: Int `compare` abs (ord _) :: Int  =  LT
+_ :: Int `compare` _ + y :: Int  =  LT
+_ :: Int `compare` _ + 1 :: Int  =  LT
+_ :: Int `compare` _ + id x :: Int  =  LT
+_ :: Int `compare` _ + id 0 :: Int  =  LT
+_ :: Int `compare` _ + id (id _) :: Int  =  LT
+_ :: Int `compare` _ + negate _ :: Int  =  LT
+_ :: Int `compare` _ + abs _ :: Int  =  LT
+_ :: Int `compare` _ + (_ + _) :: Int  =  LT
+_ :: Int `compare` _ + head _ :: Int  =  LT
+_ :: Int `compare` _ + ord _ :: Int  =  LT
+_ :: Int `compare` x + x :: Int  =  LT
+_ :: Int `compare` x + 0 :: Int  =  LT
+_ :: Int `compare` x + id _ :: Int  =  LT
+_ :: Int `compare` 0 + x :: Int  =  LT
+_ :: Int `compare` 0 + 0 :: Int  =  LT
+_ :: Int `compare` 0 + id _ :: Int  =  LT
+_ :: Int `compare` id _ + x :: Int  =  LT
+_ :: Int `compare` id _ + 0 :: Int  =  LT
+_ :: Int `compare` id _ + id _ :: Int  =  LT
+_ :: Int `compare` _ * x :: Int  =  LT
+_ :: Int `compare` _ * 0 :: Int  =  LT
+_ :: Int `compare` _ * id _ :: Int  =  LT
+_ :: Int `compare` f x :: Int  =  LT
+_ :: Int `compare` f 0 :: Int  =  LT
+_ :: Int `compare` f (id _) :: Int  =  LT
+_ :: Int `compare` y + _ :: Int  =  LT
+_ :: Int `compare` 1 + _ :: Int  =  LT
+_ :: Int `compare` id x + _ :: Int  =  LT
+_ :: Int `compare` id 0 + _ :: Int  =  LT
+_ :: Int `compare` id (id _) + _ :: Int  =  LT
+_ :: Int `compare` negate _ + _ :: Int  =  LT
+_ :: Int `compare` abs _ + _ :: Int  =  LT
+_ :: Int `compare` (_ + _) + _ :: Int  =  LT
+_ :: Int `compare` head _ + _ :: Int  =  LT
+_ :: Int `compare` ord _ + _ :: Int  =  LT
+_ :: Int `compare` x * _ :: Int  =  LT
+_ :: Int `compare` 0 * _ :: Int  =  LT
+_ :: Int `compare` id _ * _ :: Int  =  LT
+_ :: Int `compare` g _ :: Int  =  LT
+_ :: Int `compare` head ys :: Int  =  LT
+_ :: Int `compare` head [0] :: Int  =  LT
+_ :: Int `compare` head (_:xs) :: Int  =  LT
+_ :: Int `compare` head [_] :: Int  =  LT
+_ :: Int `compare` head (_:_:_) :: Int  =  LT
+_ :: Int `compare` head (x:_) :: Int  =  LT
+_ :: Int `compare` head (0:_) :: Int  =  LT
+_ :: Int `compare` head (id _:_) :: Int  =  LT
+_ :: Int `compare` head (tail _) :: Int  =  LT
+_ :: Int `compare` head (_ ++ _) :: Int  =  LT
+_ :: Int `compare` ord d :: Int  =  LT
+_ :: Int `compare` ord ' ' :: Int  =  LT
+_ :: Int `compare` r :: Bool  =  GT
+_ :: Int `compare` not q :: Bool  =  LT
+_ :: Int `compare` not (not p) :: Bool  =  LT
+_ :: Int `compare` not (not False) :: Bool  =  LT
+_ :: Int `compare` not (not True) :: Bool  =  LT
+_ :: Int `compare` not (not (not _)) :: Bool  =  LT
+_ :: Int `compare` not (_ || _) :: Bool  =  LT
+_ :: Int `compare` _ || p :: Bool  =  LT
+_ :: Int `compare` _ || False :: Bool  =  LT
+_ :: Int `compare` _ || True :: Bool  =  LT
+_ :: Int `compare` _ || not _ :: Bool  =  LT
+_ :: Int `compare` p || _ :: Bool  =  LT
+_ :: Int `compare` False || _ :: Bool  =  LT
+_ :: Int `compare` True || _ :: Bool  =  LT
+_ :: Int `compare` not _ || _ :: Bool  =  LT
+_ :: Int `compare` _ && _ :: Bool  =  LT
+_ :: Int `compare` _ == _ :: Bool  =  LT
+_ :: Int `compare` _ == _ :: Bool  =  LT
+_ :: Int `compare` odd _ :: Bool  =  LT
+_ :: Int `compare` even _ :: Bool  =  LT
+_ :: Int `compare` elem _ _ :: Bool  =  LT
+_ :: Int `compare` e :: Char  =  GT
+_ :: Int `compare` 'b' :: Char  =  LT
+_ :: Int `compare` zs :: [Int]  =  LT
+_ :: Int `compare` [0,0] :: [Int]  =  LT
+_ :: Int `compare` [1] :: [Int]  =  LT
+_ :: Int `compare` _:ys :: [Int]  =  LT
+_ :: Int `compare` _:[0] :: [Int]  =  LT
+_ :: Int `compare` _:_:xs :: [Int]  =  LT
+_ :: Int `compare` [_,_] :: [Int]  =  LT
+_ :: Int `compare` _:_:_:_ :: [Int]  =  LT
+_ :: Int `compare` _:x:_ :: [Int]  =  LT
+_ :: Int `compare` _:0:_ :: [Int]  =  LT
+_ :: Int `compare` _:id _:_ :: [Int]  =  LT
+_ :: Int `compare` _:tail _ :: [Int]  =  LT
+_ :: Int `compare` _:(_ ++ _) :: [Int]  =  LT
+_ :: Int `compare` x:xs :: [Int]  =  LT
+_ :: Int `compare` [x] :: [Int]  =  LT
+_ :: Int `compare` x:_:_ :: [Int]  =  LT
+_ :: Int `compare` 0:xs :: [Int]  =  LT
+_ :: Int `compare` [0] :: [Int]  =  LT
+_ :: Int `compare` 0:_:_ :: [Int]  =  LT
+_ :: Int `compare` id _:xs :: [Int]  =  LT
+_ :: Int `compare` [id _] :: [Int]  =  LT
+_ :: Int `compare` id _:_:_ :: [Int]  =  LT
+_ :: Int `compare` y:_ :: [Int]  =  LT
+_ :: Int `compare` 1:_ :: [Int]  =  LT
+_ :: Int `compare` id x:_ :: [Int]  =  LT
+_ :: Int `compare` id 0:_ :: [Int]  =  LT
+_ :: Int `compare` id (id _):_ :: [Int]  =  LT
+_ :: Int `compare` negate _:_ :: [Int]  =  LT
+_ :: Int `compare` abs _:_ :: [Int]  =  LT
+_ :: Int `compare` _ + _:_ :: [Int]  =  LT
+_ :: Int `compare` head _:_ :: [Int]  =  LT
+_ :: Int `compare` ord _:_ :: [Int]  =  LT
+_ :: Int `compare` tail xs :: [Int]  =  LT
+_ :: Int `compare` tail [] :: [Int]  =  LT
+_ :: Int `compare` tail (_:_) :: [Int]  =  LT
+_ :: Int `compare` _ ++ xs :: [Int]  =  LT
+_ :: Int `compare` _ ++ [] :: [Int]  =  LT
+_ :: Int `compare` _ ++ (_:_) :: [Int]  =  LT
+_ :: Int `compare` xs ++ _ :: [Int]  =  LT
+_ :: Int `compare` [] ++ _ :: [Int]  =  LT
+_ :: Int `compare` (_:_) ++ _ :: [Int]  =  LT
+_ :: Int `compare` sort _ :: [Int]  =  LT
+_ :: Int `compare` insert _ _ :: [Int]  =  LT
+_ :: Int `compare` (x +) :: Int -> Int  =  LT
+_ :: Int `compare` (0 +) :: Int -> Int  =  LT
+_ :: Int `compare` (id _ +) :: Int -> Int  =  LT
+_ :: Int `compare` (_ *) :: Int -> Int  =  LT
+_ :: Int `compare` f :: Int -> Int  =  LT
+_ :: Int `compare` (_ ||) :: Bool -> Bool  =  LT
+_ :: Int `compare` (&&) :: Bool -> Bool -> Bool  =  LT
+x :: Int `compare` z :: Int  =  LT
+x :: Int `compare` -1 :: Int  =  LT
+x :: Int `compare` id y :: Int  =  LT
+x :: Int `compare` id 1 :: Int  =  LT
+x :: Int `compare` id (id x) :: Int  =  LT
+x :: Int `compare` id (id 0) :: Int  =  LT
+x :: Int `compare` id (id (id _)) :: Int  =  LT
+x :: Int `compare` id (negate _) :: Int  =  LT
+x :: Int `compare` id (abs _) :: Int  =  LT
+x :: Int `compare` id (_ + _) :: Int  =  LT
+x :: Int `compare` id (head _) :: Int  =  LT
+x :: Int `compare` id (ord _) :: Int  =  LT
+x :: Int `compare` negate x :: Int  =  LT
+x :: Int `compare` negate 0 :: Int  =  LT
+x :: Int `compare` negate (id _) :: Int  =  LT
+x :: Int `compare` abs x :: Int  =  LT
+x :: Int `compare` abs 0 :: Int  =  LT
+x :: Int `compare` abs (id _) :: Int  =  LT
+x :: Int `compare` _ + x :: Int  =  LT
+x :: Int `compare` _ + 0 :: Int  =  LT
+x :: Int `compare` _ + id _ :: Int  =  LT
+x :: Int `compare` x + _ :: Int  =  LT
+x :: Int `compare` 0 + _ :: Int  =  LT
+x :: Int `compare` id _ + _ :: Int  =  LT
+x :: Int `compare` _ * _ :: Int  =  LT
+x :: Int `compare` f _ :: Int  =  LT
+x :: Int `compare` head xs :: Int  =  LT
+x :: Int `compare` head [] :: Int  =  LT
+x :: Int `compare` head (_:_) :: Int  =  LT
+x :: Int `compare` ord c :: Int  =  LT
+x :: Int `compare` ord 'a' :: Int  =  LT
+x :: Int `compare` q :: Bool  =  GT
+x :: Int `compare` not p :: Bool  =  LT
+x :: Int `compare` not False :: Bool  =  LT
+x :: Int `compare` not True :: Bool  =  LT
+x :: Int `compare` not (not _) :: Bool  =  LT
+x :: Int `compare` _ || _ :: Bool  =  LT
+x :: Int `compare` d :: Char  =  GT
+x :: Int `compare` ' ' :: Char  =  LT
+x :: Int `compare` ys :: [Int]  =  LT
+x :: Int `compare` [0] :: [Int]  =  LT
+x :: Int `compare` _:xs :: [Int]  =  LT
+x :: Int `compare` [_] :: [Int]  =  LT
+x :: Int `compare` _:_:_ :: [Int]  =  LT
+x :: Int `compare` x:_ :: [Int]  =  LT
+x :: Int `compare` 0:_ :: [Int]  =  LT
+x :: Int `compare` id _:_ :: [Int]  =  LT
+x :: Int `compare` tail _ :: [Int]  =  LT
+x :: Int `compare` _ ++ _ :: [Int]  =  LT
+x :: Int `compare` negate :: Int -> Int  =  LT
+x :: Int `compare` abs :: Int -> Int  =  LT
+x :: Int `compare` (_ +) :: Int -> Int  =  LT
+x :: Int `compare` (*) :: Int -> Int -> Int  =  LT
+x :: Int `compare` not :: Bool -> Bool  =  LT
+x :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
+0 :: Int `compare` z :: Int  =  GT
+0 :: Int `compare` -1 :: Int  =  LT
+0 :: Int `compare` id y :: Int  =  LT
+0 :: Int `compare` id 1 :: Int  =  LT
+0 :: Int `compare` id (id x) :: Int  =  LT
+0 :: Int `compare` id (id 0) :: Int  =  LT
+0 :: Int `compare` id (id (id _)) :: Int  =  LT
+0 :: Int `compare` id (negate _) :: Int  =  LT
+0 :: Int `compare` id (abs _) :: Int  =  LT
+0 :: Int `compare` id (_ + _) :: Int  =  LT
+0 :: Int `compare` id (head _) :: Int  =  LT
+0 :: Int `compare` id (ord _) :: Int  =  LT
+0 :: Int `compare` negate x :: Int  =  LT
+0 :: Int `compare` negate 0 :: Int  =  LT
+0 :: Int `compare` negate (id _) :: Int  =  LT
+0 :: Int `compare` abs x :: Int  =  LT
+0 :: Int `compare` abs 0 :: Int  =  LT
+0 :: Int `compare` abs (id _) :: Int  =  LT
+0 :: Int `compare` _ + x :: Int  =  LT
+0 :: Int `compare` _ + 0 :: Int  =  LT
+0 :: Int `compare` _ + id _ :: Int  =  LT
+0 :: Int `compare` x + _ :: Int  =  LT
+0 :: Int `compare` 0 + _ :: Int  =  LT
+0 :: Int `compare` id _ + _ :: Int  =  LT
+0 :: Int `compare` _ * _ :: Int  =  LT
+0 :: Int `compare` f _ :: Int  =  LT
+0 :: Int `compare` head xs :: Int  =  LT
+0 :: Int `compare` head [] :: Int  =  LT
+0 :: Int `compare` head (_:_) :: Int  =  LT
+0 :: Int `compare` ord c :: Int  =  LT
+0 :: Int `compare` ord 'a' :: Int  =  LT
+0 :: Int `compare` q :: Bool  =  GT
+0 :: Int `compare` not p :: Bool  =  LT
+0 :: Int `compare` not False :: Bool  =  LT
+0 :: Int `compare` not True :: Bool  =  LT
+0 :: Int `compare` not (not _) :: Bool  =  LT
+0 :: Int `compare` _ || _ :: Bool  =  LT
+0 :: Int `compare` d :: Char  =  GT
+0 :: Int `compare` ' ' :: Char  =  GT
+0 :: Int `compare` ys :: [Int]  =  GT
+0 :: Int `compare` [0] :: [Int]  =  LT
+0 :: Int `compare` _:xs :: [Int]  =  LT
+0 :: Int `compare` [_] :: [Int]  =  LT
+0 :: Int `compare` _:_:_ :: [Int]  =  LT
+0 :: Int `compare` x:_ :: [Int]  =  LT
+0 :: Int `compare` 0:_ :: [Int]  =  LT
+0 :: Int `compare` id _:_ :: [Int]  =  LT
+0 :: Int `compare` tail _ :: [Int]  =  LT
+0 :: Int `compare` _ ++ _ :: [Int]  =  LT
+0 :: Int `compare` negate :: Int -> Int  =  LT
+0 :: Int `compare` abs :: Int -> Int  =  LT
+0 :: Int `compare` (_ +) :: Int -> Int  =  LT
+0 :: Int `compare` (*) :: Int -> Int -> Int  =  LT
+0 :: Int `compare` not :: Bool -> Bool  =  LT
+0 :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
+id _ :: Int `compare` z :: Int  =  GT
+id _ :: Int `compare` -1 :: Int  =  GT
+id _ :: Int `compare` id y :: Int  =  LT
+id _ :: Int `compare` id 1 :: Int  =  LT
+id _ :: Int `compare` id (id x) :: Int  =  LT
+id _ :: Int `compare` id (id 0) :: Int  =  LT
+id _ :: Int `compare` id (id (id _)) :: Int  =  LT
+id _ :: Int `compare` id (negate _) :: Int  =  LT
+id _ :: Int `compare` id (abs _) :: Int  =  LT
+id _ :: Int `compare` id (_ + _) :: Int  =  LT
+id _ :: Int `compare` id (head _) :: Int  =  LT
+id _ :: Int `compare` id (ord _) :: Int  =  LT
+id _ :: Int `compare` negate x :: Int  =  LT
+id _ :: Int `compare` negate 0 :: Int  =  LT
+id _ :: Int `compare` negate (id _) :: Int  =  LT
+id _ :: Int `compare` abs x :: Int  =  LT
+id _ :: Int `compare` abs 0 :: Int  =  LT
+id _ :: Int `compare` abs (id _) :: Int  =  LT
+id _ :: Int `compare` _ + x :: Int  =  LT
+id _ :: Int `compare` _ + 0 :: Int  =  LT
+id _ :: Int `compare` _ + id _ :: Int  =  LT
+id _ :: Int `compare` x + _ :: Int  =  LT
+id _ :: Int `compare` 0 + _ :: Int  =  LT
+id _ :: Int `compare` id _ + _ :: Int  =  LT
+id _ :: Int `compare` _ * _ :: Int  =  LT
+id _ :: Int `compare` f _ :: Int  =  GT
+id _ :: Int `compare` head xs :: Int  =  LT
+id _ :: Int `compare` head [] :: Int  =  LT
+id _ :: Int `compare` head (_:_) :: Int  =  LT
+id _ :: Int `compare` ord c :: Int  =  GT
+id _ :: Int `compare` ord 'a' :: Int  =  LT
+id _ :: Int `compare` q :: Bool  =  GT
+id _ :: Int `compare` not p :: Bool  =  GT
+id _ :: Int `compare` not False :: Bool  =  LT
+id _ :: Int `compare` not True :: Bool  =  LT
+id _ :: Int `compare` not (not _) :: Bool  =  LT
+id _ :: Int `compare` _ || _ :: Bool  =  LT
+id _ :: Int `compare` d :: Char  =  GT
+id _ :: Int `compare` ' ' :: Char  =  GT
+id _ :: Int `compare` ys :: [Int]  =  GT
+id _ :: Int `compare` [0] :: [Int]  =  GT
+id _ :: Int `compare` _:xs :: [Int]  =  LT
+id _ :: Int `compare` [_] :: [Int]  =  LT
+id _ :: Int `compare` _:_:_ :: [Int]  =  LT
+id _ :: Int `compare` x:_ :: [Int]  =  LT
+id _ :: Int `compare` 0:_ :: [Int]  =  LT
+id _ :: Int `compare` id _:_ :: [Int]  =  LT
+id _ :: Int `compare` tail _ :: [Int]  =  LT
+id _ :: Int `compare` _ ++ _ :: [Int]  =  LT
+id _ :: Int `compare` negate :: Int -> Int  =  GT
+id _ :: Int `compare` abs :: Int -> Int  =  GT
+id _ :: Int `compare` (_ +) :: Int -> Int  =  LT
+id _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
+id _ :: Int `compare` not :: Bool -> Bool  =  GT
+id _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+_ :: Bool `compare` z :: Int  =  LT
+_ :: Bool `compare` -1 :: Int  =  LT
+_ :: Bool `compare` id y :: Int  =  LT
+_ :: Bool `compare` id 1 :: Int  =  LT
+_ :: Bool `compare` id (id x) :: Int  =  LT
+_ :: Bool `compare` id (id 0) :: Int  =  LT
+_ :: Bool `compare` id (id (id _)) :: Int  =  LT
+_ :: Bool `compare` id (negate _) :: Int  =  LT
+_ :: Bool `compare` id (abs _) :: Int  =  LT
+_ :: Bool `compare` id (_ + _) :: Int  =  LT
+_ :: Bool `compare` id (head _) :: Int  =  LT
+_ :: Bool `compare` id (ord _) :: Int  =  LT
+_ :: Bool `compare` negate x :: Int  =  LT
+_ :: Bool `compare` negate 0 :: Int  =  LT
+_ :: Bool `compare` negate (id _) :: Int  =  LT
+_ :: Bool `compare` abs x :: Int  =  LT
+_ :: Bool `compare` abs 0 :: Int  =  LT
+_ :: Bool `compare` abs (id _) :: Int  =  LT
+_ :: Bool `compare` _ + x :: Int  =  LT
+_ :: Bool `compare` _ + 0 :: Int  =  LT
+_ :: Bool `compare` _ + id _ :: Int  =  LT
+_ :: Bool `compare` x + _ :: Int  =  LT
+_ :: Bool `compare` 0 + _ :: Int  =  LT
+_ :: Bool `compare` id _ + _ :: Int  =  LT
+_ :: Bool `compare` _ * _ :: Int  =  LT
+_ :: Bool `compare` f _ :: Int  =  LT
+_ :: Bool `compare` head xs :: Int  =  LT
+_ :: Bool `compare` head [] :: Int  =  LT
+_ :: Bool `compare` head (_:_) :: Int  =  LT
+_ :: Bool `compare` ord c :: Int  =  LT
+_ :: Bool `compare` ord 'a' :: Int  =  LT
+_ :: Bool `compare` q :: Bool  =  LT
+_ :: Bool `compare` not p :: Bool  =  LT
+_ :: Bool `compare` not False :: Bool  =  LT
+_ :: Bool `compare` not True :: Bool  =  LT
+_ :: Bool `compare` not (not _) :: Bool  =  LT
+_ :: Bool `compare` _ || _ :: Bool  =  LT
+_ :: Bool `compare` d :: Char  =  LT
+_ :: Bool `compare` ' ' :: Char  =  LT
+_ :: Bool `compare` ys :: [Int]  =  LT
+_ :: Bool `compare` [0] :: [Int]  =  LT
+_ :: Bool `compare` _:xs :: [Int]  =  LT
+_ :: Bool `compare` [_] :: [Int]  =  LT
+_ :: Bool `compare` _:_:_ :: [Int]  =  LT
+_ :: Bool `compare` x:_ :: [Int]  =  LT
+_ :: Bool `compare` 0:_ :: [Int]  =  LT
+_ :: Bool `compare` id _:_ :: [Int]  =  LT
+_ :: Bool `compare` tail _ :: [Int]  =  LT
+_ :: Bool `compare` _ ++ _ :: [Int]  =  LT
+_ :: Bool `compare` negate :: Int -> Int  =  LT
+_ :: Bool `compare` abs :: Int -> Int  =  LT
+_ :: Bool `compare` (_ +) :: Int -> Int  =  LT
+_ :: Bool `compare` (*) :: Int -> Int -> Int  =  LT
+_ :: Bool `compare` not :: Bool -> Bool  =  LT
+_ :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  LT
+_ :: Char `compare` z :: Int  =  LT
+_ :: Char `compare` -1 :: Int  =  LT
+_ :: Char `compare` id y :: Int  =  LT
+_ :: Char `compare` id 1 :: Int  =  LT
+_ :: Char `compare` id (id x) :: Int  =  LT
+_ :: Char `compare` id (id 0) :: Int  =  LT
+_ :: Char `compare` id (id (id _)) :: Int  =  LT
+_ :: Char `compare` id (negate _) :: Int  =  LT
+_ :: Char `compare` id (abs _) :: Int  =  LT
+_ :: Char `compare` id (_ + _) :: Int  =  LT
+_ :: Char `compare` id (head _) :: Int  =  LT
+_ :: Char `compare` id (ord _) :: Int  =  LT
+_ :: Char `compare` negate x :: Int  =  LT
+_ :: Char `compare` negate 0 :: Int  =  LT
+_ :: Char `compare` negate (id _) :: Int  =  LT
+_ :: Char `compare` abs x :: Int  =  LT
+_ :: Char `compare` abs 0 :: Int  =  LT
+_ :: Char `compare` abs (id _) :: Int  =  LT
+_ :: Char `compare` _ + x :: Int  =  LT
+_ :: Char `compare` _ + 0 :: Int  =  LT
+_ :: Char `compare` _ + id _ :: Int  =  LT
+_ :: Char `compare` x + _ :: Int  =  LT
+_ :: Char `compare` 0 + _ :: Int  =  LT
+_ :: Char `compare` id _ + _ :: Int  =  LT
+_ :: Char `compare` _ * _ :: Int  =  LT
+_ :: Char `compare` f _ :: Int  =  LT
+_ :: Char `compare` head xs :: Int  =  LT
+_ :: Char `compare` head [] :: Int  =  LT
+_ :: Char `compare` head (_:_) :: Int  =  LT
+_ :: Char `compare` ord c :: Int  =  LT
+_ :: Char `compare` ord 'a' :: Int  =  LT
+_ :: Char `compare` q :: Bool  =  GT
+_ :: Char `compare` not p :: Bool  =  LT
+_ :: Char `compare` not False :: Bool  =  LT
+_ :: Char `compare` not True :: Bool  =  LT
+_ :: Char `compare` not (not _) :: Bool  =  LT
+_ :: Char `compare` _ || _ :: Bool  =  LT
+_ :: Char `compare` d :: Char  =  LT
+_ :: Char `compare` ' ' :: Char  =  LT
+_ :: Char `compare` ys :: [Int]  =  LT
+_ :: Char `compare` [0] :: [Int]  =  LT
+_ :: Char `compare` _:xs :: [Int]  =  LT
+_ :: Char `compare` [_] :: [Int]  =  LT
+_ :: Char `compare` _:_:_ :: [Int]  =  LT
+_ :: Char `compare` x:_ :: [Int]  =  LT
+_ :: Char `compare` 0:_ :: [Int]  =  LT
+_ :: Char `compare` id _:_ :: [Int]  =  LT
+_ :: Char `compare` tail _ :: [Int]  =  LT
+_ :: Char `compare` _ ++ _ :: [Int]  =  LT
+_ :: Char `compare` negate :: Int -> Int  =  LT
+_ :: Char `compare` abs :: Int -> Int  =  LT
+_ :: Char `compare` (_ +) :: Int -> Int  =  LT
+_ :: Char `compare` (*) :: Int -> Int -> Int  =  LT
+_ :: Char `compare` not :: Bool -> Bool  =  LT
+_ :: Char `compare` (||) :: Bool -> Bool -> Bool  =  LT
+_ :: [Int] `compare` z :: Int  =  GT
+_ :: [Int] `compare` -1 :: Int  =  LT
+_ :: [Int] `compare` id y :: Int  =  LT
+_ :: [Int] `compare` id 1 :: Int  =  LT
+_ :: [Int] `compare` id (id x) :: Int  =  LT
+_ :: [Int] `compare` id (id 0) :: Int  =  LT
+_ :: [Int] `compare` id (id (id _)) :: Int  =  LT
+_ :: [Int] `compare` id (negate _) :: Int  =  LT
+_ :: [Int] `compare` id (abs _) :: Int  =  LT
+_ :: [Int] `compare` id (_ + _) :: Int  =  LT
+_ :: [Int] `compare` id (head _) :: Int  =  LT
+_ :: [Int] `compare` id (ord _) :: Int  =  LT
+_ :: [Int] `compare` negate x :: Int  =  LT
+_ :: [Int] `compare` negate 0 :: Int  =  LT
+_ :: [Int] `compare` negate (id _) :: Int  =  LT
+_ :: [Int] `compare` abs x :: Int  =  LT
+_ :: [Int] `compare` abs 0 :: Int  =  LT
+_ :: [Int] `compare` abs (id _) :: Int  =  LT
+_ :: [Int] `compare` _ + x :: Int  =  LT
+_ :: [Int] `compare` _ + 0 :: Int  =  LT
+_ :: [Int] `compare` _ + id _ :: Int  =  LT
+_ :: [Int] `compare` x + _ :: Int  =  LT
+_ :: [Int] `compare` 0 + _ :: Int  =  LT
+_ :: [Int] `compare` id _ + _ :: Int  =  LT
+_ :: [Int] `compare` _ * _ :: Int  =  LT
+_ :: [Int] `compare` f _ :: Int  =  LT
+_ :: [Int] `compare` head xs :: Int  =  LT
+_ :: [Int] `compare` head [] :: Int  =  LT
+_ :: [Int] `compare` head (_:_) :: Int  =  LT
+_ :: [Int] `compare` ord c :: Int  =  LT
+_ :: [Int] `compare` ord 'a' :: Int  =  LT
+_ :: [Int] `compare` q :: Bool  =  GT
+_ :: [Int] `compare` not p :: Bool  =  LT
+_ :: [Int] `compare` not False :: Bool  =  LT
+_ :: [Int] `compare` not True :: Bool  =  LT
+_ :: [Int] `compare` not (not _) :: Bool  =  LT
+_ :: [Int] `compare` _ || _ :: Bool  =  LT
+_ :: [Int] `compare` d :: Char  =  GT
+_ :: [Int] `compare` ' ' :: Char  =  LT
+_ :: [Int] `compare` ys :: [Int]  =  LT
+_ :: [Int] `compare` [0] :: [Int]  =  LT
+_ :: [Int] `compare` _:xs :: [Int]  =  LT
+_ :: [Int] `compare` [_] :: [Int]  =  LT
+_ :: [Int] `compare` _:_:_ :: [Int]  =  LT
+_ :: [Int] `compare` x:_ :: [Int]  =  LT
+_ :: [Int] `compare` 0:_ :: [Int]  =  LT
+_ :: [Int] `compare` id _:_ :: [Int]  =  LT
+_ :: [Int] `compare` tail _ :: [Int]  =  LT
+_ :: [Int] `compare` _ ++ _ :: [Int]  =  LT
+_ :: [Int] `compare` negate :: Int -> Int  =  LT
+_ :: [Int] `compare` abs :: Int -> Int  =  LT
+_ :: [Int] `compare` (_ +) :: Int -> Int  =  LT
+_ :: [Int] `compare` (*) :: Int -> Int -> Int  =  LT
+_ :: [Int] `compare` not :: Bool -> Bool  =  LT
+_ :: [Int] `compare` (||) :: Bool -> Bool -> Bool  =  LT
+y :: Int `compare` y :: Int  =  EQ
+y :: Int `compare` 1 :: Int  =  LT
+y :: Int `compare` id x :: Int  =  LT
+y :: Int `compare` id 0 :: Int  =  LT
+y :: Int `compare` id (id _) :: Int  =  LT
+y :: Int `compare` negate _ :: Int  =  LT
+y :: Int `compare` abs _ :: Int  =  LT
+y :: Int `compare` _ + _ :: Int  =  LT
+y :: Int `compare` head _ :: Int  =  LT
+y :: Int `compare` ord _ :: Int  =  LT
+y :: Int `compare` p :: Bool  =  GT
+y :: Int `compare` False :: Bool  =  LT
+y :: Int `compare` True :: Bool  =  LT
+y :: Int `compare` not _ :: Bool  =  LT
+y :: Int `compare` c :: Char  =  GT
+y :: Int `compare` 'a' :: Char  =  LT
+y :: Int `compare` xs :: [Int]  =  LT
+y :: Int `compare` [] :: [Int]  =  LT
+y :: Int `compare` _:_ :: [Int]  =  LT
+y :: Int `compare` id :: Int -> Int  =  LT
+y :: Int `compare` (+) :: Int -> Int -> Int  =  LT
+1 :: Int `compare` y :: Int  =  GT
+1 :: Int `compare` 1 :: Int  =  EQ
+1 :: Int `compare` id x :: Int  =  LT
+1 :: Int `compare` id 0 :: Int  =  LT
+1 :: Int `compare` id (id _) :: Int  =  LT
+1 :: Int `compare` negate _ :: Int  =  LT
+1 :: Int `compare` abs _ :: Int  =  LT
+1 :: Int `compare` _ + _ :: Int  =  LT
+1 :: Int `compare` head _ :: Int  =  LT
+1 :: Int `compare` ord _ :: Int  =  LT
+1 :: Int `compare` p :: Bool  =  GT
+1 :: Int `compare` False :: Bool  =  GT
+1 :: Int `compare` True :: Bool  =  GT
+1 :: Int `compare` not _ :: Bool  =  LT
+1 :: Int `compare` c :: Char  =  GT
+1 :: Int `compare` 'a' :: Char  =  GT
+1 :: Int `compare` xs :: [Int]  =  GT
+1 :: Int `compare` [] :: [Int]  =  LT
+1 :: Int `compare` _:_ :: [Int]  =  LT
+1 :: Int `compare` id :: Int -> Int  =  LT
+1 :: Int `compare` (+) :: Int -> Int -> Int  =  LT
+id x :: Int `compare` y :: Int  =  GT
+id x :: Int `compare` 1 :: Int  =  GT
+id x :: Int `compare` id x :: Int  =  EQ
+id x :: Int `compare` id 0 :: Int  =  LT
+id x :: Int `compare` id (id _) :: Int  =  LT
+id x :: Int `compare` negate _ :: Int  =  LT
+id x :: Int `compare` abs _ :: Int  =  LT
+id x :: Int `compare` _ + _ :: Int  =  LT
+id x :: Int `compare` head _ :: Int  =  LT
+id x :: Int `compare` ord _ :: Int  =  GT
+id x :: Int `compare` p :: Bool  =  GT
+id x :: Int `compare` False :: Bool  =  GT
+id x :: Int `compare` True :: Bool  =  GT
+id x :: Int `compare` not _ :: Bool  =  GT
+id x :: Int `compare` c :: Char  =  GT
+id x :: Int `compare` 'a' :: Char  =  GT
+id x :: Int `compare` xs :: [Int]  =  GT
+id x :: Int `compare` [] :: [Int]  =  GT
+id x :: Int `compare` _:_ :: [Int]  =  LT
+id x :: Int `compare` id :: Int -> Int  =  GT
+id x :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id 0 :: Int `compare` y :: Int  =  GT
+id 0 :: Int `compare` 1 :: Int  =  GT
+id 0 :: Int `compare` id x :: Int  =  GT
+id 0 :: Int `compare` id 0 :: Int  =  EQ
+id 0 :: Int `compare` id (id _) :: Int  =  LT
+id 0 :: Int `compare` negate _ :: Int  =  GT
+id 0 :: Int `compare` abs _ :: Int  =  GT
+id 0 :: Int `compare` _ + _ :: Int  =  LT
+id 0 :: Int `compare` head _ :: Int  =  GT
+id 0 :: Int `compare` ord _ :: Int  =  GT
+id 0 :: Int `compare` p :: Bool  =  GT
+id 0 :: Int `compare` False :: Bool  =  GT
+id 0 :: Int `compare` True :: Bool  =  GT
+id 0 :: Int `compare` not _ :: Bool  =  GT
+id 0 :: Int `compare` c :: Char  =  GT
+id 0 :: Int `compare` 'a' :: Char  =  GT
+id 0 :: Int `compare` xs :: [Int]  =  GT
+id 0 :: Int `compare` [] :: [Int]  =  GT
+id 0 :: Int `compare` _:_ :: [Int]  =  LT
+id 0 :: Int `compare` id :: Int -> Int  =  GT
+id 0 :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id (id _) :: Int `compare` y :: Int  =  GT
+id (id _) :: Int `compare` 1 :: Int  =  GT
+id (id _) :: Int `compare` id x :: Int  =  GT
+id (id _) :: Int `compare` id 0 :: Int  =  GT
+id (id _) :: Int `compare` id (id _) :: Int  =  EQ
+id (id _) :: Int `compare` negate _ :: Int  =  GT
+id (id _) :: Int `compare` abs _ :: Int  =  GT
+id (id _) :: Int `compare` _ + _ :: Int  =  GT
+id (id _) :: Int `compare` head _ :: Int  =  GT
+id (id _) :: Int `compare` ord _ :: Int  =  GT
+id (id _) :: Int `compare` p :: Bool  =  GT
+id (id _) :: Int `compare` False :: Bool  =  GT
+id (id _) :: Int `compare` True :: Bool  =  GT
+id (id _) :: Int `compare` not _ :: Bool  =  GT
+id (id _) :: Int `compare` c :: Char  =  GT
+id (id _) :: Int `compare` 'a' :: Char  =  GT
+id (id _) :: Int `compare` xs :: [Int]  =  GT
+id (id _) :: Int `compare` [] :: [Int]  =  GT
+id (id _) :: Int `compare` _:_ :: [Int]  =  GT
+id (id _) :: Int `compare` id :: Int -> Int  =  GT
+id (id _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+negate _ :: Int `compare` y :: Int  =  GT
+negate _ :: Int `compare` 1 :: Int  =  GT
+negate _ :: Int `compare` id x :: Int  =  GT
+negate _ :: Int `compare` id 0 :: Int  =  LT
+negate _ :: Int `compare` id (id _) :: Int  =  LT
+negate _ :: Int `compare` negate _ :: Int  =  EQ
+negate _ :: Int `compare` abs _ :: Int  =  GT
+negate _ :: Int `compare` _ + _ :: Int  =  LT
+negate _ :: Int `compare` head _ :: Int  =  LT
+negate _ :: Int `compare` ord _ :: Int  =  GT
+negate _ :: Int `compare` p :: Bool  =  GT
+negate _ :: Int `compare` False :: Bool  =  GT
+negate _ :: Int `compare` True :: Bool  =  GT
+negate _ :: Int `compare` not _ :: Bool  =  GT
+negate _ :: Int `compare` c :: Char  =  GT
+negate _ :: Int `compare` 'a' :: Char  =  GT
+negate _ :: Int `compare` xs :: [Int]  =  GT
+negate _ :: Int `compare` [] :: [Int]  =  GT
+negate _ :: Int `compare` _:_ :: [Int]  =  LT
+negate _ :: Int `compare` id :: Int -> Int  =  GT
+negate _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+abs _ :: Int `compare` y :: Int  =  GT
+abs _ :: Int `compare` 1 :: Int  =  GT
+abs _ :: Int `compare` id x :: Int  =  GT
+abs _ :: Int `compare` id 0 :: Int  =  LT
+abs _ :: Int `compare` id (id _) :: Int  =  LT
+abs _ :: Int `compare` negate _ :: Int  =  LT
+abs _ :: Int `compare` abs _ :: Int  =  EQ
+abs _ :: Int `compare` _ + _ :: Int  =  LT
+abs _ :: Int `compare` head _ :: Int  =  LT
+abs _ :: Int `compare` ord _ :: Int  =  GT
+abs _ :: Int `compare` p :: Bool  =  GT
+abs _ :: Int `compare` False :: Bool  =  GT
+abs _ :: Int `compare` True :: Bool  =  GT
+abs _ :: Int `compare` not _ :: Bool  =  GT
+abs _ :: Int `compare` c :: Char  =  GT
+abs _ :: Int `compare` 'a' :: Char  =  GT
+abs _ :: Int `compare` xs :: [Int]  =  GT
+abs _ :: Int `compare` [] :: [Int]  =  GT
+abs _ :: Int `compare` _:_ :: [Int]  =  LT
+abs _ :: Int `compare` id :: Int -> Int  =  GT
+abs _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+_ + _ :: Int `compare` y :: Int  =  GT
+_ + _ :: Int `compare` 1 :: Int  =  GT
+_ + _ :: Int `compare` id x :: Int  =  GT
+_ + _ :: Int `compare` id 0 :: Int  =  GT
+_ + _ :: Int `compare` id (id _) :: Int  =  LT
+_ + _ :: Int `compare` negate _ :: Int  =  GT
+_ + _ :: Int `compare` abs _ :: Int  =  GT
+_ + _ :: Int `compare` _ + _ :: Int  =  EQ
+_ + _ :: Int `compare` head _ :: Int  =  GT
+_ + _ :: Int `compare` ord _ :: Int  =  GT
+_ + _ :: Int `compare` p :: Bool  =  GT
+_ + _ :: Int `compare` False :: Bool  =  GT
+_ + _ :: Int `compare` True :: Bool  =  GT
+_ + _ :: Int `compare` not _ :: Bool  =  GT
+_ + _ :: Int `compare` c :: Char  =  GT
+_ + _ :: Int `compare` 'a' :: Char  =  GT
+_ + _ :: Int `compare` xs :: [Int]  =  GT
+_ + _ :: Int `compare` [] :: [Int]  =  GT
+_ + _ :: Int `compare` _:_ :: [Int]  =  GT
+_ + _ :: Int `compare` id :: Int -> Int  =  GT
+_ + _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+head _ :: Int `compare` y :: Int  =  GT
+head _ :: Int `compare` 1 :: Int  =  GT
+head _ :: Int `compare` id x :: Int  =  GT
+head _ :: Int `compare` id 0 :: Int  =  LT
+head _ :: Int `compare` id (id _) :: Int  =  LT
+head _ :: Int `compare` negate _ :: Int  =  GT
+head _ :: Int `compare` abs _ :: Int  =  GT
+head _ :: Int `compare` _ + _ :: Int  =  LT
+head _ :: Int `compare` head _ :: Int  =  EQ
+head _ :: Int `compare` ord _ :: Int  =  GT
+head _ :: Int `compare` p :: Bool  =  GT
+head _ :: Int `compare` False :: Bool  =  GT
+head _ :: Int `compare` True :: Bool  =  GT
+head _ :: Int `compare` not _ :: Bool  =  GT
+head _ :: Int `compare` c :: Char  =  GT
+head _ :: Int `compare` 'a' :: Char  =  GT
+head _ :: Int `compare` xs :: [Int]  =  GT
+head _ :: Int `compare` [] :: [Int]  =  GT
+head _ :: Int `compare` _:_ :: [Int]  =  LT
+head _ :: Int `compare` id :: Int -> Int  =  GT
+head _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+ord _ :: Int `compare` y :: Int  =  GT
+ord _ :: Int `compare` 1 :: Int  =  GT
+ord _ :: Int `compare` id x :: Int  =  LT
+ord _ :: Int `compare` id 0 :: Int  =  LT
+ord _ :: Int `compare` id (id _) :: Int  =  LT
+ord _ :: Int `compare` negate _ :: Int  =  LT
+ord _ :: Int `compare` abs _ :: Int  =  LT
+ord _ :: Int `compare` _ + _ :: Int  =  LT
+ord _ :: Int `compare` head _ :: Int  =  LT
+ord _ :: Int `compare` ord _ :: Int  =  EQ
+ord _ :: Int `compare` p :: Bool  =  GT
+ord _ :: Int `compare` False :: Bool  =  GT
+ord _ :: Int `compare` True :: Bool  =  GT
+ord _ :: Int `compare` not _ :: Bool  =  GT
+ord _ :: Int `compare` c :: Char  =  GT
+ord _ :: Int `compare` 'a' :: Char  =  GT
+ord _ :: Int `compare` xs :: [Int]  =  GT
+ord _ :: Int `compare` [] :: [Int]  =  GT
+ord _ :: Int `compare` _:_ :: [Int]  =  LT
+ord _ :: Int `compare` id :: Int -> Int  =  GT
+ord _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+p :: Bool `compare` y :: Int  =  LT
+p :: Bool `compare` 1 :: Int  =  LT
+p :: Bool `compare` id x :: Int  =  LT
+p :: Bool `compare` id 0 :: Int  =  LT
+p :: Bool `compare` id (id _) :: Int  =  LT
+p :: Bool `compare` negate _ :: Int  =  LT
+p :: Bool `compare` abs _ :: Int  =  LT
+p :: Bool `compare` _ + _ :: Int  =  LT
+p :: Bool `compare` head _ :: Int  =  LT
+p :: Bool `compare` ord _ :: Int  =  LT
+p :: Bool `compare` p :: Bool  =  EQ
+p :: Bool `compare` False :: Bool  =  LT
+p :: Bool `compare` True :: Bool  =  LT
+p :: Bool `compare` not _ :: Bool  =  LT
+p :: Bool `compare` c :: Char  =  LT
+p :: Bool `compare` 'a' :: Char  =  LT
+p :: Bool `compare` xs :: [Int]  =  LT
+p :: Bool `compare` [] :: [Int]  =  LT
+p :: Bool `compare` _:_ :: [Int]  =  LT
+p :: Bool `compare` id :: Int -> Int  =  LT
+p :: Bool `compare` (+) :: Int -> Int -> Int  =  LT
+False :: Bool `compare` y :: Int  =  GT
+False :: Bool `compare` 1 :: Int  =  LT
+False :: Bool `compare` id x :: Int  =  LT
+False :: Bool `compare` id 0 :: Int  =  LT
+False :: Bool `compare` id (id _) :: Int  =  LT
+False :: Bool `compare` negate _ :: Int  =  LT
+False :: Bool `compare` abs _ :: Int  =  LT
+False :: Bool `compare` _ + _ :: Int  =  LT
+False :: Bool `compare` head _ :: Int  =  LT
+False :: Bool `compare` ord _ :: Int  =  LT
+False :: Bool `compare` p :: Bool  =  GT
+False :: Bool `compare` False :: Bool  =  EQ
+False :: Bool `compare` True :: Bool  =  LT
+False :: Bool `compare` not _ :: Bool  =  LT
+False :: Bool `compare` c :: Char  =  GT
+False :: Bool `compare` 'a' :: Char  =  LT
+False :: Bool `compare` xs :: [Int]  =  GT
+False :: Bool `compare` [] :: [Int]  =  LT
+False :: Bool `compare` _:_ :: [Int]  =  LT
+False :: Bool `compare` id :: Int -> Int  =  LT
+False :: Bool `compare` (+) :: Int -> Int -> Int  =  LT
+True :: Bool `compare` y :: Int  =  GT
+True :: Bool `compare` 1 :: Int  =  LT
+True :: Bool `compare` id x :: Int  =  LT
+True :: Bool `compare` id 0 :: Int  =  LT
+True :: Bool `compare` id (id _) :: Int  =  LT
+True :: Bool `compare` negate _ :: Int  =  LT
+True :: Bool `compare` abs _ :: Int  =  LT
+True :: Bool `compare` _ + _ :: Int  =  LT
+True :: Bool `compare` head _ :: Int  =  LT
+True :: Bool `compare` ord _ :: Int  =  LT
+True :: Bool `compare` p :: Bool  =  GT
+True :: Bool `compare` False :: Bool  =  GT
+True :: Bool `compare` True :: Bool  =  EQ
+True :: Bool `compare` not _ :: Bool  =  LT
+True :: Bool `compare` c :: Char  =  GT
+True :: Bool `compare` 'a' :: Char  =  LT
+True :: Bool `compare` xs :: [Int]  =  GT
+True :: Bool `compare` [] :: [Int]  =  LT
+True :: Bool `compare` _:_ :: [Int]  =  LT
+True :: Bool `compare` id :: Int -> Int  =  LT
+True :: Bool `compare` (+) :: Int -> Int -> Int  =  LT
+not _ :: Bool `compare` y :: Int  =  GT
+not _ :: Bool `compare` 1 :: Int  =  GT
+not _ :: Bool `compare` id x :: Int  =  LT
+not _ :: Bool `compare` id 0 :: Int  =  LT
+not _ :: Bool `compare` id (id _) :: Int  =  LT
+not _ :: Bool `compare` negate _ :: Int  =  LT
+not _ :: Bool `compare` abs _ :: Int  =  LT
+not _ :: Bool `compare` _ + _ :: Int  =  LT
+not _ :: Bool `compare` head _ :: Int  =  LT
+not _ :: Bool `compare` ord _ :: Int  =  LT
+not _ :: Bool `compare` p :: Bool  =  GT
+not _ :: Bool `compare` False :: Bool  =  GT
+not _ :: Bool `compare` True :: Bool  =  GT
+not _ :: Bool `compare` not _ :: Bool  =  EQ
+not _ :: Bool `compare` c :: Char  =  GT
+not _ :: Bool `compare` 'a' :: Char  =  GT
+not _ :: Bool `compare` xs :: [Int]  =  GT
+not _ :: Bool `compare` [] :: [Int]  =  GT
+not _ :: Bool `compare` _:_ :: [Int]  =  LT
+not _ :: Bool `compare` id :: Int -> Int  =  GT
+not _ :: Bool `compare` (+) :: Int -> Int -> Int  =  GT
+c :: Char `compare` y :: Int  =  LT
+c :: Char `compare` 1 :: Int  =  LT
+c :: Char `compare` id x :: Int  =  LT
+c :: Char `compare` id 0 :: Int  =  LT
+c :: Char `compare` id (id _) :: Int  =  LT
+c :: Char `compare` negate _ :: Int  =  LT
+c :: Char `compare` abs _ :: Int  =  LT
+c :: Char `compare` _ + _ :: Int  =  LT
+c :: Char `compare` head _ :: Int  =  LT
+c :: Char `compare` ord _ :: Int  =  LT
+c :: Char `compare` p :: Bool  =  GT
+c :: Char `compare` False :: Bool  =  LT
+c :: Char `compare` True :: Bool  =  LT
+c :: Char `compare` not _ :: Bool  =  LT
+c :: Char `compare` c :: Char  =  EQ
+c :: Char `compare` 'a' :: Char  =  LT
+c :: Char `compare` xs :: [Int]  =  LT
+c :: Char `compare` [] :: [Int]  =  LT
+c :: Char `compare` _:_ :: [Int]  =  LT
+c :: Char `compare` id :: Int -> Int  =  LT
+c :: Char `compare` (+) :: Int -> Int -> Int  =  LT
+'a' :: Char `compare` y :: Int  =  GT
+'a' :: Char `compare` 1 :: Int  =  LT
+'a' :: Char `compare` id x :: Int  =  LT
+'a' :: Char `compare` id 0 :: Int  =  LT
+'a' :: Char `compare` id (id _) :: Int  =  LT
+'a' :: Char `compare` negate _ :: Int  =  LT
+'a' :: Char `compare` abs _ :: Int  =  LT
+'a' :: Char `compare` _ + _ :: Int  =  LT
+'a' :: Char `compare` head _ :: Int  =  LT
+'a' :: Char `compare` ord _ :: Int  =  LT
+'a' :: Char `compare` p :: Bool  =  GT
+'a' :: Char `compare` False :: Bool  =  GT
+'a' :: Char `compare` True :: Bool  =  GT
+'a' :: Char `compare` not _ :: Bool  =  LT
+'a' :: Char `compare` c :: Char  =  GT
+'a' :: Char `compare` 'a' :: Char  =  EQ
+'a' :: Char `compare` xs :: [Int]  =  GT
+'a' :: Char `compare` [] :: [Int]  =  LT
+'a' :: Char `compare` _:_ :: [Int]  =  LT
+'a' :: Char `compare` id :: Int -> Int  =  LT
+'a' :: Char `compare` (+) :: Int -> Int -> Int  =  LT
+xs :: [Int] `compare` y :: Int  =  GT
+xs :: [Int] `compare` 1 :: Int  =  LT
+xs :: [Int] `compare` id x :: Int  =  LT
+xs :: [Int] `compare` id 0 :: Int  =  LT
+xs :: [Int] `compare` id (id _) :: Int  =  LT
+xs :: [Int] `compare` negate _ :: Int  =  LT
+xs :: [Int] `compare` abs _ :: Int  =  LT
+xs :: [Int] `compare` _ + _ :: Int  =  LT
+xs :: [Int] `compare` head _ :: Int  =  LT
+xs :: [Int] `compare` ord _ :: Int  =  LT
+xs :: [Int] `compare` p :: Bool  =  GT
+xs :: [Int] `compare` False :: Bool  =  LT
+xs :: [Int] `compare` True :: Bool  =  LT
+xs :: [Int] `compare` not _ :: Bool  =  LT
+xs :: [Int] `compare` c :: Char  =  GT
+xs :: [Int] `compare` 'a' :: Char  =  LT
+xs :: [Int] `compare` xs :: [Int]  =  EQ
+xs :: [Int] `compare` [] :: [Int]  =  LT
+xs :: [Int] `compare` _:_ :: [Int]  =  LT
+xs :: [Int] `compare` id :: Int -> Int  =  LT
+xs :: [Int] `compare` (+) :: Int -> Int -> Int  =  LT
+[] :: [Int] `compare` y :: Int  =  GT
+[] :: [Int] `compare` 1 :: Int  =  GT
+[] :: [Int] `compare` id x :: Int  =  LT
+[] :: [Int] `compare` id 0 :: Int  =  LT
+[] :: [Int] `compare` id (id _) :: Int  =  LT
+[] :: [Int] `compare` negate _ :: Int  =  LT
+[] :: [Int] `compare` abs _ :: Int  =  LT
+[] :: [Int] `compare` _ + _ :: Int  =  LT
+[] :: [Int] `compare` head _ :: Int  =  LT
+[] :: [Int] `compare` ord _ :: Int  =  LT
+[] :: [Int] `compare` p :: Bool  =  GT
+[] :: [Int] `compare` False :: Bool  =  GT
+[] :: [Int] `compare` True :: Bool  =  GT
+[] :: [Int] `compare` not _ :: Bool  =  LT
+[] :: [Int] `compare` c :: Char  =  GT
+[] :: [Int] `compare` 'a' :: Char  =  GT
+[] :: [Int] `compare` xs :: [Int]  =  GT
+[] :: [Int] `compare` [] :: [Int]  =  EQ
+[] :: [Int] `compare` _:_ :: [Int]  =  LT
+[] :: [Int] `compare` id :: Int -> Int  =  LT
+[] :: [Int] `compare` (+) :: Int -> Int -> Int  =  LT
+_:_ :: [Int] `compare` y :: Int  =  GT
+_:_ :: [Int] `compare` 1 :: Int  =  GT
+_:_ :: [Int] `compare` id x :: Int  =  GT
+_:_ :: [Int] `compare` id 0 :: Int  =  GT
+_:_ :: [Int] `compare` id (id _) :: Int  =  LT
+_:_ :: [Int] `compare` negate _ :: Int  =  GT
+_:_ :: [Int] `compare` abs _ :: Int  =  GT
+_:_ :: [Int] `compare` _ + _ :: Int  =  LT
+_:_ :: [Int] `compare` head _ :: Int  =  GT
+_:_ :: [Int] `compare` ord _ :: Int  =  GT
+_:_ :: [Int] `compare` p :: Bool  =  GT
+_:_ :: [Int] `compare` False :: Bool  =  GT
+_:_ :: [Int] `compare` True :: Bool  =  GT
+_:_ :: [Int] `compare` not _ :: Bool  =  GT
+_:_ :: [Int] `compare` c :: Char  =  GT
+_:_ :: [Int] `compare` 'a' :: Char  =  GT
+_:_ :: [Int] `compare` xs :: [Int]  =  GT
+_:_ :: [Int] `compare` [] :: [Int]  =  GT
+_:_ :: [Int] `compare` _:_ :: [Int]  =  EQ
+_:_ :: [Int] `compare` id :: Int -> Int  =  GT
+_:_ :: [Int] `compare` (+) :: Int -> Int -> Int  =  GT
+id :: Int -> Int `compare` y :: Int  =  GT
+id :: Int -> Int `compare` 1 :: Int  =  GT
+id :: Int -> Int `compare` id x :: Int  =  LT
+id :: Int -> Int `compare` id 0 :: Int  =  LT
+id :: Int -> Int `compare` id (id _) :: Int  =  LT
+id :: Int -> Int `compare` negate _ :: Int  =  LT
+id :: Int -> Int `compare` abs _ :: Int  =  LT
+id :: Int -> Int `compare` _ + _ :: Int  =  LT
+id :: Int -> Int `compare` head _ :: Int  =  LT
+id :: Int -> Int `compare` ord _ :: Int  =  LT
+id :: Int -> Int `compare` p :: Bool  =  GT
+id :: Int -> Int `compare` False :: Bool  =  GT
+id :: Int -> Int `compare` True :: Bool  =  GT
+id :: Int -> Int `compare` not _ :: Bool  =  LT
+id :: Int -> Int `compare` c :: Char  =  GT
+id :: Int -> Int `compare` 'a' :: Char  =  GT
+id :: Int -> Int `compare` xs :: [Int]  =  GT
+id :: Int -> Int `compare` [] :: [Int]  =  GT
+id :: Int -> Int `compare` _:_ :: [Int]  =  LT
+id :: Int -> Int `compare` id :: Int -> Int  =  EQ
+id :: Int -> Int `compare` (+) :: Int -> Int -> Int  =  LT
+(+) :: Int -> Int -> Int `compare` y :: Int  =  GT
+(+) :: Int -> Int -> Int `compare` 1 :: Int  =  GT
+(+) :: Int -> Int -> Int `compare` id x :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id 0 :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id (id _) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` negate _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` abs _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` _ + _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` head _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` ord _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` p :: Bool  =  GT
+(+) :: Int -> Int -> Int `compare` False :: Bool  =  GT
+(+) :: Int -> Int -> Int `compare` True :: Bool  =  GT
+(+) :: Int -> Int -> Int `compare` not _ :: Bool  =  LT
+(+) :: Int -> Int -> Int `compare` c :: Char  =  GT
+(+) :: Int -> Int -> Int `compare` 'a' :: Char  =  GT
+(+) :: Int -> Int -> Int `compare` xs :: [Int]  =  GT
+(+) :: Int -> Int -> Int `compare` [] :: [Int]  =  GT
+(+) :: Int -> Int -> Int `compare` _:_ :: [Int]  =  LT
+(+) :: Int -> Int -> Int `compare` id :: Int -> Int  =  GT
+(+) :: Int -> Int -> Int `compare` (+) :: Int -> Int -> Int  =  EQ
+z :: Int `compare` x :: Int  =  GT
+z :: Int `compare` 0 :: Int  =  LT
+z :: Int `compare` id _ :: Int  =  LT
+z :: Int `compare` _ :: Bool  =  GT
+z :: Int `compare` _ :: Char  =  GT
+z :: Int `compare` _ :: [Int]  =  LT
+-1 :: Int `compare` x :: Int  =  GT
+-1 :: Int `compare` 0 :: Int  =  GT
+-1 :: Int `compare` id _ :: Int  =  LT
+-1 :: Int `compare` _ :: Bool  =  GT
+-1 :: Int `compare` _ :: Char  =  GT
+-1 :: Int `compare` _ :: [Int]  =  GT
+id y :: Int `compare` x :: Int  =  GT
+id y :: Int `compare` 0 :: Int  =  GT
+id y :: Int `compare` id _ :: Int  =  GT
+id y :: Int `compare` _ :: Bool  =  GT
+id y :: Int `compare` _ :: Char  =  GT
+id y :: Int `compare` _ :: [Int]  =  GT
+id 1 :: Int `compare` x :: Int  =  GT
+id 1 :: Int `compare` 0 :: Int  =  GT
+id 1 :: Int `compare` id _ :: Int  =  GT
+id 1 :: Int `compare` _ :: Bool  =  GT
+id 1 :: Int `compare` _ :: Char  =  GT
+id 1 :: Int `compare` _ :: [Int]  =  GT
+id (id x) :: Int `compare` x :: Int  =  GT
+id (id x) :: Int `compare` 0 :: Int  =  GT
+id (id x) :: Int `compare` id _ :: Int  =  GT
+id (id x) :: Int `compare` _ :: Bool  =  GT
+id (id x) :: Int `compare` _ :: Char  =  GT
+id (id x) :: Int `compare` _ :: [Int]  =  GT
+id (id 0) :: Int `compare` x :: Int  =  GT
+id (id 0) :: Int `compare` 0 :: Int  =  GT
+id (id 0) :: Int `compare` id _ :: Int  =  GT
+id (id 0) :: Int `compare` _ :: Bool  =  GT
+id (id 0) :: Int `compare` _ :: Char  =  GT
+id (id 0) :: Int `compare` _ :: [Int]  =  GT
+id (id (id _)) :: Int `compare` x :: Int  =  GT
+id (id (id _)) :: Int `compare` 0 :: Int  =  GT
+id (id (id _)) :: Int `compare` id _ :: Int  =  GT
+id (id (id _)) :: Int `compare` _ :: Bool  =  GT
+id (id (id _)) :: Int `compare` _ :: Char  =  GT
+id (id (id _)) :: Int `compare` _ :: [Int]  =  GT
+id (negate _) :: Int `compare` x :: Int  =  GT
+id (negate _) :: Int `compare` 0 :: Int  =  GT
+id (negate _) :: Int `compare` id _ :: Int  =  GT
+id (negate _) :: Int `compare` _ :: Bool  =  GT
+id (negate _) :: Int `compare` _ :: Char  =  GT
+id (negate _) :: Int `compare` _ :: [Int]  =  GT
+id (abs _) :: Int `compare` x :: Int  =  GT
+id (abs _) :: Int `compare` 0 :: Int  =  GT
+id (abs _) :: Int `compare` id _ :: Int  =  GT
+id (abs _) :: Int `compare` _ :: Bool  =  GT
+id (abs _) :: Int `compare` _ :: Char  =  GT
+id (abs _) :: Int `compare` _ :: [Int]  =  GT
+id (_ + _) :: Int `compare` x :: Int  =  GT
+id (_ + _) :: Int `compare` 0 :: Int  =  GT
+id (_ + _) :: Int `compare` id _ :: Int  =  GT
+id (_ + _) :: Int `compare` _ :: Bool  =  GT
+id (_ + _) :: Int `compare` _ :: Char  =  GT
+id (_ + _) :: Int `compare` _ :: [Int]  =  GT
+id (head _) :: Int `compare` x :: Int  =  GT
+id (head _) :: Int `compare` 0 :: Int  =  GT
+id (head _) :: Int `compare` id _ :: Int  =  GT
+id (head _) :: Int `compare` _ :: Bool  =  GT
+id (head _) :: Int `compare` _ :: Char  =  GT
+id (head _) :: Int `compare` _ :: [Int]  =  GT
+id (ord _) :: Int `compare` x :: Int  =  GT
+id (ord _) :: Int `compare` 0 :: Int  =  GT
+id (ord _) :: Int `compare` id _ :: Int  =  GT
+id (ord _) :: Int `compare` _ :: Bool  =  GT
+id (ord _) :: Int `compare` _ :: Char  =  GT
+id (ord _) :: Int `compare` _ :: [Int]  =  GT
+negate x :: Int `compare` x :: Int  =  GT
+negate x :: Int `compare` 0 :: Int  =  GT
+negate x :: Int `compare` id _ :: Int  =  GT
+negate x :: Int `compare` _ :: Bool  =  GT
+negate x :: Int `compare` _ :: Char  =  GT
+negate x :: Int `compare` _ :: [Int]  =  GT
+negate 0 :: Int `compare` x :: Int  =  GT
+negate 0 :: Int `compare` 0 :: Int  =  GT
+negate 0 :: Int `compare` id _ :: Int  =  GT
+negate 0 :: Int `compare` _ :: Bool  =  GT
+negate 0 :: Int `compare` _ :: Char  =  GT
+negate 0 :: Int `compare` _ :: [Int]  =  GT
+negate (id _) :: Int `compare` x :: Int  =  GT
+negate (id _) :: Int `compare` 0 :: Int  =  GT
+negate (id _) :: Int `compare` id _ :: Int  =  GT
+negate (id _) :: Int `compare` _ :: Bool  =  GT
+negate (id _) :: Int `compare` _ :: Char  =  GT
+negate (id _) :: Int `compare` _ :: [Int]  =  GT
+abs x :: Int `compare` x :: Int  =  GT
+abs x :: Int `compare` 0 :: Int  =  GT
+abs x :: Int `compare` id _ :: Int  =  GT
+abs x :: Int `compare` _ :: Bool  =  GT
+abs x :: Int `compare` _ :: Char  =  GT
+abs x :: Int `compare` _ :: [Int]  =  GT
+abs 0 :: Int `compare` x :: Int  =  GT
+abs 0 :: Int `compare` 0 :: Int  =  GT
+abs 0 :: Int `compare` id _ :: Int  =  GT
+abs 0 :: Int `compare` _ :: Bool  =  GT
+abs 0 :: Int `compare` _ :: Char  =  GT
+abs 0 :: Int `compare` _ :: [Int]  =  GT
+abs (id _) :: Int `compare` x :: Int  =  GT
+abs (id _) :: Int `compare` 0 :: Int  =  GT
+abs (id _) :: Int `compare` id _ :: Int  =  GT
+abs (id _) :: Int `compare` _ :: Bool  =  GT
+abs (id _) :: Int `compare` _ :: Char  =  GT
+abs (id _) :: Int `compare` _ :: [Int]  =  GT
+_ + x :: Int `compare` x :: Int  =  GT
+_ + x :: Int `compare` 0 :: Int  =  GT
+_ + x :: Int `compare` id _ :: Int  =  GT
+_ + x :: Int `compare` _ :: Bool  =  GT
+_ + x :: Int `compare` _ :: Char  =  GT
+_ + x :: Int `compare` _ :: [Int]  =  GT
+_ + 0 :: Int `compare` x :: Int  =  GT
+_ + 0 :: Int `compare` 0 :: Int  =  GT
+_ + 0 :: Int `compare` id _ :: Int  =  GT
+_ + 0 :: Int `compare` _ :: Bool  =  GT
+_ + 0 :: Int `compare` _ :: Char  =  GT
+_ + 0 :: Int `compare` _ :: [Int]  =  GT
+_ + id _ :: Int `compare` x :: Int  =  GT
+_ + id _ :: Int `compare` 0 :: Int  =  GT
+_ + id _ :: Int `compare` id _ :: Int  =  GT
+_ + id _ :: Int `compare` _ :: Bool  =  GT
+_ + id _ :: Int `compare` _ :: Char  =  GT
+_ + id _ :: Int `compare` _ :: [Int]  =  GT
+x + _ :: Int `compare` x :: Int  =  GT
+x + _ :: Int `compare` 0 :: Int  =  GT
+x + _ :: Int `compare` id _ :: Int  =  GT
+x + _ :: Int `compare` _ :: Bool  =  GT
+x + _ :: Int `compare` _ :: Char  =  GT
+x + _ :: Int `compare` _ :: [Int]  =  GT
+0 + _ :: Int `compare` x :: Int  =  GT
+0 + _ :: Int `compare` 0 :: Int  =  GT
+0 + _ :: Int `compare` id _ :: Int  =  GT
+0 + _ :: Int `compare` _ :: Bool  =  GT
+0 + _ :: Int `compare` _ :: Char  =  GT
+0 + _ :: Int `compare` _ :: [Int]  =  GT
+id _ + _ :: Int `compare` x :: Int  =  GT
+id _ + _ :: Int `compare` 0 :: Int  =  GT
+id _ + _ :: Int `compare` id _ :: Int  =  GT
+id _ + _ :: Int `compare` _ :: Bool  =  GT
+id _ + _ :: Int `compare` _ :: Char  =  GT
+id _ + _ :: Int `compare` _ :: [Int]  =  GT
+_ * _ :: Int `compare` x :: Int  =  GT
+_ * _ :: Int `compare` 0 :: Int  =  GT
+_ * _ :: Int `compare` id _ :: Int  =  GT
+_ * _ :: Int `compare` _ :: Bool  =  GT
+_ * _ :: Int `compare` _ :: Char  =  GT
+_ * _ :: Int `compare` _ :: [Int]  =  GT
+f _ :: Int `compare` x :: Int  =  GT
+f _ :: Int `compare` 0 :: Int  =  GT
+f _ :: Int `compare` id _ :: Int  =  LT
+f _ :: Int `compare` _ :: Bool  =  GT
+f _ :: Int `compare` _ :: Char  =  GT
+f _ :: Int `compare` _ :: [Int]  =  GT
+head xs :: Int `compare` x :: Int  =  GT
+head xs :: Int `compare` 0 :: Int  =  GT
+head xs :: Int `compare` id _ :: Int  =  GT
+head xs :: Int `compare` _ :: Bool  =  GT
+head xs :: Int `compare` _ :: Char  =  GT
+head xs :: Int `compare` _ :: [Int]  =  GT
+head [] :: Int `compare` x :: Int  =  GT
+head [] :: Int `compare` 0 :: Int  =  GT
+head [] :: Int `compare` id _ :: Int  =  GT
+head [] :: Int `compare` _ :: Bool  =  GT
+head [] :: Int `compare` _ :: Char  =  GT
+head [] :: Int `compare` _ :: [Int]  =  GT
+head (_:_) :: Int `compare` x :: Int  =  GT
+head (_:_) :: Int `compare` 0 :: Int  =  GT
+head (_:_) :: Int `compare` id _ :: Int  =  GT
+head (_:_) :: Int `compare` _ :: Bool  =  GT
+head (_:_) :: Int `compare` _ :: Char  =  GT
+head (_:_) :: Int `compare` _ :: [Int]  =  GT
+ord c :: Int `compare` x :: Int  =  GT
+ord c :: Int `compare` 0 :: Int  =  GT
+ord c :: Int `compare` id _ :: Int  =  LT
+ord c :: Int `compare` _ :: Bool  =  GT
+ord c :: Int `compare` _ :: Char  =  GT
+ord c :: Int `compare` _ :: [Int]  =  GT
+ord 'a' :: Int `compare` x :: Int  =  GT
+ord 'a' :: Int `compare` 0 :: Int  =  GT
+ord 'a' :: Int `compare` id _ :: Int  =  GT
+ord 'a' :: Int `compare` _ :: Bool  =  GT
+ord 'a' :: Int `compare` _ :: Char  =  GT
+ord 'a' :: Int `compare` _ :: [Int]  =  GT
+q :: Bool `compare` x :: Int  =  LT
+q :: Bool `compare` 0 :: Int  =  LT
+q :: Bool `compare` id _ :: Int  =  LT
+q :: Bool `compare` _ :: Bool  =  GT
+q :: Bool `compare` _ :: Char  =  LT
+q :: Bool `compare` _ :: [Int]  =  LT
+not p :: Bool `compare` x :: Int  =  GT
+not p :: Bool `compare` 0 :: Int  =  GT
+not p :: Bool `compare` id _ :: Int  =  LT
+not p :: Bool `compare` _ :: Bool  =  GT
+not p :: Bool `compare` _ :: Char  =  GT
+not p :: Bool `compare` _ :: [Int]  =  GT
+not False :: Bool `compare` x :: Int  =  GT
+not False :: Bool `compare` 0 :: Int  =  GT
+not False :: Bool `compare` id _ :: Int  =  GT
+not False :: Bool `compare` _ :: Bool  =  GT
+not False :: Bool `compare` _ :: Char  =  GT
+not False :: Bool `compare` _ :: [Int]  =  GT
+not True :: Bool `compare` x :: Int  =  GT
+not True :: Bool `compare` 0 :: Int  =  GT
+not True :: Bool `compare` id _ :: Int  =  GT
+not True :: Bool `compare` _ :: Bool  =  GT
+not True :: Bool `compare` _ :: Char  =  GT
+not True :: Bool `compare` _ :: [Int]  =  GT
+not (not _) :: Bool `compare` x :: Int  =  GT
+not (not _) :: Bool `compare` 0 :: Int  =  GT
+not (not _) :: Bool `compare` id _ :: Int  =  GT
+not (not _) :: Bool `compare` _ :: Bool  =  GT
+not (not _) :: Bool `compare` _ :: Char  =  GT
+not (not _) :: Bool `compare` _ :: [Int]  =  GT
+_ || _ :: Bool `compare` x :: Int  =  GT
+_ || _ :: Bool `compare` 0 :: Int  =  GT
+_ || _ :: Bool `compare` id _ :: Int  =  GT
+_ || _ :: Bool `compare` _ :: Bool  =  GT
+_ || _ :: Bool `compare` _ :: Char  =  GT
+_ || _ :: Bool `compare` _ :: [Int]  =  GT
+d :: Char `compare` x :: Int  =  LT
+d :: Char `compare` 0 :: Int  =  LT
+d :: Char `compare` id _ :: Int  =  LT
+d :: Char `compare` _ :: Bool  =  GT
+d :: Char `compare` _ :: Char  =  GT
+d :: Char `compare` _ :: [Int]  =  LT
+' ' :: Char `compare` x :: Int  =  GT
+' ' :: Char `compare` 0 :: Int  =  LT
+' ' :: Char `compare` id _ :: Int  =  LT
+' ' :: Char `compare` _ :: Bool  =  GT
+' ' :: Char `compare` _ :: Char  =  GT
+' ' :: Char `compare` _ :: [Int]  =  GT
+ys :: [Int] `compare` x :: Int  =  GT
+ys :: [Int] `compare` 0 :: Int  =  LT
+ys :: [Int] `compare` id _ :: Int  =  LT
+ys :: [Int] `compare` _ :: Bool  =  GT
+ys :: [Int] `compare` _ :: Char  =  GT
+ys :: [Int] `compare` _ :: [Int]  =  GT
+[0] :: [Int] `compare` x :: Int  =  GT
+[0] :: [Int] `compare` 0 :: Int  =  GT
+[0] :: [Int] `compare` id _ :: Int  =  LT
+[0] :: [Int] `compare` _ :: Bool  =  GT
+[0] :: [Int] `compare` _ :: Char  =  GT
+[0] :: [Int] `compare` _ :: [Int]  =  GT
+_:xs :: [Int] `compare` x :: Int  =  GT
+_:xs :: [Int] `compare` 0 :: Int  =  GT
+_:xs :: [Int] `compare` id _ :: Int  =  GT
+_:xs :: [Int] `compare` _ :: Bool  =  GT
+_:xs :: [Int] `compare` _ :: Char  =  GT
+_:xs :: [Int] `compare` _ :: [Int]  =  GT
+[_] :: [Int] `compare` x :: Int  =  GT
+[_] :: [Int] `compare` 0 :: Int  =  GT
+[_] :: [Int] `compare` id _ :: Int  =  GT
+[_] :: [Int] `compare` _ :: Bool  =  GT
+[_] :: [Int] `compare` _ :: Char  =  GT
+[_] :: [Int] `compare` _ :: [Int]  =  GT
+_:_:_ :: [Int] `compare` x :: Int  =  GT
+_:_:_ :: [Int] `compare` 0 :: Int  =  GT
+_:_:_ :: [Int] `compare` id _ :: Int  =  GT
+_:_:_ :: [Int] `compare` _ :: Bool  =  GT
+_:_:_ :: [Int] `compare` _ :: Char  =  GT
+_:_:_ :: [Int] `compare` _ :: [Int]  =  GT
+x:_ :: [Int] `compare` x :: Int  =  GT
+x:_ :: [Int] `compare` 0 :: Int  =  GT
+x:_ :: [Int] `compare` id _ :: Int  =  GT
+x:_ :: [Int] `compare` _ :: Bool  =  GT
+x:_ :: [Int] `compare` _ :: Char  =  GT
+x:_ :: [Int] `compare` _ :: [Int]  =  GT
+0:_ :: [Int] `compare` x :: Int  =  GT
+0:_ :: [Int] `compare` 0 :: Int  =  GT
+0:_ :: [Int] `compare` id _ :: Int  =  GT
+0:_ :: [Int] `compare` _ :: Bool  =  GT
+0:_ :: [Int] `compare` _ :: Char  =  GT
+0:_ :: [Int] `compare` _ :: [Int]  =  GT
+id _:_ :: [Int] `compare` x :: Int  =  GT
+id _:_ :: [Int] `compare` 0 :: Int  =  GT
+id _:_ :: [Int] `compare` id _ :: Int  =  GT
+id _:_ :: [Int] `compare` _ :: Bool  =  GT
+id _:_ :: [Int] `compare` _ :: Char  =  GT
+id _:_ :: [Int] `compare` _ :: [Int]  =  GT
+tail _ :: [Int] `compare` x :: Int  =  GT
+tail _ :: [Int] `compare` 0 :: Int  =  GT
+tail _ :: [Int] `compare` id _ :: Int  =  GT
+tail _ :: [Int] `compare` _ :: Bool  =  GT
+tail _ :: [Int] `compare` _ :: Char  =  GT
+tail _ :: [Int] `compare` _ :: [Int]  =  GT
+_ ++ _ :: [Int] `compare` x :: Int  =  GT
+_ ++ _ :: [Int] `compare` 0 :: Int  =  GT
+_ ++ _ :: [Int] `compare` id _ :: Int  =  GT
+_ ++ _ :: [Int] `compare` _ :: Bool  =  GT
+_ ++ _ :: [Int] `compare` _ :: Char  =  GT
+_ ++ _ :: [Int] `compare` _ :: [Int]  =  GT
+negate :: Int -> Int `compare` x :: Int  =  GT
+negate :: Int -> Int `compare` 0 :: Int  =  GT
+negate :: Int -> Int `compare` id _ :: Int  =  LT
+negate :: Int -> Int `compare` _ :: Bool  =  GT
+negate :: Int -> Int `compare` _ :: Char  =  GT
+negate :: Int -> Int `compare` _ :: [Int]  =  GT
+abs :: Int -> Int `compare` x :: Int  =  GT
+abs :: Int -> Int `compare` 0 :: Int  =  GT
+abs :: Int -> Int `compare` id _ :: Int  =  LT
+abs :: Int -> Int `compare` _ :: Bool  =  GT
+abs :: Int -> Int `compare` _ :: Char  =  GT
+abs :: Int -> Int `compare` _ :: [Int]  =  GT
+(_ +) :: Int -> Int `compare` x :: Int  =  GT
+(_ +) :: Int -> Int `compare` 0 :: Int  =  GT
+(_ +) :: Int -> Int `compare` id _ :: Int  =  GT
+(_ +) :: Int -> Int `compare` _ :: Bool  =  GT
+(_ +) :: Int -> Int `compare` _ :: Char  =  GT
+(_ +) :: Int -> Int `compare` _ :: [Int]  =  GT
+(*) :: Int -> Int -> Int `compare` x :: Int  =  GT
+(*) :: Int -> Int -> Int `compare` 0 :: Int  =  GT
+(*) :: Int -> Int -> Int `compare` id _ :: Int  =  LT
+(*) :: Int -> Int -> Int `compare` _ :: Bool  =  GT
+(*) :: Int -> Int -> Int `compare` _ :: Char  =  GT
+(*) :: Int -> Int -> Int `compare` _ :: [Int]  =  GT
+not :: Bool -> Bool `compare` x :: Int  =  GT
+not :: Bool -> Bool `compare` 0 :: Int  =  GT
+not :: Bool -> Bool `compare` id _ :: Int  =  LT
+not :: Bool -> Bool `compare` _ :: Bool  =  GT
+not :: Bool -> Bool `compare` _ :: Char  =  GT
+not :: Bool -> Bool `compare` _ :: [Int]  =  GT
+(||) :: Bool -> Bool -> Bool `compare` x :: Int  =  GT
+(||) :: Bool -> Bool -> Bool `compare` 0 :: Int  =  GT
+(||) :: Bool -> Bool -> Bool `compare` id _ :: Int  =  LT
+(||) :: Bool -> Bool -> Bool `compare` _ :: Bool  =  GT
+(||) :: Bool -> Bool -> Bool `compare` _ :: Char  =  GT
+(||) :: Bool -> Bool -> Bool `compare` _ :: [Int]  =  GT
+x' :: Int `compare` _ :: Int  =  GT
+2 :: Int `compare` _ :: Int  =  GT
+id z :: Int `compare` _ :: Int  =  GT
+id (-1) :: Int `compare` _ :: Int  =  GT
+id (id y) :: Int `compare` _ :: Int  =  GT
+id (id 1) :: Int `compare` _ :: Int  =  GT
+id (id (id x)) :: Int `compare` _ :: Int  =  GT
+id (id (id 0)) :: Int `compare` _ :: Int  =  GT
+id (id (id (id _))) :: Int `compare` _ :: Int  =  GT
+id (id (negate _)) :: Int `compare` _ :: Int  =  GT
+id (id (abs _)) :: Int `compare` _ :: Int  =  GT
+id (id (_ + _)) :: Int `compare` _ :: Int  =  GT
+id (id (head _)) :: Int `compare` _ :: Int  =  GT
+id (id (ord _)) :: Int `compare` _ :: Int  =  GT
+id (negate x) :: Int `compare` _ :: Int  =  GT
+id (negate 0) :: Int `compare` _ :: Int  =  GT
+id (negate (id _)) :: Int `compare` _ :: Int  =  GT
+id (abs x) :: Int `compare` _ :: Int  =  GT
+id (abs 0) :: Int `compare` _ :: Int  =  GT
+id (abs (id _)) :: Int `compare` _ :: Int  =  GT
+id (_ + x) :: Int `compare` _ :: Int  =  GT
+id (_ + 0) :: Int `compare` _ :: Int  =  GT
+id (_ + id _) :: Int `compare` _ :: Int  =  GT
+id (x + _) :: Int `compare` _ :: Int  =  GT
+id (0 + _) :: Int `compare` _ :: Int  =  GT
+id (id _ + _) :: Int `compare` _ :: Int  =  GT
+id (_ * _) :: Int `compare` _ :: Int  =  GT
+id (f _) :: Int `compare` _ :: Int  =  GT
+id (head xs) :: Int `compare` _ :: Int  =  GT
+id (head []) :: Int `compare` _ :: Int  =  GT
+id (head (_:_)) :: Int `compare` _ :: Int  =  GT
+id (ord c) :: Int `compare` _ :: Int  =  GT
+id (ord 'a') :: Int `compare` _ :: Int  =  GT
+negate y :: Int `compare` _ :: Int  =  GT
+negate 1 :: Int `compare` _ :: Int  =  GT
+negate (id x) :: Int `compare` _ :: Int  =  GT
+negate (id 0) :: Int `compare` _ :: Int  =  GT
+negate (id (id _)) :: Int `compare` _ :: Int  =  GT
+negate (negate _) :: Int `compare` _ :: Int  =  GT
+negate (abs _) :: Int `compare` _ :: Int  =  GT
+negate (_ + _) :: Int `compare` _ :: Int  =  GT
+negate (head _) :: Int `compare` _ :: Int  =  GT
+negate (ord _) :: Int `compare` _ :: Int  =  GT
+abs y :: Int `compare` _ :: Int  =  GT
+abs 1 :: Int `compare` _ :: Int  =  GT
+abs (id x) :: Int `compare` _ :: Int  =  GT
+abs (id 0) :: Int `compare` _ :: Int  =  GT
+abs (id (id _)) :: Int `compare` _ :: Int  =  GT
+abs (negate _) :: Int `compare` _ :: Int  =  GT
+abs (abs _) :: Int `compare` _ :: Int  =  GT
+abs (_ + _) :: Int `compare` _ :: Int  =  GT
+abs (head _) :: Int `compare` _ :: Int  =  GT
+abs (ord _) :: Int `compare` _ :: Int  =  GT
+_ + y :: Int `compare` _ :: Int  =  GT
+_ + 1 :: Int `compare` _ :: Int  =  GT
+_ + id x :: Int `compare` _ :: Int  =  GT
+_ + id 0 :: Int `compare` _ :: Int  =  GT
+_ + id (id _) :: Int `compare` _ :: Int  =  GT
+_ + negate _ :: Int `compare` _ :: Int  =  GT
+_ + abs _ :: Int `compare` _ :: Int  =  GT
+_ + (_ + _) :: Int `compare` _ :: Int  =  GT
+_ + head _ :: Int `compare` _ :: Int  =  GT
+_ + ord _ :: Int `compare` _ :: Int  =  GT
+x + x :: Int `compare` _ :: Int  =  GT
+x + 0 :: Int `compare` _ :: Int  =  GT
+x + id _ :: Int `compare` _ :: Int  =  GT
+0 + x :: Int `compare` _ :: Int  =  GT
+0 + 0 :: Int `compare` _ :: Int  =  GT
+0 + id _ :: Int `compare` _ :: Int  =  GT
+id _ + x :: Int `compare` _ :: Int  =  GT
+id _ + 0 :: Int `compare` _ :: Int  =  GT
+id _ + id _ :: Int `compare` _ :: Int  =  GT
+_ * x :: Int `compare` _ :: Int  =  GT
+_ * 0 :: Int `compare` _ :: Int  =  GT
+_ * id _ :: Int `compare` _ :: Int  =  GT
+f x :: Int `compare` _ :: Int  =  GT
+f 0 :: Int `compare` _ :: Int  =  GT
+f (id _) :: Int `compare` _ :: Int  =  GT
+y + _ :: Int `compare` _ :: Int  =  GT
+1 + _ :: Int `compare` _ :: Int  =  GT
+id x + _ :: Int `compare` _ :: Int  =  GT
+id 0 + _ :: Int `compare` _ :: Int  =  GT
+id (id _) + _ :: Int `compare` _ :: Int  =  GT
+negate _ + _ :: Int `compare` _ :: Int  =  GT
+abs _ + _ :: Int `compare` _ :: Int  =  GT
+(_ + _) + _ :: Int `compare` _ :: Int  =  GT
+head _ + _ :: Int `compare` _ :: Int  =  GT
+ord _ + _ :: Int `compare` _ :: Int  =  GT
+x * _ :: Int `compare` _ :: Int  =  GT
+0 * _ :: Int `compare` _ :: Int  =  GT
+id _ * _ :: Int `compare` _ :: Int  =  GT
+g _ :: Int `compare` _ :: Int  =  GT
+head ys :: Int `compare` _ :: Int  =  GT
+head [0] :: Int `compare` _ :: Int  =  GT
+head (_:xs) :: Int `compare` _ :: Int  =  GT
+head [_] :: Int `compare` _ :: Int  =  GT
+head (_:_:_) :: Int `compare` _ :: Int  =  GT
+head (x:_) :: Int `compare` _ :: Int  =  GT
+head (0:_) :: Int `compare` _ :: Int  =  GT
+head (id _:_) :: Int `compare` _ :: Int  =  GT
+head (tail _) :: Int `compare` _ :: Int  =  GT
+head (_ ++ _) :: Int `compare` _ :: Int  =  GT
+ord d :: Int `compare` _ :: Int  =  GT
+ord ' ' :: Int `compare` _ :: Int  =  GT
+r :: Bool `compare` _ :: Int  =  LT
+not q :: Bool `compare` _ :: Int  =  GT
+not (not p) :: Bool `compare` _ :: Int  =  GT
+not (not False) :: Bool `compare` _ :: Int  =  GT
+not (not True) :: Bool `compare` _ :: Int  =  GT
+not (not (not _)) :: Bool `compare` _ :: Int  =  GT
+not (_ || _) :: Bool `compare` _ :: Int  =  GT
+_ || p :: Bool `compare` _ :: Int  =  GT
+_ || False :: Bool `compare` _ :: Int  =  GT
+_ || True :: Bool `compare` _ :: Int  =  GT
+_ || not _ :: Bool `compare` _ :: Int  =  GT
+p || _ :: Bool `compare` _ :: Int  =  GT
+False || _ :: Bool `compare` _ :: Int  =  GT
+True || _ :: Bool `compare` _ :: Int  =  GT
+not _ || _ :: Bool `compare` _ :: Int  =  GT
+_ && _ :: Bool `compare` _ :: Int  =  GT
+_ == _ :: Bool `compare` _ :: Int  =  GT
+_ == _ :: Bool `compare` _ :: Int  =  GT
+odd _ :: Bool `compare` _ :: Int  =  GT
+even _ :: Bool `compare` _ :: Int  =  GT
+elem _ _ :: Bool `compare` _ :: Int  =  GT
+e :: Char `compare` _ :: Int  =  LT
+'b' :: Char `compare` _ :: Int  =  GT
+zs :: [Int] `compare` _ :: Int  =  GT
+[0,0] :: [Int] `compare` _ :: Int  =  GT
+[1] :: [Int] `compare` _ :: Int  =  GT
+_:ys :: [Int] `compare` _ :: Int  =  GT
+_:[0] :: [Int] `compare` _ :: Int  =  GT
+_:_:xs :: [Int] `compare` _ :: Int  =  GT
+[_,_] :: [Int] `compare` _ :: Int  =  GT
+_:_:_:_ :: [Int] `compare` _ :: Int  =  GT
+_:x:_ :: [Int] `compare` _ :: Int  =  GT
+_:0:_ :: [Int] `compare` _ :: Int  =  GT
+_:id _:_ :: [Int] `compare` _ :: Int  =  GT
+_:tail _ :: [Int] `compare` _ :: Int  =  GT
+_:(_ ++ _) :: [Int] `compare` _ :: Int  =  GT
+x:xs :: [Int] `compare` _ :: Int  =  GT
+[x] :: [Int] `compare` _ :: Int  =  GT
+x:_:_ :: [Int] `compare` _ :: Int  =  GT
+0:xs :: [Int] `compare` _ :: Int  =  GT
+[0] :: [Int] `compare` _ :: Int  =  GT
+0:_:_ :: [Int] `compare` _ :: Int  =  GT
+id _:xs :: [Int] `compare` _ :: Int  =  GT
+[id _] :: [Int] `compare` _ :: Int  =  GT
+id _:_:_ :: [Int] `compare` _ :: Int  =  GT
+y:_ :: [Int] `compare` _ :: Int  =  GT
+1:_ :: [Int] `compare` _ :: Int  =  GT
+id x:_ :: [Int] `compare` _ :: Int  =  GT
+id 0:_ :: [Int] `compare` _ :: Int  =  GT
+id (id _):_ :: [Int] `compare` _ :: Int  =  GT
+negate _:_ :: [Int] `compare` _ :: Int  =  GT
+abs _:_ :: [Int] `compare` _ :: Int  =  GT
+_ + _:_ :: [Int] `compare` _ :: Int  =  GT
+head _:_ :: [Int] `compare` _ :: Int  =  GT
+ord _:_ :: [Int] `compare` _ :: Int  =  GT
+tail xs :: [Int] `compare` _ :: Int  =  GT
+tail [] :: [Int] `compare` _ :: Int  =  GT
+tail (_:_) :: [Int] `compare` _ :: Int  =  GT
+_ ++ xs :: [Int] `compare` _ :: Int  =  GT
+_ ++ [] :: [Int] `compare` _ :: Int  =  GT
+_ ++ (_:_) :: [Int] `compare` _ :: Int  =  GT
+xs ++ _ :: [Int] `compare` _ :: Int  =  GT
+[] ++ _ :: [Int] `compare` _ :: Int  =  GT
+(_:_) ++ _ :: [Int] `compare` _ :: Int  =  GT
+sort _ :: [Int] `compare` _ :: Int  =  GT
+insert _ _ :: [Int] `compare` _ :: Int  =  GT
+(x +) :: Int -> Int `compare` _ :: Int  =  GT
+(0 +) :: Int -> Int `compare` _ :: Int  =  GT
+(id _ +) :: Int -> Int `compare` _ :: Int  =  GT
+(_ *) :: Int -> Int `compare` _ :: Int  =  GT
+f :: Int -> Int `compare` _ :: Int  =  GT
+(_ ||) :: Bool -> Bool `compare` _ :: Int  =  GT
+(&&) :: Bool -> Bool -> Bool `compare` _ :: Int  =  GT
+_ :: Int `compare` y' :: Int  =  LT
+_ :: Int `compare` -2 :: Int  =  LT
+_ :: Int `compare` id x' :: Int  =  LT
+_ :: Int `compare` id 2 :: Int  =  LT
+_ :: Int `compare` id (id z) :: Int  =  LT
+_ :: Int `compare` id (id (-1)) :: Int  =  LT
+_ :: Int `compare` id (id (id y)) :: Int  =  LT
+_ :: Int `compare` id (id (id 1)) :: Int  =  LT
+_ :: Int `compare` id (id (id (id x))) :: Int  =  LT
+_ :: Int `compare` id (id (id (id 0))) :: Int  =  LT
+_ :: Int `compare` id (id (id (id (id _)))) :: Int  =  LT
+_ :: Int `compare` id (id (id (negate _))) :: Int  =  LT
+_ :: Int `compare` id (id (id (abs _))) :: Int  =  LT
+_ :: Int `compare` id (id (id (_ + _))) :: Int  =  LT
+_ :: Int `compare` id (id (id (head _))) :: Int  =  LT
+_ :: Int `compare` id (id (id (ord _))) :: Int  =  LT
+_ :: Int `compare` id (id (negate x)) :: Int  =  LT
+_ :: Int `compare` id (id (negate 0)) :: Int  =  LT
+_ :: Int `compare` id (id (negate (id _))) :: Int  =  LT
+_ :: Int `compare` id (id (abs x)) :: Int  =  LT
+_ :: Int `compare` id (id (abs 0)) :: Int  =  LT
+_ :: Int `compare` id (id (abs (id _))) :: Int  =  LT
+_ :: Int `compare` id (id (_ + x)) :: Int  =  LT
+_ :: Int `compare` id (id (_ + 0)) :: Int  =  LT
+_ :: Int `compare` id (id (_ + id _)) :: Int  =  LT
+_ :: Int `compare` id (id (x + _)) :: Int  =  LT
+_ :: Int `compare` id (id (0 + _)) :: Int  =  LT
+_ :: Int `compare` id (id (id _ + _)) :: Int  =  LT
+_ :: Int `compare` id (id (_ * _)) :: Int  =  LT
+_ :: Int `compare` id (id (f _)) :: Int  =  LT
+_ :: Int `compare` id (id (head xs)) :: Int  =  LT
+_ :: Int `compare` id (id (head [])) :: Int  =  LT
+_ :: Int `compare` id (id (head (_:_))) :: Int  =  LT
+_ :: Int `compare` id (id (ord c)) :: Int  =  LT
+_ :: Int `compare` id (id (ord 'a')) :: Int  =  LT
+_ :: Int `compare` id (negate y) :: Int  =  LT
+_ :: Int `compare` id (negate 1) :: Int  =  LT
+_ :: Int `compare` id (negate (id x)) :: Int  =  LT
+_ :: Int `compare` id (negate (id 0)) :: Int  =  LT
+_ :: Int `compare` id (negate (id (id _))) :: Int  =  LT
+_ :: Int `compare` id (negate (negate _)) :: Int  =  LT
+_ :: Int `compare` id (negate (abs _)) :: Int  =  LT
+_ :: Int `compare` id (negate (_ + _)) :: Int  =  LT
+_ :: Int `compare` id (negate (head _)) :: Int  =  LT
+_ :: Int `compare` id (negate (ord _)) :: Int  =  LT
+_ :: Int `compare` id (abs y) :: Int  =  LT
+_ :: Int `compare` id (abs 1) :: Int  =  LT
+_ :: Int `compare` id (abs (id x)) :: Int  =  LT
+_ :: Int `compare` id (abs (id 0)) :: Int  =  LT
+_ :: Int `compare` id (abs (id (id _))) :: Int  =  LT
+_ :: Int `compare` id (abs (negate _)) :: Int  =  LT
+_ :: Int `compare` id (abs (abs _)) :: Int  =  LT
+_ :: Int `compare` id (abs (_ + _)) :: Int  =  LT
+_ :: Int `compare` id (abs (head _)) :: Int  =  LT
+_ :: Int `compare` id (abs (ord _)) :: Int  =  LT
+_ :: Int `compare` id (_ + y) :: Int  =  LT
+_ :: Int `compare` id (_ + 1) :: Int  =  LT
+_ :: Int `compare` id (_ + id x) :: Int  =  LT
+_ :: Int `compare` id (_ + id 0) :: Int  =  LT
+_ :: Int `compare` id (_ + id (id _)) :: Int  =  LT
+_ :: Int `compare` id (_ + negate _) :: Int  =  LT
+_ :: Int `compare` id (_ + abs _) :: Int  =  LT
+_ :: Int `compare` id (_ + (_ + _)) :: Int  =  LT
+_ :: Int `compare` id (_ + head _) :: Int  =  LT
+_ :: Int `compare` id (_ + ord _) :: Int  =  LT
+_ :: Int `compare` id (x + x) :: Int  =  LT
+_ :: Int `compare` id (x + 0) :: Int  =  LT
+_ :: Int `compare` id (x + id _) :: Int  =  LT
+_ :: Int `compare` id (0 + x) :: Int  =  LT
+_ :: Int `compare` id (0 + 0) :: Int  =  LT
+_ :: Int `compare` id (0 + id _) :: Int  =  LT
+_ :: Int `compare` id (id _ + x) :: Int  =  LT
+_ :: Int `compare` id (id _ + 0) :: Int  =  LT
+_ :: Int `compare` id (id _ + id _) :: Int  =  LT
+_ :: Int `compare` id (_ * x) :: Int  =  LT
+_ :: Int `compare` id (_ * 0) :: Int  =  LT
+_ :: Int `compare` id (_ * id _) :: Int  =  LT
+_ :: Int `compare` id (f x) :: Int  =  LT
+_ :: Int `compare` id (f 0) :: Int  =  LT
+_ :: Int `compare` id (f (id _)) :: Int  =  LT
+_ :: Int `compare` id (y + _) :: Int  =  LT
+_ :: Int `compare` id (1 + _) :: Int  =  LT
+_ :: Int `compare` id (id x + _) :: Int  =  LT
+_ :: Int `compare` id (id 0 + _) :: Int  =  LT
+_ :: Int `compare` id (id (id _) + _) :: Int  =  LT
+_ :: Int `compare` id (negate _ + _) :: Int  =  LT
+_ :: Int `compare` id (abs _ + _) :: Int  =  LT
+_ :: Int `compare` id ((_ + _) + _) :: Int  =  LT
+_ :: Int `compare` id (head _ + _) :: Int  =  LT
+_ :: Int `compare` id (ord _ + _) :: Int  =  LT
+_ :: Int `compare` id (x * _) :: Int  =  LT
+_ :: Int `compare` id (0 * _) :: Int  =  LT
+_ :: Int `compare` id (id _ * _) :: Int  =  LT
+_ :: Int `compare` id (g _) :: Int  =  LT
+_ :: Int `compare` id (head ys) :: Int  =  LT
+_ :: Int `compare` id (head [0]) :: Int  =  LT
+_ :: Int `compare` id (head (_:xs)) :: Int  =  LT
+_ :: Int `compare` id (head [_]) :: Int  =  LT
+_ :: Int `compare` id (head (_:_:_)) :: Int  =  LT
+_ :: Int `compare` id (head (x:_)) :: Int  =  LT
+_ :: Int `compare` id (head (0:_)) :: Int  =  LT
+_ :: Int `compare` id (head (id _:_)) :: Int  =  LT
+_ :: Int `compare` id (head (tail _)) :: Int  =  LT
+_ :: Int `compare` id (head (_ ++ _)) :: Int  =  LT
+_ :: Int `compare` id (ord d) :: Int  =  LT
+_ :: Int `compare` id (ord ' ') :: Int  =  LT
+_ :: Int `compare` negate z :: Int  =  LT
+_ :: Int `compare` negate (-1) :: Int  =  LT
+_ :: Int `compare` negate (id y) :: Int  =  LT
+_ :: Int `compare` negate (id 1) :: Int  =  LT
+_ :: Int `compare` negate (id (id x)) :: Int  =  LT
+_ :: Int `compare` negate (id (id 0)) :: Int  =  LT
+_ :: Int `compare` negate (id (id (id _))) :: Int  =  LT
+_ :: Int `compare` negate (id (negate _)) :: Int  =  LT
+_ :: Int `compare` negate (id (abs _)) :: Int  =  LT
+_ :: Int `compare` negate (id (_ + _)) :: Int  =  LT
+_ :: Int `compare` negate (id (head _)) :: Int  =  LT
+_ :: Int `compare` negate (id (ord _)) :: Int  =  LT
+_ :: Int `compare` negate (negate x) :: Int  =  LT
+_ :: Int `compare` negate (negate 0) :: Int  =  LT
+_ :: Int `compare` negate (negate (id _)) :: Int  =  LT
+_ :: Int `compare` negate (abs x) :: Int  =  LT
+_ :: Int `compare` negate (abs 0) :: Int  =  LT
+_ :: Int `compare` negate (abs (id _)) :: Int  =  LT
+_ :: Int `compare` negate (_ + x) :: Int  =  LT
+_ :: Int `compare` negate (_ + 0) :: Int  =  LT
+_ :: Int `compare` negate (_ + id _) :: Int  =  LT
+_ :: Int `compare` negate (x + _) :: Int  =  LT
+_ :: Int `compare` negate (0 + _) :: Int  =  LT
+_ :: Int `compare` negate (id _ + _) :: Int  =  LT
+_ :: Int `compare` negate (_ * _) :: Int  =  LT
+_ :: Int `compare` negate (f _) :: Int  =  LT
+_ :: Int `compare` negate (head xs) :: Int  =  LT
+_ :: Int `compare` negate (head []) :: Int  =  LT
+_ :: Int `compare` negate (head (_:_)) :: Int  =  LT
+_ :: Int `compare` negate (ord c) :: Int  =  LT
+_ :: Int `compare` negate (ord 'a') :: Int  =  LT
+_ :: Int `compare` abs z :: Int  =  LT
+_ :: Int `compare` abs (-1) :: Int  =  LT
+_ :: Int `compare` abs (id y) :: Int  =  LT
+_ :: Int `compare` abs (id 1) :: Int  =  LT
+_ :: Int `compare` abs (id (id x)) :: Int  =  LT
+_ :: Int `compare` abs (id (id 0)) :: Int  =  LT
+_ :: Int `compare` abs (id (id (id _))) :: Int  =  LT
+_ :: Int `compare` abs (id (negate _)) :: Int  =  LT
+_ :: Int `compare` abs (id (abs _)) :: Int  =  LT
+_ :: Int `compare` abs (id (_ + _)) :: Int  =  LT
+_ :: Int `compare` abs (id (head _)) :: Int  =  LT
+_ :: Int `compare` abs (id (ord _)) :: Int  =  LT
+_ :: Int `compare` abs (negate x) :: Int  =  LT
+_ :: Int `compare` abs (negate 0) :: Int  =  LT
+_ :: Int `compare` abs (negate (id _)) :: Int  =  LT
+_ :: Int `compare` abs (abs x) :: Int  =  LT
+_ :: Int `compare` abs (abs 0) :: Int  =  LT
+_ :: Int `compare` abs (abs (id _)) :: Int  =  LT
+_ :: Int `compare` abs (_ + x) :: Int  =  LT
+_ :: Int `compare` abs (_ + 0) :: Int  =  LT
+_ :: Int `compare` abs (_ + id _) :: Int  =  LT
+_ :: Int `compare` abs (x + _) :: Int  =  LT
+_ :: Int `compare` abs (0 + _) :: Int  =  LT
+_ :: Int `compare` abs (id _ + _) :: Int  =  LT
+_ :: Int `compare` abs (_ * _) :: Int  =  LT
+_ :: Int `compare` abs (f _) :: Int  =  LT
+_ :: Int `compare` abs (head xs) :: Int  =  LT
+_ :: Int `compare` abs (head []) :: Int  =  LT
+_ :: Int `compare` abs (head (_:_)) :: Int  =  LT
+_ :: Int `compare` abs (ord c) :: Int  =  LT
+_ :: Int `compare` abs (ord 'a') :: Int  =  LT
+_ :: Int `compare` _ + z :: Int  =  LT
+_ :: Int `compare` _ + (-1) :: Int  =  LT
+_ :: Int `compare` _ + id y :: Int  =  LT
+_ :: Int `compare` _ + id 1 :: Int  =  LT
+_ :: Int `compare` _ + id (id x) :: Int  =  LT
+_ :: Int `compare` _ + id (id 0) :: Int  =  LT
+_ :: Int `compare` _ + id (id (id _)) :: Int  =  LT
+_ :: Int `compare` _ + id (negate _) :: Int  =  LT
+_ :: Int `compare` _ + id (abs _) :: Int  =  LT
+_ :: Int `compare` _ + id (_ + _) :: Int  =  LT
+_ :: Int `compare` _ + id (head _) :: Int  =  LT
+_ :: Int `compare` _ + id (ord _) :: Int  =  LT
+_ :: Int `compare` _ + negate x :: Int  =  LT
+_ :: Int `compare` _ + negate 0 :: Int  =  LT
+_ :: Int `compare` _ + negate (id _) :: Int  =  LT
+_ :: Int `compare` _ + abs x :: Int  =  LT
+_ :: Int `compare` _ + abs 0 :: Int  =  LT
+_ :: Int `compare` _ + abs (id _) :: Int  =  LT
+_ :: Int `compare` _ + (_ + x) :: Int  =  LT
+_ :: Int `compare` _ + (_ + 0) :: Int  =  LT
+_ :: Int `compare` _ + (_ + id _) :: Int  =  LT
+_ :: Int `compare` _ + (x + _) :: Int  =  LT
+_ :: Int `compare` _ + (0 + _) :: Int  =  LT
+_ :: Int `compare` _ + (id _ + _) :: Int  =  LT
+_ :: Int `compare` _ + _ * _ :: Int  =  LT
+_ :: Int `compare` _ + f _ :: Int  =  LT
+_ :: Int `compare` _ + head xs :: Int  =  LT
+_ :: Int `compare` _ + head [] :: Int  =  LT
+_ :: Int `compare` _ + head (_:_) :: Int  =  LT
+_ :: Int `compare` _ + ord c :: Int  =  LT
+_ :: Int `compare` _ + ord 'a' :: Int  =  LT
+_ :: Int `compare` x + y :: Int  =  LT
+_ :: Int `compare` x + 1 :: Int  =  LT
+_ :: Int `compare` x + id x :: Int  =  LT
+_ :: Int `compare` x + id 0 :: Int  =  LT
+_ :: Int `compare` x + id (id _) :: Int  =  LT
+_ :: Int `compare` x + negate _ :: Int  =  LT
+_ :: Int `compare` x + abs _ :: Int  =  LT
+_ :: Int `compare` x + (_ + _) :: Int  =  LT
+_ :: Int `compare` x + head _ :: Int  =  LT
+_ :: Int `compare` x + ord _ :: Int  =  LT
+_ :: Int `compare` 0 + y :: Int  =  LT
+_ :: Int `compare` 0 + 1 :: Int  =  LT
+_ :: Int `compare` 0 + id x :: Int  =  LT
+_ :: Int `compare` 0 + id 0 :: Int  =  LT
+_ :: Int `compare` 0 + id (id _) :: Int  =  LT
+_ :: Int `compare` 0 + negate _ :: Int  =  LT
+_ :: Int `compare` 0 + abs _ :: Int  =  LT
+_ :: Int `compare` 0 + (_ + _) :: Int  =  LT
+_ :: Int `compare` 0 + head _ :: Int  =  LT
+_ :: Int `compare` 0 + ord _ :: Int  =  LT
+_ :: Int `compare` id _ + y :: Int  =  LT
+_ :: Int `compare` id _ + 1 :: Int  =  LT
+_ :: Int `compare` id _ + id x :: Int  =  LT
+_ :: Int `compare` id _ + id 0 :: Int  =  LT
+_ :: Int `compare` id _ + id (id _) :: Int  =  LT
+_ :: Int `compare` id _ + negate _ :: Int  =  LT
+_ :: Int `compare` id _ + abs _ :: Int  =  LT
+_ :: Int `compare` id _ + (_ + _) :: Int  =  LT
+_ :: Int `compare` id _ + head _ :: Int  =  LT
+_ :: Int `compare` id _ + ord _ :: Int  =  LT
+_ :: Int `compare` _ * y :: Int  =  LT
+_ :: Int `compare` _ * 1 :: Int  =  LT
+_ :: Int `compare` _ * id x :: Int  =  LT
+_ :: Int `compare` _ * id 0 :: Int  =  LT
+_ :: Int `compare` _ * id (id _) :: Int  =  LT
+_ :: Int `compare` _ * negate _ :: Int  =  LT
+_ :: Int `compare` _ * abs _ :: Int  =  LT
+_ :: Int `compare` _ * (_ + _) :: Int  =  LT
+_ :: Int `compare` _ * head _ :: Int  =  LT
+_ :: Int `compare` _ * ord _ :: Int  =  LT
+_ :: Int `compare` f y :: Int  =  LT
+_ :: Int `compare` f 1 :: Int  =  LT
+_ :: Int `compare` f (id x) :: Int  =  LT
+_ :: Int `compare` f (id 0) :: Int  =  LT
+_ :: Int `compare` f (id (id _)) :: Int  =  LT
+_ :: Int `compare` f (negate _) :: Int  =  LT
+_ :: Int `compare` f (abs _) :: Int  =  LT
+_ :: Int `compare` f (_ + _) :: Int  =  LT
+_ :: Int `compare` f (head _) :: Int  =  LT
+_ :: Int `compare` f (ord _) :: Int  =  LT
+_ :: Int `compare` y + x :: Int  =  LT
+_ :: Int `compare` y + 0 :: Int  =  LT
+_ :: Int `compare` y + id _ :: Int  =  LT
+_ :: Int `compare` 1 + x :: Int  =  LT
+_ :: Int `compare` 1 + 0 :: Int  =  LT
+_ :: Int `compare` 1 + id _ :: Int  =  LT
+_ :: Int `compare` id x + x :: Int  =  LT
+_ :: Int `compare` id x + 0 :: Int  =  LT
+_ :: Int `compare` id x + id _ :: Int  =  LT
+_ :: Int `compare` id 0 + x :: Int  =  LT
+_ :: Int `compare` id 0 + 0 :: Int  =  LT
+_ :: Int `compare` id 0 + id _ :: Int  =  LT
+_ :: Int `compare` id (id _) + x :: Int  =  LT
+_ :: Int `compare` id (id _) + 0 :: Int  =  LT
+_ :: Int `compare` id (id _) + id _ :: Int  =  LT
+_ :: Int `compare` negate _ + x :: Int  =  LT
+_ :: Int `compare` negate _ + 0 :: Int  =  LT
+_ :: Int `compare` negate _ + id _ :: Int  =  LT
+_ :: Int `compare` abs _ + x :: Int  =  LT
+_ :: Int `compare` abs _ + 0 :: Int  =  LT
+_ :: Int `compare` abs _ + id _ :: Int  =  LT
+_ :: Int `compare` (_ + _) + x :: Int  =  LT
+_ :: Int `compare` (_ + _) + 0 :: Int  =  LT
+_ :: Int `compare` (_ + _) + id _ :: Int  =  LT
+_ :: Int `compare` head _ + x :: Int  =  LT
+_ :: Int `compare` head _ + 0 :: Int  =  LT
+_ :: Int `compare` head _ + id _ :: Int  =  LT
+_ :: Int `compare` ord _ + x :: Int  =  LT
+_ :: Int `compare` ord _ + 0 :: Int  =  LT
+_ :: Int `compare` ord _ + id _ :: Int  =  LT
+_ :: Int `compare` x * x :: Int  =  LT
+_ :: Int `compare` x * 0 :: Int  =  LT
+_ :: Int `compare` x * id _ :: Int  =  LT
+_ :: Int `compare` 0 * x :: Int  =  LT
+_ :: Int `compare` 0 * 0 :: Int  =  LT
+_ :: Int `compare` 0 * id _ :: Int  =  LT
+_ :: Int `compare` id _ * x :: Int  =  LT
+_ :: Int `compare` id _ * 0 :: Int  =  LT
+_ :: Int `compare` id _ * id _ :: Int  =  LT
+_ :: Int `compare` g x :: Int  =  LT
+_ :: Int `compare` g 0 :: Int  =  LT
+_ :: Int `compare` g (id _) :: Int  =  LT
+_ :: Int `compare` z + _ :: Int  =  LT
+_ :: Int `compare` (-1) + _ :: Int  =  LT
+_ :: Int `compare` id y + _ :: Int  =  LT
+_ :: Int `compare` id 1 + _ :: Int  =  LT
+_ :: Int `compare` id (id x) + _ :: Int  =  LT
+_ :: Int `compare` id (id 0) + _ :: Int  =  LT
+_ :: Int `compare` id (id (id _)) + _ :: Int  =  LT
+_ :: Int `compare` id (negate _) + _ :: Int  =  LT
+_ :: Int `compare` id (abs _) + _ :: Int  =  LT
+_ :: Int `compare` id (_ + _) + _ :: Int  =  LT
+_ :: Int `compare` id (head _) + _ :: Int  =  LT
+_ :: Int `compare` id (ord _) + _ :: Int  =  LT
+_ :: Int `compare` negate x + _ :: Int  =  LT
+_ :: Int `compare` negate 0 + _ :: Int  =  LT
+_ :: Int `compare` negate (id _) + _ :: Int  =  LT
+_ :: Int `compare` abs x + _ :: Int  =  LT
+_ :: Int `compare` abs 0 + _ :: Int  =  LT
+_ :: Int `compare` abs (id _) + _ :: Int  =  LT
+_ :: Int `compare` (_ + x) + _ :: Int  =  LT
+_ :: Int `compare` (_ + 0) + _ :: Int  =  LT
+_ :: Int `compare` (_ + id _) + _ :: Int  =  LT
+_ :: Int `compare` (x + _) + _ :: Int  =  LT
+_ :: Int `compare` (0 + _) + _ :: Int  =  LT
+_ :: Int `compare` (id _ + _) + _ :: Int  =  LT
+_ :: Int `compare` _ * _ + _ :: Int  =  LT
+_ :: Int `compare` f _ + _ :: Int  =  LT
+_ :: Int `compare` head xs + _ :: Int  =  LT
+_ :: Int `compare` head [] + _ :: Int  =  LT
+_ :: Int `compare` head (_:_) + _ :: Int  =  LT
+_ :: Int `compare` ord c + _ :: Int  =  LT
+_ :: Int `compare` ord 'a' + _ :: Int  =  LT
+_ :: Int `compare` y * _ :: Int  =  LT
+_ :: Int `compare` 1 * _ :: Int  =  LT
+_ :: Int `compare` id x * _ :: Int  =  LT
+_ :: Int `compare` id 0 * _ :: Int  =  LT
+_ :: Int `compare` id (id _) * _ :: Int  =  LT
+_ :: Int `compare` negate _ * _ :: Int  =  LT
+_ :: Int `compare` abs _ * _ :: Int  =  LT
+_ :: Int `compare` (_ + _) * _ :: Int  =  LT
+_ :: Int `compare` head _ * _ :: Int  =  LT
+_ :: Int `compare` ord _ * _ :: Int  =  LT
+_ :: Int `compare` h _ :: Int  =  LT
+_ :: Int `compare` head zs :: Int  =  LT
+_ :: Int `compare` head [0,0] :: Int  =  LT
+_ :: Int `compare` head [1] :: Int  =  LT
+_ :: Int `compare` head (_:ys) :: Int  =  LT
+_ :: Int `compare` head (_:[0]) :: Int  =  LT
+_ :: Int `compare` head (_:_:xs) :: Int  =  LT
+_ :: Int `compare` head [_,_] :: Int  =  LT
+_ :: Int `compare` head (_:_:_:_) :: Int  =  LT
+_ :: Int `compare` head (_:x:_) :: Int  =  LT
+_ :: Int `compare` head (_:0:_) :: Int  =  LT
+_ :: Int `compare` head (_:id _:_) :: Int  =  LT
+_ :: Int `compare` head (_:tail _) :: Int  =  LT
+_ :: Int `compare` head (_:(_ ++ _)) :: Int  =  LT
+_ :: Int `compare` head (x:xs) :: Int  =  LT
+_ :: Int `compare` head [x] :: Int  =  LT
+_ :: Int `compare` head (x:_:_) :: Int  =  LT
+_ :: Int `compare` head (0:xs) :: Int  =  LT
+_ :: Int `compare` head [0] :: Int  =  LT
+_ :: Int `compare` head (0:_:_) :: Int  =  LT
+_ :: Int `compare` head (id _:xs) :: Int  =  LT
+_ :: Int `compare` head [id _] :: Int  =  LT
+_ :: Int `compare` head (id _:_:_) :: Int  =  LT
+_ :: Int `compare` head (y:_) :: Int  =  LT
+_ :: Int `compare` head (1:_) :: Int  =  LT
+_ :: Int `compare` head (id x:_) :: Int  =  LT
+_ :: Int `compare` head (id 0:_) :: Int  =  LT
+_ :: Int `compare` head (id (id _):_) :: Int  =  LT
+_ :: Int `compare` head (negate _:_) :: Int  =  LT
+_ :: Int `compare` head (abs _:_) :: Int  =  LT
+_ :: Int `compare` head (_ + _:_) :: Int  =  LT
+_ :: Int `compare` head (head _:_) :: Int  =  LT
+_ :: Int `compare` head (ord _:_) :: Int  =  LT
+_ :: Int `compare` head (tail xs) :: Int  =  LT
+_ :: Int `compare` head (tail []) :: Int  =  LT
+_ :: Int `compare` head (tail (_:_)) :: Int  =  LT
+_ :: Int `compare` head (_ ++ xs) :: Int  =  LT
+_ :: Int `compare` head (_ ++ []) :: Int  =  LT
+_ :: Int `compare` head (_ ++ (_:_)) :: Int  =  LT
+_ :: Int `compare` head (xs ++ _) :: Int  =  LT
+_ :: Int `compare` head ([] ++ _) :: Int  =  LT
+_ :: Int `compare` head ((_:_) ++ _) :: Int  =  LT
+_ :: Int `compare` head (sort _) :: Int  =  LT
+_ :: Int `compare` head (insert _ _) :: Int  =  LT
+_ :: Int `compare` ord e :: Int  =  LT
+_ :: Int `compare` ord 'b' :: Int  =  LT
+_ :: Int `compare` p' :: Bool  =  GT
+_ :: Int `compare` not r :: Bool  =  LT
+_ :: Int `compare` not (not q) :: Bool  =  LT
+_ :: Int `compare` not (not (not p)) :: Bool  =  LT
+_ :: Int `compare` not (not (not False)) :: Bool  =  LT
+_ :: Int `compare` not (not (not True)) :: Bool  =  LT
+_ :: Int `compare` not (not (not (not _))) :: Bool  =  LT
+_ :: Int `compare` not (not (_ || _)) :: Bool  =  LT
+_ :: Int `compare` not (_ || p) :: Bool  =  LT
+_ :: Int `compare` not (_ || False) :: Bool  =  LT
+_ :: Int `compare` not (_ || True) :: Bool  =  LT
+_ :: Int `compare` not (_ || not _) :: Bool  =  LT
+_ :: Int `compare` not (p || _) :: Bool  =  LT
+_ :: Int `compare` not (False || _) :: Bool  =  LT
+_ :: Int `compare` not (True || _) :: Bool  =  LT
+_ :: Int `compare` not (not _ || _) :: Bool  =  LT
+_ :: Int `compare` not (_ && _) :: Bool  =  LT
+_ :: Int `compare` not (_ == _) :: Bool  =  LT
+_ :: Int `compare` not (_ == _) :: Bool  =  LT
+_ :: Int `compare` not (odd _) :: Bool  =  LT
+_ :: Int `compare` not (even _) :: Bool  =  LT
+_ :: Int `compare` not (elem _ _) :: Bool  =  LT
+_ :: Int `compare` _ || q :: Bool  =  LT
+_ :: Int `compare` _ || not p :: Bool  =  LT
+_ :: Int `compare` _ || not False :: Bool  =  LT
+_ :: Int `compare` _ || not True :: Bool  =  LT
+_ :: Int `compare` _ || not (not _) :: Bool  =  LT
+_ :: Int `compare` _ || (_ || _) :: Bool  =  LT
+_ :: Int `compare` p || p :: Bool  =  LT
+_ :: Int `compare` p || False :: Bool  =  LT
+_ :: Int `compare` p || True :: Bool  =  LT
+_ :: Int `compare` p || not _ :: Bool  =  LT
+_ :: Int `compare` False || p :: Bool  =  LT
+_ :: Int `compare` False || False :: Bool  =  LT
+_ :: Int `compare` False || True :: Bool  =  LT
+_ :: Int `compare` False || not _ :: Bool  =  LT
+_ :: Int `compare` True || p :: Bool  =  LT
+_ :: Int `compare` True || False :: Bool  =  LT
+_ :: Int `compare` True || True :: Bool  =  LT
+_ :: Int `compare` True || not _ :: Bool  =  LT
+_ :: Int `compare` not _ || p :: Bool  =  LT
+_ :: Int `compare` not _ || False :: Bool  =  LT
+_ :: Int `compare` not _ || True :: Bool  =  LT
+_ :: Int `compare` not _ || not _ :: Bool  =  LT
+_ :: Int `compare` _ && p :: Bool  =  LT
+_ :: Int `compare` _ && False :: Bool  =  LT
+_ :: Int `compare` _ && True :: Bool  =  LT
+_ :: Int `compare` _ && not _ :: Bool  =  LT
+_ :: Int `compare` q || _ :: Bool  =  LT
+_ :: Int `compare` not p || _ :: Bool  =  LT
+_ :: Int `compare` not False || _ :: Bool  =  LT
+_ :: Int `compare` not True || _ :: Bool  =  LT
+_ :: Int `compare` not (not _) || _ :: Bool  =  LT
+_ :: Int `compare` (_ || _) || _ :: Bool  =  LT
+_ :: Int `compare` p && _ :: Bool  =  LT
+_ :: Int `compare` False && _ :: Bool  =  LT
+_ :: Int `compare` True && _ :: Bool  =  LT
+_ :: Int `compare` not _ && _ :: Bool  =  LT
+_ :: Int `compare` _ ==> _ :: Bool  =  LT
+_ :: Int `compare` _ == x :: Bool  =  LT
+_ :: Int `compare` _ == 0 :: Bool  =  LT
+_ :: Int `compare` _ == id _ :: Bool  =  LT
+_ :: Int `compare` x == _ :: Bool  =  LT
+_ :: Int `compare` 0 == _ :: Bool  =  LT
+_ :: Int `compare` id _ == _ :: Bool  =  LT
+_ :: Int `compare` _ == p :: Bool  =  LT
+_ :: Int `compare` _ == False :: Bool  =  LT
+_ :: Int `compare` _ == True :: Bool  =  LT
+_ :: Int `compare` _ == not _ :: Bool  =  LT
+_ :: Int `compare` p == _ :: Bool  =  LT
+_ :: Int `compare` False == _ :: Bool  =  LT
+_ :: Int `compare` True == _ :: Bool  =  LT
+_ :: Int `compare` not _ == _ :: Bool  =  LT
+_ :: Int `compare` _ <= _ :: Bool  =  LT
+_ :: Int `compare` _ <= _ :: Bool  =  LT
+_ :: Int `compare` odd x :: Bool  =  LT
+_ :: Int `compare` odd 0 :: Bool  =  LT
+_ :: Int `compare` odd (id _) :: Bool  =  LT
+_ :: Int `compare` even x :: Bool  =  LT
+_ :: Int `compare` even 0 :: Bool  =  LT
+_ :: Int `compare` even (id _) :: Bool  =  LT
+_ :: Int `compare` elem _ xs :: Bool  =  LT
+_ :: Int `compare` elem _ [] :: Bool  =  LT
+_ :: Int `compare` elem _ (_:_) :: Bool  =  LT
+_ :: Int `compare` elem x _ :: Bool  =  LT
+_ :: Int `compare` elem 0 _ :: Bool  =  LT
+_ :: Int `compare` elem (id _) _ :: Bool  =  LT
+_ :: Int `compare` c' :: Char  =  GT
+_ :: Int `compare` 'A' :: Char  =  LT
+_ :: Int `compare` xs' :: [Int]  =  LT
+_ :: Int `compare` [0,0,0] :: [Int]  =  LT
+_ :: Int `compare` [0,1] :: [Int]  =  LT
+_ :: Int `compare` [1,0] :: [Int]  =  LT
+_ :: Int `compare` [-1] :: [Int]  =  LT
+_ :: Int `compare` _:zs :: [Int]  =  LT
+_ :: Int `compare` _:[0,0] :: [Int]  =  LT
+_ :: Int `compare` _:[1] :: [Int]  =  LT
+_ :: Int `compare` _:_:ys :: [Int]  =  LT
+_ :: Int `compare` _:_:[0] :: [Int]  =  LT
+_ :: Int `compare` _:_:_:xs :: [Int]  =  LT
+_ :: Int `compare` [_,_,_] :: [Int]  =  LT
+_ :: Int `compare` _:_:_:_:_ :: [Int]  =  LT
+_ :: Int `compare` _:_:x:_ :: [Int]  =  LT
+_ :: Int `compare` _:_:0:_ :: [Int]  =  LT
+_ :: Int `compare` _:_:id _:_ :: [Int]  =  LT
+_ :: Int `compare` _:_:tail _ :: [Int]  =  LT
+_ :: Int `compare` _:_:(_ ++ _) :: [Int]  =  LT
+_ :: Int `compare` _:x:xs :: [Int]  =  LT
+_ :: Int `compare` [_,x] :: [Int]  =  LT
+_ :: Int `compare` _:x:_:_ :: [Int]  =  LT
+_ :: Int `compare` _:0:xs :: [Int]  =  LT
+_ :: Int `compare` [_,0] :: [Int]  =  LT
+_ :: Int `compare` _:0:_:_ :: [Int]  =  LT
+_ :: Int `compare` _:id _:xs :: [Int]  =  LT
+_ :: Int `compare` [_,id _] :: [Int]  =  LT
+_ :: Int `compare` _:id _:_:_ :: [Int]  =  LT
+_ :: Int `compare` _:y:_ :: [Int]  =  LT
+_ :: Int `compare` _:1:_ :: [Int]  =  LT
+_ :: Int `compare` _:id x:_ :: [Int]  =  LT
+_ :: Int `compare` _:id 0:_ :: [Int]  =  LT
+_ :: Int `compare` _:id (id _):_ :: [Int]  =  LT
+_ :: Int `compare` _:negate _:_ :: [Int]  =  LT
+_ :: Int `compare` _:abs _:_ :: [Int]  =  LT
+_ :: Int `compare` _:_ + _:_ :: [Int]  =  LT
+_ :: Int `compare` _:head _:_ :: [Int]  =  LT
+_ :: Int `compare` _:ord _:_ :: [Int]  =  LT
+_ :: Int `compare` _:tail xs :: [Int]  =  LT
+_ :: Int `compare` _:tail [] :: [Int]  =  LT
+_ :: Int `compare` _:tail (_:_) :: [Int]  =  LT
+_ :: Int `compare` _:(_ ++ xs) :: [Int]  =  LT
+_ :: Int `compare` _:(_ ++ []) :: [Int]  =  LT
+_ :: Int `compare` _:(_ ++ (_:_)) :: [Int]  =  LT
+_ :: Int `compare` _:(xs ++ _) :: [Int]  =  LT
+_ :: Int `compare` _:([] ++ _) :: [Int]  =  LT
+_ :: Int `compare` _:((_:_) ++ _) :: [Int]  =  LT
+_ :: Int `compare` _:sort _ :: [Int]  =  LT
+_ :: Int `compare` _:insert _ _ :: [Int]  =  LT
+_ :: Int `compare` x:ys :: [Int]  =  LT
+_ :: Int `compare` x:[0] :: [Int]  =  LT
+_ :: Int `compare` x:_:xs :: [Int]  =  LT
+_ :: Int `compare` [x,_] :: [Int]  =  LT
+_ :: Int `compare` x:_:_:_ :: [Int]  =  LT
+_ :: Int `compare` x:x:_ :: [Int]  =  LT
+_ :: Int `compare` x:0:_ :: [Int]  =  LT
+_ :: Int `compare` x:id _:_ :: [Int]  =  LT
+_ :: Int `compare` x:tail _ :: [Int]  =  LT
+_ :: Int `compare` x:(_ ++ _) :: [Int]  =  LT
+_ :: Int `compare` 0:ys :: [Int]  =  LT
+_ :: Int `compare` 0:[0] :: [Int]  =  LT
+_ :: Int `compare` 0:_:xs :: [Int]  =  LT
+_ :: Int `compare` [0,_] :: [Int]  =  LT
+_ :: Int `compare` 0:_:_:_ :: [Int]  =  LT
+_ :: Int `compare` 0:x:_ :: [Int]  =  LT
+_ :: Int `compare` 0:0:_ :: [Int]  =  LT
+_ :: Int `compare` 0:id _:_ :: [Int]  =  LT
+_ :: Int `compare` 0:tail _ :: [Int]  =  LT
+_ :: Int `compare` 0:(_ ++ _) :: [Int]  =  LT
+_ :: Int `compare` id _:ys :: [Int]  =  LT
+_ :: Int `compare` id _:[0] :: [Int]  =  LT
+_ :: Int `compare` id _:_:xs :: [Int]  =  LT
+_ :: Int `compare` [id _,_] :: [Int]  =  LT
+_ :: Int `compare` id _:_:_:_ :: [Int]  =  LT
+_ :: Int `compare` id _:x:_ :: [Int]  =  LT
+_ :: Int `compare` id _:0:_ :: [Int]  =  LT
+_ :: Int `compare` id _:id _:_ :: [Int]  =  LT
+_ :: Int `compare` id _:tail _ :: [Int]  =  LT
+_ :: Int `compare` id _:(_ ++ _) :: [Int]  =  LT
+_ :: Int `compare` y:xs :: [Int]  =  LT
+_ :: Int `compare` [y] :: [Int]  =  LT
+_ :: Int `compare` y:_:_ :: [Int]  =  LT
+_ :: Int `compare` 1:xs :: [Int]  =  LT
+_ :: Int `compare` [1] :: [Int]  =  LT
+_ :: Int `compare` 1:_:_ :: [Int]  =  LT
+_ :: Int `compare` id x:xs :: [Int]  =  LT
+_ :: Int `compare` [id x] :: [Int]  =  LT
+_ :: Int `compare` id x:_:_ :: [Int]  =  LT
+_ :: Int `compare` id 0:xs :: [Int]  =  LT
+_ :: Int `compare` [id 0] :: [Int]  =  LT
+_ :: Int `compare` id 0:_:_ :: [Int]  =  LT
+_ :: Int `compare` id (id _):xs :: [Int]  =  LT
+_ :: Int `compare` [id (id _)] :: [Int]  =  LT
+_ :: Int `compare` id (id _):_:_ :: [Int]  =  LT
+_ :: Int `compare` negate _:xs :: [Int]  =  LT
+_ :: Int `compare` [negate _] :: [Int]  =  LT
+_ :: Int `compare` negate _:_:_ :: [Int]  =  LT
+_ :: Int `compare` abs _:xs :: [Int]  =  LT
+_ :: Int `compare` [abs _] :: [Int]  =  LT
+_ :: Int `compare` abs _:_:_ :: [Int]  =  LT
+_ :: Int `compare` _ + _:xs :: [Int]  =  LT
+_ :: Int `compare` [_ + _] :: [Int]  =  LT
+_ :: Int `compare` _ + _:_:_ :: [Int]  =  LT
+_ :: Int `compare` head _:xs :: [Int]  =  LT
+_ :: Int `compare` [head _] :: [Int]  =  LT
+_ :: Int `compare` head _:_:_ :: [Int]  =  LT
+_ :: Int `compare` ord _:xs :: [Int]  =  LT
+_ :: Int `compare` [ord _] :: [Int]  =  LT
+_ :: Int `compare` ord _:_:_ :: [Int]  =  LT
+_ :: Int `compare` z:_ :: [Int]  =  LT
+_ :: Int `compare` (-1):_ :: [Int]  =  LT
+_ :: Int `compare` id y:_ :: [Int]  =  LT
+_ :: Int `compare` id 1:_ :: [Int]  =  LT
+_ :: Int `compare` id (id x):_ :: [Int]  =  LT
+_ :: Int `compare` id (id 0):_ :: [Int]  =  LT
+_ :: Int `compare` id (id (id _)):_ :: [Int]  =  LT
+_ :: Int `compare` id (negate _):_ :: [Int]  =  LT
+_ :: Int `compare` id (abs _):_ :: [Int]  =  LT
+_ :: Int `compare` id (_ + _):_ :: [Int]  =  LT
+_ :: Int `compare` id (head _):_ :: [Int]  =  LT
+_ :: Int `compare` id (ord _):_ :: [Int]  =  LT
+_ :: Int `compare` negate x:_ :: [Int]  =  LT
+_ :: Int `compare` negate 0:_ :: [Int]  =  LT
+_ :: Int `compare` negate (id _):_ :: [Int]  =  LT
+_ :: Int `compare` abs x:_ :: [Int]  =  LT
+_ :: Int `compare` abs 0:_ :: [Int]  =  LT
+_ :: Int `compare` abs (id _):_ :: [Int]  =  LT
+_ :: Int `compare` _ + x:_ :: [Int]  =  LT
+_ :: Int `compare` _ + 0:_ :: [Int]  =  LT
+_ :: Int `compare` _ + id _:_ :: [Int]  =  LT
+_ :: Int `compare` x + _:_ :: [Int]  =  LT
+_ :: Int `compare` 0 + _:_ :: [Int]  =  LT
+_ :: Int `compare` id _ + _:_ :: [Int]  =  LT
+_ :: Int `compare` _ * _:_ :: [Int]  =  LT
+_ :: Int `compare` f _:_ :: [Int]  =  LT
+_ :: Int `compare` head xs:_ :: [Int]  =  LT
+_ :: Int `compare` head []:_ :: [Int]  =  LT
+_ :: Int `compare` head (_:_):_ :: [Int]  =  LT
+_ :: Int `compare` ord c:_ :: [Int]  =  LT
+_ :: Int `compare` ord 'a':_ :: [Int]  =  LT
+_ :: Int `compare` tail ys :: [Int]  =  LT
+_ :: Int `compare` tail [0] :: [Int]  =  LT
+_ :: Int `compare` tail (_:xs) :: [Int]  =  LT
+_ :: Int `compare` tail [_] :: [Int]  =  LT
+_ :: Int `compare` tail (_:_:_) :: [Int]  =  LT
+_ :: Int `compare` tail (x:_) :: [Int]  =  LT
+_ :: Int `compare` tail (0:_) :: [Int]  =  LT
+_ :: Int `compare` tail (id _:_) :: [Int]  =  LT
+_ :: Int `compare` tail (tail _) :: [Int]  =  LT
+_ :: Int `compare` tail (_ ++ _) :: [Int]  =  LT
+_ :: Int `compare` _ ++ ys :: [Int]  =  LT
+_ :: Int `compare` _ ++ [0] :: [Int]  =  LT
+_ :: Int `compare` _ ++ (_:xs) :: [Int]  =  LT
+_ :: Int `compare` _ ++ [_] :: [Int]  =  LT
+_ :: Int `compare` _ ++ (_:_:_) :: [Int]  =  LT
+_ :: Int `compare` _ ++ (x:_) :: [Int]  =  LT
+_ :: Int `compare` _ ++ (0:_) :: [Int]  =  LT
+_ :: Int `compare` _ ++ (id _:_) :: [Int]  =  LT
+_ :: Int `compare` _ ++ tail _ :: [Int]  =  LT
+_ :: Int `compare` _ ++ (_ ++ _) :: [Int]  =  LT
+_ :: Int `compare` xs ++ xs :: [Int]  =  LT
+_ :: Int `compare` xs ++ [] :: [Int]  =  LT
+_ :: Int `compare` xs ++ (_:_) :: [Int]  =  LT
+_ :: Int `compare` [] ++ xs :: [Int]  =  LT
+_ :: Int `compare` [] ++ [] :: [Int]  =  LT
+_ :: Int `compare` [] ++ (_:_) :: [Int]  =  LT
+_ :: Int `compare` (_:_) ++ xs :: [Int]  =  LT
+_ :: Int `compare` (_:_) ++ [] :: [Int]  =  LT
+_ :: Int `compare` (_:_) ++ (_:_) :: [Int]  =  LT
+_ :: Int `compare` ys ++ _ :: [Int]  =  LT
+_ :: Int `compare` [0] ++ _ :: [Int]  =  LT
+_ :: Int `compare` (_:xs) ++ _ :: [Int]  =  LT
+_ :: Int `compare` [_] ++ _ :: [Int]  =  LT
+_ :: Int `compare` (_:_:_) ++ _ :: [Int]  =  LT
+_ :: Int `compare` (x:_) ++ _ :: [Int]  =  LT
+_ :: Int `compare` (0:_) ++ _ :: [Int]  =  LT
+_ :: Int `compare` (id _:_) ++ _ :: [Int]  =  LT
+_ :: Int `compare` tail _ ++ _ :: [Int]  =  LT
+_ :: Int `compare` (_ ++ _) ++ _ :: [Int]  =  LT
+_ :: Int `compare` sort xs :: [Int]  =  LT
+_ :: Int `compare` sort [] :: [Int]  =  LT
+_ :: Int `compare` sort (_:_) :: [Int]  =  LT
+_ :: Int `compare` insert _ xs :: [Int]  =  LT
+_ :: Int `compare` insert _ [] :: [Int]  =  LT
+_ :: Int `compare` insert _ (_:_) :: [Int]  =  LT
+_ :: Int `compare` insert x _ :: [Int]  =  LT
+_ :: Int `compare` insert 0 _ :: [Int]  =  LT
+_ :: Int `compare` insert (id _) _ :: [Int]  =  LT
+_ :: Int `compare` (y +) :: Int -> Int  =  LT
+_ :: Int `compare` (1 +) :: Int -> Int  =  LT
+_ :: Int `compare` (id x +) :: Int -> Int  =  LT
+_ :: Int `compare` (id 0 +) :: Int -> Int  =  LT
+_ :: Int `compare` (id (id _) +) :: Int -> Int  =  LT
+_ :: Int `compare` (negate _ +) :: Int -> Int  =  LT
+_ :: Int `compare` (abs _ +) :: Int -> Int  =  LT
+_ :: Int `compare` ((_ + _) +) :: Int -> Int  =  LT
+_ :: Int `compare` (head _ +) :: Int -> Int  =  LT
+_ :: Int `compare` (ord _ +) :: Int -> Int  =  LT
+_ :: Int `compare` (x *) :: Int -> Int  =  LT
+_ :: Int `compare` (0 *) :: Int -> Int  =  LT
+_ :: Int `compare` (id _ *) :: Int -> Int  =  LT
+_ :: Int `compare` g :: Int -> Int  =  LT
+_ :: Int `compare` (p ||) :: Bool -> Bool  =  LT
+_ :: Int `compare` (False ||) :: Bool -> Bool  =  LT
+_ :: Int `compare` (True ||) :: Bool -> Bool  =  LT
+_ :: Int `compare` (not _ ||) :: Bool -> Bool  =  LT
+_ :: Int `compare` (_ &&) :: Bool -> Bool  =  LT
+_ :: Int `compare` (==>) :: Bool -> Bool -> Bool  =  LT
+x :: Int `compare` x' :: Int  =  LT
+x :: Int `compare` 2 :: Int  =  LT
+x :: Int `compare` id z :: Int  =  LT
+x :: Int `compare` id (-1) :: Int  =  LT
+x :: Int `compare` id (id y) :: Int  =  LT
+x :: Int `compare` id (id 1) :: Int  =  LT
+x :: Int `compare` id (id (id x)) :: Int  =  LT
+x :: Int `compare` id (id (id 0)) :: Int  =  LT
+x :: Int `compare` id (id (id (id _))) :: Int  =  LT
+x :: Int `compare` id (id (negate _)) :: Int  =  LT
+x :: Int `compare` id (id (abs _)) :: Int  =  LT
+x :: Int `compare` id (id (_ + _)) :: Int  =  LT
+x :: Int `compare` id (id (head _)) :: Int  =  LT
+x :: Int `compare` id (id (ord _)) :: Int  =  LT
+x :: Int `compare` id (negate x) :: Int  =  LT
+x :: Int `compare` id (negate 0) :: Int  =  LT
+x :: Int `compare` id (negate (id _)) :: Int  =  LT
+x :: Int `compare` id (abs x) :: Int  =  LT
+x :: Int `compare` id (abs 0) :: Int  =  LT
+x :: Int `compare` id (abs (id _)) :: Int  =  LT
+x :: Int `compare` id (_ + x) :: Int  =  LT
+x :: Int `compare` id (_ + 0) :: Int  =  LT
+x :: Int `compare` id (_ + id _) :: Int  =  LT
+x :: Int `compare` id (x + _) :: Int  =  LT
+x :: Int `compare` id (0 + _) :: Int  =  LT
+x :: Int `compare` id (id _ + _) :: Int  =  LT
+x :: Int `compare` id (_ * _) :: Int  =  LT
+x :: Int `compare` id (f _) :: Int  =  LT
+x :: Int `compare` id (head xs) :: Int  =  LT
+x :: Int `compare` id (head []) :: Int  =  LT
+x :: Int `compare` id (head (_:_)) :: Int  =  LT
+x :: Int `compare` id (ord c) :: Int  =  LT
+x :: Int `compare` id (ord 'a') :: Int  =  LT
+x :: Int `compare` negate y :: Int  =  LT
+x :: Int `compare` negate 1 :: Int  =  LT
+x :: Int `compare` negate (id x) :: Int  =  LT
+x :: Int `compare` negate (id 0) :: Int  =  LT
+x :: Int `compare` negate (id (id _)) :: Int  =  LT
+x :: Int `compare` negate (negate _) :: Int  =  LT
+x :: Int `compare` negate (abs _) :: Int  =  LT
+x :: Int `compare` negate (_ + _) :: Int  =  LT
+x :: Int `compare` negate (head _) :: Int  =  LT
+x :: Int `compare` negate (ord _) :: Int  =  LT
+x :: Int `compare` abs y :: Int  =  LT
+x :: Int `compare` abs 1 :: Int  =  LT
+x :: Int `compare` abs (id x) :: Int  =  LT
+x :: Int `compare` abs (id 0) :: Int  =  LT
+x :: Int `compare` abs (id (id _)) :: Int  =  LT
+x :: Int `compare` abs (negate _) :: Int  =  LT
+x :: Int `compare` abs (abs _) :: Int  =  LT
+x :: Int `compare` abs (_ + _) :: Int  =  LT
+x :: Int `compare` abs (head _) :: Int  =  LT
+x :: Int `compare` abs (ord _) :: Int  =  LT
+x :: Int `compare` _ + y :: Int  =  LT
+x :: Int `compare` _ + 1 :: Int  =  LT
+x :: Int `compare` _ + id x :: Int  =  LT
+x :: Int `compare` _ + id 0 :: Int  =  LT
+x :: Int `compare` _ + id (id _) :: Int  =  LT
+x :: Int `compare` _ + negate _ :: Int  =  LT
+x :: Int `compare` _ + abs _ :: Int  =  LT
+x :: Int `compare` _ + (_ + _) :: Int  =  LT
+x :: Int `compare` _ + head _ :: Int  =  LT
+x :: Int `compare` _ + ord _ :: Int  =  LT
+x :: Int `compare` x + x :: Int  =  LT
+x :: Int `compare` x + 0 :: Int  =  LT
+x :: Int `compare` x + id _ :: Int  =  LT
+x :: Int `compare` 0 + x :: Int  =  LT
+x :: Int `compare` 0 + 0 :: Int  =  LT
+x :: Int `compare` 0 + id _ :: Int  =  LT
+x :: Int `compare` id _ + x :: Int  =  LT
+x :: Int `compare` id _ + 0 :: Int  =  LT
+x :: Int `compare` id _ + id _ :: Int  =  LT
+x :: Int `compare` _ * x :: Int  =  LT
+x :: Int `compare` _ * 0 :: Int  =  LT
+x :: Int `compare` _ * id _ :: Int  =  LT
+x :: Int `compare` f x :: Int  =  LT
+x :: Int `compare` f 0 :: Int  =  LT
+x :: Int `compare` f (id _) :: Int  =  LT
+x :: Int `compare` y + _ :: Int  =  LT
+x :: Int `compare` 1 + _ :: Int  =  LT
+x :: Int `compare` id x + _ :: Int  =  LT
+x :: Int `compare` id 0 + _ :: Int  =  LT
+x :: Int `compare` id (id _) + _ :: Int  =  LT
+x :: Int `compare` negate _ + _ :: Int  =  LT
+x :: Int `compare` abs _ + _ :: Int  =  LT
+x :: Int `compare` (_ + _) + _ :: Int  =  LT
+x :: Int `compare` head _ + _ :: Int  =  LT
+x :: Int `compare` ord _ + _ :: Int  =  LT
+x :: Int `compare` x * _ :: Int  =  LT
+x :: Int `compare` 0 * _ :: Int  =  LT
+x :: Int `compare` id _ * _ :: Int  =  LT
+x :: Int `compare` g _ :: Int  =  LT
+x :: Int `compare` head ys :: Int  =  LT
+x :: Int `compare` head [0] :: Int  =  LT
+x :: Int `compare` head (_:xs) :: Int  =  LT
+x :: Int `compare` head [_] :: Int  =  LT
+x :: Int `compare` head (_:_:_) :: Int  =  LT
+x :: Int `compare` head (x:_) :: Int  =  LT
+x :: Int `compare` head (0:_) :: Int  =  LT
+x :: Int `compare` head (id _:_) :: Int  =  LT
+x :: Int `compare` head (tail _) :: Int  =  LT
+x :: Int `compare` head (_ ++ _) :: Int  =  LT
+x :: Int `compare` ord d :: Int  =  LT
+x :: Int `compare` ord ' ' :: Int  =  LT
+x :: Int `compare` r :: Bool  =  GT
+x :: Int `compare` not q :: Bool  =  LT
+x :: Int `compare` not (not p) :: Bool  =  LT
+x :: Int `compare` not (not False) :: Bool  =  LT
+x :: Int `compare` not (not True) :: Bool  =  LT
+x :: Int `compare` not (not (not _)) :: Bool  =  LT
+x :: Int `compare` not (_ || _) :: Bool  =  LT
+x :: Int `compare` _ || p :: Bool  =  LT
+x :: Int `compare` _ || False :: Bool  =  LT
+x :: Int `compare` _ || True :: Bool  =  LT
+x :: Int `compare` _ || not _ :: Bool  =  LT
+x :: Int `compare` p || _ :: Bool  =  LT
+x :: Int `compare` False || _ :: Bool  =  LT
+x :: Int `compare` True || _ :: Bool  =  LT
+x :: Int `compare` not _ || _ :: Bool  =  LT
+x :: Int `compare` _ && _ :: Bool  =  LT
+x :: Int `compare` _ == _ :: Bool  =  LT
+x :: Int `compare` _ == _ :: Bool  =  LT
+x :: Int `compare` odd _ :: Bool  =  LT
+x :: Int `compare` even _ :: Bool  =  LT
+x :: Int `compare` elem _ _ :: Bool  =  LT
+x :: Int `compare` e :: Char  =  GT
+x :: Int `compare` 'b' :: Char  =  LT
+x :: Int `compare` zs :: [Int]  =  LT
+x :: Int `compare` [0,0] :: [Int]  =  LT
+x :: Int `compare` [1] :: [Int]  =  LT
+x :: Int `compare` _:ys :: [Int]  =  LT
+x :: Int `compare` _:[0] :: [Int]  =  LT
+x :: Int `compare` _:_:xs :: [Int]  =  LT
+x :: Int `compare` [_,_] :: [Int]  =  LT
+x :: Int `compare` _:_:_:_ :: [Int]  =  LT
+x :: Int `compare` _:x:_ :: [Int]  =  LT
+x :: Int `compare` _:0:_ :: [Int]  =  LT
+x :: Int `compare` _:id _:_ :: [Int]  =  LT
+x :: Int `compare` _:tail _ :: [Int]  =  LT
+x :: Int `compare` _:(_ ++ _) :: [Int]  =  LT
+x :: Int `compare` x:xs :: [Int]  =  LT
+x :: Int `compare` [x] :: [Int]  =  LT
+x :: Int `compare` x:_:_ :: [Int]  =  LT
+x :: Int `compare` 0:xs :: [Int]  =  LT
+x :: Int `compare` [0] :: [Int]  =  LT
+x :: Int `compare` 0:_:_ :: [Int]  =  LT
+x :: Int `compare` id _:xs :: [Int]  =  LT
+x :: Int `compare` [id _] :: [Int]  =  LT
+x :: Int `compare` id _:_:_ :: [Int]  =  LT
+x :: Int `compare` y:_ :: [Int]  =  LT
+x :: Int `compare` 1:_ :: [Int]  =  LT
+x :: Int `compare` id x:_ :: [Int]  =  LT
+x :: Int `compare` id 0:_ :: [Int]  =  LT
+x :: Int `compare` id (id _):_ :: [Int]  =  LT
+x :: Int `compare` negate _:_ :: [Int]  =  LT
+x :: Int `compare` abs _:_ :: [Int]  =  LT
+x :: Int `compare` _ + _:_ :: [Int]  =  LT
+x :: Int `compare` head _:_ :: [Int]  =  LT
+x :: Int `compare` ord _:_ :: [Int]  =  LT
+x :: Int `compare` tail xs :: [Int]  =  LT
+x :: Int `compare` tail [] :: [Int]  =  LT
+x :: Int `compare` tail (_:_) :: [Int]  =  LT
+x :: Int `compare` _ ++ xs :: [Int]  =  LT
+x :: Int `compare` _ ++ [] :: [Int]  =  LT
+x :: Int `compare` _ ++ (_:_) :: [Int]  =  LT
+x :: Int `compare` xs ++ _ :: [Int]  =  LT
+x :: Int `compare` [] ++ _ :: [Int]  =  LT
+x :: Int `compare` (_:_) ++ _ :: [Int]  =  LT
+x :: Int `compare` sort _ :: [Int]  =  LT
+x :: Int `compare` insert _ _ :: [Int]  =  LT
+x :: Int `compare` (x +) :: Int -> Int  =  LT
+x :: Int `compare` (0 +) :: Int -> Int  =  LT
+x :: Int `compare` (id _ +) :: Int -> Int  =  LT
+x :: Int `compare` (_ *) :: Int -> Int  =  LT
+x :: Int `compare` f :: Int -> Int  =  LT
+x :: Int `compare` (_ ||) :: Bool -> Bool  =  LT
+x :: Int `compare` (&&) :: Bool -> Bool -> Bool  =  LT
+0 :: Int `compare` x' :: Int  =  GT
+0 :: Int `compare` 2 :: Int  =  LT
+0 :: Int `compare` id z :: Int  =  LT
+0 :: Int `compare` id (-1) :: Int  =  LT
+0 :: Int `compare` id (id y) :: Int  =  LT
+0 :: Int `compare` id (id 1) :: Int  =  LT
+0 :: Int `compare` id (id (id x)) :: Int  =  LT
+0 :: Int `compare` id (id (id 0)) :: Int  =  LT
+0 :: Int `compare` id (id (id (id _))) :: Int  =  LT
+0 :: Int `compare` id (id (negate _)) :: Int  =  LT
+0 :: Int `compare` id (id (abs _)) :: Int  =  LT
+0 :: Int `compare` id (id (_ + _)) :: Int  =  LT
+0 :: Int `compare` id (id (head _)) :: Int  =  LT
+0 :: Int `compare` id (id (ord _)) :: Int  =  LT
+0 :: Int `compare` id (negate x) :: Int  =  LT
+0 :: Int `compare` id (negate 0) :: Int  =  LT
+0 :: Int `compare` id (negate (id _)) :: Int  =  LT
+0 :: Int `compare` id (abs x) :: Int  =  LT
+0 :: Int `compare` id (abs 0) :: Int  =  LT
+0 :: Int `compare` id (abs (id _)) :: Int  =  LT
+0 :: Int `compare` id (_ + x) :: Int  =  LT
+0 :: Int `compare` id (_ + 0) :: Int  =  LT
+0 :: Int `compare` id (_ + id _) :: Int  =  LT
+0 :: Int `compare` id (x + _) :: Int  =  LT
+0 :: Int `compare` id (0 + _) :: Int  =  LT
+0 :: Int `compare` id (id _ + _) :: Int  =  LT
+0 :: Int `compare` id (_ * _) :: Int  =  LT
+0 :: Int `compare` id (f _) :: Int  =  LT
+0 :: Int `compare` id (head xs) :: Int  =  LT
+0 :: Int `compare` id (head []) :: Int  =  LT
+0 :: Int `compare` id (head (_:_)) :: Int  =  LT
+0 :: Int `compare` id (ord c) :: Int  =  LT
+0 :: Int `compare` id (ord 'a') :: Int  =  LT
+0 :: Int `compare` negate y :: Int  =  LT
+0 :: Int `compare` negate 1 :: Int  =  LT
+0 :: Int `compare` negate (id x) :: Int  =  LT
+0 :: Int `compare` negate (id 0) :: Int  =  LT
+0 :: Int `compare` negate (id (id _)) :: Int  =  LT
+0 :: Int `compare` negate (negate _) :: Int  =  LT
+0 :: Int `compare` negate (abs _) :: Int  =  LT
+0 :: Int `compare` negate (_ + _) :: Int  =  LT
+0 :: Int `compare` negate (head _) :: Int  =  LT
+0 :: Int `compare` negate (ord _) :: Int  =  LT
+0 :: Int `compare` abs y :: Int  =  LT
+0 :: Int `compare` abs 1 :: Int  =  LT
+0 :: Int `compare` abs (id x) :: Int  =  LT
+0 :: Int `compare` abs (id 0) :: Int  =  LT
+0 :: Int `compare` abs (id (id _)) :: Int  =  LT
+0 :: Int `compare` abs (negate _) :: Int  =  LT
+0 :: Int `compare` abs (abs _) :: Int  =  LT
+0 :: Int `compare` abs (_ + _) :: Int  =  LT
+0 :: Int `compare` abs (head _) :: Int  =  LT
+0 :: Int `compare` abs (ord _) :: Int  =  LT
+0 :: Int `compare` _ + y :: Int  =  LT
+0 :: Int `compare` _ + 1 :: Int  =  LT
+0 :: Int `compare` _ + id x :: Int  =  LT
+0 :: Int `compare` _ + id 0 :: Int  =  LT
+0 :: Int `compare` _ + id (id _) :: Int  =  LT
+0 :: Int `compare` _ + negate _ :: Int  =  LT
+0 :: Int `compare` _ + abs _ :: Int  =  LT
+0 :: Int `compare` _ + (_ + _) :: Int  =  LT
+0 :: Int `compare` _ + head _ :: Int  =  LT
+0 :: Int `compare` _ + ord _ :: Int  =  LT
+0 :: Int `compare` x + x :: Int  =  LT
+0 :: Int `compare` x + 0 :: Int  =  LT
+0 :: Int `compare` x + id _ :: Int  =  LT
+0 :: Int `compare` 0 + x :: Int  =  LT
+0 :: Int `compare` 0 + 0 :: Int  =  LT
+0 :: Int `compare` 0 + id _ :: Int  =  LT
+0 :: Int `compare` id _ + x :: Int  =  LT
+0 :: Int `compare` id _ + 0 :: Int  =  LT
+0 :: Int `compare` id _ + id _ :: Int  =  LT
+0 :: Int `compare` _ * x :: Int  =  LT
+0 :: Int `compare` _ * 0 :: Int  =  LT
+0 :: Int `compare` _ * id _ :: Int  =  LT
+0 :: Int `compare` f x :: Int  =  LT
+0 :: Int `compare` f 0 :: Int  =  LT
+0 :: Int `compare` f (id _) :: Int  =  LT
+0 :: Int `compare` y + _ :: Int  =  LT
+0 :: Int `compare` 1 + _ :: Int  =  LT
+0 :: Int `compare` id x + _ :: Int  =  LT
+0 :: Int `compare` id 0 + _ :: Int  =  LT
+0 :: Int `compare` id (id _) + _ :: Int  =  LT
+0 :: Int `compare` negate _ + _ :: Int  =  LT
+0 :: Int `compare` abs _ + _ :: Int  =  LT
+0 :: Int `compare` (_ + _) + _ :: Int  =  LT
+0 :: Int `compare` head _ + _ :: Int  =  LT
+0 :: Int `compare` ord _ + _ :: Int  =  LT
+0 :: Int `compare` x * _ :: Int  =  LT
+0 :: Int `compare` 0 * _ :: Int  =  LT
+0 :: Int `compare` id _ * _ :: Int  =  LT
+0 :: Int `compare` g _ :: Int  =  LT
+0 :: Int `compare` head ys :: Int  =  LT
+0 :: Int `compare` head [0] :: Int  =  LT
+0 :: Int `compare` head (_:xs) :: Int  =  LT
+0 :: Int `compare` head [_] :: Int  =  LT
+0 :: Int `compare` head (_:_:_) :: Int  =  LT
+0 :: Int `compare` head (x:_) :: Int  =  LT
+0 :: Int `compare` head (0:_) :: Int  =  LT
+0 :: Int `compare` head (id _:_) :: Int  =  LT
+0 :: Int `compare` head (tail _) :: Int  =  LT
+0 :: Int `compare` head (_ ++ _) :: Int  =  LT
+0 :: Int `compare` ord d :: Int  =  LT
+0 :: Int `compare` ord ' ' :: Int  =  LT
+0 :: Int `compare` r :: Bool  =  GT
+0 :: Int `compare` not q :: Bool  =  LT
+0 :: Int `compare` not (not p) :: Bool  =  LT
+0 :: Int `compare` not (not False) :: Bool  =  LT
+0 :: Int `compare` not (not True) :: Bool  =  LT
+0 :: Int `compare` not (not (not _)) :: Bool  =  LT
+0 :: Int `compare` not (_ || _) :: Bool  =  LT
+0 :: Int `compare` _ || p :: Bool  =  LT
+0 :: Int `compare` _ || False :: Bool  =  LT
+0 :: Int `compare` _ || True :: Bool  =  LT
+0 :: Int `compare` _ || not _ :: Bool  =  LT
+0 :: Int `compare` p || _ :: Bool  =  LT
+0 :: Int `compare` False || _ :: Bool  =  LT
+0 :: Int `compare` True || _ :: Bool  =  LT
+0 :: Int `compare` not _ || _ :: Bool  =  LT
+0 :: Int `compare` _ && _ :: Bool  =  LT
+0 :: Int `compare` _ == _ :: Bool  =  LT
+0 :: Int `compare` _ == _ :: Bool  =  LT
+0 :: Int `compare` odd _ :: Bool  =  LT
+0 :: Int `compare` even _ :: Bool  =  LT
+0 :: Int `compare` elem _ _ :: Bool  =  LT
+0 :: Int `compare` e :: Char  =  GT
+0 :: Int `compare` 'b' :: Char  =  GT
+0 :: Int `compare` zs :: [Int]  =  GT
+0 :: Int `compare` [0,0] :: [Int]  =  LT
+0 :: Int `compare` [1] :: [Int]  =  LT
+0 :: Int `compare` _:ys :: [Int]  =  LT
+0 :: Int `compare` _:[0] :: [Int]  =  LT
+0 :: Int `compare` _:_:xs :: [Int]  =  LT
+0 :: Int `compare` [_,_] :: [Int]  =  LT
+0 :: Int `compare` _:_:_:_ :: [Int]  =  LT
+0 :: Int `compare` _:x:_ :: [Int]  =  LT
+0 :: Int `compare` _:0:_ :: [Int]  =  LT
+0 :: Int `compare` _:id _:_ :: [Int]  =  LT
+0 :: Int `compare` _:tail _ :: [Int]  =  LT
+0 :: Int `compare` _:(_ ++ _) :: [Int]  =  LT
+0 :: Int `compare` x:xs :: [Int]  =  LT
+0 :: Int `compare` [x] :: [Int]  =  LT
+0 :: Int `compare` x:_:_ :: [Int]  =  LT
+0 :: Int `compare` 0:xs :: [Int]  =  LT
+0 :: Int `compare` [0] :: [Int]  =  LT
+0 :: Int `compare` 0:_:_ :: [Int]  =  LT
+0 :: Int `compare` id _:xs :: [Int]  =  LT
+0 :: Int `compare` [id _] :: [Int]  =  LT
+0 :: Int `compare` id _:_:_ :: [Int]  =  LT
+0 :: Int `compare` y:_ :: [Int]  =  LT
+0 :: Int `compare` 1:_ :: [Int]  =  LT
+0 :: Int `compare` id x:_ :: [Int]  =  LT
+0 :: Int `compare` id 0:_ :: [Int]  =  LT
+0 :: Int `compare` id (id _):_ :: [Int]  =  LT
+0 :: Int `compare` negate _:_ :: [Int]  =  LT
+0 :: Int `compare` abs _:_ :: [Int]  =  LT
+0 :: Int `compare` _ + _:_ :: [Int]  =  LT
+0 :: Int `compare` head _:_ :: [Int]  =  LT
+0 :: Int `compare` ord _:_ :: [Int]  =  LT
+0 :: Int `compare` tail xs :: [Int]  =  LT
+0 :: Int `compare` tail [] :: [Int]  =  LT
+0 :: Int `compare` tail (_:_) :: [Int]  =  LT
+0 :: Int `compare` _ ++ xs :: [Int]  =  LT
+0 :: Int `compare` _ ++ [] :: [Int]  =  LT
+0 :: Int `compare` _ ++ (_:_) :: [Int]  =  LT
+0 :: Int `compare` xs ++ _ :: [Int]  =  LT
+0 :: Int `compare` [] ++ _ :: [Int]  =  LT
+0 :: Int `compare` (_:_) ++ _ :: [Int]  =  LT
+0 :: Int `compare` sort _ :: [Int]  =  LT
+0 :: Int `compare` insert _ _ :: [Int]  =  LT
+0 :: Int `compare` (x +) :: Int -> Int  =  LT
+0 :: Int `compare` (0 +) :: Int -> Int  =  LT
+0 :: Int `compare` (id _ +) :: Int -> Int  =  LT
+0 :: Int `compare` (_ *) :: Int -> Int  =  LT
+0 :: Int `compare` f :: Int -> Int  =  GT
+0 :: Int `compare` (_ ||) :: Bool -> Bool  =  LT
+0 :: Int `compare` (&&) :: Bool -> Bool -> Bool  =  LT
+id _ :: Int `compare` x' :: Int  =  GT
+id _ :: Int `compare` 2 :: Int  =  GT
+id _ :: Int `compare` id z :: Int  =  LT
+id _ :: Int `compare` id (-1) :: Int  =  LT
+id _ :: Int `compare` id (id y) :: Int  =  LT
+id _ :: Int `compare` id (id 1) :: Int  =  LT
+id _ :: Int `compare` id (id (id x)) :: Int  =  LT
+id _ :: Int `compare` id (id (id 0)) :: Int  =  LT
+id _ :: Int `compare` id (id (id (id _))) :: Int  =  LT
+id _ :: Int `compare` id (id (negate _)) :: Int  =  LT
+id _ :: Int `compare` id (id (abs _)) :: Int  =  LT
+id _ :: Int `compare` id (id (_ + _)) :: Int  =  LT
+id _ :: Int `compare` id (id (head _)) :: Int  =  LT
+id _ :: Int `compare` id (id (ord _)) :: Int  =  LT
+id _ :: Int `compare` id (negate x) :: Int  =  LT
+id _ :: Int `compare` id (negate 0) :: Int  =  LT
+id _ :: Int `compare` id (negate (id _)) :: Int  =  LT
+id _ :: Int `compare` id (abs x) :: Int  =  LT
+id _ :: Int `compare` id (abs 0) :: Int  =  LT
+id _ :: Int `compare` id (abs (id _)) :: Int  =  LT
+id _ :: Int `compare` id (_ + x) :: Int  =  LT
+id _ :: Int `compare` id (_ + 0) :: Int  =  LT
+id _ :: Int `compare` id (_ + id _) :: Int  =  LT
+id _ :: Int `compare` id (x + _) :: Int  =  LT
+id _ :: Int `compare` id (0 + _) :: Int  =  LT
+id _ :: Int `compare` id (id _ + _) :: Int  =  LT
+id _ :: Int `compare` id (_ * _) :: Int  =  LT
+id _ :: Int `compare` id (f _) :: Int  =  LT
+id _ :: Int `compare` id (head xs) :: Int  =  LT
+id _ :: Int `compare` id (head []) :: Int  =  LT
+id _ :: Int `compare` id (head (_:_)) :: Int  =  LT
+id _ :: Int `compare` id (ord c) :: Int  =  LT
+id _ :: Int `compare` id (ord 'a') :: Int  =  LT
+id _ :: Int `compare` negate y :: Int  =  LT
+id _ :: Int `compare` negate 1 :: Int  =  LT
+id _ :: Int `compare` negate (id x) :: Int  =  LT
+id _ :: Int `compare` negate (id 0) :: Int  =  LT
+id _ :: Int `compare` negate (id (id _)) :: Int  =  LT
+id _ :: Int `compare` negate (negate _) :: Int  =  LT
+id _ :: Int `compare` negate (abs _) :: Int  =  LT
+id _ :: Int `compare` negate (_ + _) :: Int  =  LT
+id _ :: Int `compare` negate (head _) :: Int  =  LT
+id _ :: Int `compare` negate (ord _) :: Int  =  LT
+id _ :: Int `compare` abs y :: Int  =  LT
+id _ :: Int `compare` abs 1 :: Int  =  LT
+id _ :: Int `compare` abs (id x) :: Int  =  LT
+id _ :: Int `compare` abs (id 0) :: Int  =  LT
+id _ :: Int `compare` abs (id (id _)) :: Int  =  LT
+id _ :: Int `compare` abs (negate _) :: Int  =  LT
+id _ :: Int `compare` abs (abs _) :: Int  =  LT
+id _ :: Int `compare` abs (_ + _) :: Int  =  LT
+id _ :: Int `compare` abs (head _) :: Int  =  LT
+id _ :: Int `compare` abs (ord _) :: Int  =  LT
+id _ :: Int `compare` _ + y :: Int  =  LT
+id _ :: Int `compare` _ + 1 :: Int  =  LT
+id _ :: Int `compare` _ + id x :: Int  =  LT
+id _ :: Int `compare` _ + id 0 :: Int  =  LT
+id _ :: Int `compare` _ + id (id _) :: Int  =  LT
+id _ :: Int `compare` _ + negate _ :: Int  =  LT
+id _ :: Int `compare` _ + abs _ :: Int  =  LT
+id _ :: Int `compare` _ + (_ + _) :: Int  =  LT
+id _ :: Int `compare` _ + head _ :: Int  =  LT
+id _ :: Int `compare` _ + ord _ :: Int  =  LT
+id _ :: Int `compare` x + x :: Int  =  LT
+id _ :: Int `compare` x + 0 :: Int  =  LT
+id _ :: Int `compare` x + id _ :: Int  =  LT
+id _ :: Int `compare` 0 + x :: Int  =  LT
+id _ :: Int `compare` 0 + 0 :: Int  =  LT
+id _ :: Int `compare` 0 + id _ :: Int  =  LT
+id _ :: Int `compare` id _ + x :: Int  =  LT
+id _ :: Int `compare` id _ + 0 :: Int  =  LT
+id _ :: Int `compare` id _ + id _ :: Int  =  LT
+id _ :: Int `compare` _ * x :: Int  =  LT
+id _ :: Int `compare` _ * 0 :: Int  =  LT
+id _ :: Int `compare` _ * id _ :: Int  =  LT
+id _ :: Int `compare` f x :: Int  =  GT
+id _ :: Int `compare` f 0 :: Int  =  GT
+id _ :: Int `compare` f (id _) :: Int  =  LT
+id _ :: Int `compare` y + _ :: Int  =  LT
+id _ :: Int `compare` 1 + _ :: Int  =  LT
+id _ :: Int `compare` id x + _ :: Int  =  LT
+id _ :: Int `compare` id 0 + _ :: Int  =  LT
+id _ :: Int `compare` id (id _) + _ :: Int  =  LT
+id _ :: Int `compare` negate _ + _ :: Int  =  LT
+id _ :: Int `compare` abs _ + _ :: Int  =  LT
+id _ :: Int `compare` (_ + _) + _ :: Int  =  LT
+id _ :: Int `compare` head _ + _ :: Int  =  LT
+id _ :: Int `compare` ord _ + _ :: Int  =  LT
+id _ :: Int `compare` x * _ :: Int  =  LT
+id _ :: Int `compare` 0 * _ :: Int  =  LT
+id _ :: Int `compare` id _ * _ :: Int  =  LT
+id _ :: Int `compare` g _ :: Int  =  GT
+id _ :: Int `compare` head ys :: Int  =  LT
+id _ :: Int `compare` head [0] :: Int  =  LT
+id _ :: Int `compare` head (_:xs) :: Int  =  LT
+id _ :: Int `compare` head [_] :: Int  =  LT
+id _ :: Int `compare` head (_:_:_) :: Int  =  LT
+id _ :: Int `compare` head (x:_) :: Int  =  LT
+id _ :: Int `compare` head (0:_) :: Int  =  LT
+id _ :: Int `compare` head (id _:_) :: Int  =  LT
+id _ :: Int `compare` head (tail _) :: Int  =  LT
+id _ :: Int `compare` head (_ ++ _) :: Int  =  LT
+id _ :: Int `compare` ord d :: Int  =  GT
+id _ :: Int `compare` ord ' ' :: Int  =  LT
+id _ :: Int `compare` r :: Bool  =  GT
+id _ :: Int `compare` not q :: Bool  =  GT
+id _ :: Int `compare` not (not p) :: Bool  =  LT
+id _ :: Int `compare` not (not False) :: Bool  =  LT
+id _ :: Int `compare` not (not True) :: Bool  =  LT
+id _ :: Int `compare` not (not (not _)) :: Bool  =  LT
+id _ :: Int `compare` not (_ || _) :: Bool  =  LT
+id _ :: Int `compare` _ || p :: Bool  =  LT
+id _ :: Int `compare` _ || False :: Bool  =  LT
+id _ :: Int `compare` _ || True :: Bool  =  LT
+id _ :: Int `compare` _ || not _ :: Bool  =  LT
+id _ :: Int `compare` p || _ :: Bool  =  LT
+id _ :: Int `compare` False || _ :: Bool  =  LT
+id _ :: Int `compare` True || _ :: Bool  =  LT
+id _ :: Int `compare` not _ || _ :: Bool  =  LT
+id _ :: Int `compare` _ && _ :: Bool  =  LT
+id _ :: Int `compare` _ == _ :: Bool  =  LT
+id _ :: Int `compare` _ == _ :: Bool  =  LT
+id _ :: Int `compare` odd _ :: Bool  =  GT
+id _ :: Int `compare` even _ :: Bool  =  GT
+id _ :: Int `compare` elem _ _ :: Bool  =  LT
+id _ :: Int `compare` e :: Char  =  GT
+id _ :: Int `compare` 'b' :: Char  =  GT
+id _ :: Int `compare` zs :: [Int]  =  GT
+id _ :: Int `compare` [0,0] :: [Int]  =  GT
+id _ :: Int `compare` [1] :: [Int]  =  GT
+id _ :: Int `compare` _:ys :: [Int]  =  LT
+id _ :: Int `compare` _:[0] :: [Int]  =  LT
+id _ :: Int `compare` _:_:xs :: [Int]  =  LT
+id _ :: Int `compare` [_,_] :: [Int]  =  LT
+id _ :: Int `compare` _:_:_:_ :: [Int]  =  LT
+id _ :: Int `compare` _:x:_ :: [Int]  =  LT
+id _ :: Int `compare` _:0:_ :: [Int]  =  LT
+id _ :: Int `compare` _:id _:_ :: [Int]  =  LT
+id _ :: Int `compare` _:tail _ :: [Int]  =  LT
+id _ :: Int `compare` _:(_ ++ _) :: [Int]  =  LT
+id _ :: Int `compare` x:xs :: [Int]  =  LT
+id _ :: Int `compare` [x] :: [Int]  =  LT
+id _ :: Int `compare` x:_:_ :: [Int]  =  LT
+id _ :: Int `compare` 0:xs :: [Int]  =  LT
+id _ :: Int `compare` [0] :: [Int]  =  LT
+id _ :: Int `compare` 0:_:_ :: [Int]  =  LT
+id _ :: Int `compare` id _:xs :: [Int]  =  LT
+id _ :: Int `compare` [id _] :: [Int]  =  LT
+id _ :: Int `compare` id _:_:_ :: [Int]  =  LT
+id _ :: Int `compare` y:_ :: [Int]  =  LT
+id _ :: Int `compare` 1:_ :: [Int]  =  LT
+id _ :: Int `compare` id x:_ :: [Int]  =  LT
+id _ :: Int `compare` id 0:_ :: [Int]  =  LT
+id _ :: Int `compare` id (id _):_ :: [Int]  =  LT
+id _ :: Int `compare` negate _:_ :: [Int]  =  LT
+id _ :: Int `compare` abs _:_ :: [Int]  =  LT
+id _ :: Int `compare` _ + _:_ :: [Int]  =  LT
+id _ :: Int `compare` head _:_ :: [Int]  =  LT
+id _ :: Int `compare` ord _:_ :: [Int]  =  LT
+id _ :: Int `compare` tail xs :: [Int]  =  LT
+id _ :: Int `compare` tail [] :: [Int]  =  LT
+id _ :: Int `compare` tail (_:_) :: [Int]  =  LT
+id _ :: Int `compare` _ ++ xs :: [Int]  =  LT
+id _ :: Int `compare` _ ++ [] :: [Int]  =  LT
+id _ :: Int `compare` _ ++ (_:_) :: [Int]  =  LT
+id _ :: Int `compare` xs ++ _ :: [Int]  =  LT
+id _ :: Int `compare` [] ++ _ :: [Int]  =  LT
+id _ :: Int `compare` (_:_) ++ _ :: [Int]  =  LT
+id _ :: Int `compare` sort _ :: [Int]  =  LT
+id _ :: Int `compare` insert _ _ :: [Int]  =  LT
+id _ :: Int `compare` (x +) :: Int -> Int  =  LT
+id _ :: Int `compare` (0 +) :: Int -> Int  =  LT
+id _ :: Int `compare` (id _ +) :: Int -> Int  =  LT
+id _ :: Int `compare` (_ *) :: Int -> Int  =  LT
+id _ :: Int `compare` f :: Int -> Int  =  GT
+id _ :: Int `compare` (_ ||) :: Bool -> Bool  =  LT
+id _ :: Int `compare` (&&) :: Bool -> Bool -> Bool  =  GT
+_ :: Bool `compare` x' :: Int  =  LT
+_ :: Bool `compare` 2 :: Int  =  LT
+_ :: Bool `compare` id z :: Int  =  LT
+_ :: Bool `compare` id (-1) :: Int  =  LT
+_ :: Bool `compare` id (id y) :: Int  =  LT
+_ :: Bool `compare` id (id 1) :: Int  =  LT
+_ :: Bool `compare` id (id (id x)) :: Int  =  LT
+_ :: Bool `compare` id (id (id 0)) :: Int  =  LT
+_ :: Bool `compare` id (id (id (id _))) :: Int  =  LT
+_ :: Bool `compare` id (id (negate _)) :: Int  =  LT
+_ :: Bool `compare` id (id (abs _)) :: Int  =  LT
+_ :: Bool `compare` id (id (_ + _)) :: Int  =  LT
+_ :: Bool `compare` id (id (head _)) :: Int  =  LT
+_ :: Bool `compare` id (id (ord _)) :: Int  =  LT
+_ :: Bool `compare` id (negate x) :: Int  =  LT
+_ :: Bool `compare` id (negate 0) :: Int  =  LT
+_ :: Bool `compare` id (negate (id _)) :: Int  =  LT
+_ :: Bool `compare` id (abs x) :: Int  =  LT
+_ :: Bool `compare` id (abs 0) :: Int  =  LT
+_ :: Bool `compare` id (abs (id _)) :: Int  =  LT
+_ :: Bool `compare` id (_ + x) :: Int  =  LT
+_ :: Bool `compare` id (_ + 0) :: Int  =  LT
+_ :: Bool `compare` id (_ + id _) :: Int  =  LT
+_ :: Bool `compare` id (x + _) :: Int  =  LT
+_ :: Bool `compare` id (0 + _) :: Int  =  LT
+_ :: Bool `compare` id (id _ + _) :: Int  =  LT
+_ :: Bool `compare` id (_ * _) :: Int  =  LT
+_ :: Bool `compare` id (f _) :: Int  =  LT
+_ :: Bool `compare` id (head xs) :: Int  =  LT
+_ :: Bool `compare` id (head []) :: Int  =  LT
+_ :: Bool `compare` id (head (_:_)) :: Int  =  LT
+_ :: Bool `compare` id (ord c) :: Int  =  LT
+_ :: Bool `compare` id (ord 'a') :: Int  =  LT
+_ :: Bool `compare` negate y :: Int  =  LT
+_ :: Bool `compare` negate 1 :: Int  =  LT
+_ :: Bool `compare` negate (id x) :: Int  =  LT
+_ :: Bool `compare` negate (id 0) :: Int  =  LT
+_ :: Bool `compare` negate (id (id _)) :: Int  =  LT
+_ :: Bool `compare` negate (negate _) :: Int  =  LT
+_ :: Bool `compare` negate (abs _) :: Int  =  LT
+_ :: Bool `compare` negate (_ + _) :: Int  =  LT
+_ :: Bool `compare` negate (head _) :: Int  =  LT
+_ :: Bool `compare` negate (ord _) :: Int  =  LT
+_ :: Bool `compare` abs y :: Int  =  LT
+_ :: Bool `compare` abs 1 :: Int  =  LT
+_ :: Bool `compare` abs (id x) :: Int  =  LT
+_ :: Bool `compare` abs (id 0) :: Int  =  LT
+_ :: Bool `compare` abs (id (id _)) :: Int  =  LT
+_ :: Bool `compare` abs (negate _) :: Int  =  LT
+_ :: Bool `compare` abs (abs _) :: Int  =  LT
+_ :: Bool `compare` abs (_ + _) :: Int  =  LT
+_ :: Bool `compare` abs (head _) :: Int  =  LT
+_ :: Bool `compare` abs (ord _) :: Int  =  LT
+_ :: Bool `compare` _ + y :: Int  =  LT
+_ :: Bool `compare` _ + 1 :: Int  =  LT
+_ :: Bool `compare` _ + id x :: Int  =  LT
+_ :: Bool `compare` _ + id 0 :: Int  =  LT
+_ :: Bool `compare` _ + id (id _) :: Int  =  LT
+_ :: Bool `compare` _ + negate _ :: Int  =  LT
+_ :: Bool `compare` _ + abs _ :: Int  =  LT
+_ :: Bool `compare` _ + (_ + _) :: Int  =  LT
+_ :: Bool `compare` _ + head _ :: Int  =  LT
+_ :: Bool `compare` _ + ord _ :: Int  =  LT
+_ :: Bool `compare` x + x :: Int  =  LT
+_ :: Bool `compare` x + 0 :: Int  =  LT
+_ :: Bool `compare` x + id _ :: Int  =  LT
+_ :: Bool `compare` 0 + x :: Int  =  LT
+_ :: Bool `compare` 0 + 0 :: Int  =  LT
+_ :: Bool `compare` 0 + id _ :: Int  =  LT
+_ :: Bool `compare` id _ + x :: Int  =  LT
+_ :: Bool `compare` id _ + 0 :: Int  =  LT
+_ :: Bool `compare` id _ + id _ :: Int  =  LT
+_ :: Bool `compare` _ * x :: Int  =  LT
+_ :: Bool `compare` _ * 0 :: Int  =  LT
+_ :: Bool `compare` _ * id _ :: Int  =  LT
+_ :: Bool `compare` f x :: Int  =  LT
+_ :: Bool `compare` f 0 :: Int  =  LT
+_ :: Bool `compare` f (id _) :: Int  =  LT
+_ :: Bool `compare` y + _ :: Int  =  LT
+_ :: Bool `compare` 1 + _ :: Int  =  LT
+_ :: Bool `compare` id x + _ :: Int  =  LT
+_ :: Bool `compare` id 0 + _ :: Int  =  LT
+_ :: Bool `compare` id (id _) + _ :: Int  =  LT
+_ :: Bool `compare` negate _ + _ :: Int  =  LT
+_ :: Bool `compare` abs _ + _ :: Int  =  LT
+_ :: Bool `compare` (_ + _) + _ :: Int  =  LT
+_ :: Bool `compare` head _ + _ :: Int  =  LT
+_ :: Bool `compare` ord _ + _ :: Int  =  LT
+_ :: Bool `compare` x * _ :: Int  =  LT
+_ :: Bool `compare` 0 * _ :: Int  =  LT
+_ :: Bool `compare` id _ * _ :: Int  =  LT
+_ :: Bool `compare` g _ :: Int  =  LT
+_ :: Bool `compare` head ys :: Int  =  LT
+_ :: Bool `compare` head [0] :: Int  =  LT
+_ :: Bool `compare` head (_:xs) :: Int  =  LT
+_ :: Bool `compare` head [_] :: Int  =  LT
+_ :: Bool `compare` head (_:_:_) :: Int  =  LT
+_ :: Bool `compare` head (x:_) :: Int  =  LT
+_ :: Bool `compare` head (0:_) :: Int  =  LT
+_ :: Bool `compare` head (id _:_) :: Int  =  LT
+_ :: Bool `compare` head (tail _) :: Int  =  LT
+_ :: Bool `compare` head (_ ++ _) :: Int  =  LT
+_ :: Bool `compare` ord d :: Int  =  LT
+_ :: Bool `compare` ord ' ' :: Int  =  LT
+_ :: Bool `compare` r :: Bool  =  LT
+_ :: Bool `compare` not q :: Bool  =  LT
+_ :: Bool `compare` not (not p) :: Bool  =  LT
+_ :: Bool `compare` not (not False) :: Bool  =  LT
+_ :: Bool `compare` not (not True) :: Bool  =  LT
+_ :: Bool `compare` not (not (not _)) :: Bool  =  LT
+_ :: Bool `compare` not (_ || _) :: Bool  =  LT
+_ :: Bool `compare` _ || p :: Bool  =  LT
+_ :: Bool `compare` _ || False :: Bool  =  LT
+_ :: Bool `compare` _ || True :: Bool  =  LT
+_ :: Bool `compare` _ || not _ :: Bool  =  LT
+_ :: Bool `compare` p || _ :: Bool  =  LT
+_ :: Bool `compare` False || _ :: Bool  =  LT
+_ :: Bool `compare` True || _ :: Bool  =  LT
+_ :: Bool `compare` not _ || _ :: Bool  =  LT
+_ :: Bool `compare` _ && _ :: Bool  =  LT
+_ :: Bool `compare` _ == _ :: Bool  =  LT
+_ :: Bool `compare` _ == _ :: Bool  =  LT
+_ :: Bool `compare` odd _ :: Bool  =  LT
+_ :: Bool `compare` even _ :: Bool  =  LT
+_ :: Bool `compare` elem _ _ :: Bool  =  LT
+_ :: Bool `compare` e :: Char  =  LT
+_ :: Bool `compare` 'b' :: Char  =  LT
+_ :: Bool `compare` zs :: [Int]  =  LT
+_ :: Bool `compare` [0,0] :: [Int]  =  LT
+_ :: Bool `compare` [1] :: [Int]  =  LT
+_ :: Bool `compare` _:ys :: [Int]  =  LT
+_ :: Bool `compare` _:[0] :: [Int]  =  LT
+_ :: Bool `compare` _:_:xs :: [Int]  =  LT
+_ :: Bool `compare` [_,_] :: [Int]  =  LT
+_ :: Bool `compare` _:_:_:_ :: [Int]  =  LT
+_ :: Bool `compare` _:x:_ :: [Int]  =  LT
+_ :: Bool `compare` _:0:_ :: [Int]  =  LT
+_ :: Bool `compare` _:id _:_ :: [Int]  =  LT
+_ :: Bool `compare` _:tail _ :: [Int]  =  LT
+_ :: Bool `compare` _:(_ ++ _) :: [Int]  =  LT
+_ :: Bool `compare` x:xs :: [Int]  =  LT
+_ :: Bool `compare` [x] :: [Int]  =  LT
+_ :: Bool `compare` x:_:_ :: [Int]  =  LT
+_ :: Bool `compare` 0:xs :: [Int]  =  LT
+_ :: Bool `compare` [0] :: [Int]  =  LT
+_ :: Bool `compare` 0:_:_ :: [Int]  =  LT
+_ :: Bool `compare` id _:xs :: [Int]  =  LT
+_ :: Bool `compare` [id _] :: [Int]  =  LT
+_ :: Bool `compare` id _:_:_ :: [Int]  =  LT
+_ :: Bool `compare` y:_ :: [Int]  =  LT
+_ :: Bool `compare` 1:_ :: [Int]  =  LT
+_ :: Bool `compare` id x:_ :: [Int]  =  LT
+_ :: Bool `compare` id 0:_ :: [Int]  =  LT
+_ :: Bool `compare` id (id _):_ :: [Int]  =  LT
+_ :: Bool `compare` negate _:_ :: [Int]  =  LT
+_ :: Bool `compare` abs _:_ :: [Int]  =  LT
+_ :: Bool `compare` _ + _:_ :: [Int]  =  LT
+_ :: Bool `compare` head _:_ :: [Int]  =  LT
+_ :: Bool `compare` ord _:_ :: [Int]  =  LT
+_ :: Bool `compare` tail xs :: [Int]  =  LT
+_ :: Bool `compare` tail [] :: [Int]  =  LT
+_ :: Bool `compare` tail (_:_) :: [Int]  =  LT
+_ :: Bool `compare` _ ++ xs :: [Int]  =  LT
+_ :: Bool `compare` _ ++ [] :: [Int]  =  LT
+_ :: Bool `compare` _ ++ (_:_) :: [Int]  =  LT
+_ :: Bool `compare` xs ++ _ :: [Int]  =  LT
+_ :: Bool `compare` [] ++ _ :: [Int]  =  LT
+_ :: Bool `compare` (_:_) ++ _ :: [Int]  =  LT
+_ :: Bool `compare` sort _ :: [Int]  =  LT
+_ :: Bool `compare` insert _ _ :: [Int]  =  LT
+_ :: Bool `compare` (x +) :: Int -> Int  =  LT
+_ :: Bool `compare` (0 +) :: Int -> Int  =  LT
+_ :: Bool `compare` (id _ +) :: Int -> Int  =  LT
+_ :: Bool `compare` (_ *) :: Int -> Int  =  LT
+_ :: Bool `compare` f :: Int -> Int  =  LT
+_ :: Bool `compare` (_ ||) :: Bool -> Bool  =  LT
+_ :: Bool `compare` (&&) :: Bool -> Bool -> Bool  =  LT
+_ :: Char `compare` x' :: Int  =  LT
+_ :: Char `compare` 2 :: Int  =  LT
+_ :: Char `compare` id z :: Int  =  LT
+_ :: Char `compare` id (-1) :: Int  =  LT
+_ :: Char `compare` id (id y) :: Int  =  LT
+_ :: Char `compare` id (id 1) :: Int  =  LT
+_ :: Char `compare` id (id (id x)) :: Int  =  LT
+_ :: Char `compare` id (id (id 0)) :: Int  =  LT
+_ :: Char `compare` id (id (id (id _))) :: Int  =  LT
+_ :: Char `compare` id (id (negate _)) :: Int  =  LT
+_ :: Char `compare` id (id (abs _)) :: Int  =  LT
+_ :: Char `compare` id (id (_ + _)) :: Int  =  LT
+_ :: Char `compare` id (id (head _)) :: Int  =  LT
+_ :: Char `compare` id (id (ord _)) :: Int  =  LT
+_ :: Char `compare` id (negate x) :: Int  =  LT
+_ :: Char `compare` id (negate 0) :: Int  =  LT
+_ :: Char `compare` id (negate (id _)) :: Int  =  LT
+_ :: Char `compare` id (abs x) :: Int  =  LT
+_ :: Char `compare` id (abs 0) :: Int  =  LT
+_ :: Char `compare` id (abs (id _)) :: Int  =  LT
+_ :: Char `compare` id (_ + x) :: Int  =  LT
+_ :: Char `compare` id (_ + 0) :: Int  =  LT
+_ :: Char `compare` id (_ + id _) :: Int  =  LT
+_ :: Char `compare` id (x + _) :: Int  =  LT
+_ :: Char `compare` id (0 + _) :: Int  =  LT
+_ :: Char `compare` id (id _ + _) :: Int  =  LT
+_ :: Char `compare` id (_ * _) :: Int  =  LT
+_ :: Char `compare` id (f _) :: Int  =  LT
+_ :: Char `compare` id (head xs) :: Int  =  LT
+_ :: Char `compare` id (head []) :: Int  =  LT
+_ :: Char `compare` id (head (_:_)) :: Int  =  LT
+_ :: Char `compare` id (ord c) :: Int  =  LT
+_ :: Char `compare` id (ord 'a') :: Int  =  LT
+_ :: Char `compare` negate y :: Int  =  LT
+_ :: Char `compare` negate 1 :: Int  =  LT
+_ :: Char `compare` negate (id x) :: Int  =  LT
+_ :: Char `compare` negate (id 0) :: Int  =  LT
+_ :: Char `compare` negate (id (id _)) :: Int  =  LT
+_ :: Char `compare` negate (negate _) :: Int  =  LT
+_ :: Char `compare` negate (abs _) :: Int  =  LT
+_ :: Char `compare` negate (_ + _) :: Int  =  LT
+_ :: Char `compare` negate (head _) :: Int  =  LT
+_ :: Char `compare` negate (ord _) :: Int  =  LT
+_ :: Char `compare` abs y :: Int  =  LT
+_ :: Char `compare` abs 1 :: Int  =  LT
+_ :: Char `compare` abs (id x) :: Int  =  LT
+_ :: Char `compare` abs (id 0) :: Int  =  LT
+_ :: Char `compare` abs (id (id _)) :: Int  =  LT
+_ :: Char `compare` abs (negate _) :: Int  =  LT
+_ :: Char `compare` abs (abs _) :: Int  =  LT
+_ :: Char `compare` abs (_ + _) :: Int  =  LT
+_ :: Char `compare` abs (head _) :: Int  =  LT
+_ :: Char `compare` abs (ord _) :: Int  =  LT
+_ :: Char `compare` _ + y :: Int  =  LT
+_ :: Char `compare` _ + 1 :: Int  =  LT
+_ :: Char `compare` _ + id x :: Int  =  LT
+_ :: Char `compare` _ + id 0 :: Int  =  LT
+_ :: Char `compare` _ + id (id _) :: Int  =  LT
+_ :: Char `compare` _ + negate _ :: Int  =  LT
+_ :: Char `compare` _ + abs _ :: Int  =  LT
+_ :: Char `compare` _ + (_ + _) :: Int  =  LT
+_ :: Char `compare` _ + head _ :: Int  =  LT
+_ :: Char `compare` _ + ord _ :: Int  =  LT
+_ :: Char `compare` x + x :: Int  =  LT
+_ :: Char `compare` x + 0 :: Int  =  LT
+_ :: Char `compare` x + id _ :: Int  =  LT
+_ :: Char `compare` 0 + x :: Int  =  LT
+_ :: Char `compare` 0 + 0 :: Int  =  LT
+_ :: Char `compare` 0 + id _ :: Int  =  LT
+_ :: Char `compare` id _ + x :: Int  =  LT
+_ :: Char `compare` id _ + 0 :: Int  =  LT
+_ :: Char `compare` id _ + id _ :: Int  =  LT
+_ :: Char `compare` _ * x :: Int  =  LT
+_ :: Char `compare` _ * 0 :: Int  =  LT
+_ :: Char `compare` _ * id _ :: Int  =  LT
+_ :: Char `compare` f x :: Int  =  LT
+_ :: Char `compare` f 0 :: Int  =  LT
+_ :: Char `compare` f (id _) :: Int  =  LT
+_ :: Char `compare` y + _ :: Int  =  LT
+_ :: Char `compare` 1 + _ :: Int  =  LT
+_ :: Char `compare` id x + _ :: Int  =  LT
+_ :: Char `compare` id 0 + _ :: Int  =  LT
+_ :: Char `compare` id (id _) + _ :: Int  =  LT
+_ :: Char `compare` negate _ + _ :: Int  =  LT
+_ :: Char `compare` abs _ + _ :: Int  =  LT
+_ :: Char `compare` (_ + _) + _ :: Int  =  LT
+_ :: Char `compare` head _ + _ :: Int  =  LT
+_ :: Char `compare` ord _ + _ :: Int  =  LT
+_ :: Char `compare` x * _ :: Int  =  LT
+_ :: Char `compare` 0 * _ :: Int  =  LT
+_ :: Char `compare` id _ * _ :: Int  =  LT
+_ :: Char `compare` g _ :: Int  =  LT
+_ :: Char `compare` head ys :: Int  =  LT
+_ :: Char `compare` head [0] :: Int  =  LT
+_ :: Char `compare` head (_:xs) :: Int  =  LT
+_ :: Char `compare` head [_] :: Int  =  LT
+_ :: Char `compare` head (_:_:_) :: Int  =  LT
+_ :: Char `compare` head (x:_) :: Int  =  LT
+_ :: Char `compare` head (0:_) :: Int  =  LT
+_ :: Char `compare` head (id _:_) :: Int  =  LT
+_ :: Char `compare` head (tail _) :: Int  =  LT
+_ :: Char `compare` head (_ ++ _) :: Int  =  LT
+_ :: Char `compare` ord d :: Int  =  LT
+_ :: Char `compare` ord ' ' :: Int  =  LT
+_ :: Char `compare` r :: Bool  =  GT
+_ :: Char `compare` not q :: Bool  =  LT
+_ :: Char `compare` not (not p) :: Bool  =  LT
+_ :: Char `compare` not (not False) :: Bool  =  LT
+_ :: Char `compare` not (not True) :: Bool  =  LT
+_ :: Char `compare` not (not (not _)) :: Bool  =  LT
+_ :: Char `compare` not (_ || _) :: Bool  =  LT
+_ :: Char `compare` _ || p :: Bool  =  LT
+_ :: Char `compare` _ || False :: Bool  =  LT
+_ :: Char `compare` _ || True :: Bool  =  LT
+_ :: Char `compare` _ || not _ :: Bool  =  LT
+_ :: Char `compare` p || _ :: Bool  =  LT
+_ :: Char `compare` False || _ :: Bool  =  LT
+_ :: Char `compare` True || _ :: Bool  =  LT
+_ :: Char `compare` not _ || _ :: Bool  =  LT
+_ :: Char `compare` _ && _ :: Bool  =  LT
+_ :: Char `compare` _ == _ :: Bool  =  LT
+_ :: Char `compare` _ == _ :: Bool  =  LT
+_ :: Char `compare` odd _ :: Bool  =  LT
+_ :: Char `compare` even _ :: Bool  =  LT
+_ :: Char `compare` elem _ _ :: Bool  =  LT
+_ :: Char `compare` e :: Char  =  LT
+_ :: Char `compare` 'b' :: Char  =  LT
+_ :: Char `compare` zs :: [Int]  =  LT
+_ :: Char `compare` [0,0] :: [Int]  =  LT
+_ :: Char `compare` [1] :: [Int]  =  LT
+_ :: Char `compare` _:ys :: [Int]  =  LT
+_ :: Char `compare` _:[0] :: [Int]  =  LT
+_ :: Char `compare` _:_:xs :: [Int]  =  LT
+_ :: Char `compare` [_,_] :: [Int]  =  LT
+_ :: Char `compare` _:_:_:_ :: [Int]  =  LT
+_ :: Char `compare` _:x:_ :: [Int]  =  LT
+_ :: Char `compare` _:0:_ :: [Int]  =  LT
+_ :: Char `compare` _:id _:_ :: [Int]  =  LT
+_ :: Char `compare` _:tail _ :: [Int]  =  LT
+_ :: Char `compare` _:(_ ++ _) :: [Int]  =  LT
+_ :: Char `compare` x:xs :: [Int]  =  LT
+_ :: Char `compare` [x] :: [Int]  =  LT
+_ :: Char `compare` x:_:_ :: [Int]  =  LT
+_ :: Char `compare` 0:xs :: [Int]  =  LT
+_ :: Char `compare` [0] :: [Int]  =  LT
+_ :: Char `compare` 0:_:_ :: [Int]  =  LT
+_ :: Char `compare` id _:xs :: [Int]  =  LT
+_ :: Char `compare` [id _] :: [Int]  =  LT
+_ :: Char `compare` id _:_:_ :: [Int]  =  LT
+_ :: Char `compare` y:_ :: [Int]  =  LT
+_ :: Char `compare` 1:_ :: [Int]  =  LT
+_ :: Char `compare` id x:_ :: [Int]  =  LT
+_ :: Char `compare` id 0:_ :: [Int]  =  LT
+_ :: Char `compare` id (id _):_ :: [Int]  =  LT
+_ :: Char `compare` negate _:_ :: [Int]  =  LT
+_ :: Char `compare` abs _:_ :: [Int]  =  LT
+_ :: Char `compare` _ + _:_ :: [Int]  =  LT
+_ :: Char `compare` head _:_ :: [Int]  =  LT
+_ :: Char `compare` ord _:_ :: [Int]  =  LT
+_ :: Char `compare` tail xs :: [Int]  =  LT
+_ :: Char `compare` tail [] :: [Int]  =  LT
+_ :: Char `compare` tail (_:_) :: [Int]  =  LT
+_ :: Char `compare` _ ++ xs :: [Int]  =  LT
+_ :: Char `compare` _ ++ [] :: [Int]  =  LT
+_ :: Char `compare` _ ++ (_:_) :: [Int]  =  LT
+_ :: Char `compare` xs ++ _ :: [Int]  =  LT
+_ :: Char `compare` [] ++ _ :: [Int]  =  LT
+_ :: Char `compare` (_:_) ++ _ :: [Int]  =  LT
+_ :: Char `compare` sort _ :: [Int]  =  LT
+_ :: Char `compare` insert _ _ :: [Int]  =  LT
+_ :: Char `compare` (x +) :: Int -> Int  =  LT
+_ :: Char `compare` (0 +) :: Int -> Int  =  LT
+_ :: Char `compare` (id _ +) :: Int -> Int  =  LT
+_ :: Char `compare` (_ *) :: Int -> Int  =  LT
+_ :: Char `compare` f :: Int -> Int  =  LT
+_ :: Char `compare` (_ ||) :: Bool -> Bool  =  LT
+_ :: Char `compare` (&&) :: Bool -> Bool -> Bool  =  LT
+_ :: [Int] `compare` x' :: Int  =  GT
+_ :: [Int] `compare` 2 :: Int  =  LT
+_ :: [Int] `compare` id z :: Int  =  LT
+_ :: [Int] `compare` id (-1) :: Int  =  LT
+_ :: [Int] `compare` id (id y) :: Int  =  LT
+_ :: [Int] `compare` id (id 1) :: Int  =  LT
+_ :: [Int] `compare` id (id (id x)) :: Int  =  LT
+_ :: [Int] `compare` id (id (id 0)) :: Int  =  LT
+_ :: [Int] `compare` id (id (id (id _))) :: Int  =  LT
+_ :: [Int] `compare` id (id (negate _)) :: Int  =  LT
+_ :: [Int] `compare` id (id (abs _)) :: Int  =  LT
+_ :: [Int] `compare` id (id (_ + _)) :: Int  =  LT
+_ :: [Int] `compare` id (id (head _)) :: Int  =  LT
+_ :: [Int] `compare` id (id (ord _)) :: Int  =  LT
+_ :: [Int] `compare` id (negate x) :: Int  =  LT
+_ :: [Int] `compare` id (negate 0) :: Int  =  LT
+_ :: [Int] `compare` id (negate (id _)) :: Int  =  LT
+_ :: [Int] `compare` id (abs x) :: Int  =  LT
+_ :: [Int] `compare` id (abs 0) :: Int  =  LT
+_ :: [Int] `compare` id (abs (id _)) :: Int  =  LT
+_ :: [Int] `compare` id (_ + x) :: Int  =  LT
+_ :: [Int] `compare` id (_ + 0) :: Int  =  LT
+_ :: [Int] `compare` id (_ + id _) :: Int  =  LT
+_ :: [Int] `compare` id (x + _) :: Int  =  LT
+_ :: [Int] `compare` id (0 + _) :: Int  =  LT
+_ :: [Int] `compare` id (id _ + _) :: Int  =  LT
+_ :: [Int] `compare` id (_ * _) :: Int  =  LT
+_ :: [Int] `compare` id (f _) :: Int  =  LT
+_ :: [Int] `compare` id (head xs) :: Int  =  LT
+_ :: [Int] `compare` id (head []) :: Int  =  LT
+_ :: [Int] `compare` id (head (_:_)) :: Int  =  LT
+_ :: [Int] `compare` id (ord c) :: Int  =  LT
+_ :: [Int] `compare` id (ord 'a') :: Int  =  LT
+_ :: [Int] `compare` negate y :: Int  =  LT
+_ :: [Int] `compare` negate 1 :: Int  =  LT
+_ :: [Int] `compare` negate (id x) :: Int  =  LT
+_ :: [Int] `compare` negate (id 0) :: Int  =  LT
+_ :: [Int] `compare` negate (id (id _)) :: Int  =  LT
+_ :: [Int] `compare` negate (negate _) :: Int  =  LT
+_ :: [Int] `compare` negate (abs _) :: Int  =  LT
+_ :: [Int] `compare` negate (_ + _) :: Int  =  LT
+_ :: [Int] `compare` negate (head _) :: Int  =  LT
+_ :: [Int] `compare` negate (ord _) :: Int  =  LT
+_ :: [Int] `compare` abs y :: Int  =  LT
+_ :: [Int] `compare` abs 1 :: Int  =  LT
+_ :: [Int] `compare` abs (id x) :: Int  =  LT
+_ :: [Int] `compare` abs (id 0) :: Int  =  LT
+_ :: [Int] `compare` abs (id (id _)) :: Int  =  LT
+_ :: [Int] `compare` abs (negate _) :: Int  =  LT
+_ :: [Int] `compare` abs (abs _) :: Int  =  LT
+_ :: [Int] `compare` abs (_ + _) :: Int  =  LT
+_ :: [Int] `compare` abs (head _) :: Int  =  LT
+_ :: [Int] `compare` abs (ord _) :: Int  =  LT
+_ :: [Int] `compare` _ + y :: Int  =  LT
+_ :: [Int] `compare` _ + 1 :: Int  =  LT
+_ :: [Int] `compare` _ + id x :: Int  =  LT
+_ :: [Int] `compare` _ + id 0 :: Int  =  LT
+_ :: [Int] `compare` _ + id (id _) :: Int  =  LT
+_ :: [Int] `compare` _ + negate _ :: Int  =  LT
+_ :: [Int] `compare` _ + abs _ :: Int  =  LT
+_ :: [Int] `compare` _ + (_ + _) :: Int  =  LT
+_ :: [Int] `compare` _ + head _ :: Int  =  LT
+_ :: [Int] `compare` _ + ord _ :: Int  =  LT
+_ :: [Int] `compare` x + x :: Int  =  LT
+_ :: [Int] `compare` x + 0 :: Int  =  LT
+_ :: [Int] `compare` x + id _ :: Int  =  LT
+_ :: [Int] `compare` 0 + x :: Int  =  LT
+_ :: [Int] `compare` 0 + 0 :: Int  =  LT
+_ :: [Int] `compare` 0 + id _ :: Int  =  LT
+_ :: [Int] `compare` id _ + x :: Int  =  LT
+_ :: [Int] `compare` id _ + 0 :: Int  =  LT
+_ :: [Int] `compare` id _ + id _ :: Int  =  LT
+_ :: [Int] `compare` _ * x :: Int  =  LT
+_ :: [Int] `compare` _ * 0 :: Int  =  LT
+_ :: [Int] `compare` _ * id _ :: Int  =  LT
+_ :: [Int] `compare` f x :: Int  =  LT
+_ :: [Int] `compare` f 0 :: Int  =  LT
+_ :: [Int] `compare` f (id _) :: Int  =  LT
+_ :: [Int] `compare` y + _ :: Int  =  LT
+_ :: [Int] `compare` 1 + _ :: Int  =  LT
+_ :: [Int] `compare` id x + _ :: Int  =  LT
+_ :: [Int] `compare` id 0 + _ :: Int  =  LT
+_ :: [Int] `compare` id (id _) + _ :: Int  =  LT
+_ :: [Int] `compare` negate _ + _ :: Int  =  LT
+_ :: [Int] `compare` abs _ + _ :: Int  =  LT
+_ :: [Int] `compare` (_ + _) + _ :: Int  =  LT
+_ :: [Int] `compare` head _ + _ :: Int  =  LT
+_ :: [Int] `compare` ord _ + _ :: Int  =  LT
+_ :: [Int] `compare` x * _ :: Int  =  LT
+_ :: [Int] `compare` 0 * _ :: Int  =  LT
+_ :: [Int] `compare` id _ * _ :: Int  =  LT
+_ :: [Int] `compare` g _ :: Int  =  LT
+_ :: [Int] `compare` head ys :: Int  =  LT
+_ :: [Int] `compare` head [0] :: Int  =  LT
+_ :: [Int] `compare` head (_:xs) :: Int  =  LT
+_ :: [Int] `compare` head [_] :: Int  =  LT
+_ :: [Int] `compare` head (_:_:_) :: Int  =  LT
+_ :: [Int] `compare` head (x:_) :: Int  =  LT
+_ :: [Int] `compare` head (0:_) :: Int  =  LT
+_ :: [Int] `compare` head (id _:_) :: Int  =  LT
+_ :: [Int] `compare` head (tail _) :: Int  =  LT
+_ :: [Int] `compare` head (_ ++ _) :: Int  =  LT
+_ :: [Int] `compare` ord d :: Int  =  LT
+_ :: [Int] `compare` ord ' ' :: Int  =  LT
+_ :: [Int] `compare` r :: Bool  =  GT
+_ :: [Int] `compare` not q :: Bool  =  LT
+_ :: [Int] `compare` not (not p) :: Bool  =  LT
+_ :: [Int] `compare` not (not False) :: Bool  =  LT
+_ :: [Int] `compare` not (not True) :: Bool  =  LT
+_ :: [Int] `compare` not (not (not _)) :: Bool  =  LT
+_ :: [Int] `compare` not (_ || _) :: Bool  =  LT
+_ :: [Int] `compare` _ || p :: Bool  =  LT
+_ :: [Int] `compare` _ || False :: Bool  =  LT
+_ :: [Int] `compare` _ || True :: Bool  =  LT
+_ :: [Int] `compare` _ || not _ :: Bool  =  LT
+_ :: [Int] `compare` p || _ :: Bool  =  LT
+_ :: [Int] `compare` False || _ :: Bool  =  LT
+_ :: [Int] `compare` True || _ :: Bool  =  LT
+_ :: [Int] `compare` not _ || _ :: Bool  =  LT
+_ :: [Int] `compare` _ && _ :: Bool  =  LT
+_ :: [Int] `compare` _ == _ :: Bool  =  LT
+_ :: [Int] `compare` _ == _ :: Bool  =  LT
+_ :: [Int] `compare` odd _ :: Bool  =  LT
+_ :: [Int] `compare` even _ :: Bool  =  LT
+_ :: [Int] `compare` elem _ _ :: Bool  =  LT
+_ :: [Int] `compare` e :: Char  =  GT
+_ :: [Int] `compare` 'b' :: Char  =  LT
+_ :: [Int] `compare` zs :: [Int]  =  LT
+_ :: [Int] `compare` [0,0] :: [Int]  =  LT
+_ :: [Int] `compare` [1] :: [Int]  =  LT
+_ :: [Int] `compare` _:ys :: [Int]  =  LT
+_ :: [Int] `compare` _:[0] :: [Int]  =  LT
+_ :: [Int] `compare` _:_:xs :: [Int]  =  LT
+_ :: [Int] `compare` [_,_] :: [Int]  =  LT
+_ :: [Int] `compare` _:_:_:_ :: [Int]  =  LT
+_ :: [Int] `compare` _:x:_ :: [Int]  =  LT
+_ :: [Int] `compare` _:0:_ :: [Int]  =  LT
+_ :: [Int] `compare` _:id _:_ :: [Int]  =  LT
+_ :: [Int] `compare` _:tail _ :: [Int]  =  LT
+_ :: [Int] `compare` _:(_ ++ _) :: [Int]  =  LT
+_ :: [Int] `compare` x:xs :: [Int]  =  LT
+_ :: [Int] `compare` [x] :: [Int]  =  LT
+_ :: [Int] `compare` x:_:_ :: [Int]  =  LT
+_ :: [Int] `compare` 0:xs :: [Int]  =  LT
+_ :: [Int] `compare` [0] :: [Int]  =  LT
+_ :: [Int] `compare` 0:_:_ :: [Int]  =  LT
+_ :: [Int] `compare` id _:xs :: [Int]  =  LT
+_ :: [Int] `compare` [id _] :: [Int]  =  LT
+_ :: [Int] `compare` id _:_:_ :: [Int]  =  LT
+_ :: [Int] `compare` y:_ :: [Int]  =  LT
+_ :: [Int] `compare` 1:_ :: [Int]  =  LT
+_ :: [Int] `compare` id x:_ :: [Int]  =  LT
+_ :: [Int] `compare` id 0:_ :: [Int]  =  LT
+_ :: [Int] `compare` id (id _):_ :: [Int]  =  LT
+_ :: [Int] `compare` negate _:_ :: [Int]  =  LT
+_ :: [Int] `compare` abs _:_ :: [Int]  =  LT
+_ :: [Int] `compare` _ + _:_ :: [Int]  =  LT
+_ :: [Int] `compare` head _:_ :: [Int]  =  LT
+_ :: [Int] `compare` ord _:_ :: [Int]  =  LT
+_ :: [Int] `compare` tail xs :: [Int]  =  LT
+_ :: [Int] `compare` tail [] :: [Int]  =  LT
+_ :: [Int] `compare` tail (_:_) :: [Int]  =  LT
+_ :: [Int] `compare` _ ++ xs :: [Int]  =  LT
+_ :: [Int] `compare` _ ++ [] :: [Int]  =  LT
+_ :: [Int] `compare` _ ++ (_:_) :: [Int]  =  LT
+_ :: [Int] `compare` xs ++ _ :: [Int]  =  LT
+_ :: [Int] `compare` [] ++ _ :: [Int]  =  LT
+_ :: [Int] `compare` (_:_) ++ _ :: [Int]  =  LT
+_ :: [Int] `compare` sort _ :: [Int]  =  LT
+_ :: [Int] `compare` insert _ _ :: [Int]  =  LT
+_ :: [Int] `compare` (x +) :: Int -> Int  =  LT
+_ :: [Int] `compare` (0 +) :: Int -> Int  =  LT
+_ :: [Int] `compare` (id _ +) :: Int -> Int  =  LT
+_ :: [Int] `compare` (_ *) :: Int -> Int  =  LT
+_ :: [Int] `compare` f :: Int -> Int  =  LT
+_ :: [Int] `compare` (_ ||) :: Bool -> Bool  =  LT
+_ :: [Int] `compare` (&&) :: Bool -> Bool -> Bool  =  LT
+y :: Int `compare` z :: Int  =  LT
+y :: Int `compare` -1 :: Int  =  LT
+y :: Int `compare` id y :: Int  =  LT
+y :: Int `compare` id 1 :: Int  =  LT
+y :: Int `compare` id (id x) :: Int  =  LT
+y :: Int `compare` id (id 0) :: Int  =  LT
+y :: Int `compare` id (id (id _)) :: Int  =  LT
+y :: Int `compare` id (negate _) :: Int  =  LT
+y :: Int `compare` id (abs _) :: Int  =  LT
+y :: Int `compare` id (_ + _) :: Int  =  LT
+y :: Int `compare` id (head _) :: Int  =  LT
+y :: Int `compare` id (ord _) :: Int  =  LT
+y :: Int `compare` negate x :: Int  =  LT
+y :: Int `compare` negate 0 :: Int  =  LT
+y :: Int `compare` negate (id _) :: Int  =  LT
+y :: Int `compare` abs x :: Int  =  LT
+y :: Int `compare` abs 0 :: Int  =  LT
+y :: Int `compare` abs (id _) :: Int  =  LT
+y :: Int `compare` _ + x :: Int  =  LT
+y :: Int `compare` _ + 0 :: Int  =  LT
+y :: Int `compare` _ + id _ :: Int  =  LT
+y :: Int `compare` x + _ :: Int  =  LT
+y :: Int `compare` 0 + _ :: Int  =  LT
+y :: Int `compare` id _ + _ :: Int  =  LT
+y :: Int `compare` _ * _ :: Int  =  LT
+y :: Int `compare` f _ :: Int  =  LT
+y :: Int `compare` head xs :: Int  =  LT
+y :: Int `compare` head [] :: Int  =  LT
+y :: Int `compare` head (_:_) :: Int  =  LT
+y :: Int `compare` ord c :: Int  =  LT
+y :: Int `compare` ord 'a' :: Int  =  LT
+y :: Int `compare` q :: Bool  =  GT
+y :: Int `compare` not p :: Bool  =  LT
+y :: Int `compare` not False :: Bool  =  LT
+y :: Int `compare` not True :: Bool  =  LT
+y :: Int `compare` not (not _) :: Bool  =  LT
+y :: Int `compare` _ || _ :: Bool  =  LT
+y :: Int `compare` d :: Char  =  GT
+y :: Int `compare` ' ' :: Char  =  LT
+y :: Int `compare` ys :: [Int]  =  LT
+y :: Int `compare` [0] :: [Int]  =  LT
+y :: Int `compare` _:xs :: [Int]  =  LT
+y :: Int `compare` [_] :: [Int]  =  LT
+y :: Int `compare` _:_:_ :: [Int]  =  LT
+y :: Int `compare` x:_ :: [Int]  =  LT
+y :: Int `compare` 0:_ :: [Int]  =  LT
+y :: Int `compare` id _:_ :: [Int]  =  LT
+y :: Int `compare` tail _ :: [Int]  =  LT
+y :: Int `compare` _ ++ _ :: [Int]  =  LT
+y :: Int `compare` negate :: Int -> Int  =  LT
+y :: Int `compare` abs :: Int -> Int  =  LT
+y :: Int `compare` (_ +) :: Int -> Int  =  LT
+y :: Int `compare` (*) :: Int -> Int -> Int  =  LT
+y :: Int `compare` not :: Bool -> Bool  =  LT
+y :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
+1 :: Int `compare` z :: Int  =  GT
+1 :: Int `compare` -1 :: Int  =  LT
+1 :: Int `compare` id y :: Int  =  LT
+1 :: Int `compare` id 1 :: Int  =  LT
+1 :: Int `compare` id (id x) :: Int  =  LT
+1 :: Int `compare` id (id 0) :: Int  =  LT
+1 :: Int `compare` id (id (id _)) :: Int  =  LT
+1 :: Int `compare` id (negate _) :: Int  =  LT
+1 :: Int `compare` id (abs _) :: Int  =  LT
+1 :: Int `compare` id (_ + _) :: Int  =  LT
+1 :: Int `compare` id (head _) :: Int  =  LT
+1 :: Int `compare` id (ord _) :: Int  =  LT
+1 :: Int `compare` negate x :: Int  =  LT
+1 :: Int `compare` negate 0 :: Int  =  LT
+1 :: Int `compare` negate (id _) :: Int  =  LT
+1 :: Int `compare` abs x :: Int  =  LT
+1 :: Int `compare` abs 0 :: Int  =  LT
+1 :: Int `compare` abs (id _) :: Int  =  LT
+1 :: Int `compare` _ + x :: Int  =  LT
+1 :: Int `compare` _ + 0 :: Int  =  LT
+1 :: Int `compare` _ + id _ :: Int  =  LT
+1 :: Int `compare` x + _ :: Int  =  LT
+1 :: Int `compare` 0 + _ :: Int  =  LT
+1 :: Int `compare` id _ + _ :: Int  =  LT
+1 :: Int `compare` _ * _ :: Int  =  LT
+1 :: Int `compare` f _ :: Int  =  LT
+1 :: Int `compare` head xs :: Int  =  LT
+1 :: Int `compare` head [] :: Int  =  LT
+1 :: Int `compare` head (_:_) :: Int  =  LT
+1 :: Int `compare` ord c :: Int  =  LT
+1 :: Int `compare` ord 'a' :: Int  =  LT
+1 :: Int `compare` q :: Bool  =  GT
+1 :: Int `compare` not p :: Bool  =  LT
+1 :: Int `compare` not False :: Bool  =  LT
+1 :: Int `compare` not True :: Bool  =  LT
+1 :: Int `compare` not (not _) :: Bool  =  LT
+1 :: Int `compare` _ || _ :: Bool  =  LT
+1 :: Int `compare` d :: Char  =  GT
+1 :: Int `compare` ' ' :: Char  =  GT
+1 :: Int `compare` ys :: [Int]  =  GT
+1 :: Int `compare` [0] :: [Int]  =  LT
+1 :: Int `compare` _:xs :: [Int]  =  LT
+1 :: Int `compare` [_] :: [Int]  =  LT
+1 :: Int `compare` _:_:_ :: [Int]  =  LT
+1 :: Int `compare` x:_ :: [Int]  =  LT
+1 :: Int `compare` 0:_ :: [Int]  =  LT
+1 :: Int `compare` id _:_ :: [Int]  =  LT
+1 :: Int `compare` tail _ :: [Int]  =  LT
+1 :: Int `compare` _ ++ _ :: [Int]  =  LT
+1 :: Int `compare` negate :: Int -> Int  =  LT
+1 :: Int `compare` abs :: Int -> Int  =  LT
+1 :: Int `compare` (_ +) :: Int -> Int  =  LT
+1 :: Int `compare` (*) :: Int -> Int -> Int  =  LT
+1 :: Int `compare` not :: Bool -> Bool  =  LT
+1 :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
+id x :: Int `compare` z :: Int  =  GT
+id x :: Int `compare` -1 :: Int  =  GT
+id x :: Int `compare` id y :: Int  =  LT
+id x :: Int `compare` id 1 :: Int  =  LT
+id x :: Int `compare` id (id x) :: Int  =  LT
+id x :: Int `compare` id (id 0) :: Int  =  LT
+id x :: Int `compare` id (id (id _)) :: Int  =  LT
+id x :: Int `compare` id (negate _) :: Int  =  LT
+id x :: Int `compare` id (abs _) :: Int  =  LT
+id x :: Int `compare` id (_ + _) :: Int  =  LT
+id x :: Int `compare` id (head _) :: Int  =  LT
+id x :: Int `compare` id (ord _) :: Int  =  LT
+id x :: Int `compare` negate x :: Int  =  LT
+id x :: Int `compare` negate 0 :: Int  =  LT
+id x :: Int `compare` negate (id _) :: Int  =  LT
+id x :: Int `compare` abs x :: Int  =  LT
+id x :: Int `compare` abs 0 :: Int  =  LT
+id x :: Int `compare` abs (id _) :: Int  =  LT
+id x :: Int `compare` _ + x :: Int  =  LT
+id x :: Int `compare` _ + 0 :: Int  =  LT
+id x :: Int `compare` _ + id _ :: Int  =  LT
+id x :: Int `compare` x + _ :: Int  =  LT
+id x :: Int `compare` 0 + _ :: Int  =  LT
+id x :: Int `compare` id _ + _ :: Int  =  LT
+id x :: Int `compare` _ * _ :: Int  =  LT
+id x :: Int `compare` f _ :: Int  =  GT
+id x :: Int `compare` head xs :: Int  =  LT
+id x :: Int `compare` head [] :: Int  =  LT
+id x :: Int `compare` head (_:_) :: Int  =  LT
+id x :: Int `compare` ord c :: Int  =  GT
+id x :: Int `compare` ord 'a' :: Int  =  LT
+id x :: Int `compare` q :: Bool  =  GT
+id x :: Int `compare` not p :: Bool  =  GT
+id x :: Int `compare` not False :: Bool  =  LT
+id x :: Int `compare` not True :: Bool  =  LT
+id x :: Int `compare` not (not _) :: Bool  =  LT
+id x :: Int `compare` _ || _ :: Bool  =  LT
+id x :: Int `compare` d :: Char  =  GT
+id x :: Int `compare` ' ' :: Char  =  GT
+id x :: Int `compare` ys :: [Int]  =  GT
+id x :: Int `compare` [0] :: [Int]  =  GT
+id x :: Int `compare` _:xs :: [Int]  =  LT
+id x :: Int `compare` [_] :: [Int]  =  LT
+id x :: Int `compare` _:_:_ :: [Int]  =  LT
+id x :: Int `compare` x:_ :: [Int]  =  LT
+id x :: Int `compare` 0:_ :: [Int]  =  LT
+id x :: Int `compare` id _:_ :: [Int]  =  LT
+id x :: Int `compare` tail _ :: [Int]  =  LT
+id x :: Int `compare` _ ++ _ :: [Int]  =  LT
+id x :: Int `compare` negate :: Int -> Int  =  GT
+id x :: Int `compare` abs :: Int -> Int  =  GT
+id x :: Int `compare` (_ +) :: Int -> Int  =  LT
+id x :: Int `compare` (*) :: Int -> Int -> Int  =  GT
+id x :: Int `compare` not :: Bool -> Bool  =  GT
+id x :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+id 0 :: Int `compare` z :: Int  =  GT
+id 0 :: Int `compare` -1 :: Int  =  GT
+id 0 :: Int `compare` id y :: Int  =  GT
+id 0 :: Int `compare` id 1 :: Int  =  LT
+id 0 :: Int `compare` id (id x) :: Int  =  LT
+id 0 :: Int `compare` id (id 0) :: Int  =  LT
+id 0 :: Int `compare` id (id (id _)) :: Int  =  LT
+id 0 :: Int `compare` id (negate _) :: Int  =  LT
+id 0 :: Int `compare` id (abs _) :: Int  =  LT
+id 0 :: Int `compare` id (_ + _) :: Int  =  LT
+id 0 :: Int `compare` id (head _) :: Int  =  LT
+id 0 :: Int `compare` id (ord _) :: Int  =  LT
+id 0 :: Int `compare` negate x :: Int  =  GT
+id 0 :: Int `compare` negate 0 :: Int  =  LT
+id 0 :: Int `compare` negate (id _) :: Int  =  LT
+id 0 :: Int `compare` abs x :: Int  =  GT
+id 0 :: Int `compare` abs 0 :: Int  =  LT
+id 0 :: Int `compare` abs (id _) :: Int  =  LT
+id 0 :: Int `compare` _ + x :: Int  =  LT
+id 0 :: Int `compare` _ + 0 :: Int  =  LT
+id 0 :: Int `compare` _ + id _ :: Int  =  LT
+id 0 :: Int `compare` x + _ :: Int  =  LT
+id 0 :: Int `compare` 0 + _ :: Int  =  LT
+id 0 :: Int `compare` id _ + _ :: Int  =  LT
+id 0 :: Int `compare` _ * _ :: Int  =  LT
+id 0 :: Int `compare` f _ :: Int  =  GT
+id 0 :: Int `compare` head xs :: Int  =  GT
+id 0 :: Int `compare` head [] :: Int  =  LT
+id 0 :: Int `compare` head (_:_) :: Int  =  LT
+id 0 :: Int `compare` ord c :: Int  =  GT
+id 0 :: Int `compare` ord 'a' :: Int  =  GT
+id 0 :: Int `compare` q :: Bool  =  GT
+id 0 :: Int `compare` not p :: Bool  =  GT
+id 0 :: Int `compare` not False :: Bool  =  GT
+id 0 :: Int `compare` not True :: Bool  =  GT
+id 0 :: Int `compare` not (not _) :: Bool  =  LT
+id 0 :: Int `compare` _ || _ :: Bool  =  LT
+id 0 :: Int `compare` d :: Char  =  GT
+id 0 :: Int `compare` ' ' :: Char  =  GT
+id 0 :: Int `compare` ys :: [Int]  =  GT
+id 0 :: Int `compare` [0] :: [Int]  =  GT
+id 0 :: Int `compare` _:xs :: [Int]  =  LT
+id 0 :: Int `compare` [_] :: [Int]  =  LT
+id 0 :: Int `compare` _:_:_ :: [Int]  =  LT
+id 0 :: Int `compare` x:_ :: [Int]  =  LT
+id 0 :: Int `compare` 0:_ :: [Int]  =  LT
+id 0 :: Int `compare` id _:_ :: [Int]  =  LT
+id 0 :: Int `compare` tail _ :: [Int]  =  GT
+id 0 :: Int `compare` _ ++ _ :: [Int]  =  LT
+id 0 :: Int `compare` negate :: Int -> Int  =  GT
+id 0 :: Int `compare` abs :: Int -> Int  =  GT
+id 0 :: Int `compare` (_ +) :: Int -> Int  =  GT
+id 0 :: Int `compare` (*) :: Int -> Int -> Int  =  GT
+id 0 :: Int `compare` not :: Bool -> Bool  =  GT
+id 0 :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+id (id _) :: Int `compare` z :: Int  =  GT
+id (id _) :: Int `compare` -1 :: Int  =  GT
+id (id _) :: Int `compare` id y :: Int  =  GT
+id (id _) :: Int `compare` id 1 :: Int  =  GT
+id (id _) :: Int `compare` id (id x) :: Int  =  LT
+id (id _) :: Int `compare` id (id 0) :: Int  =  LT
+id (id _) :: Int `compare` id (id (id _)) :: Int  =  LT
+id (id _) :: Int `compare` id (negate _) :: Int  =  LT
+id (id _) :: Int `compare` id (abs _) :: Int  =  LT
+id (id _) :: Int `compare` id (_ + _) :: Int  =  LT
+id (id _) :: Int `compare` id (head _) :: Int  =  LT
+id (id _) :: Int `compare` id (ord _) :: Int  =  LT
+id (id _) :: Int `compare` negate x :: Int  =  GT
+id (id _) :: Int `compare` negate 0 :: Int  =  GT
+id (id _) :: Int `compare` negate (id _) :: Int  =  LT
+id (id _) :: Int `compare` abs x :: Int  =  GT
+id (id _) :: Int `compare` abs 0 :: Int  =  GT
+id (id _) :: Int `compare` abs (id _) :: Int  =  LT
+id (id _) :: Int `compare` _ + x :: Int  =  GT
+id (id _) :: Int `compare` _ + 0 :: Int  =  LT
+id (id _) :: Int `compare` _ + id _ :: Int  =  LT
+id (id _) :: Int `compare` x + _ :: Int  =  GT
+id (id _) :: Int `compare` 0 + _ :: Int  =  LT
+id (id _) :: Int `compare` id _ + _ :: Int  =  LT
+id (id _) :: Int `compare` _ * _ :: Int  =  GT
+id (id _) :: Int `compare` f _ :: Int  =  GT
+id (id _) :: Int `compare` head xs :: Int  =  GT
+id (id _) :: Int `compare` head [] :: Int  =  GT
+id (id _) :: Int `compare` head (_:_) :: Int  =  LT
+id (id _) :: Int `compare` ord c :: Int  =  GT
+id (id _) :: Int `compare` ord 'a' :: Int  =  GT
+id (id _) :: Int `compare` q :: Bool  =  GT
+id (id _) :: Int `compare` not p :: Bool  =  GT
+id (id _) :: Int `compare` not False :: Bool  =  GT
+id (id _) :: Int `compare` not True :: Bool  =  GT
+id (id _) :: Int `compare` not (not _) :: Bool  =  GT
+id (id _) :: Int `compare` _ || _ :: Bool  =  GT
+id (id _) :: Int `compare` d :: Char  =  GT
+id (id _) :: Int `compare` ' ' :: Char  =  GT
+id (id _) :: Int `compare` ys :: [Int]  =  GT
+id (id _) :: Int `compare` [0] :: [Int]  =  GT
+id (id _) :: Int `compare` _:xs :: [Int]  =  GT
+id (id _) :: Int `compare` [_] :: [Int]  =  LT
+id (id _) :: Int `compare` _:_:_ :: [Int]  =  LT
+id (id _) :: Int `compare` x:_ :: [Int]  =  GT
+id (id _) :: Int `compare` 0:_ :: [Int]  =  LT
+id (id _) :: Int `compare` id _:_ :: [Int]  =  LT
+id (id _) :: Int `compare` tail _ :: [Int]  =  GT
+id (id _) :: Int `compare` _ ++ _ :: [Int]  =  GT
+id (id _) :: Int `compare` negate :: Int -> Int  =  GT
+id (id _) :: Int `compare` abs :: Int -> Int  =  GT
+id (id _) :: Int `compare` (_ +) :: Int -> Int  =  GT
+id (id _) :: Int `compare` (*) :: Int -> Int -> Int  =  GT
+id (id _) :: Int `compare` not :: Bool -> Bool  =  GT
+id (id _) :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+negate _ :: Int `compare` z :: Int  =  GT
+negate _ :: Int `compare` -1 :: Int  =  GT
+negate _ :: Int `compare` id y :: Int  =  GT
+negate _ :: Int `compare` id 1 :: Int  =  LT
+negate _ :: Int `compare` id (id x) :: Int  =  LT
+negate _ :: Int `compare` id (id 0) :: Int  =  LT
+negate _ :: Int `compare` id (id (id _)) :: Int  =  LT
+negate _ :: Int `compare` id (negate _) :: Int  =  LT
+negate _ :: Int `compare` id (abs _) :: Int  =  LT
+negate _ :: Int `compare` id (_ + _) :: Int  =  LT
+negate _ :: Int `compare` id (head _) :: Int  =  LT
+negate _ :: Int `compare` id (ord _) :: Int  =  LT
+negate _ :: Int `compare` negate x :: Int  =  LT
+negate _ :: Int `compare` negate 0 :: Int  =  LT
+negate _ :: Int `compare` negate (id _) :: Int  =  LT
+negate _ :: Int `compare` abs x :: Int  =  GT
+negate _ :: Int `compare` abs 0 :: Int  =  LT
+negate _ :: Int `compare` abs (id _) :: Int  =  LT
+negate _ :: Int `compare` _ + x :: Int  =  LT
+negate _ :: Int `compare` _ + 0 :: Int  =  LT
+negate _ :: Int `compare` _ + id _ :: Int  =  LT
+negate _ :: Int `compare` x + _ :: Int  =  LT
+negate _ :: Int `compare` 0 + _ :: Int  =  LT
+negate _ :: Int `compare` id _ + _ :: Int  =  LT
+negate _ :: Int `compare` _ * _ :: Int  =  LT
+negate _ :: Int `compare` f _ :: Int  =  GT
+negate _ :: Int `compare` head xs :: Int  =  LT
+negate _ :: Int `compare` head [] :: Int  =  LT
+negate _ :: Int `compare` head (_:_) :: Int  =  LT
+negate _ :: Int `compare` ord c :: Int  =  GT
+negate _ :: Int `compare` ord 'a' :: Int  =  LT
+negate _ :: Int `compare` q :: Bool  =  GT
+negate _ :: Int `compare` not p :: Bool  =  GT
+negate _ :: Int `compare` not False :: Bool  =  LT
+negate _ :: Int `compare` not True :: Bool  =  LT
+negate _ :: Int `compare` not (not _) :: Bool  =  LT
+negate _ :: Int `compare` _ || _ :: Bool  =  LT
+negate _ :: Int `compare` d :: Char  =  GT
+negate _ :: Int `compare` ' ' :: Char  =  GT
+negate _ :: Int `compare` ys :: [Int]  =  GT
+negate _ :: Int `compare` [0] :: [Int]  =  GT
+negate _ :: Int `compare` _:xs :: [Int]  =  LT
+negate _ :: Int `compare` [_] :: [Int]  =  LT
+negate _ :: Int `compare` _:_:_ :: [Int]  =  LT
+negate _ :: Int `compare` x:_ :: [Int]  =  LT
+negate _ :: Int `compare` 0:_ :: [Int]  =  LT
+negate _ :: Int `compare` id _:_ :: [Int]  =  LT
+negate _ :: Int `compare` tail _ :: [Int]  =  LT
+negate _ :: Int `compare` _ ++ _ :: [Int]  =  LT
+negate _ :: Int `compare` negate :: Int -> Int  =  GT
+negate _ :: Int `compare` abs :: Int -> Int  =  GT
+negate _ :: Int `compare` (_ +) :: Int -> Int  =  LT
+negate _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
+negate _ :: Int `compare` not :: Bool -> Bool  =  GT
+negate _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+abs _ :: Int `compare` z :: Int  =  GT
+abs _ :: Int `compare` -1 :: Int  =  GT
+abs _ :: Int `compare` id y :: Int  =  GT
+abs _ :: Int `compare` id 1 :: Int  =  LT
+abs _ :: Int `compare` id (id x) :: Int  =  LT
+abs _ :: Int `compare` id (id 0) :: Int  =  LT
+abs _ :: Int `compare` id (id (id _)) :: Int  =  LT
+abs _ :: Int `compare` id (negate _) :: Int  =  LT
+abs _ :: Int `compare` id (abs _) :: Int  =  LT
+abs _ :: Int `compare` id (_ + _) :: Int  =  LT
+abs _ :: Int `compare` id (head _) :: Int  =  LT
+abs _ :: Int `compare` id (ord _) :: Int  =  LT
+abs _ :: Int `compare` negate x :: Int  =  LT
+abs _ :: Int `compare` negate 0 :: Int  =  LT
+abs _ :: Int `compare` negate (id _) :: Int  =  LT
+abs _ :: Int `compare` abs x :: Int  =  LT
+abs _ :: Int `compare` abs 0 :: Int  =  LT
+abs _ :: Int `compare` abs (id _) :: Int  =  LT
+abs _ :: Int `compare` _ + x :: Int  =  LT
+abs _ :: Int `compare` _ + 0 :: Int  =  LT
+abs _ :: Int `compare` _ + id _ :: Int  =  LT
+abs _ :: Int `compare` x + _ :: Int  =  LT
+abs _ :: Int `compare` 0 + _ :: Int  =  LT
+abs _ :: Int `compare` id _ + _ :: Int  =  LT
+abs _ :: Int `compare` _ * _ :: Int  =  LT
+abs _ :: Int `compare` f _ :: Int  =  GT
+abs _ :: Int `compare` head xs :: Int  =  LT
+abs _ :: Int `compare` head [] :: Int  =  LT
+abs _ :: Int `compare` head (_:_) :: Int  =  LT
+abs _ :: Int `compare` ord c :: Int  =  GT
+abs _ :: Int `compare` ord 'a' :: Int  =  LT
+abs _ :: Int `compare` q :: Bool  =  GT
+abs _ :: Int `compare` not p :: Bool  =  GT
+abs _ :: Int `compare` not False :: Bool  =  LT
+abs _ :: Int `compare` not True :: Bool  =  LT
+abs _ :: Int `compare` not (not _) :: Bool  =  LT
+abs _ :: Int `compare` _ || _ :: Bool  =  LT
+abs _ :: Int `compare` d :: Char  =  GT
+abs _ :: Int `compare` ' ' :: Char  =  GT
+abs _ :: Int `compare` ys :: [Int]  =  GT
+abs _ :: Int `compare` [0] :: [Int]  =  GT
+abs _ :: Int `compare` _:xs :: [Int]  =  LT
+abs _ :: Int `compare` [_] :: [Int]  =  LT
+abs _ :: Int `compare` _:_:_ :: [Int]  =  LT
+abs _ :: Int `compare` x:_ :: [Int]  =  LT
+abs _ :: Int `compare` 0:_ :: [Int]  =  LT
+abs _ :: Int `compare` id _:_ :: [Int]  =  LT
+abs _ :: Int `compare` tail _ :: [Int]  =  LT
+abs _ :: Int `compare` _ ++ _ :: [Int]  =  LT
+abs _ :: Int `compare` negate :: Int -> Int  =  GT
+abs _ :: Int `compare` abs :: Int -> Int  =  GT
+abs _ :: Int `compare` (_ +) :: Int -> Int  =  LT
+abs _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
+abs _ :: Int `compare` not :: Bool -> Bool  =  GT
+abs _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+_ + _ :: Int `compare` z :: Int  =  GT
+_ + _ :: Int `compare` -1 :: Int  =  GT
+_ + _ :: Int `compare` id y :: Int  =  GT
+_ + _ :: Int `compare` id 1 :: Int  =  GT
+_ + _ :: Int `compare` id (id x) :: Int  =  LT
+_ + _ :: Int `compare` id (id 0) :: Int  =  LT
+_ + _ :: Int `compare` id (id (id _)) :: Int  =  LT
+_ + _ :: Int `compare` id (negate _) :: Int  =  LT
+_ + _ :: Int `compare` id (abs _) :: Int  =  LT
+_ + _ :: Int `compare` id (_ + _) :: Int  =  LT
+_ + _ :: Int `compare` id (head _) :: Int  =  LT
+_ + _ :: Int `compare` id (ord _) :: Int  =  LT
+_ + _ :: Int `compare` negate x :: Int  =  GT
+_ + _ :: Int `compare` negate 0 :: Int  =  GT
+_ + _ :: Int `compare` negate (id _) :: Int  =  LT
+_ + _ :: Int `compare` abs x :: Int  =  GT
+_ + _ :: Int `compare` abs 0 :: Int  =  GT
+_ + _ :: Int `compare` abs (id _) :: Int  =  LT
+_ + _ :: Int `compare` _ + x :: Int  =  GT
+_ + _ :: Int `compare` _ + 0 :: Int  =  LT
+_ + _ :: Int `compare` _ + id _ :: Int  =  LT
+_ + _ :: Int `compare` x + _ :: Int  =  GT
+_ + _ :: Int `compare` 0 + _ :: Int  =  LT
+_ + _ :: Int `compare` id _ + _ :: Int  =  LT
+_ + _ :: Int `compare` _ * _ :: Int  =  GT
+_ + _ :: Int `compare` f _ :: Int  =  GT
+_ + _ :: Int `compare` head xs :: Int  =  GT
+_ + _ :: Int `compare` head [] :: Int  =  GT
+_ + _ :: Int `compare` head (_:_) :: Int  =  LT
+_ + _ :: Int `compare` ord c :: Int  =  GT
+_ + _ :: Int `compare` ord 'a' :: Int  =  GT
+_ + _ :: Int `compare` q :: Bool  =  GT
+_ + _ :: Int `compare` not p :: Bool  =  GT
+_ + _ :: Int `compare` not False :: Bool  =  GT
+_ + _ :: Int `compare` not True :: Bool  =  GT
+_ + _ :: Int `compare` not (not _) :: Bool  =  LT
+_ + _ :: Int `compare` _ || _ :: Bool  =  GT
+_ + _ :: Int `compare` d :: Char  =  GT
+_ + _ :: Int `compare` ' ' :: Char  =  GT
+_ + _ :: Int `compare` ys :: [Int]  =  GT
+_ + _ :: Int `compare` [0] :: [Int]  =  GT
+_ + _ :: Int `compare` _:xs :: [Int]  =  GT
+_ + _ :: Int `compare` [_] :: [Int]  =  LT
+_ + _ :: Int `compare` _:_:_ :: [Int]  =  LT
+_ + _ :: Int `compare` x:_ :: [Int]  =  GT
+_ + _ :: Int `compare` 0:_ :: [Int]  =  LT
+_ + _ :: Int `compare` id _:_ :: [Int]  =  LT
+_ + _ :: Int `compare` tail _ :: [Int]  =  GT
+_ + _ :: Int `compare` _ ++ _ :: [Int]  =  LT
+_ + _ :: Int `compare` negate :: Int -> Int  =  GT
+_ + _ :: Int `compare` abs :: Int -> Int  =  GT
+_ + _ :: Int `compare` (_ +) :: Int -> Int  =  GT
+_ + _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
+_ + _ :: Int `compare` not :: Bool -> Bool  =  GT
+_ + _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+head _ :: Int `compare` z :: Int  =  GT
+head _ :: Int `compare` -1 :: Int  =  GT
+head _ :: Int `compare` id y :: Int  =  GT
+head _ :: Int `compare` id 1 :: Int  =  LT
+head _ :: Int `compare` id (id x) :: Int  =  LT
+head _ :: Int `compare` id (id 0) :: Int  =  LT
+head _ :: Int `compare` id (id (id _)) :: Int  =  LT
+head _ :: Int `compare` id (negate _) :: Int  =  LT
+head _ :: Int `compare` id (abs _) :: Int  =  LT
+head _ :: Int `compare` id (_ + _) :: Int  =  LT
+head _ :: Int `compare` id (head _) :: Int  =  LT
+head _ :: Int `compare` id (ord _) :: Int  =  LT
+head _ :: Int `compare` negate x :: Int  =  GT
+head _ :: Int `compare` negate 0 :: Int  =  LT
+head _ :: Int `compare` negate (id _) :: Int  =  LT
+head _ :: Int `compare` abs x :: Int  =  GT
+head _ :: Int `compare` abs 0 :: Int  =  LT
+head _ :: Int `compare` abs (id _) :: Int  =  LT
+head _ :: Int `compare` _ + x :: Int  =  LT
+head _ :: Int `compare` _ + 0 :: Int  =  LT
+head _ :: Int `compare` _ + id _ :: Int  =  LT
+head _ :: Int `compare` x + _ :: Int  =  LT
+head _ :: Int `compare` 0 + _ :: Int  =  LT
+head _ :: Int `compare` id _ + _ :: Int  =  LT
+head _ :: Int `compare` _ * _ :: Int  =  LT
+head _ :: Int `compare` f _ :: Int  =  GT
+head _ :: Int `compare` head xs :: Int  =  LT
+head _ :: Int `compare` head [] :: Int  =  LT
+head _ :: Int `compare` head (_:_) :: Int  =  LT
+head _ :: Int `compare` ord c :: Int  =  GT
+head _ :: Int `compare` ord 'a' :: Int  =  LT
+head _ :: Int `compare` q :: Bool  =  GT
+head _ :: Int `compare` not p :: Bool  =  GT
+head _ :: Int `compare` not False :: Bool  =  LT
+head _ :: Int `compare` not True :: Bool  =  LT
+head _ :: Int `compare` not (not _) :: Bool  =  LT
+head _ :: Int `compare` _ || _ :: Bool  =  LT
+head _ :: Int `compare` d :: Char  =  GT
+head _ :: Int `compare` ' ' :: Char  =  GT
+head _ :: Int `compare` ys :: [Int]  =  GT
+head _ :: Int `compare` [0] :: [Int]  =  GT
+head _ :: Int `compare` _:xs :: [Int]  =  LT
+head _ :: Int `compare` [_] :: [Int]  =  LT
+head _ :: Int `compare` _:_:_ :: [Int]  =  LT
+head _ :: Int `compare` x:_ :: [Int]  =  LT
+head _ :: Int `compare` 0:_ :: [Int]  =  LT
+head _ :: Int `compare` id _:_ :: [Int]  =  LT
+head _ :: Int `compare` tail _ :: [Int]  =  LT
+head _ :: Int `compare` _ ++ _ :: [Int]  =  LT
+head _ :: Int `compare` negate :: Int -> Int  =  GT
+head _ :: Int `compare` abs :: Int -> Int  =  GT
+head _ :: Int `compare` (_ +) :: Int -> Int  =  LT
+head _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
+head _ :: Int `compare` not :: Bool -> Bool  =  GT
+head _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+ord _ :: Int `compare` z :: Int  =  GT
+ord _ :: Int `compare` -1 :: Int  =  GT
+ord _ :: Int `compare` id y :: Int  =  LT
+ord _ :: Int `compare` id 1 :: Int  =  LT
+ord _ :: Int `compare` id (id x) :: Int  =  LT
+ord _ :: Int `compare` id (id 0) :: Int  =  LT
+ord _ :: Int `compare` id (id (id _)) :: Int  =  LT
+ord _ :: Int `compare` id (negate _) :: Int  =  LT
+ord _ :: Int `compare` id (abs _) :: Int  =  LT
+ord _ :: Int `compare` id (_ + _) :: Int  =  LT
+ord _ :: Int `compare` id (head _) :: Int  =  LT
+ord _ :: Int `compare` id (ord _) :: Int  =  LT
+ord _ :: Int `compare` negate x :: Int  =  LT
+ord _ :: Int `compare` negate 0 :: Int  =  LT
+ord _ :: Int `compare` negate (id _) :: Int  =  LT
+ord _ :: Int `compare` abs x :: Int  =  LT
+ord _ :: Int `compare` abs 0 :: Int  =  LT
+ord _ :: Int `compare` abs (id _) :: Int  =  LT
+ord _ :: Int `compare` _ + x :: Int  =  LT
+ord _ :: Int `compare` _ + 0 :: Int  =  LT
+ord _ :: Int `compare` _ + id _ :: Int  =  LT
+ord _ :: Int `compare` x + _ :: Int  =  LT
+ord _ :: Int `compare` 0 + _ :: Int  =  LT
+ord _ :: Int `compare` id _ + _ :: Int  =  LT
+ord _ :: Int `compare` _ * _ :: Int  =  LT
+ord _ :: Int `compare` f _ :: Int  =  GT
+ord _ :: Int `compare` head xs :: Int  =  LT
+ord _ :: Int `compare` head [] :: Int  =  LT
+ord _ :: Int `compare` head (_:_) :: Int  =  LT
+ord _ :: Int `compare` ord c :: Int  =  LT
+ord _ :: Int `compare` ord 'a' :: Int  =  LT
+ord _ :: Int `compare` q :: Bool  =  GT
+ord _ :: Int `compare` not p :: Bool  =  GT
+ord _ :: Int `compare` not False :: Bool  =  LT
+ord _ :: Int `compare` not True :: Bool  =  LT
+ord _ :: Int `compare` not (not _) :: Bool  =  LT
+ord _ :: Int `compare` _ || _ :: Bool  =  LT
+ord _ :: Int `compare` d :: Char  =  GT
+ord _ :: Int `compare` ' ' :: Char  =  GT
+ord _ :: Int `compare` ys :: [Int]  =  GT
+ord _ :: Int `compare` [0] :: [Int]  =  GT
+ord _ :: Int `compare` _:xs :: [Int]  =  LT
+ord _ :: Int `compare` [_] :: [Int]  =  LT
+ord _ :: Int `compare` _:_:_ :: [Int]  =  LT
+ord _ :: Int `compare` x:_ :: [Int]  =  LT
+ord _ :: Int `compare` 0:_ :: [Int]  =  LT
+ord _ :: Int `compare` id _:_ :: [Int]  =  LT
+ord _ :: Int `compare` tail _ :: [Int]  =  LT
+ord _ :: Int `compare` _ ++ _ :: [Int]  =  LT
+ord _ :: Int `compare` negate :: Int -> Int  =  GT
+ord _ :: Int `compare` abs :: Int -> Int  =  GT
+ord _ :: Int `compare` (_ +) :: Int -> Int  =  LT
+ord _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
+ord _ :: Int `compare` not :: Bool -> Bool  =  GT
+ord _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+p :: Bool `compare` z :: Int  =  LT
+p :: Bool `compare` -1 :: Int  =  LT
+p :: Bool `compare` id y :: Int  =  LT
+p :: Bool `compare` id 1 :: Int  =  LT
+p :: Bool `compare` id (id x) :: Int  =  LT
+p :: Bool `compare` id (id 0) :: Int  =  LT
+p :: Bool `compare` id (id (id _)) :: Int  =  LT
+p :: Bool `compare` id (negate _) :: Int  =  LT
+p :: Bool `compare` id (abs _) :: Int  =  LT
+p :: Bool `compare` id (_ + _) :: Int  =  LT
+p :: Bool `compare` id (head _) :: Int  =  LT
+p :: Bool `compare` id (ord _) :: Int  =  LT
+p :: Bool `compare` negate x :: Int  =  LT
+p :: Bool `compare` negate 0 :: Int  =  LT
+p :: Bool `compare` negate (id _) :: Int  =  LT
+p :: Bool `compare` abs x :: Int  =  LT
+p :: Bool `compare` abs 0 :: Int  =  LT
+p :: Bool `compare` abs (id _) :: Int  =  LT
+p :: Bool `compare` _ + x :: Int  =  LT
+p :: Bool `compare` _ + 0 :: Int  =  LT
+p :: Bool `compare` _ + id _ :: Int  =  LT
+p :: Bool `compare` x + _ :: Int  =  LT
+p :: Bool `compare` 0 + _ :: Int  =  LT
+p :: Bool `compare` id _ + _ :: Int  =  LT
+p :: Bool `compare` _ * _ :: Int  =  LT
+p :: Bool `compare` f _ :: Int  =  LT
+p :: Bool `compare` head xs :: Int  =  LT
+p :: Bool `compare` head [] :: Int  =  LT
+p :: Bool `compare` head (_:_) :: Int  =  LT
+p :: Bool `compare` ord c :: Int  =  LT
+p :: Bool `compare` ord 'a' :: Int  =  LT
+p :: Bool `compare` q :: Bool  =  LT
+p :: Bool `compare` not p :: Bool  =  LT
+p :: Bool `compare` not False :: Bool  =  LT
+p :: Bool `compare` not True :: Bool  =  LT
+p :: Bool `compare` not (not _) :: Bool  =  LT
+p :: Bool `compare` _ || _ :: Bool  =  LT
+p :: Bool `compare` d :: Char  =  LT
+p :: Bool `compare` ' ' :: Char  =  LT
+p :: Bool `compare` ys :: [Int]  =  LT
+p :: Bool `compare` [0] :: [Int]  =  LT
+p :: Bool `compare` _:xs :: [Int]  =  LT
+p :: Bool `compare` [_] :: [Int]  =  LT
+p :: Bool `compare` _:_:_ :: [Int]  =  LT
+p :: Bool `compare` x:_ :: [Int]  =  LT
+p :: Bool `compare` 0:_ :: [Int]  =  LT
+p :: Bool `compare` id _:_ :: [Int]  =  LT
+p :: Bool `compare` tail _ :: [Int]  =  LT
+p :: Bool `compare` _ ++ _ :: [Int]  =  LT
+p :: Bool `compare` negate :: Int -> Int  =  LT
+p :: Bool `compare` abs :: Int -> Int  =  LT
+p :: Bool `compare` (_ +) :: Int -> Int  =  LT
+p :: Bool `compare` (*) :: Int -> Int -> Int  =  LT
+p :: Bool `compare` not :: Bool -> Bool  =  LT
+p :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  LT
+False :: Bool `compare` z :: Int  =  GT
+False :: Bool `compare` -1 :: Int  =  LT
+False :: Bool `compare` id y :: Int  =  LT
+False :: Bool `compare` id 1 :: Int  =  LT
+False :: Bool `compare` id (id x) :: Int  =  LT
+False :: Bool `compare` id (id 0) :: Int  =  LT
+False :: Bool `compare` id (id (id _)) :: Int  =  LT
+False :: Bool `compare` id (negate _) :: Int  =  LT
+False :: Bool `compare` id (abs _) :: Int  =  LT
+False :: Bool `compare` id (_ + _) :: Int  =  LT
+False :: Bool `compare` id (head _) :: Int  =  LT
+False :: Bool `compare` id (ord _) :: Int  =  LT
+False :: Bool `compare` negate x :: Int  =  LT
+False :: Bool `compare` negate 0 :: Int  =  LT
+False :: Bool `compare` negate (id _) :: Int  =  LT
+False :: Bool `compare` abs x :: Int  =  LT
+False :: Bool `compare` abs 0 :: Int  =  LT
+False :: Bool `compare` abs (id _) :: Int  =  LT
+False :: Bool `compare` _ + x :: Int  =  LT
+False :: Bool `compare` _ + 0 :: Int  =  LT
+False :: Bool `compare` _ + id _ :: Int  =  LT
+False :: Bool `compare` x + _ :: Int  =  LT
+False :: Bool `compare` 0 + _ :: Int  =  LT
+False :: Bool `compare` id _ + _ :: Int  =  LT
+False :: Bool `compare` _ * _ :: Int  =  LT
+False :: Bool `compare` f _ :: Int  =  LT
+False :: Bool `compare` head xs :: Int  =  LT
+False :: Bool `compare` head [] :: Int  =  LT
+False :: Bool `compare` head (_:_) :: Int  =  LT
+False :: Bool `compare` ord c :: Int  =  LT
+False :: Bool `compare` ord 'a' :: Int  =  LT
+False :: Bool `compare` q :: Bool  =  GT
+False :: Bool `compare` not p :: Bool  =  LT
+False :: Bool `compare` not False :: Bool  =  LT
+False :: Bool `compare` not True :: Bool  =  LT
+False :: Bool `compare` not (not _) :: Bool  =  LT
+False :: Bool `compare` _ || _ :: Bool  =  LT
+False :: Bool `compare` d :: Char  =  GT
+False :: Bool `compare` ' ' :: Char  =  LT
+False :: Bool `compare` ys :: [Int]  =  GT
+False :: Bool `compare` [0] :: [Int]  =  LT
+False :: Bool `compare` _:xs :: [Int]  =  LT
+False :: Bool `compare` [_] :: [Int]  =  LT
+False :: Bool `compare` _:_:_ :: [Int]  =  LT
+False :: Bool `compare` x:_ :: [Int]  =  LT
+False :: Bool `compare` 0:_ :: [Int]  =  LT
+False :: Bool `compare` id _:_ :: [Int]  =  LT
+False :: Bool `compare` tail _ :: [Int]  =  LT
+False :: Bool `compare` _ ++ _ :: [Int]  =  LT
+False :: Bool `compare` negate :: Int -> Int  =  LT
+False :: Bool `compare` abs :: Int -> Int  =  LT
+False :: Bool `compare` (_ +) :: Int -> Int  =  LT
+False :: Bool `compare` (*) :: Int -> Int -> Int  =  LT
+False :: Bool `compare` not :: Bool -> Bool  =  LT
+False :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  LT
+True :: Bool `compare` z :: Int  =  GT
+True :: Bool `compare` -1 :: Int  =  LT
+True :: Bool `compare` id y :: Int  =  LT
+True :: Bool `compare` id 1 :: Int  =  LT
+True :: Bool `compare` id (id x) :: Int  =  LT
+True :: Bool `compare` id (id 0) :: Int  =  LT
+True :: Bool `compare` id (id (id _)) :: Int  =  LT
+True :: Bool `compare` id (negate _) :: Int  =  LT
+True :: Bool `compare` id (abs _) :: Int  =  LT
+True :: Bool `compare` id (_ + _) :: Int  =  LT
+True :: Bool `compare` id (head _) :: Int  =  LT
+True :: Bool `compare` id (ord _) :: Int  =  LT
+True :: Bool `compare` negate x :: Int  =  LT
+True :: Bool `compare` negate 0 :: Int  =  LT
+True :: Bool `compare` negate (id _) :: Int  =  LT
+True :: Bool `compare` abs x :: Int  =  LT
+True :: Bool `compare` abs 0 :: Int  =  LT
+True :: Bool `compare` abs (id _) :: Int  =  LT
+True :: Bool `compare` _ + x :: Int  =  LT
+True :: Bool `compare` _ + 0 :: Int  =  LT
+True :: Bool `compare` _ + id _ :: Int  =  LT
+True :: Bool `compare` x + _ :: Int  =  LT
+True :: Bool `compare` 0 + _ :: Int  =  LT
+True :: Bool `compare` id _ + _ :: Int  =  LT
+True :: Bool `compare` _ * _ :: Int  =  LT
+True :: Bool `compare` f _ :: Int  =  LT
+True :: Bool `compare` head xs :: Int  =  LT
+True :: Bool `compare` head [] :: Int  =  LT
+True :: Bool `compare` head (_:_) :: Int  =  LT
+True :: Bool `compare` ord c :: Int  =  LT
+True :: Bool `compare` ord 'a' :: Int  =  LT
+True :: Bool `compare` q :: Bool  =  GT
+True :: Bool `compare` not p :: Bool  =  LT
+True :: Bool `compare` not False :: Bool  =  LT
+True :: Bool `compare` not True :: Bool  =  LT
+True :: Bool `compare` not (not _) :: Bool  =  LT
+True :: Bool `compare` _ || _ :: Bool  =  LT
+True :: Bool `compare` d :: Char  =  GT
+True :: Bool `compare` ' ' :: Char  =  LT
+True :: Bool `compare` ys :: [Int]  =  GT
+True :: Bool `compare` [0] :: [Int]  =  LT
+True :: Bool `compare` _:xs :: [Int]  =  LT
+True :: Bool `compare` [_] :: [Int]  =  LT
+True :: Bool `compare` _:_:_ :: [Int]  =  LT
+True :: Bool `compare` x:_ :: [Int]  =  LT
+True :: Bool `compare` 0:_ :: [Int]  =  LT
+True :: Bool `compare` id _:_ :: [Int]  =  LT
+True :: Bool `compare` tail _ :: [Int]  =  LT
+True :: Bool `compare` _ ++ _ :: [Int]  =  LT
+True :: Bool `compare` negate :: Int -> Int  =  LT
+True :: Bool `compare` abs :: Int -> Int  =  LT
+True :: Bool `compare` (_ +) :: Int -> Int  =  LT
+True :: Bool `compare` (*) :: Int -> Int -> Int  =  LT
+True :: Bool `compare` not :: Bool -> Bool  =  LT
+True :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  LT
+not _ :: Bool `compare` z :: Int  =  GT
+not _ :: Bool `compare` -1 :: Int  =  GT
+not _ :: Bool `compare` id y :: Int  =  LT
+not _ :: Bool `compare` id 1 :: Int  =  LT
+not _ :: Bool `compare` id (id x) :: Int  =  LT
+not _ :: Bool `compare` id (id 0) :: Int  =  LT
+not _ :: Bool `compare` id (id (id _)) :: Int  =  LT
+not _ :: Bool `compare` id (negate _) :: Int  =  LT
+not _ :: Bool `compare` id (abs _) :: Int  =  LT
+not _ :: Bool `compare` id (_ + _) :: Int  =  LT
+not _ :: Bool `compare` id (head _) :: Int  =  LT
+not _ :: Bool `compare` id (ord _) :: Int  =  LT
+not _ :: Bool `compare` negate x :: Int  =  LT
+not _ :: Bool `compare` negate 0 :: Int  =  LT
+not _ :: Bool `compare` negate (id _) :: Int  =  LT
+not _ :: Bool `compare` abs x :: Int  =  LT
+not _ :: Bool `compare` abs 0 :: Int  =  LT
+not _ :: Bool `compare` abs (id _) :: Int  =  LT
+not _ :: Bool `compare` _ + x :: Int  =  LT
+not _ :: Bool `compare` _ + 0 :: Int  =  LT
+not _ :: Bool `compare` _ + id _ :: Int  =  LT
+not _ :: Bool `compare` x + _ :: Int  =  LT
+not _ :: Bool `compare` 0 + _ :: Int  =  LT
+not _ :: Bool `compare` id _ + _ :: Int  =  LT
+not _ :: Bool `compare` _ * _ :: Int  =  LT
+not _ :: Bool `compare` f _ :: Int  =  GT
+not _ :: Bool `compare` head xs :: Int  =  LT
+not _ :: Bool `compare` head [] :: Int  =  LT
+not _ :: Bool `compare` head (_:_) :: Int  =  LT
+not _ :: Bool `compare` ord c :: Int  =  LT
+not _ :: Bool `compare` ord 'a' :: Int  =  LT
+not _ :: Bool `compare` q :: Bool  =  GT
+not _ :: Bool `compare` not p :: Bool  =  LT
+not _ :: Bool `compare` not False :: Bool  =  LT
+not _ :: Bool `compare` not True :: Bool  =  LT
+not _ :: Bool `compare` not (not _) :: Bool  =  LT
+not _ :: Bool `compare` _ || _ :: Bool  =  LT
+not _ :: Bool `compare` d :: Char  =  GT
+not _ :: Bool `compare` ' ' :: Char  =  GT
+not _ :: Bool `compare` ys :: [Int]  =  GT
+not _ :: Bool `compare` [0] :: [Int]  =  GT
+not _ :: Bool `compare` _:xs :: [Int]  =  LT
+not _ :: Bool `compare` [_] :: [Int]  =  LT
+not _ :: Bool `compare` _:_:_ :: [Int]  =  LT
+not _ :: Bool `compare` x:_ :: [Int]  =  LT
+not _ :: Bool `compare` 0:_ :: [Int]  =  LT
+not _ :: Bool `compare` id _:_ :: [Int]  =  LT
+not _ :: Bool `compare` tail _ :: [Int]  =  LT
+not _ :: Bool `compare` _ ++ _ :: [Int]  =  LT
+not _ :: Bool `compare` negate :: Int -> Int  =  GT
+not _ :: Bool `compare` abs :: Int -> Int  =  GT
+not _ :: Bool `compare` (_ +) :: Int -> Int  =  LT
+not _ :: Bool `compare` (*) :: Int -> Int -> Int  =  GT
+not _ :: Bool `compare` not :: Bool -> Bool  =  GT
+not _ :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  GT
+c :: Char `compare` z :: Int  =  LT
+c :: Char `compare` -1 :: Int  =  LT
+c :: Char `compare` id y :: Int  =  LT
+c :: Char `compare` id 1 :: Int  =  LT
+c :: Char `compare` id (id x) :: Int  =  LT
+c :: Char `compare` id (id 0) :: Int  =  LT
+c :: Char `compare` id (id (id _)) :: Int  =  LT
+c :: Char `compare` id (negate _) :: Int  =  LT
+c :: Char `compare` id (abs _) :: Int  =  LT
+c :: Char `compare` id (_ + _) :: Int  =  LT
+c :: Char `compare` id (head _) :: Int  =  LT
+c :: Char `compare` id (ord _) :: Int  =  LT
+c :: Char `compare` negate x :: Int  =  LT
+c :: Char `compare` negate 0 :: Int  =  LT
+c :: Char `compare` negate (id _) :: Int  =  LT
+c :: Char `compare` abs x :: Int  =  LT
+c :: Char `compare` abs 0 :: Int  =  LT
+c :: Char `compare` abs (id _) :: Int  =  LT
+c :: Char `compare` _ + x :: Int  =  LT
+c :: Char `compare` _ + 0 :: Int  =  LT
+c :: Char `compare` _ + id _ :: Int  =  LT
+c :: Char `compare` x + _ :: Int  =  LT
+c :: Char `compare` 0 + _ :: Int  =  LT
+c :: Char `compare` id _ + _ :: Int  =  LT
+c :: Char `compare` _ * _ :: Int  =  LT
+c :: Char `compare` f _ :: Int  =  LT
+c :: Char `compare` head xs :: Int  =  LT
+c :: Char `compare` head [] :: Int  =  LT
+c :: Char `compare` head (_:_) :: Int  =  LT
+c :: Char `compare` ord c :: Int  =  LT
+c :: Char `compare` ord 'a' :: Int  =  LT
+c :: Char `compare` q :: Bool  =  GT
+c :: Char `compare` not p :: Bool  =  LT
+c :: Char `compare` not False :: Bool  =  LT
+c :: Char `compare` not True :: Bool  =  LT
+c :: Char `compare` not (not _) :: Bool  =  LT
+c :: Char `compare` _ || _ :: Bool  =  LT
+c :: Char `compare` d :: Char  =  LT
+c :: Char `compare` ' ' :: Char  =  LT
+c :: Char `compare` ys :: [Int]  =  LT
+c :: Char `compare` [0] :: [Int]  =  LT
+c :: Char `compare` _:xs :: [Int]  =  LT
+c :: Char `compare` [_] :: [Int]  =  LT
+c :: Char `compare` _:_:_ :: [Int]  =  LT
+c :: Char `compare` x:_ :: [Int]  =  LT
+c :: Char `compare` 0:_ :: [Int]  =  LT
+c :: Char `compare` id _:_ :: [Int]  =  LT
+c :: Char `compare` tail _ :: [Int]  =  LT
+c :: Char `compare` _ ++ _ :: [Int]  =  LT
+c :: Char `compare` negate :: Int -> Int  =  LT
+c :: Char `compare` abs :: Int -> Int  =  LT
+c :: Char `compare` (_ +) :: Int -> Int  =  LT
+c :: Char `compare` (*) :: Int -> Int -> Int  =  LT
+c :: Char `compare` not :: Bool -> Bool  =  LT
+c :: Char `compare` (||) :: Bool -> Bool -> Bool  =  LT
+'a' :: Char `compare` z :: Int  =  GT
+'a' :: Char `compare` -1 :: Int  =  LT
+'a' :: Char `compare` id y :: Int  =  LT
+'a' :: Char `compare` id 1 :: Int  =  LT
+'a' :: Char `compare` id (id x) :: Int  =  LT
+'a' :: Char `compare` id (id 0) :: Int  =  LT
+'a' :: Char `compare` id (id (id _)) :: Int  =  LT
+'a' :: Char `compare` id (negate _) :: Int  =  LT
+'a' :: Char `compare` id (abs _) :: Int  =  LT
+'a' :: Char `compare` id (_ + _) :: Int  =  LT
+'a' :: Char `compare` id (head _) :: Int  =  LT
+'a' :: Char `compare` id (ord _) :: Int  =  LT
+'a' :: Char `compare` negate x :: Int  =  LT
+'a' :: Char `compare` negate 0 :: Int  =  LT
+'a' :: Char `compare` negate (id _) :: Int  =  LT
+'a' :: Char `compare` abs x :: Int  =  LT
+'a' :: Char `compare` abs 0 :: Int  =  LT
+'a' :: Char `compare` abs (id _) :: Int  =  LT
+'a' :: Char `compare` _ + x :: Int  =  LT
+'a' :: Char `compare` _ + 0 :: Int  =  LT
+'a' :: Char `compare` _ + id _ :: Int  =  LT
+'a' :: Char `compare` x + _ :: Int  =  LT
+'a' :: Char `compare` 0 + _ :: Int  =  LT
+'a' :: Char `compare` id _ + _ :: Int  =  LT
+'a' :: Char `compare` _ * _ :: Int  =  LT
+'a' :: Char `compare` f _ :: Int  =  LT
+'a' :: Char `compare` head xs :: Int  =  LT
+'a' :: Char `compare` head [] :: Int  =  LT
+'a' :: Char `compare` head (_:_) :: Int  =  LT
+'a' :: Char `compare` ord c :: Int  =  LT
+'a' :: Char `compare` ord 'a' :: Int  =  LT
+'a' :: Char `compare` q :: Bool  =  GT
+'a' :: Char `compare` not p :: Bool  =  LT
+'a' :: Char `compare` not False :: Bool  =  LT
+'a' :: Char `compare` not True :: Bool  =  LT
+'a' :: Char `compare` not (not _) :: Bool  =  LT
+'a' :: Char `compare` _ || _ :: Bool  =  LT
+'a' :: Char `compare` d :: Char  =  GT
+'a' :: Char `compare` ' ' :: Char  =  GT
+'a' :: Char `compare` ys :: [Int]  =  GT
+'a' :: Char `compare` [0] :: [Int]  =  LT
+'a' :: Char `compare` _:xs :: [Int]  =  LT
+'a' :: Char `compare` [_] :: [Int]  =  LT
+'a' :: Char `compare` _:_:_ :: [Int]  =  LT
+'a' :: Char `compare` x:_ :: [Int]  =  LT
+'a' :: Char `compare` 0:_ :: [Int]  =  LT
+'a' :: Char `compare` id _:_ :: [Int]  =  LT
+'a' :: Char `compare` tail _ :: [Int]  =  LT
+'a' :: Char `compare` _ ++ _ :: [Int]  =  LT
+'a' :: Char `compare` negate :: Int -> Int  =  LT
+'a' :: Char `compare` abs :: Int -> Int  =  LT
+'a' :: Char `compare` (_ +) :: Int -> Int  =  LT
+'a' :: Char `compare` (*) :: Int -> Int -> Int  =  LT
+'a' :: Char `compare` not :: Bool -> Bool  =  LT
+'a' :: Char `compare` (||) :: Bool -> Bool -> Bool  =  LT
+xs :: [Int] `compare` z :: Int  =  GT
+xs :: [Int] `compare` -1 :: Int  =  LT
+xs :: [Int] `compare` id y :: Int  =  LT
+xs :: [Int] `compare` id 1 :: Int  =  LT
+xs :: [Int] `compare` id (id x) :: Int  =  LT
+xs :: [Int] `compare` id (id 0) :: Int  =  LT
+xs :: [Int] `compare` id (id (id _)) :: Int  =  LT
+xs :: [Int] `compare` id (negate _) :: Int  =  LT
+xs :: [Int] `compare` id (abs _) :: Int  =  LT
+xs :: [Int] `compare` id (_ + _) :: Int  =  LT
+xs :: [Int] `compare` id (head _) :: Int  =  LT
+xs :: [Int] `compare` id (ord _) :: Int  =  LT
+xs :: [Int] `compare` negate x :: Int  =  LT
+xs :: [Int] `compare` negate 0 :: Int  =  LT
+xs :: [Int] `compare` negate (id _) :: Int  =  LT
+xs :: [Int] `compare` abs x :: Int  =  LT
+xs :: [Int] `compare` abs 0 :: Int  =  LT
+xs :: [Int] `compare` abs (id _) :: Int  =  LT
+xs :: [Int] `compare` _ + x :: Int  =  LT
+xs :: [Int] `compare` _ + 0 :: Int  =  LT
+xs :: [Int] `compare` _ + id _ :: Int  =  LT
+xs :: [Int] `compare` x + _ :: Int  =  LT
+xs :: [Int] `compare` 0 + _ :: Int  =  LT
+xs :: [Int] `compare` id _ + _ :: Int  =  LT
+xs :: [Int] `compare` _ * _ :: Int  =  LT
+xs :: [Int] `compare` f _ :: Int  =  LT
+xs :: [Int] `compare` head xs :: Int  =  LT
+xs :: [Int] `compare` head [] :: Int  =  LT
+xs :: [Int] `compare` head (_:_) :: Int  =  LT
+xs :: [Int] `compare` ord c :: Int  =  LT
+xs :: [Int] `compare` ord 'a' :: Int  =  LT
+xs :: [Int] `compare` q :: Bool  =  GT
+xs :: [Int] `compare` not p :: Bool  =  LT
+xs :: [Int] `compare` not False :: Bool  =  LT
+xs :: [Int] `compare` not True :: Bool  =  LT
+xs :: [Int] `compare` not (not _) :: Bool  =  LT
+xs :: [Int] `compare` _ || _ :: Bool  =  LT
+xs :: [Int] `compare` d :: Char  =  GT
+xs :: [Int] `compare` ' ' :: Char  =  LT
+xs :: [Int] `compare` ys :: [Int]  =  LT
+xs :: [Int] `compare` [0] :: [Int]  =  LT
+xs :: [Int] `compare` _:xs :: [Int]  =  LT
+xs :: [Int] `compare` [_] :: [Int]  =  LT
+xs :: [Int] `compare` _:_:_ :: [Int]  =  LT
+xs :: [Int] `compare` x:_ :: [Int]  =  LT
+xs :: [Int] `compare` 0:_ :: [Int]  =  LT
+xs :: [Int] `compare` id _:_ :: [Int]  =  LT
+xs :: [Int] `compare` tail _ :: [Int]  =  LT
+xs :: [Int] `compare` _ ++ _ :: [Int]  =  LT
+xs :: [Int] `compare` negate :: Int -> Int  =  LT
+xs :: [Int] `compare` abs :: Int -> Int  =  LT
+xs :: [Int] `compare` (_ +) :: Int -> Int  =  LT
+xs :: [Int] `compare` (*) :: Int -> Int -> Int  =  LT
+xs :: [Int] `compare` not :: Bool -> Bool  =  LT
+xs :: [Int] `compare` (||) :: Bool -> Bool -> Bool  =  LT
+[] :: [Int] `compare` z :: Int  =  GT
+[] :: [Int] `compare` -1 :: Int  =  GT
+[] :: [Int] `compare` id y :: Int  =  LT
+[] :: [Int] `compare` id 1 :: Int  =  LT
+[] :: [Int] `compare` id (id x) :: Int  =  LT
+[] :: [Int] `compare` id (id 0) :: Int  =  LT
+[] :: [Int] `compare` id (id (id _)) :: Int  =  LT
+[] :: [Int] `compare` id (negate _) :: Int  =  LT
+[] :: [Int] `compare` id (abs _) :: Int  =  LT
+[] :: [Int] `compare` id (_ + _) :: Int  =  LT
+[] :: [Int] `compare` id (head _) :: Int  =  LT
+[] :: [Int] `compare` id (ord _) :: Int  =  LT
+[] :: [Int] `compare` negate x :: Int  =  LT
+[] :: [Int] `compare` negate 0 :: Int  =  LT
+[] :: [Int] `compare` negate (id _) :: Int  =  LT
+[] :: [Int] `compare` abs x :: Int  =  LT
+[] :: [Int] `compare` abs 0 :: Int  =  LT
+[] :: [Int] `compare` abs (id _) :: Int  =  LT
+[] :: [Int] `compare` _ + x :: Int  =  LT
+[] :: [Int] `compare` _ + 0 :: Int  =  LT
+[] :: [Int] `compare` _ + id _ :: Int  =  LT
+[] :: [Int] `compare` x + _ :: Int  =  LT
+[] :: [Int] `compare` 0 + _ :: Int  =  LT
+[] :: [Int] `compare` id _ + _ :: Int  =  LT
+[] :: [Int] `compare` _ * _ :: Int  =  LT
+[] :: [Int] `compare` f _ :: Int  =  LT
+[] :: [Int] `compare` head xs :: Int  =  LT
+[] :: [Int] `compare` head [] :: Int  =  LT
+[] :: [Int] `compare` head (_:_) :: Int  =  LT
+[] :: [Int] `compare` ord c :: Int  =  LT
+[] :: [Int] `compare` ord 'a' :: Int  =  LT
+[] :: [Int] `compare` q :: Bool  =  GT
+[] :: [Int] `compare` not p :: Bool  =  LT
+[] :: [Int] `compare` not False :: Bool  =  LT
+[] :: [Int] `compare` not True :: Bool  =  LT
+[] :: [Int] `compare` not (not _) :: Bool  =  LT
+[] :: [Int] `compare` _ || _ :: Bool  =  LT
+[] :: [Int] `compare` d :: Char  =  GT
+[] :: [Int] `compare` ' ' :: Char  =  GT
+[] :: [Int] `compare` ys :: [Int]  =  GT
+[] :: [Int] `compare` [0] :: [Int]  =  LT
+[] :: [Int] `compare` _:xs :: [Int]  =  LT
+[] :: [Int] `compare` [_] :: [Int]  =  LT
+[] :: [Int] `compare` _:_:_ :: [Int]  =  LT
+[] :: [Int] `compare` x:_ :: [Int]  =  LT
+[] :: [Int] `compare` 0:_ :: [Int]  =  LT
+[] :: [Int] `compare` id _:_ :: [Int]  =  LT
+[] :: [Int] `compare` tail _ :: [Int]  =  LT
+[] :: [Int] `compare` _ ++ _ :: [Int]  =  LT
+[] :: [Int] `compare` negate :: Int -> Int  =  LT
+[] :: [Int] `compare` abs :: Int -> Int  =  LT
+[] :: [Int] `compare` (_ +) :: Int -> Int  =  LT
+[] :: [Int] `compare` (*) :: Int -> Int -> Int  =  LT
+[] :: [Int] `compare` not :: Bool -> Bool  =  LT
+[] :: [Int] `compare` (||) :: Bool -> Bool -> Bool  =  LT
+_:_ :: [Int] `compare` z :: Int  =  GT
+_:_ :: [Int] `compare` -1 :: Int  =  GT
+_:_ :: [Int] `compare` id y :: Int  =  GT
+_:_ :: [Int] `compare` id 1 :: Int  =  GT
+_:_ :: [Int] `compare` id (id x) :: Int  =  LT
+_:_ :: [Int] `compare` id (id 0) :: Int  =  LT
+_:_ :: [Int] `compare` id (id (id _)) :: Int  =  LT
+_:_ :: [Int] `compare` id (negate _) :: Int  =  LT
+_:_ :: [Int] `compare` id (abs _) :: Int  =  LT
+_:_ :: [Int] `compare` id (_ + _) :: Int  =  LT
+_:_ :: [Int] `compare` id (head _) :: Int  =  LT
+_:_ :: [Int] `compare` id (ord _) :: Int  =  LT
+_:_ :: [Int] `compare` negate x :: Int  =  GT
+_:_ :: [Int] `compare` negate 0 :: Int  =  GT
+_:_ :: [Int] `compare` negate (id _) :: Int  =  LT
+_:_ :: [Int] `compare` abs x :: Int  =  GT
+_:_ :: [Int] `compare` abs 0 :: Int  =  GT
+_:_ :: [Int] `compare` abs (id _) :: Int  =  LT
+_:_ :: [Int] `compare` _ + x :: Int  =  GT
+_:_ :: [Int] `compare` _ + 0 :: Int  =  LT
+_:_ :: [Int] `compare` _ + id _ :: Int  =  LT
+_:_ :: [Int] `compare` x + _ :: Int  =  GT
+_:_ :: [Int] `compare` 0 + _ :: Int  =  LT
+_:_ :: [Int] `compare` id _ + _ :: Int  =  LT
+_:_ :: [Int] `compare` _ * _ :: Int  =  LT
+_:_ :: [Int] `compare` f _ :: Int  =  GT
+_:_ :: [Int] `compare` head xs :: Int  =  GT
+_:_ :: [Int] `compare` head [] :: Int  =  GT
+_:_ :: [Int] `compare` head (_:_) :: Int  =  LT
+_:_ :: [Int] `compare` ord c :: Int  =  GT
+_:_ :: [Int] `compare` ord 'a' :: Int  =  GT
+_:_ :: [Int] `compare` q :: Bool  =  GT
+_:_ :: [Int] `compare` not p :: Bool  =  GT
+_:_ :: [Int] `compare` not False :: Bool  =  GT
+_:_ :: [Int] `compare` not True :: Bool  =  GT
+_:_ :: [Int] `compare` not (not _) :: Bool  =  LT
+_:_ :: [Int] `compare` _ || _ :: Bool  =  LT
+_:_ :: [Int] `compare` d :: Char  =  GT
+_:_ :: [Int] `compare` ' ' :: Char  =  GT
+_:_ :: [Int] `compare` ys :: [Int]  =  GT
+_:_ :: [Int] `compare` [0] :: [Int]  =  GT
+_:_ :: [Int] `compare` _:xs :: [Int]  =  LT
+_:_ :: [Int] `compare` [_] :: [Int]  =  LT
+_:_ :: [Int] `compare` _:_:_ :: [Int]  =  LT
+_:_ :: [Int] `compare` x:_ :: [Int]  =  LT
+_:_ :: [Int] `compare` 0:_ :: [Int]  =  LT
+_:_ :: [Int] `compare` id _:_ :: [Int]  =  LT
+_:_ :: [Int] `compare` tail _ :: [Int]  =  GT
+_:_ :: [Int] `compare` _ ++ _ :: [Int]  =  LT
+_:_ :: [Int] `compare` negate :: Int -> Int  =  GT
+_:_ :: [Int] `compare` abs :: Int -> Int  =  GT
+_:_ :: [Int] `compare` (_ +) :: Int -> Int  =  GT
+_:_ :: [Int] `compare` (*) :: Int -> Int -> Int  =  GT
+_:_ :: [Int] `compare` not :: Bool -> Bool  =  GT
+_:_ :: [Int] `compare` (||) :: Bool -> Bool -> Bool  =  GT
+id :: Int -> Int `compare` z :: Int  =  GT
+id :: Int -> Int `compare` -1 :: Int  =  GT
+id :: Int -> Int `compare` id y :: Int  =  LT
+id :: Int -> Int `compare` id 1 :: Int  =  LT
+id :: Int -> Int `compare` id (id x) :: Int  =  LT
+id :: Int -> Int `compare` id (id 0) :: Int  =  LT
+id :: Int -> Int `compare` id (id (id _)) :: Int  =  LT
+id :: Int -> Int `compare` id (negate _) :: Int  =  LT
+id :: Int -> Int `compare` id (abs _) :: Int  =  LT
+id :: Int -> Int `compare` id (_ + _) :: Int  =  LT
+id :: Int -> Int `compare` id (head _) :: Int  =  LT
+id :: Int -> Int `compare` id (ord _) :: Int  =  LT
+id :: Int -> Int `compare` negate x :: Int  =  LT
+id :: Int -> Int `compare` negate 0 :: Int  =  LT
+id :: Int -> Int `compare` negate (id _) :: Int  =  LT
+id :: Int -> Int `compare` abs x :: Int  =  LT
+id :: Int -> Int `compare` abs 0 :: Int  =  LT
+id :: Int -> Int `compare` abs (id _) :: Int  =  LT
+id :: Int -> Int `compare` _ + x :: Int  =  LT
+id :: Int -> Int `compare` _ + 0 :: Int  =  LT
+id :: Int -> Int `compare` _ + id _ :: Int  =  LT
+id :: Int -> Int `compare` x + _ :: Int  =  LT
+id :: Int -> Int `compare` 0 + _ :: Int  =  LT
+id :: Int -> Int `compare` id _ + _ :: Int  =  LT
+id :: Int -> Int `compare` _ * _ :: Int  =  LT
+id :: Int -> Int `compare` f _ :: Int  =  LT
+id :: Int -> Int `compare` head xs :: Int  =  LT
+id :: Int -> Int `compare` head [] :: Int  =  LT
+id :: Int -> Int `compare` head (_:_) :: Int  =  LT
+id :: Int -> Int `compare` ord c :: Int  =  LT
+id :: Int -> Int `compare` ord 'a' :: Int  =  LT
+id :: Int -> Int `compare` q :: Bool  =  GT
+id :: Int -> Int `compare` not p :: Bool  =  LT
+id :: Int -> Int `compare` not False :: Bool  =  LT
+id :: Int -> Int `compare` not True :: Bool  =  LT
+id :: Int -> Int `compare` not (not _) :: Bool  =  LT
+id :: Int -> Int `compare` _ || _ :: Bool  =  LT
+id :: Int -> Int `compare` d :: Char  =  GT
+id :: Int -> Int `compare` ' ' :: Char  =  GT
+id :: Int -> Int `compare` ys :: [Int]  =  GT
+id :: Int -> Int `compare` [0] :: [Int]  =  GT
+id :: Int -> Int `compare` _:xs :: [Int]  =  LT
+id :: Int -> Int `compare` [_] :: [Int]  =  LT
+id :: Int -> Int `compare` _:_:_ :: [Int]  =  LT
+id :: Int -> Int `compare` x:_ :: [Int]  =  LT
+id :: Int -> Int `compare` 0:_ :: [Int]  =  LT
+id :: Int -> Int `compare` id _:_ :: [Int]  =  LT
+id :: Int -> Int `compare` tail _ :: [Int]  =  LT
+id :: Int -> Int `compare` _ ++ _ :: [Int]  =  LT
+id :: Int -> Int `compare` negate :: Int -> Int  =  LT
+id :: Int -> Int `compare` abs :: Int -> Int  =  LT
+id :: Int -> Int `compare` (_ +) :: Int -> Int  =  LT
+id :: Int -> Int `compare` (*) :: Int -> Int -> Int  =  LT
+id :: Int -> Int `compare` not :: Bool -> Bool  =  GT
+id :: Int -> Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
+(+) :: Int -> Int -> Int `compare` z :: Int  =  GT
+(+) :: Int -> Int -> Int `compare` -1 :: Int  =  GT
+(+) :: Int -> Int -> Int `compare` id y :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id 1 :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id (id x) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id (id 0) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id (id (id _)) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id (negate _) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id (abs _) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id (_ + _) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id (head _) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id (ord _) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` negate x :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` negate 0 :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` negate (id _) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` abs x :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` abs 0 :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` abs (id _) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` _ + x :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` _ + 0 :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` _ + id _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` x + _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` 0 + _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` id _ + _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` _ * _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` f _ :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` head xs :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` head [] :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` head (_:_) :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` ord c :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` ord 'a' :: Int  =  LT
+(+) :: Int -> Int -> Int `compare` q :: Bool  =  GT
+(+) :: Int -> Int -> Int `compare` not p :: Bool  =  LT
+(+) :: Int -> Int -> Int `compare` not False :: Bool  =  LT
+(+) :: Int -> Int -> Int `compare` not True :: Bool  =  LT
+(+) :: Int -> Int -> Int `compare` not (not _) :: Bool  =  LT
+(+) :: Int -> Int -> Int `compare` _ || _ :: Bool  =  LT
+(+) :: Int -> Int -> Int `compare` d :: Char  =  GT
+(+) :: Int -> Int -> Int `compare` ' ' :: Char  =  GT
+(+) :: Int -> Int -> Int `compare` ys :: [Int]  =  GT
+(+) :: Int -> Int -> Int `compare` [0] :: [Int]  =  GT
+(+) :: Int -> Int -> Int `compare` _:xs :: [Int]  =  LT
+(+) :: Int -> Int -> Int `compare` [_] :: [Int]  =  LT
+(+) :: Int -> Int -> Int `compare` _:_:_ :: [Int]  =  LT
+(+) :: Int -> Int -> Int `compare` x:_ :: [Int]  =  LT
+(+) :: Int -> Int -> Int `compare` 0:_ :: [Int]  =  LT
+(+) :: Int -> Int -> Int `compare` id _:_ :: [Int]  =  LT
+(+) :: Int -> Int -> Int `compare` tail _ :: [Int]  =  LT
+(+) :: Int -> Int -> Int `compare` _ ++ _ :: [Int]  =  LT
+(+) :: Int -> Int -> Int `compare` negate :: Int -> Int  =  GT
+(+) :: Int -> Int -> Int `compare` abs :: Int -> Int  =  GT
+(+) :: Int -> Int -> Int `compare` (_ +) :: Int -> Int  =  LT
+(+) :: Int -> Int -> Int `compare` (*) :: Int -> Int -> Int  =  GT
+(+) :: Int -> Int -> Int `compare` not :: Bool -> Bool  =  GT
+(+) :: Int -> Int -> Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
+z :: Int `compare` y :: Int  =  GT
+z :: Int `compare` 1 :: Int  =  LT
+z :: Int `compare` id x :: Int  =  LT
+z :: Int `compare` id 0 :: Int  =  LT
+z :: Int `compare` id (id _) :: Int  =  LT
+z :: Int `compare` negate _ :: Int  =  LT
+z :: Int `compare` abs _ :: Int  =  LT
+z :: Int `compare` _ + _ :: Int  =  LT
+z :: Int `compare` head _ :: Int  =  LT
+z :: Int `compare` ord _ :: Int  =  LT
+z :: Int `compare` p :: Bool  =  GT
+z :: Int `compare` False :: Bool  =  LT
+z :: Int `compare` True :: Bool  =  LT
+z :: Int `compare` not _ :: Bool  =  LT
+z :: Int `compare` c :: Char  =  GT
+z :: Int `compare` 'a' :: Char  =  LT
+z :: Int `compare` xs :: [Int]  =  LT
+z :: Int `compare` [] :: [Int]  =  LT
+z :: Int `compare` _:_ :: [Int]  =  LT
+z :: Int `compare` id :: Int -> Int  =  LT
+z :: Int `compare` (+) :: Int -> Int -> Int  =  LT
+-1 :: Int `compare` y :: Int  =  GT
+-1 :: Int `compare` 1 :: Int  =  GT
+-1 :: Int `compare` id x :: Int  =  LT
+-1 :: Int `compare` id 0 :: Int  =  LT
+-1 :: Int `compare` id (id _) :: Int  =  LT
+-1 :: Int `compare` negate _ :: Int  =  LT
+-1 :: Int `compare` abs _ :: Int  =  LT
+-1 :: Int `compare` _ + _ :: Int  =  LT
+-1 :: Int `compare` head _ :: Int  =  LT
+-1 :: Int `compare` ord _ :: Int  =  LT
+-1 :: Int `compare` p :: Bool  =  GT
+-1 :: Int `compare` False :: Bool  =  GT
+-1 :: Int `compare` True :: Bool  =  GT
+-1 :: Int `compare` not _ :: Bool  =  LT
+-1 :: Int `compare` c :: Char  =  GT
+-1 :: Int `compare` 'a' :: Char  =  GT
+-1 :: Int `compare` xs :: [Int]  =  GT
+-1 :: Int `compare` [] :: [Int]  =  LT
+-1 :: Int `compare` _:_ :: [Int]  =  LT
+-1 :: Int `compare` id :: Int -> Int  =  LT
+-1 :: Int `compare` (+) :: Int -> Int -> Int  =  LT
+id y :: Int `compare` y :: Int  =  GT
+id y :: Int `compare` 1 :: Int  =  GT
+id y :: Int `compare` id x :: Int  =  GT
+id y :: Int `compare` id 0 :: Int  =  LT
+id y :: Int `compare` id (id _) :: Int  =  LT
+id y :: Int `compare` negate _ :: Int  =  LT
+id y :: Int `compare` abs _ :: Int  =  LT
+id y :: Int `compare` _ + _ :: Int  =  LT
+id y :: Int `compare` head _ :: Int  =  LT
+id y :: Int `compare` ord _ :: Int  =  GT
+id y :: Int `compare` p :: Bool  =  GT
+id y :: Int `compare` False :: Bool  =  GT
+id y :: Int `compare` True :: Bool  =  GT
+id y :: Int `compare` not _ :: Bool  =  GT
+id y :: Int `compare` c :: Char  =  GT
+id y :: Int `compare` 'a' :: Char  =  GT
+id y :: Int `compare` xs :: [Int]  =  GT
+id y :: Int `compare` [] :: [Int]  =  GT
+id y :: Int `compare` _:_ :: [Int]  =  LT
+id y :: Int `compare` id :: Int -> Int  =  GT
+id y :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id 1 :: Int `compare` y :: Int  =  GT
+id 1 :: Int `compare` 1 :: Int  =  GT
+id 1 :: Int `compare` id x :: Int  =  GT
+id 1 :: Int `compare` id 0 :: Int  =  GT
+id 1 :: Int `compare` id (id _) :: Int  =  LT
+id 1 :: Int `compare` negate _ :: Int  =  GT
+id 1 :: Int `compare` abs _ :: Int  =  GT
+id 1 :: Int `compare` _ + _ :: Int  =  LT
+id 1 :: Int `compare` head _ :: Int  =  GT
+id 1 :: Int `compare` ord _ :: Int  =  GT
+id 1 :: Int `compare` p :: Bool  =  GT
+id 1 :: Int `compare` False :: Bool  =  GT
+id 1 :: Int `compare` True :: Bool  =  GT
+id 1 :: Int `compare` not _ :: Bool  =  GT
+id 1 :: Int `compare` c :: Char  =  GT
+id 1 :: Int `compare` 'a' :: Char  =  GT
+id 1 :: Int `compare` xs :: [Int]  =  GT
+id 1 :: Int `compare` [] :: [Int]  =  GT
+id 1 :: Int `compare` _:_ :: [Int]  =  LT
+id 1 :: Int `compare` id :: Int -> Int  =  GT
+id 1 :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id (id x) :: Int `compare` y :: Int  =  GT
+id (id x) :: Int `compare` 1 :: Int  =  GT
+id (id x) :: Int `compare` id x :: Int  =  GT
+id (id x) :: Int `compare` id 0 :: Int  =  GT
+id (id x) :: Int `compare` id (id _) :: Int  =  GT
+id (id x) :: Int `compare` negate _ :: Int  =  GT
+id (id x) :: Int `compare` abs _ :: Int  =  GT
+id (id x) :: Int `compare` _ + _ :: Int  =  GT
+id (id x) :: Int `compare` head _ :: Int  =  GT
+id (id x) :: Int `compare` ord _ :: Int  =  GT
+id (id x) :: Int `compare` p :: Bool  =  GT
+id (id x) :: Int `compare` False :: Bool  =  GT
+id (id x) :: Int `compare` True :: Bool  =  GT
+id (id x) :: Int `compare` not _ :: Bool  =  GT
+id (id x) :: Int `compare` c :: Char  =  GT
+id (id x) :: Int `compare` 'a' :: Char  =  GT
+id (id x) :: Int `compare` xs :: [Int]  =  GT
+id (id x) :: Int `compare` [] :: [Int]  =  GT
+id (id x) :: Int `compare` _:_ :: [Int]  =  GT
+id (id x) :: Int `compare` id :: Int -> Int  =  GT
+id (id x) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id (id 0) :: Int `compare` y :: Int  =  GT
+id (id 0) :: Int `compare` 1 :: Int  =  GT
+id (id 0) :: Int `compare` id x :: Int  =  GT
+id (id 0) :: Int `compare` id 0 :: Int  =  GT
+id (id 0) :: Int `compare` id (id _) :: Int  =  GT
+id (id 0) :: Int `compare` negate _ :: Int  =  GT
+id (id 0) :: Int `compare` abs _ :: Int  =  GT
+id (id 0) :: Int `compare` _ + _ :: Int  =  GT
+id (id 0) :: Int `compare` head _ :: Int  =  GT
+id (id 0) :: Int `compare` ord _ :: Int  =  GT
+id (id 0) :: Int `compare` p :: Bool  =  GT
+id (id 0) :: Int `compare` False :: Bool  =  GT
+id (id 0) :: Int `compare` True :: Bool  =  GT
+id (id 0) :: Int `compare` not _ :: Bool  =  GT
+id (id 0) :: Int `compare` c :: Char  =  GT
+id (id 0) :: Int `compare` 'a' :: Char  =  GT
+id (id 0) :: Int `compare` xs :: [Int]  =  GT
+id (id 0) :: Int `compare` [] :: [Int]  =  GT
+id (id 0) :: Int `compare` _:_ :: [Int]  =  GT
+id (id 0) :: Int `compare` id :: Int -> Int  =  GT
+id (id 0) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id (id (id _)) :: Int `compare` y :: Int  =  GT
+id (id (id _)) :: Int `compare` 1 :: Int  =  GT
+id (id (id _)) :: Int `compare` id x :: Int  =  GT
+id (id (id _)) :: Int `compare` id 0 :: Int  =  GT
+id (id (id _)) :: Int `compare` id (id _) :: Int  =  GT
+id (id (id _)) :: Int `compare` negate _ :: Int  =  GT
+id (id (id _)) :: Int `compare` abs _ :: Int  =  GT
+id (id (id _)) :: Int `compare` _ + _ :: Int  =  GT
+id (id (id _)) :: Int `compare` head _ :: Int  =  GT
+id (id (id _)) :: Int `compare` ord _ :: Int  =  GT
+id (id (id _)) :: Int `compare` p :: Bool  =  GT
+id (id (id _)) :: Int `compare` False :: Bool  =  GT
+id (id (id _)) :: Int `compare` True :: Bool  =  GT
+id (id (id _)) :: Int `compare` not _ :: Bool  =  GT
+id (id (id _)) :: Int `compare` c :: Char  =  GT
+id (id (id _)) :: Int `compare` 'a' :: Char  =  GT
+id (id (id _)) :: Int `compare` xs :: [Int]  =  GT
+id (id (id _)) :: Int `compare` [] :: [Int]  =  GT
+id (id (id _)) :: Int `compare` _:_ :: [Int]  =  GT
+id (id (id _)) :: Int `compare` id :: Int -> Int  =  GT
+id (id (id _)) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id (negate _) :: Int `compare` y :: Int  =  GT
+id (negate _) :: Int `compare` 1 :: Int  =  GT
+id (negate _) :: Int `compare` id x :: Int  =  GT
+id (negate _) :: Int `compare` id 0 :: Int  =  GT
+id (negate _) :: Int `compare` id (id _) :: Int  =  GT
+id (negate _) :: Int `compare` negate _ :: Int  =  GT
+id (negate _) :: Int `compare` abs _ :: Int  =  GT
+id (negate _) :: Int `compare` _ + _ :: Int  =  GT
+id (negate _) :: Int `compare` head _ :: Int  =  GT
+id (negate _) :: Int `compare` ord _ :: Int  =  GT
+id (negate _) :: Int `compare` p :: Bool  =  GT
+id (negate _) :: Int `compare` False :: Bool  =  GT
+id (negate _) :: Int `compare` True :: Bool  =  GT
+id (negate _) :: Int `compare` not _ :: Bool  =  GT
+id (negate _) :: Int `compare` c :: Char  =  GT
+id (negate _) :: Int `compare` 'a' :: Char  =  GT
+id (negate _) :: Int `compare` xs :: [Int]  =  GT
+id (negate _) :: Int `compare` [] :: [Int]  =  GT
+id (negate _) :: Int `compare` _:_ :: [Int]  =  GT
+id (negate _) :: Int `compare` id :: Int -> Int  =  GT
+id (negate _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id (abs _) :: Int `compare` y :: Int  =  GT
+id (abs _) :: Int `compare` 1 :: Int  =  GT
+id (abs _) :: Int `compare` id x :: Int  =  GT
+id (abs _) :: Int `compare` id 0 :: Int  =  GT
+id (abs _) :: Int `compare` id (id _) :: Int  =  GT
+id (abs _) :: Int `compare` negate _ :: Int  =  GT
+id (abs _) :: Int `compare` abs _ :: Int  =  GT
+id (abs _) :: Int `compare` _ + _ :: Int  =  GT
+id (abs _) :: Int `compare` head _ :: Int  =  GT
+id (abs _) :: Int `compare` ord _ :: Int  =  GT
+id (abs _) :: Int `compare` p :: Bool  =  GT
+id (abs _) :: Int `compare` False :: Bool  =  GT
+id (abs _) :: Int `compare` True :: Bool  =  GT
+id (abs _) :: Int `compare` not _ :: Bool  =  GT
+id (abs _) :: Int `compare` c :: Char  =  GT
+id (abs _) :: Int `compare` 'a' :: Char  =  GT
+id (abs _) :: Int `compare` xs :: [Int]  =  GT
+id (abs _) :: Int `compare` [] :: [Int]  =  GT
+id (abs _) :: Int `compare` _:_ :: [Int]  =  GT
+id (abs _) :: Int `compare` id :: Int -> Int  =  GT
+id (abs _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id (_ + _) :: Int `compare` y :: Int  =  GT
+id (_ + _) :: Int `compare` 1 :: Int  =  GT
+id (_ + _) :: Int `compare` id x :: Int  =  GT
+id (_ + _) :: Int `compare` id 0 :: Int  =  GT
+id (_ + _) :: Int `compare` id (id _) :: Int  =  GT
+id (_ + _) :: Int `compare` negate _ :: Int  =  GT
+id (_ + _) :: Int `compare` abs _ :: Int  =  GT
+id (_ + _) :: Int `compare` _ + _ :: Int  =  GT
+id (_ + _) :: Int `compare` head _ :: Int  =  GT
+id (_ + _) :: Int `compare` ord _ :: Int  =  GT
+id (_ + _) :: Int `compare` p :: Bool  =  GT
+id (_ + _) :: Int `compare` False :: Bool  =  GT
+id (_ + _) :: Int `compare` True :: Bool  =  GT
+id (_ + _) :: Int `compare` not _ :: Bool  =  GT
+id (_ + _) :: Int `compare` c :: Char  =  GT
+id (_ + _) :: Int `compare` 'a' :: Char  =  GT
+id (_ + _) :: Int `compare` xs :: [Int]  =  GT
+id (_ + _) :: Int `compare` [] :: [Int]  =  GT
+id (_ + _) :: Int `compare` _:_ :: [Int]  =  GT
+id (_ + _) :: Int `compare` id :: Int -> Int  =  GT
+id (_ + _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id (head _) :: Int `compare` y :: Int  =  GT
+id (head _) :: Int `compare` 1 :: Int  =  GT
+id (head _) :: Int `compare` id x :: Int  =  GT
+id (head _) :: Int `compare` id 0 :: Int  =  GT
+id (head _) :: Int `compare` id (id _) :: Int  =  GT
+id (head _) :: Int `compare` negate _ :: Int  =  GT
+id (head _) :: Int `compare` abs _ :: Int  =  GT
+id (head _) :: Int `compare` _ + _ :: Int  =  GT
+id (head _) :: Int `compare` head _ :: Int  =  GT
+id (head _) :: Int `compare` ord _ :: Int  =  GT
+id (head _) :: Int `compare` p :: Bool  =  GT
+id (head _) :: Int `compare` False :: Bool  =  GT
+id (head _) :: Int `compare` True :: Bool  =  GT
+id (head _) :: Int `compare` not _ :: Bool  =  GT
+id (head _) :: Int `compare` c :: Char  =  GT
+id (head _) :: Int `compare` 'a' :: Char  =  GT
+id (head _) :: Int `compare` xs :: [Int]  =  GT
+id (head _) :: Int `compare` [] :: [Int]  =  GT
+id (head _) :: Int `compare` _:_ :: [Int]  =  GT
+id (head _) :: Int `compare` id :: Int -> Int  =  GT
+id (head _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
+id (ord _) :: Int `compare` y :: Int  =  GT
+id (ord _) :: Int `compare` 1 :: Int  =  GT
+id (ord _) :: Int `compare` id x :: Int  =  GT
+id (ord _) :: Int `compare` id 0 :: Int  =  GT
+id (ord _) :: Int `compare` id (id _) :: Int  =  GT
+id (ord _) :: Int `compare` negate _ :: Int  =  GT
+id (ord _) :: Int `compare` abs _ :: Int  =  GT
+id (ord _) :: Int `compare` _ + _ :: Int  =  GT
+id (ord _) :: Int `compare` head _ :: Int  =  GT
+id (ord _) :: Int `compare` ord _ :: Int  =  GT
+
diff --git a/bench/match-list.hs b/bench/match-list.hs
--- a/bench/match-list.hs
+++ b/bench/match-list.hs
@@ -1,6 +1,6 @@
 -- match-list.hs -- how long it takes to match expression in a list?
 --
--- Copyright (c) 2021 Rudy Matela.
+-- Copyright (c) 2021-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 --
 -- This program has the same parameters as other match*.hs benchmarks.
@@ -19,6 +19,6 @@
 
 main :: IO ()
 main  =  do
-  putStrLn $ unlines $ map showEq $ allRules
-  putStrLn $ unlines $ map show $ mapMaybe query $ take 1080 $ exprs
+  putStrLn $ unlines $ map showEq allRules
+  putStrLn $ unlines $ map show $ mapMaybe query $ take 1080 exprs
   print $ (== ']') $ last $ show $ mapMaybe query exprs
diff --git a/bench/match-list.txt b/bench/match-list.txt
new file mode 100644
--- /dev/null
+++ b/bench/match-list.txt
@@ -0,0 +1,795 @@
+id p  =  p
+p && p  =  p
+p || p  =  p
+p && q  =  q && p
+p || q  =  q || p
+not (not p)  =  p
+p && True  =  p
+True && p  =  p
+p && False  =  False
+False && p  =  False
+p || True  =  True
+True || p  =  True
+p || False  =  p
+False || p  =  p
+p && not p  =  False
+p || not p  =  True
+not p && p  =  False
+not p || p  =  True
+(p && q) && r  =  p && (q && r)
+(p || q) || r  =  p || (q || r)
+not (p && q)  =  not p || not q
+not (p || q)  =  not p && not q
+not False  =  True
+not True  =  False
+not (not p && not q)  =  p || q
+not (not p || not q)  =  p && q
+p && not (p && q)  =  p && not q
+id x  =  x
+abs (abs x)  =  abs x
+x + 0  =  x
+0 + x  =  x
+x * 1  =  x
+1 * x  =  x
+x * 0  =  0
+0 * x  =  0
+x + y  =  y + x
+x * y  =  y * x
+(x + y) + z  =  x + (y + z)
+(x * y) * z  =  x * (y * z)
+(x + x) * y  =  x * (y + y)
+x * (y + 1)  =  x + x * y
+(x + 1) * y  =  x + x * y
+x * (y + z)  =  x * y + x * z
+(x + y) * z  =  x * z + y * z
+negate (negate x)  =  x
+x + negate x  =  0
+negate x + x  =  0
+abs (negate x)  =  abs x
+2 * x  =  x + x
+x * 2  =  x + x
+3 * x  =  x + (x + x)
+x * 3  =  x + (x + x)
+4 * x  =  x + (x + (x + x))
+x * 4  =  x + (x + (x + x))
+abs (x * x)  =  x * x
+abs x * abs y  =  abs (x * y)
+abs x * abs x  =  abs (x + x)
+abs (abs x + abs y)  =  abs x + abs y
+abs (x + x) * y  =  abs x * y + abs x * y
+abs x * signum x  =  x
+signum x * abs x  =  x
+id xs  =  xs
+head (x:xs)  =  x
+tail (x:xs)  =  xs
+xs ++ []  =  xs
+[] ++ xs  =  xs
+[x] ++ xs  =  x:xs
+(x:xs) ++ ys  =  x:(xs ++ ys)
+(xs ++ ys) ++ zs  =  xs ++ (ys ++ zs)
+elem x (sort xs)  =  elem x xs
+elem x (insert y xs)  =  elem x (y:xs)
+sort (sort xs)  =  sort xs
+insert x []  =  [x]
+sort (xs ++ ys)  =  sort (ys ++ xs)
+sort (insert x xs)  =  insert x (sort xs)
+sort (x:xs)  =  insert x (sort xs)
+sort (xs ++ sort ys)  =  sort (xs ++ ys)
+sort (sort xs ++ ys)  =  sort (xs ++ ys)
+insert x (insert y xs)  =  insert y (insert x xs)
+insert x (x:xs)  =  x:x:xs
+insert x [y]  =  insert y [x]
+length (x:xs)  =  length (y:xs)
+length (xs ++ ys)  =  length (ys ++ xs)
+length (x:y:xs)  =  length (z:x':xs)
+length (x:(xs ++ ys))  =  length (y:(ys ++ xs))
+length (xs ++ (ys ++ zs))  =  length (xs ++ (zs ++ ys))
+not (odd x)  =  even x
+not (even x)  =  odd x
+x == x  =  True
+x /= x  =  False
+p == p  =  True
+p /= p  =  False
+f (g x)  =  (f . g) x
+map id xs  =  xs
+map (f . g) xs  =  map f (map g xs)
+f . id  =  f
+id . f  =  f
+(f . g) . h  =  f . (g . h)
+not . not  =  id
+
+(id x :: Int,[(x :: Int,_ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id _ :: Int)],x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(id x :: Int,[(x :: Int,y :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,1 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord _ :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(not False :: Bool,[],True :: Bool)
+(not True :: Bool,[],False :: Bool)
+(not (not p) :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(id x :: Int,[(x :: Int,z :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,-1 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id y :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id 1 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (ord _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + id _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,x + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,0 + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id _ + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ * _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,f _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head xs :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head [] :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (_:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord c :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord 'a' :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
+(not (not p) :: Bool,[(p :: Bool,p :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,False :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,True :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not _ :: Bool)],p :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
+(x == x :: Bool,[(x :: Int,_ :: Int)],True :: Bool)
+(p == p :: Bool,[(p :: Bool,_ :: Bool)],True :: Bool)
+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
+(xs ++ [] :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])
+([] ++ xs :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+(id x :: Int,[(x :: Int,x' :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,2 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id z :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (-1) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id y) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id 1) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id x)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id 0)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id (id _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (negate _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (abs _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (_ + _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (head _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (ord _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate (id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs (id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (x + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (0 + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id _ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ * _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (f _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head xs) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head []) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head (_:_)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (ord c) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (ord 'a') :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate y :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate 1 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id (id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (negate _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (abs _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (_ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (head _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (ord _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs y :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs 1 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (id x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (id 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (id (id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (negate _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (abs _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (_ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (head _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (ord _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + y :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + 1 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + id x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + id 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + id (id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + negate _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + abs _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + (_ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + head _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ + ord _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,x + x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,x + 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,x + id _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,0 + x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,0 + 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,0 + id _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id _ + x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id _ + 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id _ + id _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ * x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ * 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,_ * id _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,f x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,f 0 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,f (id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,y + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,1 + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id x + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id 0 + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id _) + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate _ + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs _ + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,(_ + _) + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head _ + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord _ + _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,x * _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,0 * _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id _ * _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,g _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head ys :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head [0] :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (_:xs) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head [_] :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (_:_:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (x:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (0:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (id _:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (tail _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (_ ++ _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord d :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord ' ' :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,z :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,-1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head xs :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,head [] :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,head (_:_) :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord c :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord 'a' :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x * y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,y :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,y :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(y +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,1 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,1 :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(1 +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id x :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id x +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id 0 +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id (id _) +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(negate _ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(abs _ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,((_ + _) +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(head _ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(ord _ +) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x *) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 *) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,g :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,z :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,-1 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id y :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 1 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id x) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id 0) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id (id _)) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (negate _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (abs _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (_ + _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (head _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (ord _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate (id _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs (id _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + id _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ * _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,f _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head xs :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head [] :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head (_:_) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord c :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord 'a' :: Int)],y + x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y * x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],ys :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[0] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[_] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],x:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],0:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],id _:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],tail _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ ++ _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,y :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,1 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id 0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id (id _) :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,negate _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,abs _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ + _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,head _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,ord _ :: Int)],x :: Int)
+(not (not p) :: Bool,[(p :: Bool,q :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not p :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not False :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not True :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not (not _) :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,_ || _ :: Bool)],p :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],not p && not q :: Bool)
+(not (p && q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p || not q :: Bool)
+(not (odd x) :: Bool,[(x :: Int,_ :: Int)],even x :: Bool)
+(not (even x) :: Bool,[(x :: Int,_ :: Int)],odd x :: Bool)
+(p || q :: Bool,[(q :: Bool,q :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not (not _) :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ || _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
+(p && q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,q :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not (not _) :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ || _ :: Bool)],q || p :: Bool)
+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q && p :: Bool)
+(tail (x:xs) :: [Int],[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],xs :: [Int])
+(xs ++ [] :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])
+([] ++ xs :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])
+(xs ++ [] :: [Int],[(xs :: [Int],[] :: [Int])],xs :: [Int])
+([] ++ xs :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],xs :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+(xs ++ [] :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_:_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x:(xs ++ ys) :: [Int])
+((xs ++ ys) ++ zs :: [Int],[(zs :: [Int],_ :: [Int]),(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int])],xs ++ (ys ++ zs) :: [Int])
+(sort (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],insert x (sort xs) :: [Int])
+(insert x [] :: [Int],[(x :: Int,_ :: Int)],[x] :: [Int])
+(insert x (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:x:xs :: [Int])
+(id x :: Int,[(x :: Int,y' :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,-2 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id x' :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id 2 :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id z) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (-1)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id y)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id 1)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id (id x))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id (id 0))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id (id (id _)))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id (negate _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id (abs _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id (_ + _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id (head _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id (ord _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (negate x)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (negate 0)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (negate (id _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (abs x)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (abs 0)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (abs (id _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (_ + x)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (_ + 0)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (_ + id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (x + _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (0 + _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id _ + _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (_ * _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (f _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (head xs)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (head [])) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (head (_:_))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (ord c)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (ord 'a')) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate y) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate 1) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate (id x)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate (id 0)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate (id (id _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate (negate _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate (abs _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate (_ + _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate (head _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate (ord _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs y) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs 1) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs (id x)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs (id 0)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs (id (id _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs (negate _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs (abs _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs (_ + _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs (head _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs (ord _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + y) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + 1) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + id x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + id 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + id (id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + negate _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + abs _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + (_ + _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + head _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ + ord _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (x + x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (x + 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (x + id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (0 + x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (0 + 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (0 + id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id _ + x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id _ + 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id _ + id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ * x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ * 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (_ * id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (f x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (f 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (f (id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (y + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (1 + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id x + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id 0 + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id (id _) + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (negate _ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (abs _ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id ((_ + _) + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head _ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (ord _ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (x * _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (0 * _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (id _ * _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (g _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head ys) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head [0]) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head (_:xs)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head [_]) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head (_:_:_)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head (x:_)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head (0:_)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head (id _:_)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head (tail _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (head (_ ++ _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (ord d) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,id (ord ' ') :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate z :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (-1) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id y) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id 1) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id (id x)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id (id 0)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id (id (id _))) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id (negate _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id (abs _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id (_ + _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id (head _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id (ord _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (negate x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (negate 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (negate (id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (abs x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (abs 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (abs (id _)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (_ + x) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (_ + 0) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (_ + id _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (x + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (0 + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (id _ + _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (_ * _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (f _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (head xs) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (head []) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (head (_:_)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (ord c) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,negate (ord 'a') :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs z :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (-1) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (id y) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (id 1) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (id (id x)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (id (id 0)) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,abs (id (id (id _))) :: Int)],x :: Int)
+
+True
diff --git a/bench/match-noop.hs b/bench/match-noop.hs
--- a/bench/match-noop.hs
+++ b/bench/match-noop.hs
@@ -1,6 +1,6 @@
 -- exprs.hs -- how long it takes to enumerate expressions?
 --
--- Copyright (c) 2021 Rudy Matela.
+-- Copyright (c) 2021-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 --
 -- This program has the same parameters as other match*.hs benchmarks.
@@ -19,6 +19,6 @@
 
 main :: IO ()
 main  =  do
-  putStrLn $ unlines $ map showEq $ allRules
-  putStrLn $ unlines $ map show $ mapMaybe query $ take 1080 $ exprs
+  putStrLn $ unlines $ map showEq allRules
+  putStrLn $ unlines $ map show $ mapMaybe query $ take 1080 exprs
   print $ (== ']') $ last $ show $ mapMaybe query exprs
diff --git a/bench/match-noop.txt b/bench/match-noop.txt
new file mode 100644
--- /dev/null
+++ b/bench/match-noop.txt
@@ -0,0 +1,1182 @@
+id p  =  p
+p && p  =  p
+p || p  =  p
+p && q  =  q && p
+p || q  =  q || p
+not (not p)  =  p
+p && True  =  p
+True && p  =  p
+p && False  =  False
+False && p  =  False
+p || True  =  True
+True || p  =  True
+p || False  =  p
+False || p  =  p
+p && not p  =  False
+p || not p  =  True
+not p && p  =  False
+not p || p  =  True
+(p && q) && r  =  p && (q && r)
+(p || q) || r  =  p || (q || r)
+not (p && q)  =  not p || not q
+not (p || q)  =  not p && not q
+not False  =  True
+not True  =  False
+not (not p && not q)  =  p || q
+not (not p || not q)  =  p && q
+p && not (p && q)  =  p && not q
+id x  =  x
+abs (abs x)  =  abs x
+x + 0  =  x
+0 + x  =  x
+x * 1  =  x
+1 * x  =  x
+x * 0  =  0
+0 * x  =  0
+x + y  =  y + x
+x * y  =  y * x
+(x + y) + z  =  x + (y + z)
+(x * y) * z  =  x * (y * z)
+(x + x) * y  =  x * (y + y)
+x * (y + 1)  =  x + x * y
+(x + 1) * y  =  x + x * y
+x * (y + z)  =  x * y + x * z
+(x + y) * z  =  x * z + y * z
+negate (negate x)  =  x
+x + negate x  =  0
+negate x + x  =  0
+abs (negate x)  =  abs x
+2 * x  =  x + x
+x * 2  =  x + x
+3 * x  =  x + (x + x)
+x * 3  =  x + (x + x)
+4 * x  =  x + (x + (x + x))
+x * 4  =  x + (x + (x + x))
+abs (x * x)  =  x * x
+abs x * abs y  =  abs (x * y)
+abs x * abs x  =  abs (x + x)
+abs (abs x + abs y)  =  abs x + abs y
+abs (x + x) * y  =  abs x * y + abs x * y
+abs x * signum x  =  x
+signum x * abs x  =  x
+id xs  =  xs
+head (x:xs)  =  x
+tail (x:xs)  =  xs
+xs ++ []  =  xs
+[] ++ xs  =  xs
+[x] ++ xs  =  x:xs
+(x:xs) ++ ys  =  x:(xs ++ ys)
+(xs ++ ys) ++ zs  =  xs ++ (ys ++ zs)
+elem x (sort xs)  =  elem x xs
+elem x (insert y xs)  =  elem x (y:xs)
+sort (sort xs)  =  sort xs
+insert x []  =  [x]
+sort (xs ++ ys)  =  sort (ys ++ xs)
+sort (insert x xs)  =  insert x (sort xs)
+sort (x:xs)  =  insert x (sort xs)
+sort (xs ++ sort ys)  =  sort (xs ++ ys)
+sort (sort xs ++ ys)  =  sort (xs ++ ys)
+insert x (insert y xs)  =  insert y (insert x xs)
+insert x (x:xs)  =  x:x:xs
+insert x [y]  =  insert y [x]
+length (x:xs)  =  length (y:xs)
+length (xs ++ ys)  =  length (ys ++ xs)
+length (x:y:xs)  =  length (z:x':xs)
+length (x:(xs ++ ys))  =  length (y:(ys ++ xs))
+length (xs ++ (ys ++ zs))  =  length (xs ++ (zs ++ ys))
+not (odd x)  =  even x
+not (even x)  =  odd x
+x == x  =  True
+x /= x  =  False
+p == p  =  True
+p /= p  =  False
+f (g x)  =  (f . g) x
+map id xs  =  xs
+map (f . g) xs  =  map f (map g xs)
+f . id  =  f
+id . f  =  f
+(f . g) . h  =  f . (g . h)
+not . not  =  id
+
+(_ :: Int,[],_ :: Int)
+(x :: Int,[],x :: Int)
+(0 :: Int,[],0 :: Int)
+(id _ :: Int,[],id _ :: Int)
+(_ :: Bool,[],_ :: Bool)
+(_ :: Char,[],_ :: Char)
+(_ :: [Int],[],_ :: [Int])
+(y :: Int,[],y :: Int)
+(1 :: Int,[],1 :: Int)
+(id x :: Int,[],id x :: Int)
+(id 0 :: Int,[],id 0 :: Int)
+(id (id _) :: Int,[],id (id _) :: Int)
+(negate _ :: Int,[],negate _ :: Int)
+(abs _ :: Int,[],abs _ :: Int)
+(_ + _ :: Int,[],_ + _ :: Int)
+(head _ :: Int,[],head _ :: Int)
+(ord _ :: Int,[],ord _ :: Int)
+(p :: Bool,[],p :: Bool)
+(False :: Bool,[],False :: Bool)
+(True :: Bool,[],True :: Bool)
+(not _ :: Bool,[],not _ :: Bool)
+(c :: Char,[],c :: Char)
+('a' :: Char,[],'a' :: Char)
+(xs :: [Int],[],xs :: [Int])
+([] :: [Int],[],[] :: [Int])
+(_:_ :: [Int],[],_:_ :: [Int])
+(id :: Int -> Int,[],id :: Int -> Int)
+((+) :: Int -> Int -> Int,[],(+) :: Int -> Int -> Int)
+(z :: Int,[],z :: Int)
+(-1 :: Int,[],-1 :: Int)
+(id y :: Int,[],id y :: Int)
+(id 1 :: Int,[],id 1 :: Int)
+(id (id x) :: Int,[],id (id x) :: Int)
+(id (id 0) :: Int,[],id (id 0) :: Int)
+(id (id (id _)) :: Int,[],id (id (id _)) :: Int)
+(id (negate _) :: Int,[],id (negate _) :: Int)
+(id (abs _) :: Int,[],id (abs _) :: Int)
+(id (_ + _) :: Int,[],id (_ + _) :: Int)
+(id (head _) :: Int,[],id (head _) :: Int)
+(id (ord _) :: Int,[],id (ord _) :: Int)
+(negate x :: Int,[],negate x :: Int)
+(negate 0 :: Int,[],negate 0 :: Int)
+(negate (id _) :: Int,[],negate (id _) :: Int)
+(abs x :: Int,[],abs x :: Int)
+(abs 0 :: Int,[],abs 0 :: Int)
+(abs (id _) :: Int,[],abs (id _) :: Int)
+(_ + x :: Int,[],_ + x :: Int)
+(_ + 0 :: Int,[],_ + 0 :: Int)
+(_ + id _ :: Int,[],_ + id _ :: Int)
+(x + _ :: Int,[],x + _ :: Int)
+(0 + _ :: Int,[],0 + _ :: Int)
+(id _ + _ :: Int,[],id _ + _ :: Int)
+(_ * _ :: Int,[],_ * _ :: Int)
+(f _ :: Int,[],f _ :: Int)
+(head xs :: Int,[],head xs :: Int)
+(head [] :: Int,[],head [] :: Int)
+(head (_:_) :: Int,[],head (_:_) :: Int)
+(ord c :: Int,[],ord c :: Int)
+(ord 'a' :: Int,[],ord 'a' :: Int)
+(q :: Bool,[],q :: Bool)
+(not p :: Bool,[],not p :: Bool)
+(not False :: Bool,[],not False :: Bool)
+(not True :: Bool,[],not True :: Bool)
+(not (not _) :: Bool,[],not (not _) :: Bool)
+(_ || _ :: Bool,[],_ || _ :: Bool)
+(d :: Char,[],d :: Char)
+(' ' :: Char,[],' ' :: Char)
+(ys :: [Int],[],ys :: [Int])
+([0] :: [Int],[],[0] :: [Int])
+(_:xs :: [Int],[],_:xs :: [Int])
+([_] :: [Int],[],[_] :: [Int])
+(_:_:_ :: [Int],[],_:_:_ :: [Int])
+(x:_ :: [Int],[],x:_ :: [Int])
+(0:_ :: [Int],[],0:_ :: [Int])
+(id _:_ :: [Int],[],id _:_ :: [Int])
+(tail _ :: [Int],[],tail _ :: [Int])
+(_ ++ _ :: [Int],[],_ ++ _ :: [Int])
+(negate :: Int -> Int,[],negate :: Int -> Int)
+(abs :: Int -> Int,[],abs :: Int -> Int)
+((_ +) :: Int -> Int,[],(_ +) :: Int -> Int)
+((*) :: Int -> Int -> Int,[],(*) :: Int -> Int -> Int)
+(not :: Bool -> Bool,[],not :: Bool -> Bool)
+((||) :: Bool -> Bool -> Bool,[],(||) :: Bool -> Bool -> Bool)
+(x' :: Int,[],x' :: Int)
+(2 :: Int,[],2 :: Int)
+(id z :: Int,[],id z :: Int)
+(id (-1) :: Int,[],id (-1) :: Int)
+(id (id y) :: Int,[],id (id y) :: Int)
+(id (id 1) :: Int,[],id (id 1) :: Int)
+(id (id (id x)) :: Int,[],id (id (id x)) :: Int)
+(id (id (id 0)) :: Int,[],id (id (id 0)) :: Int)
+(id (id (id (id _))) :: Int,[],id (id (id (id _))) :: Int)
+(id (id (negate _)) :: Int,[],id (id (negate _)) :: Int)
+(id (id (abs _)) :: Int,[],id (id (abs _)) :: Int)
+(id (id (_ + _)) :: Int,[],id (id (_ + _)) :: Int)
+(id (id (head _)) :: Int,[],id (id (head _)) :: Int)
+(id (id (ord _)) :: Int,[],id (id (ord _)) :: Int)
+(id (negate x) :: Int,[],id (negate x) :: Int)
+(id (negate 0) :: Int,[],id (negate 0) :: Int)
+(id (negate (id _)) :: Int,[],id (negate (id _)) :: Int)
+(id (abs x) :: Int,[],id (abs x) :: Int)
+(id (abs 0) :: Int,[],id (abs 0) :: Int)
+(id (abs (id _)) :: Int,[],id (abs (id _)) :: Int)
+(id (_ + x) :: Int,[],id (_ + x) :: Int)
+(id (_ + 0) :: Int,[],id (_ + 0) :: Int)
+(id (_ + id _) :: Int,[],id (_ + id _) :: Int)
+(id (x + _) :: Int,[],id (x + _) :: Int)
+(id (0 + _) :: Int,[],id (0 + _) :: Int)
+(id (id _ + _) :: Int,[],id (id _ + _) :: Int)
+(id (_ * _) :: Int,[],id (_ * _) :: Int)
+(id (f _) :: Int,[],id (f _) :: Int)
+(id (head xs) :: Int,[],id (head xs) :: Int)
+(id (head []) :: Int,[],id (head []) :: Int)
+(id (head (_:_)) :: Int,[],id (head (_:_)) :: Int)
+(id (ord c) :: Int,[],id (ord c) :: Int)
+(id (ord 'a') :: Int,[],id (ord 'a') :: Int)
+(negate y :: Int,[],negate y :: Int)
+(negate 1 :: Int,[],negate 1 :: Int)
+(negate (id x) :: Int,[],negate (id x) :: Int)
+(negate (id 0) :: Int,[],negate (id 0) :: Int)
+(negate (id (id _)) :: Int,[],negate (id (id _)) :: Int)
+(negate (negate _) :: Int,[],negate (negate _) :: Int)
+(negate (abs _) :: Int,[],negate (abs _) :: Int)
+(negate (_ + _) :: Int,[],negate (_ + _) :: Int)
+(negate (head _) :: Int,[],negate (head _) :: Int)
+(negate (ord _) :: Int,[],negate (ord _) :: Int)
+(abs y :: Int,[],abs y :: Int)
+(abs 1 :: Int,[],abs 1 :: Int)
+(abs (id x) :: Int,[],abs (id x) :: Int)
+(abs (id 0) :: Int,[],abs (id 0) :: Int)
+(abs (id (id _)) :: Int,[],abs (id (id _)) :: Int)
+(abs (negate _) :: Int,[],abs (negate _) :: Int)
+(abs (abs _) :: Int,[],abs (abs _) :: Int)
+(abs (_ + _) :: Int,[],abs (_ + _) :: Int)
+(abs (head _) :: Int,[],abs (head _) :: Int)
+(abs (ord _) :: Int,[],abs (ord _) :: Int)
+(_ + y :: Int,[],_ + y :: Int)
+(_ + 1 :: Int,[],_ + 1 :: Int)
+(_ + id x :: Int,[],_ + id x :: Int)
+(_ + id 0 :: Int,[],_ + id 0 :: Int)
+(_ + id (id _) :: Int,[],_ + id (id _) :: Int)
+(_ + negate _ :: Int,[],_ + negate _ :: Int)
+(_ + abs _ :: Int,[],_ + abs _ :: Int)
+(_ + (_ + _) :: Int,[],_ + (_ + _) :: Int)
+(_ + head _ :: Int,[],_ + head _ :: Int)
+(_ + ord _ :: Int,[],_ + ord _ :: Int)
+(x + x :: Int,[],x + x :: Int)
+(x + 0 :: Int,[],x + 0 :: Int)
+(x + id _ :: Int,[],x + id _ :: Int)
+(0 + x :: Int,[],0 + x :: Int)
+(0 + 0 :: Int,[],0 + 0 :: Int)
+(0 + id _ :: Int,[],0 + id _ :: Int)
+(id _ + x :: Int,[],id _ + x :: Int)
+(id _ + 0 :: Int,[],id _ + 0 :: Int)
+(id _ + id _ :: Int,[],id _ + id _ :: Int)
+(_ * x :: Int,[],_ * x :: Int)
+(_ * 0 :: Int,[],_ * 0 :: Int)
+(_ * id _ :: Int,[],_ * id _ :: Int)
+(f x :: Int,[],f x :: Int)
+(f 0 :: Int,[],f 0 :: Int)
+(f (id _) :: Int,[],f (id _) :: Int)
+(y + _ :: Int,[],y + _ :: Int)
+(1 + _ :: Int,[],1 + _ :: Int)
+(id x + _ :: Int,[],id x + _ :: Int)
+(id 0 + _ :: Int,[],id 0 + _ :: Int)
+(id (id _) + _ :: Int,[],id (id _) + _ :: Int)
+(negate _ + _ :: Int,[],negate _ + _ :: Int)
+(abs _ + _ :: Int,[],abs _ + _ :: Int)
+((_ + _) + _ :: Int,[],(_ + _) + _ :: Int)
+(head _ + _ :: Int,[],head _ + _ :: Int)
+(ord _ + _ :: Int,[],ord _ + _ :: Int)
+(x * _ :: Int,[],x * _ :: Int)
+(0 * _ :: Int,[],0 * _ :: Int)
+(id _ * _ :: Int,[],id _ * _ :: Int)
+(g _ :: Int,[],g _ :: Int)
+(head ys :: Int,[],head ys :: Int)
+(head [0] :: Int,[],head [0] :: Int)
+(head (_:xs) :: Int,[],head (_:xs) :: Int)
+(head [_] :: Int,[],head [_] :: Int)
+(head (_:_:_) :: Int,[],head (_:_:_) :: Int)
+(head (x:_) :: Int,[],head (x:_) :: Int)
+(head (0:_) :: Int,[],head (0:_) :: Int)
+(head (id _:_) :: Int,[],head (id _:_) :: Int)
+(head (tail _) :: Int,[],head (tail _) :: Int)
+(head (_ ++ _) :: Int,[],head (_ ++ _) :: Int)
+(ord d :: Int,[],ord d :: Int)
+(ord ' ' :: Int,[],ord ' ' :: Int)
+(r :: Bool,[],r :: Bool)
+(not q :: Bool,[],not q :: Bool)
+(not (not p) :: Bool,[],not (not p) :: Bool)
+(not (not False) :: Bool,[],not (not False) :: Bool)
+(not (not True) :: Bool,[],not (not True) :: Bool)
+(not (not (not _)) :: Bool,[],not (not (not _)) :: Bool)
+(not (_ || _) :: Bool,[],not (_ || _) :: Bool)
+(_ || p :: Bool,[],_ || p :: Bool)
+(_ || False :: Bool,[],_ || False :: Bool)
+(_ || True :: Bool,[],_ || True :: Bool)
+(_ || not _ :: Bool,[],_ || not _ :: Bool)
+(p || _ :: Bool,[],p || _ :: Bool)
+(False || _ :: Bool,[],False || _ :: Bool)
+(True || _ :: Bool,[],True || _ :: Bool)
+(not _ || _ :: Bool,[],not _ || _ :: Bool)
+(_ && _ :: Bool,[],_ && _ :: Bool)
+(_ == _ :: Bool,[],_ == _ :: Bool)
+(_ == _ :: Bool,[],_ == _ :: Bool)
+(odd _ :: Bool,[],odd _ :: Bool)
+(even _ :: Bool,[],even _ :: Bool)
+(elem _ _ :: Bool,[],elem _ _ :: Bool)
+(e :: Char,[],e :: Char)
+('b' :: Char,[],'b' :: Char)
+(zs :: [Int],[],zs :: [Int])
+([0,0] :: [Int],[],[0,0] :: [Int])
+([1] :: [Int],[],[1] :: [Int])
+(_:ys :: [Int],[],_:ys :: [Int])
+(_:[0] :: [Int],[],_:[0] :: [Int])
+(_:_:xs :: [Int],[],_:_:xs :: [Int])
+([_,_] :: [Int],[],[_,_] :: [Int])
+(_:_:_:_ :: [Int],[],_:_:_:_ :: [Int])
+(_:x:_ :: [Int],[],_:x:_ :: [Int])
+(_:0:_ :: [Int],[],_:0:_ :: [Int])
+(_:id _:_ :: [Int],[],_:id _:_ :: [Int])
+(_:tail _ :: [Int],[],_:tail _ :: [Int])
+(_:(_ ++ _) :: [Int],[],_:(_ ++ _) :: [Int])
+(x:xs :: [Int],[],x:xs :: [Int])
+([x] :: [Int],[],[x] :: [Int])
+(x:_:_ :: [Int],[],x:_:_ :: [Int])
+(0:xs :: [Int],[],0:xs :: [Int])
+([0] :: [Int],[],[0] :: [Int])
+(0:_:_ :: [Int],[],0:_:_ :: [Int])
+(id _:xs :: [Int],[],id _:xs :: [Int])
+([id _] :: [Int],[],[id _] :: [Int])
+(id _:_:_ :: [Int],[],id _:_:_ :: [Int])
+(y:_ :: [Int],[],y:_ :: [Int])
+(1:_ :: [Int],[],1:_ :: [Int])
+(id x:_ :: [Int],[],id x:_ :: [Int])
+(id 0:_ :: [Int],[],id 0:_ :: [Int])
+(id (id _):_ :: [Int],[],id (id _):_ :: [Int])
+(negate _:_ :: [Int],[],negate _:_ :: [Int])
+(abs _:_ :: [Int],[],abs _:_ :: [Int])
+(_ + _:_ :: [Int],[],_ + _:_ :: [Int])
+(head _:_ :: [Int],[],head _:_ :: [Int])
+(ord _:_ :: [Int],[],ord _:_ :: [Int])
+(tail xs :: [Int],[],tail xs :: [Int])
+(tail [] :: [Int],[],tail [] :: [Int])
+(tail (_:_) :: [Int],[],tail (_:_) :: [Int])
+(_ ++ xs :: [Int],[],_ ++ xs :: [Int])
+(_ ++ [] :: [Int],[],_ ++ [] :: [Int])
+(_ ++ (_:_) :: [Int],[],_ ++ (_:_) :: [Int])
+(xs ++ _ :: [Int],[],xs ++ _ :: [Int])
+([] ++ _ :: [Int],[],[] ++ _ :: [Int])
+((_:_) ++ _ :: [Int],[],(_:_) ++ _ :: [Int])
+(sort _ :: [Int],[],sort _ :: [Int])
+(insert _ _ :: [Int],[],insert _ _ :: [Int])
+((x +) :: Int -> Int,[],(x +) :: Int -> Int)
+((0 +) :: Int -> Int,[],(0 +) :: Int -> Int)
+((id _ +) :: Int -> Int,[],(id _ +) :: Int -> Int)
+((_ *) :: Int -> Int,[],(_ *) :: Int -> Int)
+(f :: Int -> Int,[],f :: Int -> Int)
+((_ ||) :: Bool -> Bool,[],(_ ||) :: Bool -> Bool)
+((&&) :: Bool -> Bool -> Bool,[],(&&) :: Bool -> Bool -> Bool)
+(y' :: Int,[],y' :: Int)
+(-2 :: Int,[],-2 :: Int)
+(id x' :: Int,[],id x' :: Int)
+(id 2 :: Int,[],id 2 :: Int)
+(id (id z) :: Int,[],id (id z) :: Int)
+(id (id (-1)) :: Int,[],id (id (-1)) :: Int)
+(id (id (id y)) :: Int,[],id (id (id y)) :: Int)
+(id (id (id 1)) :: Int,[],id (id (id 1)) :: Int)
+(id (id (id (id x))) :: Int,[],id (id (id (id x))) :: Int)
+(id (id (id (id 0))) :: Int,[],id (id (id (id 0))) :: Int)
+(id (id (id (id (id _)))) :: Int,[],id (id (id (id (id _)))) :: Int)
+(id (id (id (negate _))) :: Int,[],id (id (id (negate _))) :: Int)
+(id (id (id (abs _))) :: Int,[],id (id (id (abs _))) :: Int)
+(id (id (id (_ + _))) :: Int,[],id (id (id (_ + _))) :: Int)
+(id (id (id (head _))) :: Int,[],id (id (id (head _))) :: Int)
+(id (id (id (ord _))) :: Int,[],id (id (id (ord _))) :: Int)
+(id (id (negate x)) :: Int,[],id (id (negate x)) :: Int)
+(id (id (negate 0)) :: Int,[],id (id (negate 0)) :: Int)
+(id (id (negate (id _))) :: Int,[],id (id (negate (id _))) :: Int)
+(id (id (abs x)) :: Int,[],id (id (abs x)) :: Int)
+(id (id (abs 0)) :: Int,[],id (id (abs 0)) :: Int)
+(id (id (abs (id _))) :: Int,[],id (id (abs (id _))) :: Int)
+(id (id (_ + x)) :: Int,[],id (id (_ + x)) :: Int)
+(id (id (_ + 0)) :: Int,[],id (id (_ + 0)) :: Int)
+(id (id (_ + id _)) :: Int,[],id (id (_ + id _)) :: Int)
+(id (id (x + _)) :: Int,[],id (id (x + _)) :: Int)
+(id (id (0 + _)) :: Int,[],id (id (0 + _)) :: Int)
+(id (id (id _ + _)) :: Int,[],id (id (id _ + _)) :: Int)
+(id (id (_ * _)) :: Int,[],id (id (_ * _)) :: Int)
+(id (id (f _)) :: Int,[],id (id (f _)) :: Int)
+(id (id (head xs)) :: Int,[],id (id (head xs)) :: Int)
+(id (id (head [])) :: Int,[],id (id (head [])) :: Int)
+(id (id (head (_:_))) :: Int,[],id (id (head (_:_))) :: Int)
+(id (id (ord c)) :: Int,[],id (id (ord c)) :: Int)
+(id (id (ord 'a')) :: Int,[],id (id (ord 'a')) :: Int)
+(id (negate y) :: Int,[],id (negate y) :: Int)
+(id (negate 1) :: Int,[],id (negate 1) :: Int)
+(id (negate (id x)) :: Int,[],id (negate (id x)) :: Int)
+(id (negate (id 0)) :: Int,[],id (negate (id 0)) :: Int)
+(id (negate (id (id _))) :: Int,[],id (negate (id (id _))) :: Int)
+(id (negate (negate _)) :: Int,[],id (negate (negate _)) :: Int)
+(id (negate (abs _)) :: Int,[],id (negate (abs _)) :: Int)
+(id (negate (_ + _)) :: Int,[],id (negate (_ + _)) :: Int)
+(id (negate (head _)) :: Int,[],id (negate (head _)) :: Int)
+(id (negate (ord _)) :: Int,[],id (negate (ord _)) :: Int)
+(id (abs y) :: Int,[],id (abs y) :: Int)
+(id (abs 1) :: Int,[],id (abs 1) :: Int)
+(id (abs (id x)) :: Int,[],id (abs (id x)) :: Int)
+(id (abs (id 0)) :: Int,[],id (abs (id 0)) :: Int)
+(id (abs (id (id _))) :: Int,[],id (abs (id (id _))) :: Int)
+(id (abs (negate _)) :: Int,[],id (abs (negate _)) :: Int)
+(id (abs (abs _)) :: Int,[],id (abs (abs _)) :: Int)
+(id (abs (_ + _)) :: Int,[],id (abs (_ + _)) :: Int)
+(id (abs (head _)) :: Int,[],id (abs (head _)) :: Int)
+(id (abs (ord _)) :: Int,[],id (abs (ord _)) :: Int)
+(id (_ + y) :: Int,[],id (_ + y) :: Int)
+(id (_ + 1) :: Int,[],id (_ + 1) :: Int)
+(id (_ + id x) :: Int,[],id (_ + id x) :: Int)
+(id (_ + id 0) :: Int,[],id (_ + id 0) :: Int)
+(id (_ + id (id _)) :: Int,[],id (_ + id (id _)) :: Int)
+(id (_ + negate _) :: Int,[],id (_ + negate _) :: Int)
+(id (_ + abs _) :: Int,[],id (_ + abs _) :: Int)
+(id (_ + (_ + _)) :: Int,[],id (_ + (_ + _)) :: Int)
+(id (_ + head _) :: Int,[],id (_ + head _) :: Int)
+(id (_ + ord _) :: Int,[],id (_ + ord _) :: Int)
+(id (x + x) :: Int,[],id (x + x) :: Int)
+(id (x + 0) :: Int,[],id (x + 0) :: Int)
+(id (x + id _) :: Int,[],id (x + id _) :: Int)
+(id (0 + x) :: Int,[],id (0 + x) :: Int)
+(id (0 + 0) :: Int,[],id (0 + 0) :: Int)
+(id (0 + id _) :: Int,[],id (0 + id _) :: Int)
+(id (id _ + x) :: Int,[],id (id _ + x) :: Int)
+(id (id _ + 0) :: Int,[],id (id _ + 0) :: Int)
+(id (id _ + id _) :: Int,[],id (id _ + id _) :: Int)
+(id (_ * x) :: Int,[],id (_ * x) :: Int)
+(id (_ * 0) :: Int,[],id (_ * 0) :: Int)
+(id (_ * id _) :: Int,[],id (_ * id _) :: Int)
+(id (f x) :: Int,[],id (f x) :: Int)
+(id (f 0) :: Int,[],id (f 0) :: Int)
+(id (f (id _)) :: Int,[],id (f (id _)) :: Int)
+(id (y + _) :: Int,[],id (y + _) :: Int)
+(id (1 + _) :: Int,[],id (1 + _) :: Int)
+(id (id x + _) :: Int,[],id (id x + _) :: Int)
+(id (id 0 + _) :: Int,[],id (id 0 + _) :: Int)
+(id (id (id _) + _) :: Int,[],id (id (id _) + _) :: Int)
+(id (negate _ + _) :: Int,[],id (negate _ + _) :: Int)
+(id (abs _ + _) :: Int,[],id (abs _ + _) :: Int)
+(id ((_ + _) + _) :: Int,[],id ((_ + _) + _) :: Int)
+(id (head _ + _) :: Int,[],id (head _ + _) :: Int)
+(id (ord _ + _) :: Int,[],id (ord _ + _) :: Int)
+(id (x * _) :: Int,[],id (x * _) :: Int)
+(id (0 * _) :: Int,[],id (0 * _) :: Int)
+(id (id _ * _) :: Int,[],id (id _ * _) :: Int)
+(id (g _) :: Int,[],id (g _) :: Int)
+(id (head ys) :: Int,[],id (head ys) :: Int)
+(id (head [0]) :: Int,[],id (head [0]) :: Int)
+(id (head (_:xs)) :: Int,[],id (head (_:xs)) :: Int)
+(id (head [_]) :: Int,[],id (head [_]) :: Int)
+(id (head (_:_:_)) :: Int,[],id (head (_:_:_)) :: Int)
+(id (head (x:_)) :: Int,[],id (head (x:_)) :: Int)
+(id (head (0:_)) :: Int,[],id (head (0:_)) :: Int)
+(id (head (id _:_)) :: Int,[],id (head (id _:_)) :: Int)
+(id (head (tail _)) :: Int,[],id (head (tail _)) :: Int)
+(id (head (_ ++ _)) :: Int,[],id (head (_ ++ _)) :: Int)
+(id (ord d) :: Int,[],id (ord d) :: Int)
+(id (ord ' ') :: Int,[],id (ord ' ') :: Int)
+(negate z :: Int,[],negate z :: Int)
+(negate (-1) :: Int,[],negate (-1) :: Int)
+(negate (id y) :: Int,[],negate (id y) :: Int)
+(negate (id 1) :: Int,[],negate (id 1) :: Int)
+(negate (id (id x)) :: Int,[],negate (id (id x)) :: Int)
+(negate (id (id 0)) :: Int,[],negate (id (id 0)) :: Int)
+(negate (id (id (id _))) :: Int,[],negate (id (id (id _))) :: Int)
+(negate (id (negate _)) :: Int,[],negate (id (negate _)) :: Int)
+(negate (id (abs _)) :: Int,[],negate (id (abs _)) :: Int)
+(negate (id (_ + _)) :: Int,[],negate (id (_ + _)) :: Int)
+(negate (id (head _)) :: Int,[],negate (id (head _)) :: Int)
+(negate (id (ord _)) :: Int,[],negate (id (ord _)) :: Int)
+(negate (negate x) :: Int,[],negate (negate x) :: Int)
+(negate (negate 0) :: Int,[],negate (negate 0) :: Int)
+(negate (negate (id _)) :: Int,[],negate (negate (id _)) :: Int)
+(negate (abs x) :: Int,[],negate (abs x) :: Int)
+(negate (abs 0) :: Int,[],negate (abs 0) :: Int)
+(negate (abs (id _)) :: Int,[],negate (abs (id _)) :: Int)
+(negate (_ + x) :: Int,[],negate (_ + x) :: Int)
+(negate (_ + 0) :: Int,[],negate (_ + 0) :: Int)
+(negate (_ + id _) :: Int,[],negate (_ + id _) :: Int)
+(negate (x + _) :: Int,[],negate (x + _) :: Int)
+(negate (0 + _) :: Int,[],negate (0 + _) :: Int)
+(negate (id _ + _) :: Int,[],negate (id _ + _) :: Int)
+(negate (_ * _) :: Int,[],negate (_ * _) :: Int)
+(negate (f _) :: Int,[],negate (f _) :: Int)
+(negate (head xs) :: Int,[],negate (head xs) :: Int)
+(negate (head []) :: Int,[],negate (head []) :: Int)
+(negate (head (_:_)) :: Int,[],negate (head (_:_)) :: Int)
+(negate (ord c) :: Int,[],negate (ord c) :: Int)
+(negate (ord 'a') :: Int,[],negate (ord 'a') :: Int)
+(abs z :: Int,[],abs z :: Int)
+(abs (-1) :: Int,[],abs (-1) :: Int)
+(abs (id y) :: Int,[],abs (id y) :: Int)
+(abs (id 1) :: Int,[],abs (id 1) :: Int)
+(abs (id (id x)) :: Int,[],abs (id (id x)) :: Int)
+(abs (id (id 0)) :: Int,[],abs (id (id 0)) :: Int)
+(abs (id (id (id _))) :: Int,[],abs (id (id (id _))) :: Int)
+(abs (id (negate _)) :: Int,[],abs (id (negate _)) :: Int)
+(abs (id (abs _)) :: Int,[],abs (id (abs _)) :: Int)
+(abs (id (_ + _)) :: Int,[],abs (id (_ + _)) :: Int)
+(abs (id (head _)) :: Int,[],abs (id (head _)) :: Int)
+(abs (id (ord _)) :: Int,[],abs (id (ord _)) :: Int)
+(abs (negate x) :: Int,[],abs (negate x) :: Int)
+(abs (negate 0) :: Int,[],abs (negate 0) :: Int)
+(abs (negate (id _)) :: Int,[],abs (negate (id _)) :: Int)
+(abs (abs x) :: Int,[],abs (abs x) :: Int)
+(abs (abs 0) :: Int,[],abs (abs 0) :: Int)
+(abs (abs (id _)) :: Int,[],abs (abs (id _)) :: Int)
+(abs (_ + x) :: Int,[],abs (_ + x) :: Int)
+(abs (_ + 0) :: Int,[],abs (_ + 0) :: Int)
+(abs (_ + id _) :: Int,[],abs (_ + id _) :: Int)
+(abs (x + _) :: Int,[],abs (x + _) :: Int)
+(abs (0 + _) :: Int,[],abs (0 + _) :: Int)
+(abs (id _ + _) :: Int,[],abs (id _ + _) :: Int)
+(abs (_ * _) :: Int,[],abs (_ * _) :: Int)
+(abs (f _) :: Int,[],abs (f _) :: Int)
+(abs (head xs) :: Int,[],abs (head xs) :: Int)
+(abs (head []) :: Int,[],abs (head []) :: Int)
+(abs (head (_:_)) :: Int,[],abs (head (_:_)) :: Int)
+(abs (ord c) :: Int,[],abs (ord c) :: Int)
+(abs (ord 'a') :: Int,[],abs (ord 'a') :: Int)
+(_ + z :: Int,[],_ + z :: Int)
+(_ + (-1) :: Int,[],_ + (-1) :: Int)
+(_ + id y :: Int,[],_ + id y :: Int)
+(_ + id 1 :: Int,[],_ + id 1 :: Int)
+(_ + id (id x) :: Int,[],_ + id (id x) :: Int)
+(_ + id (id 0) :: Int,[],_ + id (id 0) :: Int)
+(_ + id (id (id _)) :: Int,[],_ + id (id (id _)) :: Int)
+(_ + id (negate _) :: Int,[],_ + id (negate _) :: Int)
+(_ + id (abs _) :: Int,[],_ + id (abs _) :: Int)
+(_ + id (_ + _) :: Int,[],_ + id (_ + _) :: Int)
+(_ + id (head _) :: Int,[],_ + id (head _) :: Int)
+(_ + id (ord _) :: Int,[],_ + id (ord _) :: Int)
+(_ + negate x :: Int,[],_ + negate x :: Int)
+(_ + negate 0 :: Int,[],_ + negate 0 :: Int)
+(_ + negate (id _) :: Int,[],_ + negate (id _) :: Int)
+(_ + abs x :: Int,[],_ + abs x :: Int)
+(_ + abs 0 :: Int,[],_ + abs 0 :: Int)
+(_ + abs (id _) :: Int,[],_ + abs (id _) :: Int)
+(_ + (_ + x) :: Int,[],_ + (_ + x) :: Int)
+(_ + (_ + 0) :: Int,[],_ + (_ + 0) :: Int)
+(_ + (_ + id _) :: Int,[],_ + (_ + id _) :: Int)
+(_ + (x + _) :: Int,[],_ + (x + _) :: Int)
+(_ + (0 + _) :: Int,[],_ + (0 + _) :: Int)
+(_ + (id _ + _) :: Int,[],_ + (id _ + _) :: Int)
+(_ + _ * _ :: Int,[],_ + _ * _ :: Int)
+(_ + f _ :: Int,[],_ + f _ :: Int)
+(_ + head xs :: Int,[],_ + head xs :: Int)
+(_ + head [] :: Int,[],_ + head [] :: Int)
+(_ + head (_:_) :: Int,[],_ + head (_:_) :: Int)
+(_ + ord c :: Int,[],_ + ord c :: Int)
+(_ + ord 'a' :: Int,[],_ + ord 'a' :: Int)
+(x + y :: Int,[],x + y :: Int)
+(x + 1 :: Int,[],x + 1 :: Int)
+(x + id x :: Int,[],x + id x :: Int)
+(x + id 0 :: Int,[],x + id 0 :: Int)
+(x + id (id _) :: Int,[],x + id (id _) :: Int)
+(x + negate _ :: Int,[],x + negate _ :: Int)
+(x + abs _ :: Int,[],x + abs _ :: Int)
+(x + (_ + _) :: Int,[],x + (_ + _) :: Int)
+(x + head _ :: Int,[],x + head _ :: Int)
+(x + ord _ :: Int,[],x + ord _ :: Int)
+(0 + y :: Int,[],0 + y :: Int)
+(0 + 1 :: Int,[],0 + 1 :: Int)
+(0 + id x :: Int,[],0 + id x :: Int)
+(0 + id 0 :: Int,[],0 + id 0 :: Int)
+(0 + id (id _) :: Int,[],0 + id (id _) :: Int)
+(0 + negate _ :: Int,[],0 + negate _ :: Int)
+(0 + abs _ :: Int,[],0 + abs _ :: Int)
+(0 + (_ + _) :: Int,[],0 + (_ + _) :: Int)
+(0 + head _ :: Int,[],0 + head _ :: Int)
+(0 + ord _ :: Int,[],0 + ord _ :: Int)
+(id _ + y :: Int,[],id _ + y :: Int)
+(id _ + 1 :: Int,[],id _ + 1 :: Int)
+(id _ + id x :: Int,[],id _ + id x :: Int)
+(id _ + id 0 :: Int,[],id _ + id 0 :: Int)
+(id _ + id (id _) :: Int,[],id _ + id (id _) :: Int)
+(id _ + negate _ :: Int,[],id _ + negate _ :: Int)
+(id _ + abs _ :: Int,[],id _ + abs _ :: Int)
+(id _ + (_ + _) :: Int,[],id _ + (_ + _) :: Int)
+(id _ + head _ :: Int,[],id _ + head _ :: Int)
+(id _ + ord _ :: Int,[],id _ + ord _ :: Int)
+(_ * y :: Int,[],_ * y :: Int)
+(_ * 1 :: Int,[],_ * 1 :: Int)
+(_ * id x :: Int,[],_ * id x :: Int)
+(_ * id 0 :: Int,[],_ * id 0 :: Int)
+(_ * id (id _) :: Int,[],_ * id (id _) :: Int)
+(_ * negate _ :: Int,[],_ * negate _ :: Int)
+(_ * abs _ :: Int,[],_ * abs _ :: Int)
+(_ * (_ + _) :: Int,[],_ * (_ + _) :: Int)
+(_ * head _ :: Int,[],_ * head _ :: Int)
+(_ * ord _ :: Int,[],_ * ord _ :: Int)
+(f y :: Int,[],f y :: Int)
+(f 1 :: Int,[],f 1 :: Int)
+(f (id x) :: Int,[],f (id x) :: Int)
+(f (id 0) :: Int,[],f (id 0) :: Int)
+(f (id (id _)) :: Int,[],f (id (id _)) :: Int)
+(f (negate _) :: Int,[],f (negate _) :: Int)
+(f (abs _) :: Int,[],f (abs _) :: Int)
+(f (_ + _) :: Int,[],f (_ + _) :: Int)
+(f (head _) :: Int,[],f (head _) :: Int)
+(f (ord _) :: Int,[],f (ord _) :: Int)
+(y + x :: Int,[],y + x :: Int)
+(y + 0 :: Int,[],y + 0 :: Int)
+(y + id _ :: Int,[],y + id _ :: Int)
+(1 + x :: Int,[],1 + x :: Int)
+(1 + 0 :: Int,[],1 + 0 :: Int)
+(1 + id _ :: Int,[],1 + id _ :: Int)
+(id x + x :: Int,[],id x + x :: Int)
+(id x + 0 :: Int,[],id x + 0 :: Int)
+(id x + id _ :: Int,[],id x + id _ :: Int)
+(id 0 + x :: Int,[],id 0 + x :: Int)
+(id 0 + 0 :: Int,[],id 0 + 0 :: Int)
+(id 0 + id _ :: Int,[],id 0 + id _ :: Int)
+(id (id _) + x :: Int,[],id (id _) + x :: Int)
+(id (id _) + 0 :: Int,[],id (id _) + 0 :: Int)
+(id (id _) + id _ :: Int,[],id (id _) + id _ :: Int)
+(negate _ + x :: Int,[],negate _ + x :: Int)
+(negate _ + 0 :: Int,[],negate _ + 0 :: Int)
+(negate _ + id _ :: Int,[],negate _ + id _ :: Int)
+(abs _ + x :: Int,[],abs _ + x :: Int)
+(abs _ + 0 :: Int,[],abs _ + 0 :: Int)
+(abs _ + id _ :: Int,[],abs _ + id _ :: Int)
+((_ + _) + x :: Int,[],(_ + _) + x :: Int)
+((_ + _) + 0 :: Int,[],(_ + _) + 0 :: Int)
+((_ + _) + id _ :: Int,[],(_ + _) + id _ :: Int)
+(head _ + x :: Int,[],head _ + x :: Int)
+(head _ + 0 :: Int,[],head _ + 0 :: Int)
+(head _ + id _ :: Int,[],head _ + id _ :: Int)
+(ord _ + x :: Int,[],ord _ + x :: Int)
+(ord _ + 0 :: Int,[],ord _ + 0 :: Int)
+(ord _ + id _ :: Int,[],ord _ + id _ :: Int)
+(x * x :: Int,[],x * x :: Int)
+(x * 0 :: Int,[],x * 0 :: Int)
+(x * id _ :: Int,[],x * id _ :: Int)
+(0 * x :: Int,[],0 * x :: Int)
+(0 * 0 :: Int,[],0 * 0 :: Int)
+(0 * id _ :: Int,[],0 * id _ :: Int)
+(id _ * x :: Int,[],id _ * x :: Int)
+(id _ * 0 :: Int,[],id _ * 0 :: Int)
+(id _ * id _ :: Int,[],id _ * id _ :: Int)
+(g x :: Int,[],g x :: Int)
+(g 0 :: Int,[],g 0 :: Int)
+(g (id _) :: Int,[],g (id _) :: Int)
+(z + _ :: Int,[],z + _ :: Int)
+((-1) + _ :: Int,[],(-1) + _ :: Int)
+(id y + _ :: Int,[],id y + _ :: Int)
+(id 1 + _ :: Int,[],id 1 + _ :: Int)
+(id (id x) + _ :: Int,[],id (id x) + _ :: Int)
+(id (id 0) + _ :: Int,[],id (id 0) + _ :: Int)
+(id (id (id _)) + _ :: Int,[],id (id (id _)) + _ :: Int)
+(id (negate _) + _ :: Int,[],id (negate _) + _ :: Int)
+(id (abs _) + _ :: Int,[],id (abs _) + _ :: Int)
+(id (_ + _) + _ :: Int,[],id (_ + _) + _ :: Int)
+(id (head _) + _ :: Int,[],id (head _) + _ :: Int)
+(id (ord _) + _ :: Int,[],id (ord _) + _ :: Int)
+(negate x + _ :: Int,[],negate x + _ :: Int)
+(negate 0 + _ :: Int,[],negate 0 + _ :: Int)
+(negate (id _) + _ :: Int,[],negate (id _) + _ :: Int)
+(abs x + _ :: Int,[],abs x + _ :: Int)
+(abs 0 + _ :: Int,[],abs 0 + _ :: Int)
+(abs (id _) + _ :: Int,[],abs (id _) + _ :: Int)
+((_ + x) + _ :: Int,[],(_ + x) + _ :: Int)
+((_ + 0) + _ :: Int,[],(_ + 0) + _ :: Int)
+((_ + id _) + _ :: Int,[],(_ + id _) + _ :: Int)
+((x + _) + _ :: Int,[],(x + _) + _ :: Int)
+((0 + _) + _ :: Int,[],(0 + _) + _ :: Int)
+((id _ + _) + _ :: Int,[],(id _ + _) + _ :: Int)
+(_ * _ + _ :: Int,[],_ * _ + _ :: Int)
+(f _ + _ :: Int,[],f _ + _ :: Int)
+(head xs + _ :: Int,[],head xs + _ :: Int)
+(head [] + _ :: Int,[],head [] + _ :: Int)
+(head (_:_) + _ :: Int,[],head (_:_) + _ :: Int)
+(ord c + _ :: Int,[],ord c + _ :: Int)
+(ord 'a' + _ :: Int,[],ord 'a' + _ :: Int)
+(y * _ :: Int,[],y * _ :: Int)
+(1 * _ :: Int,[],1 * _ :: Int)
+(id x * _ :: Int,[],id x * _ :: Int)
+(id 0 * _ :: Int,[],id 0 * _ :: Int)
+(id (id _) * _ :: Int,[],id (id _) * _ :: Int)
+(negate _ * _ :: Int,[],negate _ * _ :: Int)
+(abs _ * _ :: Int,[],abs _ * _ :: Int)
+((_ + _) * _ :: Int,[],(_ + _) * _ :: Int)
+(head _ * _ :: Int,[],head _ * _ :: Int)
+(ord _ * _ :: Int,[],ord _ * _ :: Int)
+(h _ :: Int,[],h _ :: Int)
+(head zs :: Int,[],head zs :: Int)
+(head [0,0] :: Int,[],head [0,0] :: Int)
+(head [1] :: Int,[],head [1] :: Int)
+(head (_:ys) :: Int,[],head (_:ys) :: Int)
+(head (_:[0]) :: Int,[],head (_:[0]) :: Int)
+(head (_:_:xs) :: Int,[],head (_:_:xs) :: Int)
+(head [_,_] :: Int,[],head [_,_] :: Int)
+(head (_:_:_:_) :: Int,[],head (_:_:_:_) :: Int)
+(head (_:x:_) :: Int,[],head (_:x:_) :: Int)
+(head (_:0:_) :: Int,[],head (_:0:_) :: Int)
+(head (_:id _:_) :: Int,[],head (_:id _:_) :: Int)
+(head (_:tail _) :: Int,[],head (_:tail _) :: Int)
+(head (_:(_ ++ _)) :: Int,[],head (_:(_ ++ _)) :: Int)
+(head (x:xs) :: Int,[],head (x:xs) :: Int)
+(head [x] :: Int,[],head [x] :: Int)
+(head (x:_:_) :: Int,[],head (x:_:_) :: Int)
+(head (0:xs) :: Int,[],head (0:xs) :: Int)
+(head [0] :: Int,[],head [0] :: Int)
+(head (0:_:_) :: Int,[],head (0:_:_) :: Int)
+(head (id _:xs) :: Int,[],head (id _:xs) :: Int)
+(head [id _] :: Int,[],head [id _] :: Int)
+(head (id _:_:_) :: Int,[],head (id _:_:_) :: Int)
+(head (y:_) :: Int,[],head (y:_) :: Int)
+(head (1:_) :: Int,[],head (1:_) :: Int)
+(head (id x:_) :: Int,[],head (id x:_) :: Int)
+(head (id 0:_) :: Int,[],head (id 0:_) :: Int)
+(head (id (id _):_) :: Int,[],head (id (id _):_) :: Int)
+(head (negate _:_) :: Int,[],head (negate _:_) :: Int)
+(head (abs _:_) :: Int,[],head (abs _:_) :: Int)
+(head (_ + _:_) :: Int,[],head (_ + _:_) :: Int)
+(head (head _:_) :: Int,[],head (head _:_) :: Int)
+(head (ord _:_) :: Int,[],head (ord _:_) :: Int)
+(head (tail xs) :: Int,[],head (tail xs) :: Int)
+(head (tail []) :: Int,[],head (tail []) :: Int)
+(head (tail (_:_)) :: Int,[],head (tail (_:_)) :: Int)
+(head (_ ++ xs) :: Int,[],head (_ ++ xs) :: Int)
+(head (_ ++ []) :: Int,[],head (_ ++ []) :: Int)
+(head (_ ++ (_:_)) :: Int,[],head (_ ++ (_:_)) :: Int)
+(head (xs ++ _) :: Int,[],head (xs ++ _) :: Int)
+(head ([] ++ _) :: Int,[],head ([] ++ _) :: Int)
+(head ((_:_) ++ _) :: Int,[],head ((_:_) ++ _) :: Int)
+(head (sort _) :: Int,[],head (sort _) :: Int)
+(head (insert _ _) :: Int,[],head (insert _ _) :: Int)
+(ord e :: Int,[],ord e :: Int)
+(ord 'b' :: Int,[],ord 'b' :: Int)
+(p' :: Bool,[],p' :: Bool)
+(not r :: Bool,[],not r :: Bool)
+(not (not q) :: Bool,[],not (not q) :: Bool)
+(not (not (not p)) :: Bool,[],not (not (not p)) :: Bool)
+(not (not (not False)) :: Bool,[],not (not (not False)) :: Bool)
+(not (not (not True)) :: Bool,[],not (not (not True)) :: Bool)
+(not (not (not (not _))) :: Bool,[],not (not (not (not _))) :: Bool)
+(not (not (_ || _)) :: Bool,[],not (not (_ || _)) :: Bool)
+(not (_ || p) :: Bool,[],not (_ || p) :: Bool)
+(not (_ || False) :: Bool,[],not (_ || False) :: Bool)
+(not (_ || True) :: Bool,[],not (_ || True) :: Bool)
+(not (_ || not _) :: Bool,[],not (_ || not _) :: Bool)
+(not (p || _) :: Bool,[],not (p || _) :: Bool)
+(not (False || _) :: Bool,[],not (False || _) :: Bool)
+(not (True || _) :: Bool,[],not (True || _) :: Bool)
+(not (not _ || _) :: Bool,[],not (not _ || _) :: Bool)
+(not (_ && _) :: Bool,[],not (_ && _) :: Bool)
+(not (_ == _) :: Bool,[],not (_ == _) :: Bool)
+(not (_ == _) :: Bool,[],not (_ == _) :: Bool)
+(not (odd _) :: Bool,[],not (odd _) :: Bool)
+(not (even _) :: Bool,[],not (even _) :: Bool)
+(not (elem _ _) :: Bool,[],not (elem _ _) :: Bool)
+(_ || q :: Bool,[],_ || q :: Bool)
+(_ || not p :: Bool,[],_ || not p :: Bool)
+(_ || not False :: Bool,[],_ || not False :: Bool)
+(_ || not True :: Bool,[],_ || not True :: Bool)
+(_ || not (not _) :: Bool,[],_ || not (not _) :: Bool)
+(_ || (_ || _) :: Bool,[],_ || (_ || _) :: Bool)
+(p || p :: Bool,[],p || p :: Bool)
+(p || False :: Bool,[],p || False :: Bool)
+(p || True :: Bool,[],p || True :: Bool)
+(p || not _ :: Bool,[],p || not _ :: Bool)
+(False || p :: Bool,[],False || p :: Bool)
+(False || False :: Bool,[],False || False :: Bool)
+(False || True :: Bool,[],False || True :: Bool)
+(False || not _ :: Bool,[],False || not _ :: Bool)
+(True || p :: Bool,[],True || p :: Bool)
+(True || False :: Bool,[],True || False :: Bool)
+(True || True :: Bool,[],True || True :: Bool)
+(True || not _ :: Bool,[],True || not _ :: Bool)
+(not _ || p :: Bool,[],not _ || p :: Bool)
+(not _ || False :: Bool,[],not _ || False :: Bool)
+(not _ || True :: Bool,[],not _ || True :: Bool)
+(not _ || not _ :: Bool,[],not _ || not _ :: Bool)
+(_ && p :: Bool,[],_ && p :: Bool)
+(_ && False :: Bool,[],_ && False :: Bool)
+(_ && True :: Bool,[],_ && True :: Bool)
+(_ && not _ :: Bool,[],_ && not _ :: Bool)
+(q || _ :: Bool,[],q || _ :: Bool)
+(not p || _ :: Bool,[],not p || _ :: Bool)
+(not False || _ :: Bool,[],not False || _ :: Bool)
+(not True || _ :: Bool,[],not True || _ :: Bool)
+(not (not _) || _ :: Bool,[],not (not _) || _ :: Bool)
+((_ || _) || _ :: Bool,[],(_ || _) || _ :: Bool)
+(p && _ :: Bool,[],p && _ :: Bool)
+(False && _ :: Bool,[],False && _ :: Bool)
+(True && _ :: Bool,[],True && _ :: Bool)
+(not _ && _ :: Bool,[],not _ && _ :: Bool)
+(_ ==> _ :: Bool,[],_ ==> _ :: Bool)
+(_ == x :: Bool,[],_ == x :: Bool)
+(_ == 0 :: Bool,[],_ == 0 :: Bool)
+(_ == id _ :: Bool,[],_ == id _ :: Bool)
+(x == _ :: Bool,[],x == _ :: Bool)
+(0 == _ :: Bool,[],0 == _ :: Bool)
+(id _ == _ :: Bool,[],id _ == _ :: Bool)
+(_ == p :: Bool,[],_ == p :: Bool)
+(_ == False :: Bool,[],_ == False :: Bool)
+(_ == True :: Bool,[],_ == True :: Bool)
+(_ == not _ :: Bool,[],_ == not _ :: Bool)
+(p == _ :: Bool,[],p == _ :: Bool)
+(False == _ :: Bool,[],False == _ :: Bool)
+(True == _ :: Bool,[],True == _ :: Bool)
+(not _ == _ :: Bool,[],not _ == _ :: Bool)
+(_ <= _ :: Bool,[],_ <= _ :: Bool)
+(_ <= _ :: Bool,[],_ <= _ :: Bool)
+(odd x :: Bool,[],odd x :: Bool)
+(odd 0 :: Bool,[],odd 0 :: Bool)
+(odd (id _) :: Bool,[],odd (id _) :: Bool)
+(even x :: Bool,[],even x :: Bool)
+(even 0 :: Bool,[],even 0 :: Bool)
+(even (id _) :: Bool,[],even (id _) :: Bool)
+(elem _ xs :: Bool,[],elem _ xs :: Bool)
+(elem _ [] :: Bool,[],elem _ [] :: Bool)
+(elem _ (_:_) :: Bool,[],elem _ (_:_) :: Bool)
+(elem x _ :: Bool,[],elem x _ :: Bool)
+(elem 0 _ :: Bool,[],elem 0 _ :: Bool)
+(elem (id _) _ :: Bool,[],elem (id _) _ :: Bool)
+(c' :: Char,[],c' :: Char)
+('A' :: Char,[],'A' :: Char)
+(xs' :: [Int],[],xs' :: [Int])
+([0,0,0] :: [Int],[],[0,0,0] :: [Int])
+([0,1] :: [Int],[],[0,1] :: [Int])
+([1,0] :: [Int],[],[1,0] :: [Int])
+([-1] :: [Int],[],[-1] :: [Int])
+(_:zs :: [Int],[],_:zs :: [Int])
+(_:[0,0] :: [Int],[],_:[0,0] :: [Int])
+(_:[1] :: [Int],[],_:[1] :: [Int])
+(_:_:ys :: [Int],[],_:_:ys :: [Int])
+(_:_:[0] :: [Int],[],_:_:[0] :: [Int])
+(_:_:_:xs :: [Int],[],_:_:_:xs :: [Int])
+([_,_,_] :: [Int],[],[_,_,_] :: [Int])
+(_:_:_:_:_ :: [Int],[],_:_:_:_:_ :: [Int])
+(_:_:x:_ :: [Int],[],_:_:x:_ :: [Int])
+(_:_:0:_ :: [Int],[],_:_:0:_ :: [Int])
+(_:_:id _:_ :: [Int],[],_:_:id _:_ :: [Int])
+(_:_:tail _ :: [Int],[],_:_:tail _ :: [Int])
+(_:_:(_ ++ _) :: [Int],[],_:_:(_ ++ _) :: [Int])
+(_:x:xs :: [Int],[],_:x:xs :: [Int])
+([_,x] :: [Int],[],[_,x] :: [Int])
+(_:x:_:_ :: [Int],[],_:x:_:_ :: [Int])
+(_:0:xs :: [Int],[],_:0:xs :: [Int])
+([_,0] :: [Int],[],[_,0] :: [Int])
+(_:0:_:_ :: [Int],[],_:0:_:_ :: [Int])
+(_:id _:xs :: [Int],[],_:id _:xs :: [Int])
+([_,id _] :: [Int],[],[_,id _] :: [Int])
+(_:id _:_:_ :: [Int],[],_:id _:_:_ :: [Int])
+(_:y:_ :: [Int],[],_:y:_ :: [Int])
+(_:1:_ :: [Int],[],_:1:_ :: [Int])
+(_:id x:_ :: [Int],[],_:id x:_ :: [Int])
+(_:id 0:_ :: [Int],[],_:id 0:_ :: [Int])
+(_:id (id _):_ :: [Int],[],_:id (id _):_ :: [Int])
+(_:negate _:_ :: [Int],[],_:negate _:_ :: [Int])
+(_:abs _:_ :: [Int],[],_:abs _:_ :: [Int])
+(_:_ + _:_ :: [Int],[],_:_ + _:_ :: [Int])
+(_:head _:_ :: [Int],[],_:head _:_ :: [Int])
+(_:ord _:_ :: [Int],[],_:ord _:_ :: [Int])
+(_:tail xs :: [Int],[],_:tail xs :: [Int])
+(_:tail [] :: [Int],[],_:tail [] :: [Int])
+(_:tail (_:_) :: [Int],[],_:tail (_:_) :: [Int])
+(_:(_ ++ xs) :: [Int],[],_:(_ ++ xs) :: [Int])
+(_:(_ ++ []) :: [Int],[],_:(_ ++ []) :: [Int])
+(_:(_ ++ (_:_)) :: [Int],[],_:(_ ++ (_:_)) :: [Int])
+(_:(xs ++ _) :: [Int],[],_:(xs ++ _) :: [Int])
+(_:([] ++ _) :: [Int],[],_:([] ++ _) :: [Int])
+(_:((_:_) ++ _) :: [Int],[],_:((_:_) ++ _) :: [Int])
+(_:sort _ :: [Int],[],_:sort _ :: [Int])
+(_:insert _ _ :: [Int],[],_:insert _ _ :: [Int])
+(x:ys :: [Int],[],x:ys :: [Int])
+(x:[0] :: [Int],[],x:[0] :: [Int])
+(x:_:xs :: [Int],[],x:_:xs :: [Int])
+([x,_] :: [Int],[],[x,_] :: [Int])
+(x:_:_:_ :: [Int],[],x:_:_:_ :: [Int])
+(x:x:_ :: [Int],[],x:x:_ :: [Int])
+(x:0:_ :: [Int],[],x:0:_ :: [Int])
+(x:id _:_ :: [Int],[],x:id _:_ :: [Int])
+(x:tail _ :: [Int],[],x:tail _ :: [Int])
+(x:(_ ++ _) :: [Int],[],x:(_ ++ _) :: [Int])
+(0:ys :: [Int],[],0:ys :: [Int])
+(0:[0] :: [Int],[],0:[0] :: [Int])
+(0:_:xs :: [Int],[],0:_:xs :: [Int])
+([0,_] :: [Int],[],[0,_] :: [Int])
+(0:_:_:_ :: [Int],[],0:_:_:_ :: [Int])
+(0:x:_ :: [Int],[],0:x:_ :: [Int])
+(0:0:_ :: [Int],[],0:0:_ :: [Int])
+(0:id _:_ :: [Int],[],0:id _:_ :: [Int])
+(0:tail _ :: [Int],[],0:tail _ :: [Int])
+(0:(_ ++ _) :: [Int],[],0:(_ ++ _) :: [Int])
+(id _:ys :: [Int],[],id _:ys :: [Int])
+(id _:[0] :: [Int],[],id _:[0] :: [Int])
+(id _:_:xs :: [Int],[],id _:_:xs :: [Int])
+([id _,_] :: [Int],[],[id _,_] :: [Int])
+(id _:_:_:_ :: [Int],[],id _:_:_:_ :: [Int])
+(id _:x:_ :: [Int],[],id _:x:_ :: [Int])
+(id _:0:_ :: [Int],[],id _:0:_ :: [Int])
+(id _:id _:_ :: [Int],[],id _:id _:_ :: [Int])
+(id _:tail _ :: [Int],[],id _:tail _ :: [Int])
+(id _:(_ ++ _) :: [Int],[],id _:(_ ++ _) :: [Int])
+(y:xs :: [Int],[],y:xs :: [Int])
+([y] :: [Int],[],[y] :: [Int])
+(y:_:_ :: [Int],[],y:_:_ :: [Int])
+(1:xs :: [Int],[],1:xs :: [Int])
+([1] :: [Int],[],[1] :: [Int])
+(1:_:_ :: [Int],[],1:_:_ :: [Int])
+(id x:xs :: [Int],[],id x:xs :: [Int])
+([id x] :: [Int],[],[id x] :: [Int])
+(id x:_:_ :: [Int],[],id x:_:_ :: [Int])
+(id 0:xs :: [Int],[],id 0:xs :: [Int])
+([id 0] :: [Int],[],[id 0] :: [Int])
+(id 0:_:_ :: [Int],[],id 0:_:_ :: [Int])
+(id (id _):xs :: [Int],[],id (id _):xs :: [Int])
+([id (id _)] :: [Int],[],[id (id _)] :: [Int])
+(id (id _):_:_ :: [Int],[],id (id _):_:_ :: [Int])
+(negate _:xs :: [Int],[],negate _:xs :: [Int])
+([negate _] :: [Int],[],[negate _] :: [Int])
+(negate _:_:_ :: [Int],[],negate _:_:_ :: [Int])
+(abs _:xs :: [Int],[],abs _:xs :: [Int])
+([abs _] :: [Int],[],[abs _] :: [Int])
+(abs _:_:_ :: [Int],[],abs _:_:_ :: [Int])
+(_ + _:xs :: [Int],[],_ + _:xs :: [Int])
+([_ + _] :: [Int],[],[_ + _] :: [Int])
+(_ + _:_:_ :: [Int],[],_ + _:_:_ :: [Int])
+(head _:xs :: [Int],[],head _:xs :: [Int])
+([head _] :: [Int],[],[head _] :: [Int])
+(head _:_:_ :: [Int],[],head _:_:_ :: [Int])
+(ord _:xs :: [Int],[],ord _:xs :: [Int])
+([ord _] :: [Int],[],[ord _] :: [Int])
+(ord _:_:_ :: [Int],[],ord _:_:_ :: [Int])
+(z:_ :: [Int],[],z:_ :: [Int])
+((-1):_ :: [Int],[],(-1):_ :: [Int])
+(id y:_ :: [Int],[],id y:_ :: [Int])
+(id 1:_ :: [Int],[],id 1:_ :: [Int])
+(id (id x):_ :: [Int],[],id (id x):_ :: [Int])
+(id (id 0):_ :: [Int],[],id (id 0):_ :: [Int])
+(id (id (id _)):_ :: [Int],[],id (id (id _)):_ :: [Int])
+(id (negate _):_ :: [Int],[],id (negate _):_ :: [Int])
+(id (abs _):_ :: [Int],[],id (abs _):_ :: [Int])
+(id (_ + _):_ :: [Int],[],id (_ + _):_ :: [Int])
+(id (head _):_ :: [Int],[],id (head _):_ :: [Int])
+(id (ord _):_ :: [Int],[],id (ord _):_ :: [Int])
+(negate x:_ :: [Int],[],negate x:_ :: [Int])
+(negate 0:_ :: [Int],[],negate 0:_ :: [Int])
+(negate (id _):_ :: [Int],[],negate (id _):_ :: [Int])
+(abs x:_ :: [Int],[],abs x:_ :: [Int])
+(abs 0:_ :: [Int],[],abs 0:_ :: [Int])
+(abs (id _):_ :: [Int],[],abs (id _):_ :: [Int])
+(_ + x:_ :: [Int],[],_ + x:_ :: [Int])
+(_ + 0:_ :: [Int],[],_ + 0:_ :: [Int])
+(_ + id _:_ :: [Int],[],_ + id _:_ :: [Int])
+(x + _:_ :: [Int],[],x + _:_ :: [Int])
+(0 + _:_ :: [Int],[],0 + _:_ :: [Int])
+(id _ + _:_ :: [Int],[],id _ + _:_ :: [Int])
+(_ * _:_ :: [Int],[],_ * _:_ :: [Int])
+(f _:_ :: [Int],[],f _:_ :: [Int])
+(head xs:_ :: [Int],[],head xs:_ :: [Int])
+(head []:_ :: [Int],[],head []:_ :: [Int])
+(head (_:_):_ :: [Int],[],head (_:_):_ :: [Int])
+(ord c:_ :: [Int],[],ord c:_ :: [Int])
+(ord 'a':_ :: [Int],[],ord 'a':_ :: [Int])
+(tail ys :: [Int],[],tail ys :: [Int])
+(tail [0] :: [Int],[],tail [0] :: [Int])
+(tail (_:xs) :: [Int],[],tail (_:xs) :: [Int])
+(tail [_] :: [Int],[],tail [_] :: [Int])
+(tail (_:_:_) :: [Int],[],tail (_:_:_) :: [Int])
+(tail (x:_) :: [Int],[],tail (x:_) :: [Int])
+(tail (0:_) :: [Int],[],tail (0:_) :: [Int])
+(tail (id _:_) :: [Int],[],tail (id _:_) :: [Int])
+(tail (tail _) :: [Int],[],tail (tail _) :: [Int])
+(tail (_ ++ _) :: [Int],[],tail (_ ++ _) :: [Int])
+(_ ++ ys :: [Int],[],_ ++ ys :: [Int])
+(_ ++ [0] :: [Int],[],_ ++ [0] :: [Int])
+(_ ++ (_:xs) :: [Int],[],_ ++ (_:xs) :: [Int])
+(_ ++ [_] :: [Int],[],_ ++ [_] :: [Int])
+(_ ++ (_:_:_) :: [Int],[],_ ++ (_:_:_) :: [Int])
+(_ ++ (x:_) :: [Int],[],_ ++ (x:_) :: [Int])
+(_ ++ (0:_) :: [Int],[],_ ++ (0:_) :: [Int])
+(_ ++ (id _:_) :: [Int],[],_ ++ (id _:_) :: [Int])
+(_ ++ tail _ :: [Int],[],_ ++ tail _ :: [Int])
+(_ ++ (_ ++ _) :: [Int],[],_ ++ (_ ++ _) :: [Int])
+(xs ++ xs :: [Int],[],xs ++ xs :: [Int])
+(xs ++ [] :: [Int],[],xs ++ [] :: [Int])
+(xs ++ (_:_) :: [Int],[],xs ++ (_:_) :: [Int])
+([] ++ xs :: [Int],[],[] ++ xs :: [Int])
+([] ++ [] :: [Int],[],[] ++ [] :: [Int])
+([] ++ (_:_) :: [Int],[],[] ++ (_:_) :: [Int])
+((_:_) ++ xs :: [Int],[],(_:_) ++ xs :: [Int])
+((_:_) ++ [] :: [Int],[],(_:_) ++ [] :: [Int])
+((_:_) ++ (_:_) :: [Int],[],(_:_) ++ (_:_) :: [Int])
+(ys ++ _ :: [Int],[],ys ++ _ :: [Int])
+([0] ++ _ :: [Int],[],[0] ++ _ :: [Int])
+((_:xs) ++ _ :: [Int],[],(_:xs) ++ _ :: [Int])
+([_] ++ _ :: [Int],[],[_] ++ _ :: [Int])
+((_:_:_) ++ _ :: [Int],[],(_:_:_) ++ _ :: [Int])
+((x:_) ++ _ :: [Int],[],(x:_) ++ _ :: [Int])
+((0:_) ++ _ :: [Int],[],(0:_) ++ _ :: [Int])
+((id _:_) ++ _ :: [Int],[],(id _:_) ++ _ :: [Int])
+(tail _ ++ _ :: [Int],[],tail _ ++ _ :: [Int])
+((_ ++ _) ++ _ :: [Int],[],(_ ++ _) ++ _ :: [Int])
+(sort xs :: [Int],[],sort xs :: [Int])
+(sort [] :: [Int],[],sort [] :: [Int])
+(sort (_:_) :: [Int],[],sort (_:_) :: [Int])
+(insert _ xs :: [Int],[],insert _ xs :: [Int])
+(insert _ [] :: [Int],[],insert _ [] :: [Int])
+(insert _ (_:_) :: [Int],[],insert _ (_:_) :: [Int])
+(insert x _ :: [Int],[],insert x _ :: [Int])
+(insert 0 _ :: [Int],[],insert 0 _ :: [Int])
+(insert (id _) _ :: [Int],[],insert (id _) _ :: [Int])
+((y +) :: Int -> Int,[],(y +) :: Int -> Int)
+((1 +) :: Int -> Int,[],(1 +) :: Int -> Int)
+((id x +) :: Int -> Int,[],(id x +) :: Int -> Int)
+((id 0 +) :: Int -> Int,[],(id 0 +) :: Int -> Int)
+((id (id _) +) :: Int -> Int,[],(id (id _) +) :: Int -> Int)
+((negate _ +) :: Int -> Int,[],(negate _ +) :: Int -> Int)
+((abs _ +) :: Int -> Int,[],(abs _ +) :: Int -> Int)
+(((_ + _) +) :: Int -> Int,[],((_ + _) +) :: Int -> Int)
+((head _ +) :: Int -> Int,[],(head _ +) :: Int -> Int)
+((ord _ +) :: Int -> Int,[],(ord _ +) :: Int -> Int)
+((x *) :: Int -> Int,[],(x *) :: Int -> Int)
+((0 *) :: Int -> Int,[],(0 *) :: Int -> Int)
+((id _ *) :: Int -> Int,[],(id _ *) :: Int -> Int)
+(g :: Int -> Int,[],g :: Int -> Int)
+((p ||) :: Bool -> Bool,[],(p ||) :: Bool -> Bool)
+((False ||) :: Bool -> Bool,[],(False ||) :: Bool -> Bool)
+((True ||) :: Bool -> Bool,[],(True ||) :: Bool -> Bool)
+((not _ ||) :: Bool -> Bool,[],(not _ ||) :: Bool -> Bool)
+((_ &&) :: Bool -> Bool,[],(_ &&) :: Bool -> Bool)
+((==>) :: Bool -> Bool -> Bool,[],(==>) :: Bool -> Bool -> Bool)
+(z' :: Int,[],z' :: Int)
+(3 :: Int,[],3 :: Int)
+(id y' :: Int,[],id y' :: Int)
+(id (-2) :: Int,[],id (-2) :: Int)
+(id (id x') :: Int,[],id (id x') :: Int)
+(id (id 2) :: Int,[],id (id 2) :: Int)
+(id (id (id z)) :: Int,[],id (id (id z)) :: Int)
+(id (id (id (-1))) :: Int,[],id (id (id (-1))) :: Int)
+(id (id (id (id y))) :: Int,[],id (id (id (id y))) :: Int)
+(id (id (id (id 1))) :: Int,[],id (id (id (id 1))) :: Int)
+(id (id (id (id (id x)))) :: Int,[],id (id (id (id (id x)))) :: Int)
+(id (id (id (id (id 0)))) :: Int,[],id (id (id (id (id 0)))) :: Int)
+(id (id (id (id (id (id _))))) :: Int,[],id (id (id (id (id (id _))))) :: Int)
+(id (id (id (id (negate _)))) :: Int,[],id (id (id (id (negate _)))) :: Int)
+(id (id (id (id (abs _)))) :: Int,[],id (id (id (id (abs _)))) :: Int)
+(id (id (id (id (_ + _)))) :: Int,[],id (id (id (id (_ + _)))) :: Int)
+(id (id (id (id (head _)))) :: Int,[],id (id (id (id (head _)))) :: Int)
+(id (id (id (id (ord _)))) :: Int,[],id (id (id (id (ord _)))) :: Int)
+(id (id (id (negate x))) :: Int,[],id (id (id (negate x))) :: Int)
+(id (id (id (negate 0))) :: Int,[],id (id (id (negate 0))) :: Int)
+(id (id (id (negate (id _)))) :: Int,[],id (id (id (negate (id _)))) :: Int)
+(id (id (id (abs x))) :: Int,[],id (id (id (abs x))) :: Int)
+(id (id (id (abs 0))) :: Int,[],id (id (id (abs 0))) :: Int)
+(id (id (id (abs (id _)))) :: Int,[],id (id (id (abs (id _)))) :: Int)
+(id (id (id (_ + x))) :: Int,[],id (id (id (_ + x))) :: Int)
+(id (id (id (_ + 0))) :: Int,[],id (id (id (_ + 0))) :: Int)
+(id (id (id (_ + id _))) :: Int,[],id (id (id (_ + id _))) :: Int)
+(id (id (id (x + _))) :: Int,[],id (id (id (x + _))) :: Int)
+(id (id (id (0 + _))) :: Int,[],id (id (id (0 + _))) :: Int)
+(id (id (id (id _ + _))) :: Int,[],id (id (id (id _ + _))) :: Int)
+(id (id (id (_ * _))) :: Int,[],id (id (id (_ * _))) :: Int)
+(id (id (id (f _))) :: Int,[],id (id (id (f _))) :: Int)
+(id (id (id (head xs))) :: Int,[],id (id (id (head xs))) :: Int)
+(id (id (id (head []))) :: Int,[],id (id (id (head []))) :: Int)
+(id (id (id (head (_:_)))) :: Int,[],id (id (id (head (_:_)))) :: Int)
+(id (id (id (ord c))) :: Int,[],id (id (id (ord c))) :: Int)
+(id (id (id (ord 'a'))) :: Int,[],id (id (id (ord 'a'))) :: Int)
+(id (id (negate y)) :: Int,[],id (id (negate y)) :: Int)
+(id (id (negate 1)) :: Int,[],id (id (negate 1)) :: Int)
+(id (id (negate (id x))) :: Int,[],id (id (negate (id x))) :: Int)
+(id (id (negate (id 0))) :: Int,[],id (id (negate (id 0))) :: Int)
+(id (id (negate (id (id _)))) :: Int,[],id (id (negate (id (id _)))) :: Int)
+(id (id (negate (negate _))) :: Int,[],id (id (negate (negate _))) :: Int)
+(id (id (negate (abs _))) :: Int,[],id (id (negate (abs _))) :: Int)
+(id (id (negate (_ + _))) :: Int,[],id (id (negate (_ + _))) :: Int)
+(id (id (negate (head _))) :: Int,[],id (id (negate (head _))) :: Int)
+(id (id (negate (ord _))) :: Int,[],id (id (negate (ord _))) :: Int)
+(id (id (abs y)) :: Int,[],id (id (abs y)) :: Int)
+(id (id (abs 1)) :: Int,[],id (id (abs 1)) :: Int)
+(id (id (abs (id x))) :: Int,[],id (id (abs (id x))) :: Int)
+(id (id (abs (id 0))) :: Int,[],id (id (abs (id 0))) :: Int)
+(id (id (abs (id (id _)))) :: Int,[],id (id (abs (id (id _)))) :: Int)
+(id (id (abs (negate _))) :: Int,[],id (id (abs (negate _))) :: Int)
+(id (id (abs (abs _))) :: Int,[],id (id (abs (abs _))) :: Int)
+(id (id (abs (_ + _))) :: Int,[],id (id (abs (_ + _))) :: Int)
+(id (id (abs (head _))) :: Int,[],id (id (abs (head _))) :: Int)
+(id (id (abs (ord _))) :: Int,[],id (id (abs (ord _))) :: Int)
+(id (id (_ + y)) :: Int,[],id (id (_ + y)) :: Int)
+(id (id (_ + 1)) :: Int,[],id (id (_ + 1)) :: Int)
+(id (id (_ + id x)) :: Int,[],id (id (_ + id x)) :: Int)
+(id (id (_ + id 0)) :: Int,[],id (id (_ + id 0)) :: Int)
+(id (id (_ + id (id _))) :: Int,[],id (id (_ + id (id _))) :: Int)
+(id (id (_ + negate _)) :: Int,[],id (id (_ + negate _)) :: Int)
+(id (id (_ + abs _)) :: Int,[],id (id (_ + abs _)) :: Int)
+(id (id (_ + (_ + _))) :: Int,[],id (id (_ + (_ + _))) :: Int)
+(id (id (_ + head _)) :: Int,[],id (id (_ + head _)) :: Int)
+(id (id (_ + ord _)) :: Int,[],id (id (_ + ord _)) :: Int)
+(id (id (x + x)) :: Int,[],id (id (x + x)) :: Int)
+(id (id (x + 0)) :: Int,[],id (id (x + 0)) :: Int)
+(id (id (x + id _)) :: Int,[],id (id (x + id _)) :: Int)
+(id (id (0 + x)) :: Int,[],id (id (0 + x)) :: Int)
+(id (id (0 + 0)) :: Int,[],id (id (0 + 0)) :: Int)
+(id (id (0 + id _)) :: Int,[],id (id (0 + id _)) :: Int)
+(id (id (id _ + x)) :: Int,[],id (id (id _ + x)) :: Int)
+(id (id (id _ + 0)) :: Int,[],id (id (id _ + 0)) :: Int)
+(id (id (id _ + id _)) :: Int,[],id (id (id _ + id _)) :: Int)
+(id (id (_ * x)) :: Int,[],id (id (_ * x)) :: Int)
+(id (id (_ * 0)) :: Int,[],id (id (_ * 0)) :: Int)
+(id (id (_ * id _)) :: Int,[],id (id (_ * id _)) :: Int)
+(id (id (f x)) :: Int,[],id (id (f x)) :: Int)
+(id (id (f 0)) :: Int,[],id (id (f 0)) :: Int)
+(id (id (f (id _))) :: Int,[],id (id (f (id _))) :: Int)
+(id (id (y + _)) :: Int,[],id (id (y + _)) :: Int)
+(id (id (1 + _)) :: Int,[],id (id (1 + _)) :: Int)
+(id (id (id x + _)) :: Int,[],id (id (id x + _)) :: Int)
+(id (id (id 0 + _)) :: Int,[],id (id (id 0 + _)) :: Int)
+(id (id (id (id _) + _)) :: Int,[],id (id (id (id _) + _)) :: Int)
+(id (id (negate _ + _)) :: Int,[],id (id (negate _ + _)) :: Int)
+(id (id (abs _ + _)) :: Int,[],id (id (abs _ + _)) :: Int)
+(id (id ((_ + _) + _)) :: Int,[],id (id ((_ + _) + _)) :: Int)
+(id (id (head _ + _)) :: Int,[],id (id (head _ + _)) :: Int)
+(id (id (ord _ + _)) :: Int,[],id (id (ord _ + _)) :: Int)
+(id (id (x * _)) :: Int,[],id (id (x * _)) :: Int)
+(id (id (0 * _)) :: Int,[],id (id (0 * _)) :: Int)
+(id (id (id _ * _)) :: Int,[],id (id (id _ * _)) :: Int)
+(id (id (g _)) :: Int,[],id (id (g _)) :: Int)
+(id (id (head ys)) :: Int,[],id (id (head ys)) :: Int)
+(id (id (head [0])) :: Int,[],id (id (head [0])) :: Int)
+(id (id (head (_:xs))) :: Int,[],id (id (head (_:xs))) :: Int)
+(id (id (head [_])) :: Int,[],id (id (head [_])) :: Int)
+(id (id (head (_:_:_))) :: Int,[],id (id (head (_:_:_))) :: Int)
+(id (id (head (x:_))) :: Int,[],id (id (head (x:_))) :: Int)
+(id (id (head (0:_))) :: Int,[],id (id (head (0:_))) :: Int)
+(id (id (head (id _:_))) :: Int,[],id (id (head (id _:_))) :: Int)
+(id (id (head (tail _))) :: Int,[],id (id (head (tail _))) :: Int)
+(id (id (head (_ ++ _))) :: Int,[],id (id (head (_ ++ _))) :: Int)
+(id (id (ord d)) :: Int,[],id (id (ord d)) :: Int)
+(id (id (ord ' ')) :: Int,[],id (id (ord ' ')) :: Int)
+(id (negate z) :: Int,[],id (negate z) :: Int)
+(id (negate (-1)) :: Int,[],id (negate (-1)) :: Int)
+(id (negate (id y)) :: Int,[],id (negate (id y)) :: Int)
+(id (negate (id 1)) :: Int,[],id (negate (id 1)) :: Int)
+(id (negate (id (id x))) :: Int,[],id (negate (id (id x))) :: Int)
+(id (negate (id (id 0))) :: Int,[],id (negate (id (id 0))) :: Int)
+(id (negate (id (id (id _)))) :: Int,[],id (negate (id (id (id _)))) :: Int)
+(id (negate (id (negate _))) :: Int,[],id (negate (id (negate _))) :: Int)
+(id (negate (id (abs _))) :: Int,[],id (negate (id (abs _))) :: Int)
+(id (negate (id (_ + _))) :: Int,[],id (negate (id (_ + _))) :: Int)
+(id (negate (id (head _))) :: Int,[],id (negate (id (head _))) :: Int)
+(id (negate (id (ord _))) :: Int,[],id (negate (id (ord _))) :: Int)
+(id (negate (negate x)) :: Int,[],id (negate (negate x)) :: Int)
+(id (negate (negate 0)) :: Int,[],id (negate (negate 0)) :: Int)
+(id (negate (negate (id _))) :: Int,[],id (negate (negate (id _))) :: Int)
+(id (negate (abs x)) :: Int,[],id (negate (abs x)) :: Int)
+(id (negate (abs 0)) :: Int,[],id (negate (abs 0)) :: Int)
+(id (negate (abs (id _))) :: Int,[],id (negate (abs (id _))) :: Int)
+(id (negate (_ + x)) :: Int,[],id (negate (_ + x)) :: Int)
+(id (negate (_ + 0)) :: Int,[],id (negate (_ + 0)) :: Int)
+(id (negate (_ + id _)) :: Int,[],id (negate (_ + id _)) :: Int)
+(id (negate (x + _)) :: Int,[],id (negate (x + _)) :: Int)
+(id (negate (0 + _)) :: Int,[],id (negate (0 + _)) :: Int)
+(id (negate (id _ + _)) :: Int,[],id (negate (id _ + _)) :: Int)
+(id (negate (_ * _)) :: Int,[],id (negate (_ * _)) :: Int)
+(id (negate (f _)) :: Int,[],id (negate (f _)) :: Int)
+(id (negate (head xs)) :: Int,[],id (negate (head xs)) :: Int)
+(id (negate (head [])) :: Int,[],id (negate (head [])) :: Int)
+(id (negate (head (_:_))) :: Int,[],id (negate (head (_:_))) :: Int)
+(id (negate (ord c)) :: Int,[],id (negate (ord c)) :: Int)
+(id (negate (ord 'a')) :: Int,[],id (negate (ord 'a')) :: Int)
+(id (abs z) :: Int,[],id (abs z) :: Int)
+(id (abs (-1)) :: Int,[],id (abs (-1)) :: Int)
+(id (abs (id y)) :: Int,[],id (abs (id y)) :: Int)
+(id (abs (id 1)) :: Int,[],id (abs (id 1)) :: Int)
+(id (abs (id (id x))) :: Int,[],id (abs (id (id x))) :: Int)
+(id (abs (id (id 0))) :: Int,[],id (abs (id (id 0))) :: Int)
+(id (abs (id (id (id _)))) :: Int,[],id (abs (id (id (id _)))) :: Int)
+
+True
diff --git a/bench/match-triexpr.hs b/bench/match-triexpr.hs
--- a/bench/match-triexpr.hs
+++ b/bench/match-triexpr.hs
@@ -1,6 +1,6 @@
 -- triexpr.hs -- how long it takes to match expressions in a Triexpr?
 --
--- Copyright (c) 2021 Rudy Matela.
+-- Copyright (c) 2021-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 --
 -- This program has the same parameters as other match*.hs benchmarks.
@@ -19,8 +19,8 @@
 
 main :: IO ()
 main  =  do
-  putStrLn $ unlines $ map showEq $ allRules
-  putStrLn $ unlines $ map show $ mapMaybe query $ take 1080 $ exprs
+  putStrLn $ unlines $ map showEq allRules
+  putStrLn $ unlines $ map show $ mapMaybe query $ take 1080 exprs
   print $ (== ']') $ last $ show $ mapMaybe query exprs
 
 trie :: Triexpr Expr
diff --git a/bench/match-triexpr.txt b/bench/match-triexpr.txt
new file mode 100644
--- /dev/null
+++ b/bench/match-triexpr.txt
@@ -0,0 +1,795 @@
+id p  =  p
+p && p  =  p
+p || p  =  p
+p && q  =  q && p
+p || q  =  q || p
+not (not p)  =  p
+p && True  =  p
+True && p  =  p
+p && False  =  False
+False && p  =  False
+p || True  =  True
+True || p  =  True
+p || False  =  p
+False || p  =  p
+p && not p  =  False
+p || not p  =  True
+not p && p  =  False
+not p || p  =  True
+(p && q) && r  =  p && (q && r)
+(p || q) || r  =  p || (q || r)
+not (p && q)  =  not p || not q
+not (p || q)  =  not p && not q
+not False  =  True
+not True  =  False
+not (not p && not q)  =  p || q
+not (not p || not q)  =  p && q
+p && not (p && q)  =  p && not q
+id x  =  x
+abs (abs x)  =  abs x
+x + 0  =  x
+0 + x  =  x
+x * 1  =  x
+1 * x  =  x
+x * 0  =  0
+0 * x  =  0
+x + y  =  y + x
+x * y  =  y * x
+(x + y) + z  =  x + (y + z)
+(x * y) * z  =  x * (y * z)
+(x + x) * y  =  x * (y + y)
+x * (y + 1)  =  x + x * y
+(x + 1) * y  =  x + x * y
+x * (y + z)  =  x * y + x * z
+(x + y) * z  =  x * z + y * z
+negate (negate x)  =  x
+x + negate x  =  0
+negate x + x  =  0
+abs (negate x)  =  abs x
+2 * x  =  x + x
+x * 2  =  x + x
+3 * x  =  x + (x + x)
+x * 3  =  x + (x + x)
+4 * x  =  x + (x + (x + x))
+x * 4  =  x + (x + (x + x))
+abs (x * x)  =  x * x
+abs x * abs y  =  abs (x * y)
+abs x * abs x  =  abs (x + x)
+abs (abs x + abs y)  =  abs x + abs y
+abs (x + x) * y  =  abs x * y + abs x * y
+abs x * signum x  =  x
+signum x * abs x  =  x
+id xs  =  xs
+head (x:xs)  =  x
+tail (x:xs)  =  xs
+xs ++ []  =  xs
+[] ++ xs  =  xs
+[x] ++ xs  =  x:xs
+(x:xs) ++ ys  =  x:(xs ++ ys)
+(xs ++ ys) ++ zs  =  xs ++ (ys ++ zs)
+elem x (sort xs)  =  elem x xs
+elem x (insert y xs)  =  elem x (y:xs)
+sort (sort xs)  =  sort xs
+insert x []  =  [x]
+sort (xs ++ ys)  =  sort (ys ++ xs)
+sort (insert x xs)  =  insert x (sort xs)
+sort (x:xs)  =  insert x (sort xs)
+sort (xs ++ sort ys)  =  sort (xs ++ ys)
+sort (sort xs ++ ys)  =  sort (xs ++ ys)
+insert x (insert y xs)  =  insert y (insert x xs)
+insert x (x:xs)  =  x:x:xs
+insert x [y]  =  insert y [x]
+length (x:xs)  =  length (y:xs)
+length (xs ++ ys)  =  length (ys ++ xs)
+length (x:y:xs)  =  length (z:x':xs)
+length (x:(xs ++ ys))  =  length (y:(ys ++ xs))
+length (xs ++ (ys ++ zs))  =  length (xs ++ (zs ++ ys))
+not (odd x)  =  even x
+not (even x)  =  odd x
+x == x  =  True
+x /= x  =  False
+p == p  =  True
+p /= p  =  False
+f (g x)  =  (f . g) x
+map id xs  =  xs
+map (f . g) xs  =  map f (map g xs)
+f . id  =  f
+id . f  =  f
+(f . g) . h  =  f . (g . h)
+not . not  =  id
+
+(id x :: Int,[(x :: Int,_ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,x :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,0 :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(id x :: Int,[(x :: Int,y :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,1 :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(id x :: Int,[(x :: Int,head _ :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord _ :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(not False :: Bool,[],True :: Bool)
+(not True :: Bool,[],False :: Bool)
+(not (not p) :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)
+(p || p :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)
+(id x :: Int,[(x :: Int,z :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,-1 :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(id x :: Int,[(x :: Int,head xs :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head [] :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (_:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord c :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord 'a' :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
+(not (not p) :: Bool,[(p :: Bool,p :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,False :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,True :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not _ :: Bool)],p :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
+(p && p :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)
+(x == x :: Bool,[(x :: Int,_ :: Int)],True :: Bool)
+(p == p :: Bool,[(p :: Bool,_ :: Bool)],True :: Bool)
+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
+(xs ++ [] :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])
+([] ++ xs :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+(id x :: Int,[(x :: Int,x' :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,2 :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,z :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,-1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (negate _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (abs _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (head _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (ord _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,f _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head xs :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head [] :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head (_:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord c :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord 'a' :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(y +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(1 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id 0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id (id _) +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(negate _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(abs _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,((_ + _) +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(head _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(ord _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,g :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(id x :: Int,[(x :: Int,head ys :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head [0] :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (_:xs) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head [_] :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (_:_:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (x:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (0:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (id _:_) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (tail _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,head (_ ++ _) :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord d :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,ord ' ' :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,z :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,-1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head xs :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,head [] :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,head (_:_) :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord c :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord 'a' :: Int),(x :: Int,_ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
+(x * y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,y :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,y :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(y +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,1 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,1 :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(1 +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id x :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id x +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id 0 +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id (id _) +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(negate _ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(abs _ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,((_ + _) +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(head _ +) :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(ord _ +) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x *) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 *) :: Int -> Int)],(f . g) x :: Int)
+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ *) :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,g :: Int -> Int)],(f . g) x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,z :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,-1 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id y :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 1 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id x) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id 0) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id (id _)) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (negate _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (abs _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (_ + _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (head _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (ord _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate (id _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs (id _) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + x :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + 0 :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + id _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ + _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ * _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,f _ :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head xs :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head [] :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head (_:_) :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord c :: Int)],y + x :: Int)
+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord 'a' :: Int)],y + x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y * x :: Int)
+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y * x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],ys :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[0] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[_] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],x:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],0:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],id _:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],tail _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ ++ _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,y :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,1 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id x :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id 0 :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id (id _) :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,negate _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,abs _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ + _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,head _ :: Int)],x :: Int)
+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,ord _ :: Int)],x :: Int)
+(not (not p) :: Bool,[(p :: Bool,q :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not p :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not False :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not True :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,not (not _) :: Bool)],p :: Bool)
+(not (not p) :: Bool,[(p :: Bool,_ || _ :: Bool)],p :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],not p && not q :: Bool)
+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],not p && not q :: Bool)
+(not (p && q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p || not q :: Bool)
+(not (odd x) :: Bool,[(x :: Int,_ :: Int)],even x :: Bool)
+(not (even x) :: Bool,[(x :: Int,_ :: Int)],odd x :: Bool)
+(p || q :: Bool,[(q :: Bool,q :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not (not _) :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ || _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
+(p || p :: Bool,[(p :: Bool,p :: Bool)],p :: Bool)
+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
+(p || p :: Bool,[(p :: Bool,False :: Bool)],p :: Bool)
+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
+(p || p :: Bool,[(p :: Bool,True :: Bool)],p :: Bool)
+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
+(p || p :: Bool,[(p :: Bool,not _ :: Bool)],p :: Bool)
+(p && q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,q :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not p :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not False :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not True :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not (not _) :: Bool)],q || p :: Bool)
+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ || _ :: Bool)],q || p :: Bool)
+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q && p :: Bool)
+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q && p :: Bool)
+(tail (x:xs) :: [Int],[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],xs :: [Int])
+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],xs :: [Int])
+(xs ++ [] :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])
+([] ++ xs :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])
+(xs ++ [] :: [Int],[(xs :: [Int],[] :: [Int])],xs :: [Int])
+([] ++ xs :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],xs :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+(xs ++ [] :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_:_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x:(xs ++ ys) :: [Int])
+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x:(xs ++ ys) :: [Int])
+((xs ++ ys) ++ zs :: [Int],[(zs :: [Int],_ :: [Int]),(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int])],xs ++ (ys ++ zs) :: [Int])
+(sort (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],insert x (sort xs) :: [Int])
+(insert x [] :: [Int],[(x :: Int,_ :: Int)],[x] :: [Int])
+(insert x (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:x:xs :: [Int])
+(id x :: Int,[(x :: Int,y' :: Int)],x :: Int)
+(id x :: Int,[(x :: Int,-2 :: Int)],x :: Int)
+(f (g x) :: Int,[(x :: Int,x' :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,2 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id z :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (-1) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id y) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id 1) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (id x)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (id 0)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (id (id _))) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (negate _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (abs _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (_ + _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (head _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (ord _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (negate x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (negate 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (negate (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (abs x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (abs 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (abs (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (_ + x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (_ + 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (_ + id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (x + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (0 + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (_ * _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (f _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (head xs) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (head []) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (head (_:_)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (ord c) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (ord 'a') :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (id x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (id 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (id (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (negate _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (abs _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (head _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (ord _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (id x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (id 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (id (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (negate _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (abs _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (head _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (ord _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ * x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ * 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ * id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,f x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,f 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,f (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,y + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,1 + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id x + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 0 + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id _) + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,(_ + _) + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,g _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head ys :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head [0] :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head (_:xs) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head [_] :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head (_:_:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head (x:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head (0:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head (id _:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head (tail _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head (_ ++ _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord d :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord ' ' :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,z :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,-1 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id y :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 1 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id x) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id 0) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (id _)) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (negate _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (abs _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (_ + _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (head _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (ord _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,negate (id _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,abs (id _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ + id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,x + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,0 + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id _ + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,_ * _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,f _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head xs :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head [] :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,head (_:_) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord c :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,ord 'a' :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,z :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,-1 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id y :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id 1 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id x) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id 0) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+(f (g x) :: Int,[(x :: Int,id (id (id _)) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
+
+True
diff --git a/bench/pairs.hs b/bench/pairs.hs
--- a/bench/pairs.hs
+++ b/bench/pairs.hs
@@ -1,6 +1,6 @@
 -- pairs.hs -- a thousand pairs of expressions
 --
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 import System.Environment (getArgs)
diff --git a/bench/pairs.txt b/bench/pairs.txt
new file mode 100644
--- /dev/null
+++ b/bench/pairs.txt
@@ -0,0 +1,1001 @@
+(_ :: Int,_ :: Int)
+(_ :: Int,x :: Int)
+(_ :: Int,0 :: Int)
+(_ :: Int,id _ :: Int)
+(_ :: Int,_ :: Bool)
+(_ :: Int,_ :: Char)
+(_ :: Int,_ :: [Int])
+(x :: Int,_ :: Int)
+(0 :: Int,_ :: Int)
+(id _ :: Int,_ :: Int)
+(_ :: Bool,_ :: Int)
+(_ :: Char,_ :: Int)
+(_ :: [Int],_ :: Int)
+(_ :: Int,y :: Int)
+(_ :: Int,1 :: Int)
+(_ :: Int,id x :: Int)
+(_ :: Int,id 0 :: Int)
+(_ :: Int,id (id _) :: Int)
+(_ :: Int,negate _ :: Int)
+(_ :: Int,abs _ :: Int)
+(_ :: Int,_ + _ :: Int)
+(_ :: Int,head _ :: Int)
+(_ :: Int,ord _ :: Int)
+(_ :: Int,p :: Bool)
+(_ :: Int,False :: Bool)
+(_ :: Int,True :: Bool)
+(_ :: Int,not _ :: Bool)
+(_ :: Int,c :: Char)
+(_ :: Int,'a' :: Char)
+(_ :: Int,xs :: [Int])
+(_ :: Int,[] :: [Int])
+(_ :: Int,_:_ :: [Int])
+(_ :: Int,id :: Int -> Int)
+(_ :: Int,(+) :: Int -> Int -> Int)
+(x :: Int,x :: Int)
+(x :: Int,0 :: Int)
+(x :: Int,id _ :: Int)
+(x :: Int,_ :: Bool)
+(x :: Int,_ :: Char)
+(x :: Int,_ :: [Int])
+(0 :: Int,x :: Int)
+(0 :: Int,0 :: Int)
+(0 :: Int,id _ :: Int)
+(0 :: Int,_ :: Bool)
+(0 :: Int,_ :: Char)
+(0 :: Int,_ :: [Int])
+(id _ :: Int,x :: Int)
+(id _ :: Int,0 :: Int)
+(id _ :: Int,id _ :: Int)
+(id _ :: Int,_ :: Bool)
+(id _ :: Int,_ :: Char)
+(id _ :: Int,_ :: [Int])
+(_ :: Bool,x :: Int)
+(_ :: Bool,0 :: Int)
+(_ :: Bool,id _ :: Int)
+(_ :: Bool,_ :: Bool)
+(_ :: Bool,_ :: Char)
+(_ :: Bool,_ :: [Int])
+(_ :: Char,x :: Int)
+(_ :: Char,0 :: Int)
+(_ :: Char,id _ :: Int)
+(_ :: Char,_ :: Bool)
+(_ :: Char,_ :: Char)
+(_ :: Char,_ :: [Int])
+(_ :: [Int],x :: Int)
+(_ :: [Int],0 :: Int)
+(_ :: [Int],id _ :: Int)
+(_ :: [Int],_ :: Bool)
+(_ :: [Int],_ :: Char)
+(_ :: [Int],_ :: [Int])
+(y :: Int,_ :: Int)
+(1 :: Int,_ :: Int)
+(id x :: Int,_ :: Int)
+(id 0 :: Int,_ :: Int)
+(id (id _) :: Int,_ :: Int)
+(negate _ :: Int,_ :: Int)
+(abs _ :: Int,_ :: Int)
+(_ + _ :: Int,_ :: Int)
+(head _ :: Int,_ :: Int)
+(ord _ :: Int,_ :: Int)
+(p :: Bool,_ :: Int)
+(False :: Bool,_ :: Int)
+(True :: Bool,_ :: Int)
+(not _ :: Bool,_ :: Int)
+(c :: Char,_ :: Int)
+('a' :: Char,_ :: Int)
+(xs :: [Int],_ :: Int)
+([] :: [Int],_ :: Int)
+(_:_ :: [Int],_ :: Int)
+(id :: Int -> Int,_ :: Int)
+((+) :: Int -> Int -> Int,_ :: Int)
+(_ :: Int,z :: Int)
+(_ :: Int,-1 :: Int)
+(_ :: Int,id y :: Int)
+(_ :: Int,id 1 :: Int)
+(_ :: Int,id (id x) :: Int)
+(_ :: Int,id (id 0) :: Int)
+(_ :: Int,id (id (id _)) :: Int)
+(_ :: Int,id (negate _) :: Int)
+(_ :: Int,id (abs _) :: Int)
+(_ :: Int,id (_ + _) :: Int)
+(_ :: Int,id (head _) :: Int)
+(_ :: Int,id (ord _) :: Int)
+(_ :: Int,negate x :: Int)
+(_ :: Int,negate 0 :: Int)
+(_ :: Int,negate (id _) :: Int)
+(_ :: Int,abs x :: Int)
+(_ :: Int,abs 0 :: Int)
+(_ :: Int,abs (id _) :: Int)
+(_ :: Int,_ + x :: Int)
+(_ :: Int,_ + 0 :: Int)
+(_ :: Int,_ + id _ :: Int)
+(_ :: Int,x + _ :: Int)
+(_ :: Int,0 + _ :: Int)
+(_ :: Int,id _ + _ :: Int)
+(_ :: Int,_ * _ :: Int)
+(_ :: Int,f _ :: Int)
+(_ :: Int,head xs :: Int)
+(_ :: Int,head [] :: Int)
+(_ :: Int,head (_:_) :: Int)
+(_ :: Int,ord c :: Int)
+(_ :: Int,ord 'a' :: Int)
+(_ :: Int,q :: Bool)
+(_ :: Int,not p :: Bool)
+(_ :: Int,not False :: Bool)
+(_ :: Int,not True :: Bool)
+(_ :: Int,not (not _) :: Bool)
+(_ :: Int,_ || _ :: Bool)
+(_ :: Int,d :: Char)
+(_ :: Int,' ' :: Char)
+(_ :: Int,ys :: [Int])
+(_ :: Int,[0] :: [Int])
+(_ :: Int,_:xs :: [Int])
+(_ :: Int,[_] :: [Int])
+(_ :: Int,_:_:_ :: [Int])
+(_ :: Int,x:_ :: [Int])
+(_ :: Int,0:_ :: [Int])
+(_ :: Int,id _:_ :: [Int])
+(_ :: Int,tail _ :: [Int])
+(_ :: Int,_ ++ _ :: [Int])
+(_ :: Int,negate :: Int -> Int)
+(_ :: Int,abs :: Int -> Int)
+(_ :: Int,(_ +) :: Int -> Int)
+(_ :: Int,(*) :: Int -> Int -> Int)
+(_ :: Int,not :: Bool -> Bool)
+(_ :: Int,(||) :: Bool -> Bool -> Bool)
+(x :: Int,y :: Int)
+(x :: Int,1 :: Int)
+(x :: Int,id x :: Int)
+(x :: Int,id 0 :: Int)
+(x :: Int,id (id _) :: Int)
+(x :: Int,negate _ :: Int)
+(x :: Int,abs _ :: Int)
+(x :: Int,_ + _ :: Int)
+(x :: Int,head _ :: Int)
+(x :: Int,ord _ :: Int)
+(x :: Int,p :: Bool)
+(x :: Int,False :: Bool)
+(x :: Int,True :: Bool)
+(x :: Int,not _ :: Bool)
+(x :: Int,c :: Char)
+(x :: Int,'a' :: Char)
+(x :: Int,xs :: [Int])
+(x :: Int,[] :: [Int])
+(x :: Int,_:_ :: [Int])
+(x :: Int,id :: Int -> Int)
+(x :: Int,(+) :: Int -> Int -> Int)
+(0 :: Int,y :: Int)
+(0 :: Int,1 :: Int)
+(0 :: Int,id x :: Int)
+(0 :: Int,id 0 :: Int)
+(0 :: Int,id (id _) :: Int)
+(0 :: Int,negate _ :: Int)
+(0 :: Int,abs _ :: Int)
+(0 :: Int,_ + _ :: Int)
+(0 :: Int,head _ :: Int)
+(0 :: Int,ord _ :: Int)
+(0 :: Int,p :: Bool)
+(0 :: Int,False :: Bool)
+(0 :: Int,True :: Bool)
+(0 :: Int,not _ :: Bool)
+(0 :: Int,c :: Char)
+(0 :: Int,'a' :: Char)
+(0 :: Int,xs :: [Int])
+(0 :: Int,[] :: [Int])
+(0 :: Int,_:_ :: [Int])
+(0 :: Int,id :: Int -> Int)
+(0 :: Int,(+) :: Int -> Int -> Int)
+(id _ :: Int,y :: Int)
+(id _ :: Int,1 :: Int)
+(id _ :: Int,id x :: Int)
+(id _ :: Int,id 0 :: Int)
+(id _ :: Int,id (id _) :: Int)
+(id _ :: Int,negate _ :: Int)
+(id _ :: Int,abs _ :: Int)
+(id _ :: Int,_ + _ :: Int)
+(id _ :: Int,head _ :: Int)
+(id _ :: Int,ord _ :: Int)
+(id _ :: Int,p :: Bool)
+(id _ :: Int,False :: Bool)
+(id _ :: Int,True :: Bool)
+(id _ :: Int,not _ :: Bool)
+(id _ :: Int,c :: Char)
+(id _ :: Int,'a' :: Char)
+(id _ :: Int,xs :: [Int])
+(id _ :: Int,[] :: [Int])
+(id _ :: Int,_:_ :: [Int])
+(id _ :: Int,id :: Int -> Int)
+(id _ :: Int,(+) :: Int -> Int -> Int)
+(_ :: Bool,y :: Int)
+(_ :: Bool,1 :: Int)
+(_ :: Bool,id x :: Int)
+(_ :: Bool,id 0 :: Int)
+(_ :: Bool,id (id _) :: Int)
+(_ :: Bool,negate _ :: Int)
+(_ :: Bool,abs _ :: Int)
+(_ :: Bool,_ + _ :: Int)
+(_ :: Bool,head _ :: Int)
+(_ :: Bool,ord _ :: Int)
+(_ :: Bool,p :: Bool)
+(_ :: Bool,False :: Bool)
+(_ :: Bool,True :: Bool)
+(_ :: Bool,not _ :: Bool)
+(_ :: Bool,c :: Char)
+(_ :: Bool,'a' :: Char)
+(_ :: Bool,xs :: [Int])
+(_ :: Bool,[] :: [Int])
+(_ :: Bool,_:_ :: [Int])
+(_ :: Bool,id :: Int -> Int)
+(_ :: Bool,(+) :: Int -> Int -> Int)
+(_ :: Char,y :: Int)
+(_ :: Char,1 :: Int)
+(_ :: Char,id x :: Int)
+(_ :: Char,id 0 :: Int)
+(_ :: Char,id (id _) :: Int)
+(_ :: Char,negate _ :: Int)
+(_ :: Char,abs _ :: Int)
+(_ :: Char,_ + _ :: Int)
+(_ :: Char,head _ :: Int)
+(_ :: Char,ord _ :: Int)
+(_ :: Char,p :: Bool)
+(_ :: Char,False :: Bool)
+(_ :: Char,True :: Bool)
+(_ :: Char,not _ :: Bool)
+(_ :: Char,c :: Char)
+(_ :: Char,'a' :: Char)
+(_ :: Char,xs :: [Int])
+(_ :: Char,[] :: [Int])
+(_ :: Char,_:_ :: [Int])
+(_ :: Char,id :: Int -> Int)
+(_ :: Char,(+) :: Int -> Int -> Int)
+(_ :: [Int],y :: Int)
+(_ :: [Int],1 :: Int)
+(_ :: [Int],id x :: Int)
+(_ :: [Int],id 0 :: Int)
+(_ :: [Int],id (id _) :: Int)
+(_ :: [Int],negate _ :: Int)
+(_ :: [Int],abs _ :: Int)
+(_ :: [Int],_ + _ :: Int)
+(_ :: [Int],head _ :: Int)
+(_ :: [Int],ord _ :: Int)
+(_ :: [Int],p :: Bool)
+(_ :: [Int],False :: Bool)
+(_ :: [Int],True :: Bool)
+(_ :: [Int],not _ :: Bool)
+(_ :: [Int],c :: Char)
+(_ :: [Int],'a' :: Char)
+(_ :: [Int],xs :: [Int])
+(_ :: [Int],[] :: [Int])
+(_ :: [Int],_:_ :: [Int])
+(_ :: [Int],id :: Int -> Int)
+(_ :: [Int],(+) :: Int -> Int -> Int)
+(y :: Int,x :: Int)
+(y :: Int,0 :: Int)
+(y :: Int,id _ :: Int)
+(y :: Int,_ :: Bool)
+(y :: Int,_ :: Char)
+(y :: Int,_ :: [Int])
+(1 :: Int,x :: Int)
+(1 :: Int,0 :: Int)
+(1 :: Int,id _ :: Int)
+(1 :: Int,_ :: Bool)
+(1 :: Int,_ :: Char)
+(1 :: Int,_ :: [Int])
+(id x :: Int,x :: Int)
+(id x :: Int,0 :: Int)
+(id x :: Int,id _ :: Int)
+(id x :: Int,_ :: Bool)
+(id x :: Int,_ :: Char)
+(id x :: Int,_ :: [Int])
+(id 0 :: Int,x :: Int)
+(id 0 :: Int,0 :: Int)
+(id 0 :: Int,id _ :: Int)
+(id 0 :: Int,_ :: Bool)
+(id 0 :: Int,_ :: Char)
+(id 0 :: Int,_ :: [Int])
+(id (id _) :: Int,x :: Int)
+(id (id _) :: Int,0 :: Int)
+(id (id _) :: Int,id _ :: Int)
+(id (id _) :: Int,_ :: Bool)
+(id (id _) :: Int,_ :: Char)
+(id (id _) :: Int,_ :: [Int])
+(negate _ :: Int,x :: Int)
+(negate _ :: Int,0 :: Int)
+(negate _ :: Int,id _ :: Int)
+(negate _ :: Int,_ :: Bool)
+(negate _ :: Int,_ :: Char)
+(negate _ :: Int,_ :: [Int])
+(abs _ :: Int,x :: Int)
+(abs _ :: Int,0 :: Int)
+(abs _ :: Int,id _ :: Int)
+(abs _ :: Int,_ :: Bool)
+(abs _ :: Int,_ :: Char)
+(abs _ :: Int,_ :: [Int])
+(_ + _ :: Int,x :: Int)
+(_ + _ :: Int,0 :: Int)
+(_ + _ :: Int,id _ :: Int)
+(_ + _ :: Int,_ :: Bool)
+(_ + _ :: Int,_ :: Char)
+(_ + _ :: Int,_ :: [Int])
+(head _ :: Int,x :: Int)
+(head _ :: Int,0 :: Int)
+(head _ :: Int,id _ :: Int)
+(head _ :: Int,_ :: Bool)
+(head _ :: Int,_ :: Char)
+(head _ :: Int,_ :: [Int])
+(ord _ :: Int,x :: Int)
+(ord _ :: Int,0 :: Int)
+(ord _ :: Int,id _ :: Int)
+(ord _ :: Int,_ :: Bool)
+(ord _ :: Int,_ :: Char)
+(ord _ :: Int,_ :: [Int])
+(p :: Bool,x :: Int)
+(p :: Bool,0 :: Int)
+(p :: Bool,id _ :: Int)
+(p :: Bool,_ :: Bool)
+(p :: Bool,_ :: Char)
+(p :: Bool,_ :: [Int])
+(False :: Bool,x :: Int)
+(False :: Bool,0 :: Int)
+(False :: Bool,id _ :: Int)
+(False :: Bool,_ :: Bool)
+(False :: Bool,_ :: Char)
+(False :: Bool,_ :: [Int])
+(True :: Bool,x :: Int)
+(True :: Bool,0 :: Int)
+(True :: Bool,id _ :: Int)
+(True :: Bool,_ :: Bool)
+(True :: Bool,_ :: Char)
+(True :: Bool,_ :: [Int])
+(not _ :: Bool,x :: Int)
+(not _ :: Bool,0 :: Int)
+(not _ :: Bool,id _ :: Int)
+(not _ :: Bool,_ :: Bool)
+(not _ :: Bool,_ :: Char)
+(not _ :: Bool,_ :: [Int])
+(c :: Char,x :: Int)
+(c :: Char,0 :: Int)
+(c :: Char,id _ :: Int)
+(c :: Char,_ :: Bool)
+(c :: Char,_ :: Char)
+(c :: Char,_ :: [Int])
+('a' :: Char,x :: Int)
+('a' :: Char,0 :: Int)
+('a' :: Char,id _ :: Int)
+('a' :: Char,_ :: Bool)
+('a' :: Char,_ :: Char)
+('a' :: Char,_ :: [Int])
+(xs :: [Int],x :: Int)
+(xs :: [Int],0 :: Int)
+(xs :: [Int],id _ :: Int)
+(xs :: [Int],_ :: Bool)
+(xs :: [Int],_ :: Char)
+(xs :: [Int],_ :: [Int])
+([] :: [Int],x :: Int)
+([] :: [Int],0 :: Int)
+([] :: [Int],id _ :: Int)
+([] :: [Int],_ :: Bool)
+([] :: [Int],_ :: Char)
+([] :: [Int],_ :: [Int])
+(_:_ :: [Int],x :: Int)
+(_:_ :: [Int],0 :: Int)
+(_:_ :: [Int],id _ :: Int)
+(_:_ :: [Int],_ :: Bool)
+(_:_ :: [Int],_ :: Char)
+(_:_ :: [Int],_ :: [Int])
+(id :: Int -> Int,x :: Int)
+(id :: Int -> Int,0 :: Int)
+(id :: Int -> Int,id _ :: Int)
+(id :: Int -> Int,_ :: Bool)
+(id :: Int -> Int,_ :: Char)
+(id :: Int -> Int,_ :: [Int])
+((+) :: Int -> Int -> Int,x :: Int)
+((+) :: Int -> Int -> Int,0 :: Int)
+((+) :: Int -> Int -> Int,id _ :: Int)
+((+) :: Int -> Int -> Int,_ :: Bool)
+((+) :: Int -> Int -> Int,_ :: Char)
+((+) :: Int -> Int -> Int,_ :: [Int])
+(z :: Int,_ :: Int)
+(-1 :: Int,_ :: Int)
+(id y :: Int,_ :: Int)
+(id 1 :: Int,_ :: Int)
+(id (id x) :: Int,_ :: Int)
+(id (id 0) :: Int,_ :: Int)
+(id (id (id _)) :: Int,_ :: Int)
+(id (negate _) :: Int,_ :: Int)
+(id (abs _) :: Int,_ :: Int)
+(id (_ + _) :: Int,_ :: Int)
+(id (head _) :: Int,_ :: Int)
+(id (ord _) :: Int,_ :: Int)
+(negate x :: Int,_ :: Int)
+(negate 0 :: Int,_ :: Int)
+(negate (id _) :: Int,_ :: Int)
+(abs x :: Int,_ :: Int)
+(abs 0 :: Int,_ :: Int)
+(abs (id _) :: Int,_ :: Int)
+(_ + x :: Int,_ :: Int)
+(_ + 0 :: Int,_ :: Int)
+(_ + id _ :: Int,_ :: Int)
+(x + _ :: Int,_ :: Int)
+(0 + _ :: Int,_ :: Int)
+(id _ + _ :: Int,_ :: Int)
+(_ * _ :: Int,_ :: Int)
+(f _ :: Int,_ :: Int)
+(head xs :: Int,_ :: Int)
+(head [] :: Int,_ :: Int)
+(head (_:_) :: Int,_ :: Int)
+(ord c :: Int,_ :: Int)
+(ord 'a' :: Int,_ :: Int)
+(q :: Bool,_ :: Int)
+(not p :: Bool,_ :: Int)
+(not False :: Bool,_ :: Int)
+(not True :: Bool,_ :: Int)
+(not (not _) :: Bool,_ :: Int)
+(_ || _ :: Bool,_ :: Int)
+(d :: Char,_ :: Int)
+(' ' :: Char,_ :: Int)
+(ys :: [Int],_ :: Int)
+([0] :: [Int],_ :: Int)
+(_:xs :: [Int],_ :: Int)
+([_] :: [Int],_ :: Int)
+(_:_:_ :: [Int],_ :: Int)
+(x:_ :: [Int],_ :: Int)
+(0:_ :: [Int],_ :: Int)
+(id _:_ :: [Int],_ :: Int)
+(tail _ :: [Int],_ :: Int)
+(_ ++ _ :: [Int],_ :: Int)
+(negate :: Int -> Int,_ :: Int)
+(abs :: Int -> Int,_ :: Int)
+((_ +) :: Int -> Int,_ :: Int)
+((*) :: Int -> Int -> Int,_ :: Int)
+(not :: Bool -> Bool,_ :: Int)
+((||) :: Bool -> Bool -> Bool,_ :: Int)
+(_ :: Int,x' :: Int)
+(_ :: Int,2 :: Int)
+(_ :: Int,id z :: Int)
+(_ :: Int,id (-1) :: Int)
+(_ :: Int,id (id y) :: Int)
+(_ :: Int,id (id 1) :: Int)
+(_ :: Int,id (id (id x)) :: Int)
+(_ :: Int,id (id (id 0)) :: Int)
+(_ :: Int,id (id (id (id _))) :: Int)
+(_ :: Int,id (id (negate _)) :: Int)
+(_ :: Int,id (id (abs _)) :: Int)
+(_ :: Int,id (id (_ + _)) :: Int)
+(_ :: Int,id (id (head _)) :: Int)
+(_ :: Int,id (id (ord _)) :: Int)
+(_ :: Int,id (negate x) :: Int)
+(_ :: Int,id (negate 0) :: Int)
+(_ :: Int,id (negate (id _)) :: Int)
+(_ :: Int,id (abs x) :: Int)
+(_ :: Int,id (abs 0) :: Int)
+(_ :: Int,id (abs (id _)) :: Int)
+(_ :: Int,id (_ + x) :: Int)
+(_ :: Int,id (_ + 0) :: Int)
+(_ :: Int,id (_ + id _) :: Int)
+(_ :: Int,id (x + _) :: Int)
+(_ :: Int,id (0 + _) :: Int)
+(_ :: Int,id (id _ + _) :: Int)
+(_ :: Int,id (_ * _) :: Int)
+(_ :: Int,id (f _) :: Int)
+(_ :: Int,id (head xs) :: Int)
+(_ :: Int,id (head []) :: Int)
+(_ :: Int,id (head (_:_)) :: Int)
+(_ :: Int,id (ord c) :: Int)
+(_ :: Int,id (ord 'a') :: Int)
+(_ :: Int,negate y :: Int)
+(_ :: Int,negate 1 :: Int)
+(_ :: Int,negate (id x) :: Int)
+(_ :: Int,negate (id 0) :: Int)
+(_ :: Int,negate (id (id _)) :: Int)
+(_ :: Int,negate (negate _) :: Int)
+(_ :: Int,negate (abs _) :: Int)
+(_ :: Int,negate (_ + _) :: Int)
+(_ :: Int,negate (head _) :: Int)
+(_ :: Int,negate (ord _) :: Int)
+(_ :: Int,abs y :: Int)
+(_ :: Int,abs 1 :: Int)
+(_ :: Int,abs (id x) :: Int)
+(_ :: Int,abs (id 0) :: Int)
+(_ :: Int,abs (id (id _)) :: Int)
+(_ :: Int,abs (negate _) :: Int)
+(_ :: Int,abs (abs _) :: Int)
+(_ :: Int,abs (_ + _) :: Int)
+(_ :: Int,abs (head _) :: Int)
+(_ :: Int,abs (ord _) :: Int)
+(_ :: Int,_ + y :: Int)
+(_ :: Int,_ + 1 :: Int)
+(_ :: Int,_ + id x :: Int)
+(_ :: Int,_ + id 0 :: Int)
+(_ :: Int,_ + id (id _) :: Int)
+(_ :: Int,_ + negate _ :: Int)
+(_ :: Int,_ + abs _ :: Int)
+(_ :: Int,_ + (_ + _) :: Int)
+(_ :: Int,_ + head _ :: Int)
+(_ :: Int,_ + ord _ :: Int)
+(_ :: Int,x + x :: Int)
+(_ :: Int,x + 0 :: Int)
+(_ :: Int,x + id _ :: Int)
+(_ :: Int,0 + x :: Int)
+(_ :: Int,0 + 0 :: Int)
+(_ :: Int,0 + id _ :: Int)
+(_ :: Int,id _ + x :: Int)
+(_ :: Int,id _ + 0 :: Int)
+(_ :: Int,id _ + id _ :: Int)
+(_ :: Int,_ * x :: Int)
+(_ :: Int,_ * 0 :: Int)
+(_ :: Int,_ * id _ :: Int)
+(_ :: Int,f x :: Int)
+(_ :: Int,f 0 :: Int)
+(_ :: Int,f (id _) :: Int)
+(_ :: Int,y + _ :: Int)
+(_ :: Int,1 + _ :: Int)
+(_ :: Int,id x + _ :: Int)
+(_ :: Int,id 0 + _ :: Int)
+(_ :: Int,id (id _) + _ :: Int)
+(_ :: Int,negate _ + _ :: Int)
+(_ :: Int,abs _ + _ :: Int)
+(_ :: Int,(_ + _) + _ :: Int)
+(_ :: Int,head _ + _ :: Int)
+(_ :: Int,ord _ + _ :: Int)
+(_ :: Int,x * _ :: Int)
+(_ :: Int,0 * _ :: Int)
+(_ :: Int,id _ * _ :: Int)
+(_ :: Int,g _ :: Int)
+(_ :: Int,head ys :: Int)
+(_ :: Int,head [0] :: Int)
+(_ :: Int,head (_:xs) :: Int)
+(_ :: Int,head [_] :: Int)
+(_ :: Int,head (_:_:_) :: Int)
+(_ :: Int,head (x:_) :: Int)
+(_ :: Int,head (0:_) :: Int)
+(_ :: Int,head (id _:_) :: Int)
+(_ :: Int,head (tail _) :: Int)
+(_ :: Int,head (_ ++ _) :: Int)
+(_ :: Int,ord d :: Int)
+(_ :: Int,ord ' ' :: Int)
+(_ :: Int,r :: Bool)
+(_ :: Int,not q :: Bool)
+(_ :: Int,not (not p) :: Bool)
+(_ :: Int,not (not False) :: Bool)
+(_ :: Int,not (not True) :: Bool)
+(_ :: Int,not (not (not _)) :: Bool)
+(_ :: Int,not (_ || _) :: Bool)
+(_ :: Int,_ || p :: Bool)
+(_ :: Int,_ || False :: Bool)
+(_ :: Int,_ || True :: Bool)
+(_ :: Int,_ || not _ :: Bool)
+(_ :: Int,p || _ :: Bool)
+(_ :: Int,False || _ :: Bool)
+(_ :: Int,True || _ :: Bool)
+(_ :: Int,not _ || _ :: Bool)
+(_ :: Int,_ && _ :: Bool)
+(_ :: Int,_ == _ :: Bool)
+(_ :: Int,_ == _ :: Bool)
+(_ :: Int,odd _ :: Bool)
+(_ :: Int,even _ :: Bool)
+(_ :: Int,elem _ _ :: Bool)
+(_ :: Int,e :: Char)
+(_ :: Int,'b' :: Char)
+(_ :: Int,zs :: [Int])
+(_ :: Int,[0,0] :: [Int])
+(_ :: Int,[1] :: [Int])
+(_ :: Int,_:ys :: [Int])
+(_ :: Int,_:[0] :: [Int])
+(_ :: Int,_:_:xs :: [Int])
+(_ :: Int,[_,_] :: [Int])
+(_ :: Int,_:_:_:_ :: [Int])
+(_ :: Int,_:x:_ :: [Int])
+(_ :: Int,_:0:_ :: [Int])
+(_ :: Int,_:id _:_ :: [Int])
+(_ :: Int,_:tail _ :: [Int])
+(_ :: Int,_:(_ ++ _) :: [Int])
+(_ :: Int,x:xs :: [Int])
+(_ :: Int,[x] :: [Int])
+(_ :: Int,x:_:_ :: [Int])
+(_ :: Int,0:xs :: [Int])
+(_ :: Int,[0] :: [Int])
+(_ :: Int,0:_:_ :: [Int])
+(_ :: Int,id _:xs :: [Int])
+(_ :: Int,[id _] :: [Int])
+(_ :: Int,id _:_:_ :: [Int])
+(_ :: Int,y:_ :: [Int])
+(_ :: Int,1:_ :: [Int])
+(_ :: Int,id x:_ :: [Int])
+(_ :: Int,id 0:_ :: [Int])
+(_ :: Int,id (id _):_ :: [Int])
+(_ :: Int,negate _:_ :: [Int])
+(_ :: Int,abs _:_ :: [Int])
+(_ :: Int,_ + _:_ :: [Int])
+(_ :: Int,head _:_ :: [Int])
+(_ :: Int,ord _:_ :: [Int])
+(_ :: Int,tail xs :: [Int])
+(_ :: Int,tail [] :: [Int])
+(_ :: Int,tail (_:_) :: [Int])
+(_ :: Int,_ ++ xs :: [Int])
+(_ :: Int,_ ++ [] :: [Int])
+(_ :: Int,_ ++ (_:_) :: [Int])
+(_ :: Int,xs ++ _ :: [Int])
+(_ :: Int,[] ++ _ :: [Int])
+(_ :: Int,(_:_) ++ _ :: [Int])
+(_ :: Int,sort _ :: [Int])
+(_ :: Int,insert _ _ :: [Int])
+(_ :: Int,(x +) :: Int -> Int)
+(_ :: Int,(0 +) :: Int -> Int)
+(_ :: Int,(id _ +) :: Int -> Int)
+(_ :: Int,(_ *) :: Int -> Int)
+(_ :: Int,f :: Int -> Int)
+(_ :: Int,(_ ||) :: Bool -> Bool)
+(_ :: Int,(&&) :: Bool -> Bool -> Bool)
+(x :: Int,z :: Int)
+(x :: Int,-1 :: Int)
+(x :: Int,id y :: Int)
+(x :: Int,id 1 :: Int)
+(x :: Int,id (id x) :: Int)
+(x :: Int,id (id 0) :: Int)
+(x :: Int,id (id (id _)) :: Int)
+(x :: Int,id (negate _) :: Int)
+(x :: Int,id (abs _) :: Int)
+(x :: Int,id (_ + _) :: Int)
+(x :: Int,id (head _) :: Int)
+(x :: Int,id (ord _) :: Int)
+(x :: Int,negate x :: Int)
+(x :: Int,negate 0 :: Int)
+(x :: Int,negate (id _) :: Int)
+(x :: Int,abs x :: Int)
+(x :: Int,abs 0 :: Int)
+(x :: Int,abs (id _) :: Int)
+(x :: Int,_ + x :: Int)
+(x :: Int,_ + 0 :: Int)
+(x :: Int,_ + id _ :: Int)
+(x :: Int,x + _ :: Int)
+(x :: Int,0 + _ :: Int)
+(x :: Int,id _ + _ :: Int)
+(x :: Int,_ * _ :: Int)
+(x :: Int,f _ :: Int)
+(x :: Int,head xs :: Int)
+(x :: Int,head [] :: Int)
+(x :: Int,head (_:_) :: Int)
+(x :: Int,ord c :: Int)
+(x :: Int,ord 'a' :: Int)
+(x :: Int,q :: Bool)
+(x :: Int,not p :: Bool)
+(x :: Int,not False :: Bool)
+(x :: Int,not True :: Bool)
+(x :: Int,not (not _) :: Bool)
+(x :: Int,_ || _ :: Bool)
+(x :: Int,d :: Char)
+(x :: Int,' ' :: Char)
+(x :: Int,ys :: [Int])
+(x :: Int,[0] :: [Int])
+(x :: Int,_:xs :: [Int])
+(x :: Int,[_] :: [Int])
+(x :: Int,_:_:_ :: [Int])
+(x :: Int,x:_ :: [Int])
+(x :: Int,0:_ :: [Int])
+(x :: Int,id _:_ :: [Int])
+(x :: Int,tail _ :: [Int])
+(x :: Int,_ ++ _ :: [Int])
+(x :: Int,negate :: Int -> Int)
+(x :: Int,abs :: Int -> Int)
+(x :: Int,(_ +) :: Int -> Int)
+(x :: Int,(*) :: Int -> Int -> Int)
+(x :: Int,not :: Bool -> Bool)
+(x :: Int,(||) :: Bool -> Bool -> Bool)
+(0 :: Int,z :: Int)
+(0 :: Int,-1 :: Int)
+(0 :: Int,id y :: Int)
+(0 :: Int,id 1 :: Int)
+(0 :: Int,id (id x) :: Int)
+(0 :: Int,id (id 0) :: Int)
+(0 :: Int,id (id (id _)) :: Int)
+(0 :: Int,id (negate _) :: Int)
+(0 :: Int,id (abs _) :: Int)
+(0 :: Int,id (_ + _) :: Int)
+(0 :: Int,id (head _) :: Int)
+(0 :: Int,id (ord _) :: Int)
+(0 :: Int,negate x :: Int)
+(0 :: Int,negate 0 :: Int)
+(0 :: Int,negate (id _) :: Int)
+(0 :: Int,abs x :: Int)
+(0 :: Int,abs 0 :: Int)
+(0 :: Int,abs (id _) :: Int)
+(0 :: Int,_ + x :: Int)
+(0 :: Int,_ + 0 :: Int)
+(0 :: Int,_ + id _ :: Int)
+(0 :: Int,x + _ :: Int)
+(0 :: Int,0 + _ :: Int)
+(0 :: Int,id _ + _ :: Int)
+(0 :: Int,_ * _ :: Int)
+(0 :: Int,f _ :: Int)
+(0 :: Int,head xs :: Int)
+(0 :: Int,head [] :: Int)
+(0 :: Int,head (_:_) :: Int)
+(0 :: Int,ord c :: Int)
+(0 :: Int,ord 'a' :: Int)
+(0 :: Int,q :: Bool)
+(0 :: Int,not p :: Bool)
+(0 :: Int,not False :: Bool)
+(0 :: Int,not True :: Bool)
+(0 :: Int,not (not _) :: Bool)
+(0 :: Int,_ || _ :: Bool)
+(0 :: Int,d :: Char)
+(0 :: Int,' ' :: Char)
+(0 :: Int,ys :: [Int])
+(0 :: Int,[0] :: [Int])
+(0 :: Int,_:xs :: [Int])
+(0 :: Int,[_] :: [Int])
+(0 :: Int,_:_:_ :: [Int])
+(0 :: Int,x:_ :: [Int])
+(0 :: Int,0:_ :: [Int])
+(0 :: Int,id _:_ :: [Int])
+(0 :: Int,tail _ :: [Int])
+(0 :: Int,_ ++ _ :: [Int])
+(0 :: Int,negate :: Int -> Int)
+(0 :: Int,abs :: Int -> Int)
+(0 :: Int,(_ +) :: Int -> Int)
+(0 :: Int,(*) :: Int -> Int -> Int)
+(0 :: Int,not :: Bool -> Bool)
+(0 :: Int,(||) :: Bool -> Bool -> Bool)
+(id _ :: Int,z :: Int)
+(id _ :: Int,-1 :: Int)
+(id _ :: Int,id y :: Int)
+(id _ :: Int,id 1 :: Int)
+(id _ :: Int,id (id x) :: Int)
+(id _ :: Int,id (id 0) :: Int)
+(id _ :: Int,id (id (id _)) :: Int)
+(id _ :: Int,id (negate _) :: Int)
+(id _ :: Int,id (abs _) :: Int)
+(id _ :: Int,id (_ + _) :: Int)
+(id _ :: Int,id (head _) :: Int)
+(id _ :: Int,id (ord _) :: Int)
+(id _ :: Int,negate x :: Int)
+(id _ :: Int,negate 0 :: Int)
+(id _ :: Int,negate (id _) :: Int)
+(id _ :: Int,abs x :: Int)
+(id _ :: Int,abs 0 :: Int)
+(id _ :: Int,abs (id _) :: Int)
+(id _ :: Int,_ + x :: Int)
+(id _ :: Int,_ + 0 :: Int)
+(id _ :: Int,_ + id _ :: Int)
+(id _ :: Int,x + _ :: Int)
+(id _ :: Int,0 + _ :: Int)
+(id _ :: Int,id _ + _ :: Int)
+(id _ :: Int,_ * _ :: Int)
+(id _ :: Int,f _ :: Int)
+(id _ :: Int,head xs :: Int)
+(id _ :: Int,head [] :: Int)
+(id _ :: Int,head (_:_) :: Int)
+(id _ :: Int,ord c :: Int)
+(id _ :: Int,ord 'a' :: Int)
+(id _ :: Int,q :: Bool)
+(id _ :: Int,not p :: Bool)
+(id _ :: Int,not False :: Bool)
+(id _ :: Int,not True :: Bool)
+(id _ :: Int,not (not _) :: Bool)
+(id _ :: Int,_ || _ :: Bool)
+(id _ :: Int,d :: Char)
+(id _ :: Int,' ' :: Char)
+(id _ :: Int,ys :: [Int])
+(id _ :: Int,[0] :: [Int])
+(id _ :: Int,_:xs :: [Int])
+(id _ :: Int,[_] :: [Int])
+(id _ :: Int,_:_:_ :: [Int])
+(id _ :: Int,x:_ :: [Int])
+(id _ :: Int,0:_ :: [Int])
+(id _ :: Int,id _:_ :: [Int])
+(id _ :: Int,tail _ :: [Int])
+(id _ :: Int,_ ++ _ :: [Int])
+(id _ :: Int,negate :: Int -> Int)
+(id _ :: Int,abs :: Int -> Int)
+(id _ :: Int,(_ +) :: Int -> Int)
+(id _ :: Int,(*) :: Int -> Int -> Int)
+(id _ :: Int,not :: Bool -> Bool)
+(id _ :: Int,(||) :: Bool -> Bool -> Bool)
+(_ :: Bool,z :: Int)
+(_ :: Bool,-1 :: Int)
+(_ :: Bool,id y :: Int)
+(_ :: Bool,id 1 :: Int)
+(_ :: Bool,id (id x) :: Int)
+(_ :: Bool,id (id 0) :: Int)
+(_ :: Bool,id (id (id _)) :: Int)
+(_ :: Bool,id (negate _) :: Int)
+(_ :: Bool,id (abs _) :: Int)
+(_ :: Bool,id (_ + _) :: Int)
+(_ :: Bool,id (head _) :: Int)
+(_ :: Bool,id (ord _) :: Int)
+(_ :: Bool,negate x :: Int)
+(_ :: Bool,negate 0 :: Int)
+(_ :: Bool,negate (id _) :: Int)
+(_ :: Bool,abs x :: Int)
+(_ :: Bool,abs 0 :: Int)
+(_ :: Bool,abs (id _) :: Int)
+(_ :: Bool,_ + x :: Int)
+(_ :: Bool,_ + 0 :: Int)
+(_ :: Bool,_ + id _ :: Int)
+(_ :: Bool,x + _ :: Int)
+(_ :: Bool,0 + _ :: Int)
+(_ :: Bool,id _ + _ :: Int)
+(_ :: Bool,_ * _ :: Int)
+(_ :: Bool,f _ :: Int)
+(_ :: Bool,head xs :: Int)
+(_ :: Bool,head [] :: Int)
+(_ :: Bool,head (_:_) :: Int)
+(_ :: Bool,ord c :: Int)
+(_ :: Bool,ord 'a' :: Int)
+(_ :: Bool,q :: Bool)
+(_ :: Bool,not p :: Bool)
+(_ :: Bool,not False :: Bool)
+(_ :: Bool,not True :: Bool)
+(_ :: Bool,not (not _) :: Bool)
+(_ :: Bool,_ || _ :: Bool)
+(_ :: Bool,d :: Char)
+(_ :: Bool,' ' :: Char)
+(_ :: Bool,ys :: [Int])
+(_ :: Bool,[0] :: [Int])
+(_ :: Bool,_:xs :: [Int])
+(_ :: Bool,[_] :: [Int])
+(_ :: Bool,_:_:_ :: [Int])
+(_ :: Bool,x:_ :: [Int])
+(_ :: Bool,0:_ :: [Int])
+(_ :: Bool,id _:_ :: [Int])
+(_ :: Bool,tail _ :: [Int])
+(_ :: Bool,_ ++ _ :: [Int])
+(_ :: Bool,negate :: Int -> Int)
+(_ :: Bool,abs :: Int -> Int)
+(_ :: Bool,(_ +) :: Int -> Int)
+(_ :: Bool,(*) :: Int -> Int -> Int)
+(_ :: Bool,not :: Bool -> Bool)
+(_ :: Bool,(||) :: Bool -> Bool -> Bool)
+(_ :: Char,z :: Int)
+(_ :: Char,-1 :: Int)
+(_ :: Char,id y :: Int)
+(_ :: Char,id 1 :: Int)
+(_ :: Char,id (id x) :: Int)
+(_ :: Char,id (id 0) :: Int)
+(_ :: Char,id (id (id _)) :: Int)
+(_ :: Char,id (negate _) :: Int)
+(_ :: Char,id (abs _) :: Int)
+(_ :: Char,id (_ + _) :: Int)
+(_ :: Char,id (head _) :: Int)
+(_ :: Char,id (ord _) :: Int)
+(_ :: Char,negate x :: Int)
+(_ :: Char,negate 0 :: Int)
+(_ :: Char,negate (id _) :: Int)
+(_ :: Char,abs x :: Int)
+(_ :: Char,abs 0 :: Int)
+(_ :: Char,abs (id _) :: Int)
+(_ :: Char,_ + x :: Int)
+(_ :: Char,_ + 0 :: Int)
+(_ :: Char,_ + id _ :: Int)
+(_ :: Char,x + _ :: Int)
+(_ :: Char,0 + _ :: Int)
+(_ :: Char,id _ + _ :: Int)
+(_ :: Char,_ * _ :: Int)
+(_ :: Char,f _ :: Int)
+(_ :: Char,head xs :: Int)
+(_ :: Char,head [] :: Int)
+(_ :: Char,head (_:_) :: Int)
+(_ :: Char,ord c :: Int)
+(_ :: Char,ord 'a' :: Int)
+(_ :: Char,q :: Bool)
+(_ :: Char,not p :: Bool)
+(_ :: Char,not False :: Bool)
+(_ :: Char,not True :: Bool)
+(_ :: Char,not (not _) :: Bool)
+(_ :: Char,_ || _ :: Bool)
+(_ :: Char,d :: Char)
+(_ :: Char,' ' :: Char)
+(_ :: Char,ys :: [Int])
+(_ :: Char,[0] :: [Int])
+(_ :: Char,_:xs :: [Int])
+(_ :: Char,[_] :: [Int])
+(_ :: Char,_:_:_ :: [Int])
+(_ :: Char,x:_ :: [Int])
+(_ :: Char,0:_ :: [Int])
+(_ :: Char,id _:_ :: [Int])
+(_ :: Char,tail _ :: [Int])
+(_ :: Char,_ ++ _ :: [Int])
+(_ :: Char,negate :: Int -> Int)
+(_ :: Char,abs :: Int -> Int)
+(_ :: Char,(_ +) :: Int -> Int)
+(_ :: Char,(*) :: Int -> Int -> Int)
+(_ :: Char,not :: Bool -> Bool)
+(_ :: Char,(||) :: Bool -> Bool -> Bool)
+(_ :: [Int],z :: Int)
+(_ :: [Int],-1 :: Int)
+(_ :: [Int],id y :: Int)
+(_ :: [Int],id 1 :: Int)
+(_ :: [Int],id (id x) :: Int)
+(_ :: [Int],id (id 0) :: Int)
+(_ :: [Int],id (id (id _)) :: Int)
+(_ :: [Int],id (negate _) :: Int)
+(_ :: [Int],id (abs _) :: Int)
+(_ :: [Int],id (_ + _) :: Int)
+(_ :: [Int],id (head _) :: Int)
+(_ :: [Int],id (ord _) :: Int)
+(_ :: [Int],negate x :: Int)
+(_ :: [Int],negate 0 :: Int)
+(_ :: [Int],negate (id _) :: Int)
+(_ :: [Int],abs x :: Int)
+(_ :: [Int],abs 0 :: Int)
+(_ :: [Int],abs (id _) :: Int)
+(_ :: [Int],_ + x :: Int)
+(_ :: [Int],_ + 0 :: Int)
+(_ :: [Int],_ + id _ :: Int)
+(_ :: [Int],x + _ :: Int)
+(_ :: [Int],0 + _ :: Int)
+(_ :: [Int],id _ + _ :: Int)
+(_ :: [Int],_ * _ :: Int)
+(_ :: [Int],f _ :: Int)
+(_ :: [Int],head xs :: Int)
+(_ :: [Int],head [] :: Int)
+(_ :: [Int],head (_:_) :: Int)
+(_ :: [Int],ord c :: Int)
+(_ :: [Int],ord 'a' :: Int)
+(_ :: [Int],q :: Bool)
+(_ :: [Int],not p :: Bool)
+(_ :: [Int],not False :: Bool)
+(_ :: [Int],not True :: Bool)
+(_ :: [Int],not (not _) :: Bool)
+(_ :: [Int],_ || _ :: Bool)
+(_ :: [Int],d :: Char)
+(_ :: [Int],' ' :: Char)
+(_ :: [Int],ys :: [Int])
+(_ :: [Int],[0] :: [Int])
+(_ :: [Int],_:xs :: [Int])
+(_ :: [Int],[_] :: [Int])
+(_ :: [Int],_:_:_ :: [Int])
+(_ :: [Int],x:_ :: [Int])
+(_ :: [Int],0:_ :: [Int])
+(_ :: [Int],id _:_ :: [Int])
+(_ :: [Int],tail _ :: [Int])
+(_ :: [Int],_ ++ _ :: [Int])
+(_ :: [Int],negate :: Int -> Int)
+(_ :: [Int],abs :: Int -> Int)
+(_ :: [Int],(_ +) :: Int -> Int)
+(_ :: [Int],(*) :: Int -> Int -> Int)
+(_ :: [Int],not :: Bool -> Bool)
+(_ :: [Int],(||) :: Bool -> Bool -> Bool)
+(y :: Int,y :: Int)
+(y :: Int,1 :: Int)
+(y :: Int,id x :: Int)
+(y :: Int,id 0 :: Int)
+(y :: Int,id (id _) :: Int)
+(y :: Int,negate _ :: Int)
+(y :: Int,abs _ :: Int)
+(y :: Int,_ + _ :: Int)
+(y :: Int,head _ :: Int)
+(y :: Int,ord _ :: Int)
+(y :: Int,p :: Bool)
+(y :: Int,False :: Bool)
+(y :: Int,True :: Bool)
+(y :: Int,not _ :: Bool)
+(y :: Int,c :: Char)
+(y :: Int,'a' :: Char)
+(y :: Int,xs :: [Int])
+(y :: Int,[] :: [Int])
+(y :: Int,_:_ :: [Int])
+(y :: Int,id :: Int -> Int)
+(y :: Int,(+) :: Int -> Int -> Int)
+(1 :: Int,y :: Int)
+(1 :: Int,1 :: Int)
+(1 :: Int,id x :: Int)
+(1 :: Int,id 0 :: Int)
+(1 :: Int,id (id _) :: Int)
+(1 :: Int,negate _ :: Int)
+(1 :: Int,abs _ :: Int)
+(1 :: Int,_ + _ :: Int)
+(1 :: Int,head _ :: Int)
+(1 :: Int,ord _ :: Int)
+(1 :: Int,p :: Bool)
+(1 :: Int,False :: Bool)
+(1 :: Int,True :: Bool)
+(1 :: Int,not _ :: Bool)
+(1 :: Int,c :: Char)
+(1 :: Int,'a' :: Char)
+(1 :: Int,xs :: [Int])
+(1 :: Int,[] :: [Int])
+(1 :: Int,_:_ :: [Int])
+
diff --git a/bench/runtime/zero/bench/compare.runtime b/bench/runtime/zero/bench/compare.runtime
--- a/bench/runtime/zero/bench/compare.runtime
+++ b/bench/runtime/zero/bench/compare.runtime
@@ -1,1 +1,1 @@
-0.02
+0.05
diff --git a/bench/runtime/zero/bench/match-list.runtime b/bench/runtime/zero/bench/match-list.runtime
--- a/bench/runtime/zero/bench/match-list.runtime
+++ b/bench/runtime/zero/bench/match-list.runtime
@@ -1,1 +1,1 @@
-2.36
+2.28
diff --git a/bench/runtime/zero/bench/match-noop.runtime b/bench/runtime/zero/bench/match-noop.runtime
--- a/bench/runtime/zero/bench/match-noop.runtime
+++ b/bench/runtime/zero/bench/match-noop.runtime
@@ -1,1 +1,1 @@
-2.00
+1.70
diff --git a/bench/runtime/zero/bench/match-triexpr.runtime b/bench/runtime/zero/bench/match-triexpr.runtime
--- a/bench/runtime/zero/bench/match-triexpr.runtime
+++ b/bench/runtime/zero/bench/match-triexpr.runtime
@@ -1,1 +1,1 @@
-2.59
+2.23
diff --git a/bench/runtime/zero/bench/pairs.runtime b/bench/runtime/zero/bench/pairs.runtime
--- a/bench/runtime/zero/bench/pairs.runtime
+++ b/bench/runtime/zero/bench/pairs.runtime
@@ -1,1 +1,1 @@
-0.01
+0.04
diff --git a/bench/runtime/zero/bench/sort.runtime b/bench/runtime/zero/bench/sort.runtime
--- a/bench/runtime/zero/bench/sort.runtime
+++ b/bench/runtime/zero/bench/sort.runtime
@@ -1,1 +1,1 @@
-0.19
+0.23
diff --git a/bench/runtime/zero/bench/tiers-complete.runtime b/bench/runtime/zero/bench/tiers-complete.runtime
new file mode 100644
--- /dev/null
+++ b/bench/runtime/zero/bench/tiers-complete.runtime
@@ -0,0 +1,1 @@
+1.24
diff --git a/bench/runtime/zero/bench/tiers.runtime b/bench/runtime/zero/bench/tiers.runtime
--- a/bench/runtime/zero/bench/tiers.runtime
+++ b/bench/runtime/zero/bench/tiers.runtime
@@ -1,1 +1,1 @@
-0.19
+0.24
diff --git a/bench/runtime/zero/eg/u-conjure.runtime b/bench/runtime/zero/eg/u-conjure.runtime
--- a/bench/runtime/zero/eg/u-conjure.runtime
+++ b/bench/runtime/zero/eg/u-conjure.runtime
@@ -1,1 +1,1 @@
-0.33
+0.37
diff --git a/bench/runtime/zero/eg/u-extrapolate.runtime b/bench/runtime/zero/eg/u-extrapolate.runtime
--- a/bench/runtime/zero/eg/u-extrapolate.runtime
+++ b/bench/runtime/zero/eg/u-extrapolate.runtime
@@ -1,1 +1,1 @@
-0.01
+0.04
diff --git a/bench/runtime/zero/eg/u-speculate.runtime b/bench/runtime/zero/eg/u-speculate.runtime
--- a/bench/runtime/zero/eg/u-speculate.runtime
+++ b/bench/runtime/zero/eg/u-speculate.runtime
@@ -1,1 +1,1 @@
-0.32
+0.35
diff --git a/bench/runtime/zero/versions b/bench/runtime/zero/versions
--- a/bench/runtime/zero/versions
+++ b/bench/runtime/zero/versions
@@ -1,1 +1,1 @@
-GHC 8.10.4
+GHC 9.0.2
diff --git a/bench/sort.hs b/bench/sort.hs
--- a/bench/sort.hs
+++ b/bench/sort.hs
@@ -1,6 +1,6 @@
 -- ord.hs -- prints different expression sortins:
 --
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 import Data.List (intercalate, nub)
@@ -15,11 +15,11 @@
 
 main :: IO ()
 main  =  do
-  putStrLn $ "sort $ take 5040 $ list  ::  [ Expr ]  ="
-  printL (sort $ take 5040 $ list :: [Expr])
+  putStrLn "sort $ take 5040 $ list  ::  [ Expr ]  ="
+  printL (sort $ take 5040 list :: [Expr])
 
-  putStrLn $ "sortBy compareLexicographically $ take 5040 $ list  ::  [ Expr ]  ="
-  printL (sortBy compareLexicographically $ take 5040 $ list :: [Expr])
+  putStrLn "sortBy compareLexicographically $ take 5040 $ list  ::  [ Expr ]  ="
+  printL (sortBy compareLexicographically $ take 5040 list :: [Expr])
 
-  putStrLn $ "sortBy compareQuickly $ take 5040 $ list  ::  [ Expr ]  ="
-  printL (sortBy compareQuickly $ take 5040 $ list :: [Expr])
+  putStrLn "sortBy compareQuickly $ take 5040 $ list  ::  [ Expr ]  ="
+  printL (sortBy compareQuickly $ take 5040 list :: [Expr])
diff --git a/bench/sort.txt b/bench/sort.txt
new file mode 100644
--- /dev/null
+++ b/bench/sort.txt
@@ -0,0 +1,15129 @@
+sort $ take 5040 $ list  ::  [ Expr ]  =
+  [ _ :: Bool
+  , p :: Bool
+  , q :: Bool
+  , r :: Bool
+  , p' :: Bool
+  , q' :: Bool
+  , _ :: Char
+  , c :: Char
+  , d :: Char
+  , e :: Char
+  , c' :: Char
+  , d' :: Char
+  , _ :: Int
+  , x :: Int
+  , y :: Int
+  , z :: Int
+  , x' :: Int
+  , y' :: Int
+  , z' :: Int
+  , x'' :: Int
+  , _ :: [Int]
+  , xs :: [Int]
+  , ys :: [Int]
+  , zs :: [Int]
+  , xs' :: [Int]
+  , ys' :: [Int]
+  , f :: Int -> Int
+  , g :: Int -> Int
+  , h :: Int -> Int
+  , False :: Bool
+  , True :: Bool
+  , ' ' :: Char
+  , 'A' :: Char
+  , 'a' :: Char
+  , 'b' :: Char
+  , 'c' :: Char
+  , 0 :: Int
+  , 1 :: Int
+  , 2 :: Int
+  , 3 :: Int
+  , -1 :: Int
+  , -2 :: Int
+  , -3 :: Int
+  , [] :: [Int]
+  , [0] :: [Int]
+  , [1] :: [Int]
+  , [2] :: [Int]
+  , [-1] :: [Int]
+  , [0,0] :: [Int]
+  , [0,1] :: [Int]
+  , [1,0] :: [Int]
+  , [1,1] :: [Int]
+  , [-1,0] :: [Int]
+  , [0,-1] :: [Int]
+  , [0,0,0] :: [Int]
+  , [0,0,1] :: [Int]
+  , [0,1,0] :: [Int]
+  , [1,0,0] :: [Int]
+  , [0,0,0,0] :: [Int]
+  , not :: Bool -> Bool
+  , id :: Int -> Int
+  , abs :: Int -> Int
+  , negate :: Int -> Int
+  , (&&) :: Bool -> Bool -> Bool
+  , (||) :: Bool -> Bool -> Bool
+  , (==>) :: Bool -> Bool -> Bool
+  , (*) :: Int -> Int -> Int
+  , (+) :: Int -> Int -> Int
+  , f _ :: Int
+  , f x :: Int
+  , f y :: Int
+  , f z :: Int
+  , g _ :: Int
+  , g x :: Int
+  , g y :: Int
+  , h _ :: Int
+  , h x :: Int
+  , f' _ :: Int
+  , f 0 :: Int
+  , f 1 :: Int
+  , f (-1) :: Int
+  , g 0 :: Int
+  , g 1 :: Int
+  , h 0 :: Int
+  , not _ :: Bool
+  , not p :: Bool
+  , not q :: Bool
+  , not r :: Bool
+  , not p' :: Bool
+  , ord _ :: Int
+  , ord c :: Int
+  , ord d :: Int
+  , ord e :: Int
+  , ord c' :: Int
+  , odd _ :: Bool
+  , odd x :: Bool
+  , odd y :: Bool
+  , even _ :: Bool
+  , even x :: Bool
+  , even y :: Bool
+  , id _ :: Int
+  , id x :: Int
+  , id y :: Int
+  , id z :: Int
+  , id x' :: Int
+  , id y' :: Int
+  , id z' :: Int
+  , abs _ :: Int
+  , abs x :: Int
+  , abs y :: Int
+  , abs z :: Int
+  , abs x' :: Int
+  , negate _ :: Int
+  , negate x :: Int
+  , negate y :: Int
+  , negate z :: Int
+  , negate x' :: Int
+  , head _ :: Int
+  , head xs :: Int
+  , head ys :: Int
+  , head zs :: Int
+  , head xs' :: Int
+  , sort _ :: [Int]
+  , sort xs :: [Int]
+  , sort ys :: [Int]
+  , tail _ :: [Int]
+  , tail xs :: [Int]
+  , tail ys :: [Int]
+  , tail zs :: [Int]
+  , (_ &&) :: Bool -> Bool
+  , (p &&) :: Bool -> Bool
+  , (_ ||) :: Bool -> Bool
+  , (p ||) :: Bool -> Bool
+  , (q ||) :: Bool -> Bool
+  , (_ ==>) :: Bool -> Bool
+  , (_ *) :: Int -> Int
+  , (x *) :: Int -> Int
+  , (y *) :: Int -> Int
+  , (_ +) :: Int -> Int
+  , (x +) :: Int -> Int
+  , (y +) :: Int -> Int
+  , (z +) :: Int -> Int
+  , not False :: Bool
+  , not True :: Bool
+  , ord ' ' :: Int
+  , ord 'A' :: Int
+  , ord 'a' :: Int
+  , ord 'b' :: Int
+  , odd 0 :: Bool
+  , odd 1 :: Bool
+  , even 0 :: Bool
+  , even 1 :: Bool
+  , id 0 :: Int
+  , id 1 :: Int
+  , id 2 :: Int
+  , id 3 :: Int
+  , id (-1) :: Int
+  , id (-2) :: Int
+  , abs 0 :: Int
+  , abs 1 :: Int
+  , abs 2 :: Int
+  , abs (-1) :: Int
+  , negate 0 :: Int
+  , negate 1 :: Int
+  , negate 2 :: Int
+  , negate (-1) :: Int
+  , head [] :: Int
+  , head [0] :: Int
+  , head [1] :: Int
+  , head [-1] :: Int
+  , head [0,0] :: Int
+  , head [0,1] :: Int
+  , head [1,0] :: Int
+  , head [0,0,0] :: Int
+  , sort [] :: [Int]
+  , sort [0] :: [Int]
+  , tail [] :: [Int]
+  , tail [0] :: [Int]
+  , tail [1] :: [Int]
+  , tail [0,0] :: [Int]
+  , (False &&) :: Bool -> Bool
+  , (True &&) :: Bool -> Bool
+  , (False ||) :: Bool -> Bool
+  , (True ||) :: Bool -> Bool
+  , (0 *) :: Int -> Int
+  , (1 *) :: Int -> Int
+  , (0 +) :: Int -> Int
+  , (1 +) :: Int -> Int
+  , ((-1) +) :: Int -> Int
+  , f (f _) :: Int
+  , f (ord _) :: Int
+  , f (ord c) :: Int
+  , f (id _) :: Int
+  , f (id x) :: Int
+  , f (id y) :: Int
+  , f (abs _) :: Int
+  , f (abs x) :: Int
+  , f (negate _) :: Int
+  , f (negate x) :: Int
+  , f (head _) :: Int
+  , f (head xs) :: Int
+  , g (ord _) :: Int
+  , g (id _) :: Int
+  , g (id x) :: Int
+  , g (abs _) :: Int
+  , g (negate _) :: Int
+  , g (head _) :: Int
+  , h (id _) :: Int
+  , id (f _) :: Int
+  , id (f x) :: Int
+  , id (f y) :: Int
+  , id (f z) :: Int
+  , id (g _) :: Int
+  , id (g x) :: Int
+  , id (g y) :: Int
+  , id (h _) :: Int
+  , id (h x) :: Int
+  , id (f' _) :: Int
+  , abs (f _) :: Int
+  , abs (f x) :: Int
+  , abs (g _) :: Int
+  , negate (f _) :: Int
+  , negate (f x) :: Int
+  , negate (g _) :: Int
+  , (f _ +) :: Int -> Int
+  , _ && p :: Bool
+  , _ && q :: Bool
+  , p && _ :: Bool
+  , q && _ :: Bool
+  , _ <= p :: Bool
+  , p <= _ :: Bool
+  , _ == p :: Bool
+  , _ == q :: Bool
+  , p == _ :: Bool
+  , q == _ :: Bool
+  , _ || p :: Bool
+  , _ || q :: Bool
+  , _ || r :: Bool
+  , p || _ :: Bool
+  , p || q :: Bool
+  , q || _ :: Bool
+  , q || p :: Bool
+  , r || _ :: Bool
+  , _ ==> p :: Bool
+  , p ==> _ :: Bool
+  , _ <= x :: Bool
+  , x <= _ :: Bool
+  , _ == x :: Bool
+  , _ == y :: Bool
+  , x == _ :: Bool
+  , y == _ :: Bool
+  , _ * x :: Int
+  , _ * y :: Int
+  , _ * z :: Int
+  , x * _ :: Int
+  , x * y :: Int
+  , y * _ :: Int
+  , y * x :: Int
+  , z * _ :: Int
+  , _ + x :: Int
+  , _ + y :: Int
+  , _ + z :: Int
+  , _ + x' :: Int
+  , x + _ :: Int
+  , x + y :: Int
+  , x + z :: Int
+  , y + _ :: Int
+  , y + x :: Int
+  , z + _ :: Int
+  , z + x :: Int
+  , x' + _ :: Int
+  , elem _ _ :: Bool
+  , elem _ xs :: Bool
+  , elem _ ys :: Bool
+  , elem x _ :: Bool
+  , elem x xs :: Bool
+  , elem y _ :: Bool
+  , _:_ :: [Int]
+  , _:xs :: [Int]
+  , _:ys :: [Int]
+  , _:zs :: [Int]
+  , _:xs' :: [Int]
+  , x:_ :: [Int]
+  , x:xs :: [Int]
+  , x:ys :: [Int]
+  , x:zs :: [Int]
+  , y:_ :: [Int]
+  , y:xs :: [Int]
+  , y:ys :: [Int]
+  , z:_ :: [Int]
+  , z:xs :: [Int]
+  , x':_ :: [Int]
+  , insert _ _ :: [Int]
+  , insert _ xs :: [Int]
+  , insert _ ys :: [Int]
+  , insert x _ :: [Int]
+  , insert x xs :: [Int]
+  , insert y _ :: [Int]
+  , _ ++ xs :: [Int]
+  , _ ++ ys :: [Int]
+  , _ ++ zs :: [Int]
+  , xs ++ _ :: [Int]
+  , xs ++ ys :: [Int]
+  , ys ++ _ :: [Int]
+  , ys ++ xs :: [Int]
+  , zs ++ _ :: [Int]
+  , _ < _ :: Bool
+  , _ && _ :: Bool
+  , p && p :: Bool
+  , _ <= _ :: Bool
+  , _ == _ :: Bool
+  , p == p :: Bool
+  , _ || _ :: Bool
+  , p || p :: Bool
+  , _ ==> _ :: Bool
+  , _ < _ :: Bool
+  , _ <= _ :: Bool
+  , _ == _ :: Bool
+  , x == x :: Bool
+  , _ * _ :: Int
+  , x * x :: Int
+  , _ + _ :: Int
+  , x + x :: Int
+  , y + y :: Int
+  , _ ++ _ :: [Int]
+  , xs ++ xs :: [Int]
+  , not (not _) :: Bool
+  , not (not p) :: Bool
+  , not (not q) :: Bool
+  , not (not r) :: Bool
+  , id (id _) :: Int
+  , id (id x) :: Int
+  , id (id y) :: Int
+  , id (id z) :: Int
+  , id (id x') :: Int
+  , id (id y') :: Int
+  , abs (abs _) :: Int
+  , abs (abs x) :: Int
+  , abs (abs y) :: Int
+  , negate (negate _) :: Int
+  , negate (negate x) :: Int
+  , negate (negate y) :: Int
+  , tail (tail _) :: [Int]
+  , tail (tail xs) :: [Int]
+  , f (ord 'a') :: Int
+  , f (id 0) :: Int
+  , f (id 1) :: Int
+  , f (abs 0) :: Int
+  , f (negate 0) :: Int
+  , f (head []) :: Int
+  , g (id 0) :: Int
+  , not (odd _) :: Bool
+  , not (odd x) :: Bool
+  , not (even _) :: Bool
+  , not (even x) :: Bool
+  , odd (ord _) :: Bool
+  , odd (id _) :: Bool
+  , odd (id x) :: Bool
+  , odd (abs _) :: Bool
+  , odd (negate _) :: Bool
+  , odd (head _) :: Bool
+  , even (ord _) :: Bool
+  , even (id _) :: Bool
+  , even (id x) :: Bool
+  , even (abs _) :: Bool
+  , even (negate _) :: Bool
+  , even (head _) :: Bool
+  , id (f 0) :: Int
+  , id (f 1) :: Int
+  , id (f (-1)) :: Int
+  , id (g 0) :: Int
+  , id (g 1) :: Int
+  , id (h 0) :: Int
+  , id (ord _) :: Int
+  , id (ord c) :: Int
+  , id (ord d) :: Int
+  , id (ord e) :: Int
+  , id (abs _) :: Int
+  , id (abs x) :: Int
+  , id (abs y) :: Int
+  , id (abs z) :: Int
+  , id (abs x') :: Int
+  , id (negate _) :: Int
+  , id (negate x) :: Int
+  , id (negate y) :: Int
+  , id (negate z) :: Int
+  , id (negate x') :: Int
+  , id (head _) :: Int
+  , id (head xs) :: Int
+  , id (head ys) :: Int
+  , id (head zs) :: Int
+  , id (head xs') :: Int
+  , abs (f 0) :: Int
+  , abs (ord _) :: Int
+  , abs (ord c) :: Int
+  , abs (ord d) :: Int
+  , abs (id _) :: Int
+  , abs (id x) :: Int
+  , abs (id y) :: Int
+  , abs (id z) :: Int
+  , abs (negate _) :: Int
+  , abs (negate x) :: Int
+  , abs (negate y) :: Int
+  , abs (head _) :: Int
+  , abs (head xs) :: Int
+  , abs (head ys) :: Int
+  , negate (f 0) :: Int
+  , negate (ord _) :: Int
+  , negate (ord c) :: Int
+  , negate (ord d) :: Int
+  , negate (id _) :: Int
+  , negate (id x) :: Int
+  , negate (id y) :: Int
+  , negate (id z) :: Int
+  , negate (abs _) :: Int
+  , negate (abs x) :: Int
+  , negate (abs y) :: Int
+  , negate (head _) :: Int
+  , negate (head xs) :: Int
+  , negate (head ys) :: Int
+  , head (sort _) :: Int
+  , head (sort xs) :: Int
+  , head (tail _) :: Int
+  , head (tail xs) :: Int
+  , head (tail ys) :: Int
+  , sort (tail _) :: [Int]
+  , tail (sort _) :: [Int]
+  , (not _ &&) :: Bool -> Bool
+  , (not _ ||) :: Bool -> Bool
+  , (not p ||) :: Bool -> Bool
+  , (ord _ *) :: Int -> Int
+  , (id _ *) :: Int -> Int
+  , (id x *) :: Int -> Int
+  , (abs _ *) :: Int -> Int
+  , (negate _ *) :: Int -> Int
+  , (head _ *) :: Int -> Int
+  , (ord _ +) :: Int -> Int
+  , (ord c +) :: Int -> Int
+  , (id _ +) :: Int -> Int
+  , (id x +) :: Int -> Int
+  , (id y +) :: Int -> Int
+  , (abs _ +) :: Int -> Int
+  , (abs x +) :: Int -> Int
+  , (negate _ +) :: Int -> Int
+  , (negate x +) :: Int -> Int
+  , (head _ +) :: Int -> Int
+  , (head xs +) :: Int -> Int
+  , _ && False :: Bool
+  , _ && True :: Bool
+  , p && False :: Bool
+  , p && True :: Bool
+  , False && _ :: Bool
+  , False && p :: Bool
+  , True && _ :: Bool
+  , True && p :: Bool
+  , _ <= False :: Bool
+  , _ <= True :: Bool
+  , False <= _ :: Bool
+  , True <= _ :: Bool
+  , _ == False :: Bool
+  , _ == True :: Bool
+  , p == False :: Bool
+  , p == True :: Bool
+  , False == _ :: Bool
+  , False == p :: Bool
+  , True == _ :: Bool
+  , True == p :: Bool
+  , _ || False :: Bool
+  , _ || True :: Bool
+  , p || False :: Bool
+  , p || True :: Bool
+  , q || False :: Bool
+  , q || True :: Bool
+  , False || _ :: Bool
+  , False || p :: Bool
+  , False || q :: Bool
+  , True || _ :: Bool
+  , True || p :: Bool
+  , True || q :: Bool
+  , _ ==> False :: Bool
+  , _ ==> True :: Bool
+  , False ==> _ :: Bool
+  , True ==> _ :: Bool
+  , _ <= 0 :: Bool
+  , 0 <= _ :: Bool
+  , _ == 0 :: Bool
+  , _ == 1 :: Bool
+  , x == 0 :: Bool
+  , 0 == _ :: Bool
+  , 0 == x :: Bool
+  , 1 == _ :: Bool
+  , _ * 0 :: Int
+  , _ * 1 :: Int
+  , _ * (-1) :: Int
+  , x * 0 :: Int
+  , x * 1 :: Int
+  , y * 0 :: Int
+  , 0 * _ :: Int
+  , 0 * x :: Int
+  , 0 * y :: Int
+  , 1 * _ :: Int
+  , 1 * x :: Int
+  , (-1) * _ :: Int
+  , _ + 0 :: Int
+  , _ + 1 :: Int
+  , _ + 2 :: Int
+  , _ + (-1) :: Int
+  , x + 0 :: Int
+  , x + 1 :: Int
+  , x + (-1) :: Int
+  , y + 0 :: Int
+  , y + 1 :: Int
+  , z + 0 :: Int
+  , 0 + _ :: Int
+  , 0 + x :: Int
+  , 0 + y :: Int
+  , 0 + z :: Int
+  , 1 + _ :: Int
+  , 1 + x :: Int
+  , 1 + y :: Int
+  , 2 + _ :: Int
+  , (-1) + _ :: Int
+  , (-1) + x :: Int
+  , elem _ [] :: Bool
+  , elem _ [0] :: Bool
+  , elem x [] :: Bool
+  , elem 0 _ :: Bool
+  , elem 0 xs :: Bool
+  , elem 1 _ :: Bool
+  , [_] :: [Int]
+  , _:[0] :: [Int]
+  , _:[1] :: [Int]
+  , _:[-1] :: [Int]
+  , _:[0,0] :: [Int]
+  , _:[0,1] :: [Int]
+  , _:[1,0] :: [Int]
+  , _:[0,0,0] :: [Int]
+  , [x] :: [Int]
+  , x:[0] :: [Int]
+  , x:[1] :: [Int]
+  , x:[0,0] :: [Int]
+  , [y] :: [Int]
+  , y:[0] :: [Int]
+  , [z] :: [Int]
+  , 0:_ :: [Int]
+  , 0:xs :: [Int]
+  , 0:ys :: [Int]
+  , 0:zs :: [Int]
+  , 1:_ :: [Int]
+  , 1:xs :: [Int]
+  , 1:ys :: [Int]
+  , 2:_ :: [Int]
+  , (-1):_ :: [Int]
+  , (-1):xs :: [Int]
+  , insert _ [] :: [Int]
+  , insert _ [0] :: [Int]
+  , insert x [] :: [Int]
+  , insert 0 _ :: [Int]
+  , insert 0 xs :: [Int]
+  , insert 1 _ :: [Int]
+  , _ ++ [] :: [Int]
+  , _ ++ [0] :: [Int]
+  , _ ++ [1] :: [Int]
+  , _ ++ [0,0] :: [Int]
+  , xs ++ [] :: [Int]
+  , xs ++ [0] :: [Int]
+  , ys ++ [] :: [Int]
+  , [] ++ _ :: [Int]
+  , [] ++ xs :: [Int]
+  , [] ++ ys :: [Int]
+  , [0] ++ _ :: [Int]
+  , [0] ++ xs :: [Int]
+  , [1] ++ _ :: [Int]
+  , [0,0] ++ _ :: [Int]
+  , not (not False) :: Bool
+  , not (not True) :: Bool
+  , id (id 0) :: Int
+  , id (id 1) :: Int
+  , id (id 2) :: Int
+  , id (id (-1)) :: Int
+  , id (id (-2)) :: Int
+  , abs (abs 0) :: Int
+  , abs (abs 1) :: Int
+  , negate (negate 0) :: Int
+  , negate (negate 1) :: Int
+  , tail (tail []) :: [Int]
+  , False && False :: Bool
+  , True && True :: Bool
+  , False == False :: Bool
+  , True == True :: Bool
+  , False || False :: Bool
+  , True || True :: Bool
+  , 0 == 0 :: Bool
+  , 0 * 0 :: Int
+  , 0 + 0 :: Int
+  , 1 + 1 :: Int
+  , [] ++ [] :: [Int]
+  , not (odd 0) :: Bool
+  , not (even 0) :: Bool
+  , odd (id 0) :: Bool
+  , even (id 0) :: Bool
+  , id (ord ' ') :: Int
+  , id (ord 'a') :: Int
+  , id (ord 'b') :: Int
+  , id (abs 0) :: Int
+  , id (abs 1) :: Int
+  , id (abs 2) :: Int
+  , id (abs (-1)) :: Int
+  , id (negate 0) :: Int
+  , id (negate 1) :: Int
+  , id (negate 2) :: Int
+  , id (negate (-1)) :: Int
+  , id (head []) :: Int
+  , id (head [0]) :: Int
+  , id (head [1]) :: Int
+  , id (head [-1]) :: Int
+  , id (head [0,0]) :: Int
+  , id (head [0,1]) :: Int
+  , id (head [1,0]) :: Int
+  , id (head [0,0,0]) :: Int
+  , abs (ord ' ') :: Int
+  , abs (ord 'a') :: Int
+  , abs (id 0) :: Int
+  , abs (id 1) :: Int
+  , abs (id (-1)) :: Int
+  , abs (negate 0) :: Int
+  , abs (negate 1) :: Int
+  , abs (head []) :: Int
+  , abs (head [0]) :: Int
+  , negate (ord ' ') :: Int
+  , negate (ord 'a') :: Int
+  , negate (id 0) :: Int
+  , negate (id 1) :: Int
+  , negate (id (-1)) :: Int
+  , negate (abs 0) :: Int
+  , negate (abs 1) :: Int
+  , negate (head []) :: Int
+  , negate (head [0]) :: Int
+  , head (sort []) :: Int
+  , head (tail []) :: Int
+  , head (tail [0]) :: Int
+  , (not False ||) :: Bool -> Bool
+  , (not True ||) :: Bool -> Bool
+  , (id 0 *) :: Int -> Int
+  , (ord 'a' +) :: Int -> Int
+  , (id 0 +) :: Int -> Int
+  , (id 1 +) :: Int -> Int
+  , (abs 0 +) :: Int -> Int
+  , (negate 0 +) :: Int -> Int
+  , (head [] +) :: Int -> Int
+  , False && True :: Bool
+  , True && False :: Bool
+  , False == True :: Bool
+  , True == False :: Bool
+  , False || True :: Bool
+  , True || False :: Bool
+  , 0 * 1 :: Int
+  , 1 * 0 :: Int
+  , 0 + 1 :: Int
+  , 0 + (-1) :: Int
+  , 1 + 0 :: Int
+  , (-1) + 0 :: Int
+  , elem 0 [] :: Bool
+  , [0] :: [Int]
+  , 0:[0] :: [Int]
+  , 0:[1] :: [Int]
+  , 0:[0,0] :: [Int]
+  , [1] :: [Int]
+  , 1:[0] :: [Int]
+  , [-1] :: [Int]
+  , insert 0 [] :: [Int]
+  , [] ++ [0] :: [Int]
+  , [0] ++ [] :: [Int]
+  , f (_ + x) :: Int
+  , f (x + _) :: Int
+  , _ + f x :: Int
+  , x + f _ :: Int
+  , f _ + x :: Int
+  , f x + _ :: Int
+  , f _:_ :: [Int]
+  , f _:xs :: [Int]
+  , f x:_ :: [Int]
+  , g _:_ :: [Int]
+  , f (_ * _) :: Int
+  , f (_ + _) :: Int
+  , g (_ + _) :: Int
+  , id (f (f _)) :: Int
+  , _ * f _ :: Int
+  , f _ * _ :: Int
+  , _ + f _ :: Int
+  , _ + g _ :: Int
+  , f _ + _ :: Int
+  , g _ + _ :: Int
+  , f (id (id _)) :: Int
+  , f (id (id x)) :: Int
+  , g (id (id _)) :: Int
+  , id (f (id _)) :: Int
+  , id (f (id x)) :: Int
+  , id (f (id y)) :: Int
+  , id (g (id _)) :: Int
+  , id (g (id x)) :: Int
+  , id (h (id _)) :: Int
+  , id (id (f _)) :: Int
+  , id (id (f x)) :: Int
+  , id (id (f y)) :: Int
+  , id (id (g _)) :: Int
+  , id (id (g x)) :: Int
+  , id (id (h _)) :: Int
+  , ((_ + x) +) :: Int -> Int
+  , ((x + _) +) :: Int -> Int
+  , f (id (ord _)) :: Int
+  , f (id (abs _)) :: Int
+  , f (id (negate _)) :: Int
+  , f (id (head _)) :: Int
+  , f (abs (id _)) :: Int
+  , f (negate (id _)) :: Int
+  , f (_ + 0) :: Int
+  , f (0 + _) :: Int
+  , not (_ && p) :: Bool
+  , not (p && _) :: Bool
+  , not (_ == p) :: Bool
+  , not (p == _) :: Bool
+  , not (_ || p) :: Bool
+  , not (_ || q) :: Bool
+  , not (p || _) :: Bool
+  , not (q || _) :: Bool
+  , not (_ == x) :: Bool
+  , not (x == _) :: Bool
+  , not (elem _ _) :: Bool
+  , not (elem _ xs) :: Bool
+  , not (elem x _) :: Bool
+  , id (f (ord _)) :: Int
+  , id (f (ord c)) :: Int
+  , id (f (abs _)) :: Int
+  , id (f (abs x)) :: Int
+  , id (f (negate _)) :: Int
+  , id (f (negate x)) :: Int
+  , id (f (head _)) :: Int
+  , id (f (head xs)) :: Int
+  , id (g (ord _)) :: Int
+  , id (g (abs _)) :: Int
+  , id (g (negate _)) :: Int
+  , id (g (head _)) :: Int
+  , id (abs (f _)) :: Int
+  , id (abs (f x)) :: Int
+  , id (abs (g _)) :: Int
+  , id (negate (f _)) :: Int
+  , id (negate (f x)) :: Int
+  , id (negate (g _)) :: Int
+  , id (_ * x) :: Int
+  , id (_ * y) :: Int
+  , id (_ * z) :: Int
+  , id (x * _) :: Int
+  , id (x * y) :: Int
+  , id (y * _) :: Int
+  , id (y * x) :: Int
+  , id (z * _) :: Int
+  , id (_ + x) :: Int
+  , id (_ + y) :: Int
+  , id (_ + z) :: Int
+  , id (_ + x') :: Int
+  , id (x + _) :: Int
+  , id (x + y) :: Int
+  , id (x + z) :: Int
+  , id (y + _) :: Int
+  , id (y + x) :: Int
+  , id (z + _) :: Int
+  , id (z + x) :: Int
+  , id (x' + _) :: Int
+  , abs (f (id _)) :: Int
+  , abs (id (f _)) :: Int
+  , abs (_ * x) :: Int
+  , abs (x * _) :: Int
+  , abs (_ + x) :: Int
+  , abs (_ + y) :: Int
+  , abs (x + _) :: Int
+  , abs (y + _) :: Int
+  , negate (f (id _)) :: Int
+  , negate (id (f _)) :: Int
+  , negate (_ * x) :: Int
+  , negate (x * _) :: Int
+  , negate (_ + x) :: Int
+  , negate (_ + y) :: Int
+  , negate (x + _) :: Int
+  , negate (y + _) :: Int
+  , head (_:_) :: Int
+  , head (_:xs) :: Int
+  , head (_:ys) :: Int
+  , head (_:zs) :: Int
+  , head (x:_) :: Int
+  , head (x:xs) :: Int
+  , head (x:ys) :: Int
+  , head (y:_) :: Int
+  , head (y:xs) :: Int
+  , head (z:_) :: Int
+  , head (insert _ _) :: Int
+  , head (insert _ xs) :: Int
+  , head (insert x _) :: Int
+  , head (_ ++ xs) :: Int
+  , head (_ ++ ys) :: Int
+  , head (xs ++ _) :: Int
+  , head (ys ++ _) :: Int
+  , sort (_:_) :: [Int]
+  , sort (_:xs) :: [Int]
+  , sort (x:_) :: [Int]
+  , tail (_:_) :: [Int]
+  , tail (_:xs) :: [Int]
+  , tail (_:ys) :: [Int]
+  , tail (x:_) :: [Int]
+  , tail (x:xs) :: [Int]
+  , tail (y:_) :: [Int]
+  , tail (insert _ _) :: [Int]
+  , tail (_ ++ xs) :: [Int]
+  , tail (xs ++ _) :: [Int]
+  , _ && not p :: Bool
+  , p && not _ :: Bool
+  , not _ && p :: Bool
+  , not p && _ :: Bool
+  , _ == not p :: Bool
+  , p == not _ :: Bool
+  , not _ == p :: Bool
+  , not p == _ :: Bool
+  , _ || not p :: Bool
+  , _ || not q :: Bool
+  , _ || odd _ :: Bool
+  , _ || even _ :: Bool
+  , p || not _ :: Bool
+  , q || not _ :: Bool
+  , not _ || p :: Bool
+  , not _ || q :: Bool
+  , not p || _ :: Bool
+  , not q || _ :: Bool
+  , odd _ || _ :: Bool
+  , even _ || _ :: Bool
+  , _ == ord _ :: Bool
+  , _ == id x :: Bool
+  , _ == head _ :: Bool
+  , x == id _ :: Bool
+  , ord _ == _ :: Bool
+  , id _ == x :: Bool
+  , id x == _ :: Bool
+  , head _ == _ :: Bool
+  , _ * ord _ :: Int
+  , _ * ord c :: Int
+  , _ * id x :: Int
+  , _ * id y :: Int
+  , _ * abs x :: Int
+  , _ * negate x :: Int
+  , _ * head _ :: Int
+  , _ * head xs :: Int
+  , x * ord _ :: Int
+  , x * id _ :: Int
+  , x * abs _ :: Int
+  , x * negate _ :: Int
+  , x * head _ :: Int
+  , y * id _ :: Int
+  , ord _ * _ :: Int
+  , ord _ * x :: Int
+  , ord c * _ :: Int
+  , id _ * x :: Int
+  , id _ * y :: Int
+  , id x * _ :: Int
+  , id y * _ :: Int
+  , abs _ * x :: Int
+  , abs x * _ :: Int
+  , negate _ * x :: Int
+  , negate x * _ :: Int
+  , head _ * _ :: Int
+  , head _ * x :: Int
+  , head xs * _ :: Int
+  , _ + f 0 :: Int
+  , _ + ord _ :: Int
+  , _ + ord c :: Int
+  , _ + ord d :: Int
+  , _ + id x :: Int
+  , _ + id y :: Int
+  , _ + id z :: Int
+  , _ + abs x :: Int
+  , _ + abs y :: Int
+  , _ + negate x :: Int
+  , _ + negate y :: Int
+  , _ + head _ :: Int
+  , _ + head xs :: Int
+  , _ + head ys :: Int
+  , x + ord _ :: Int
+  , x + ord c :: Int
+  , x + id _ :: Int
+  , x + id y :: Int
+  , x + abs _ :: Int
+  , x + negate _ :: Int
+  , x + head _ :: Int
+  , x + head xs :: Int
+  , y + ord _ :: Int
+  , y + id _ :: Int
+  , y + id x :: Int
+  , y + abs _ :: Int
+  , y + negate _ :: Int
+  , y + head _ :: Int
+  , z + id _ :: Int
+  , 0 + f _ :: Int
+  , f _ + 0 :: Int
+  , f 0 + _ :: Int
+  , ord _ + _ :: Int
+  , ord _ + x :: Int
+  , ord _ + y :: Int
+  , ord c + _ :: Int
+  , ord c + x :: Int
+  , ord d + _ :: Int
+  , id _ + x :: Int
+  , id _ + y :: Int
+  , id _ + z :: Int
+  , id x + _ :: Int
+  , id x + y :: Int
+  , id y + _ :: Int
+  , id y + x :: Int
+  , id z + _ :: Int
+  , abs _ + x :: Int
+  , abs _ + y :: Int
+  , abs x + _ :: Int
+  , abs y + _ :: Int
+  , negate _ + x :: Int
+  , negate _ + y :: Int
+  , negate x + _ :: Int
+  , negate y + _ :: Int
+  , head _ + _ :: Int
+  , head _ + x :: Int
+  , head _ + y :: Int
+  , head xs + _ :: Int
+  , head xs + x :: Int
+  , head ys + _ :: Int
+  , elem _ (tail _) :: Bool
+  , elem (ord _) _ :: Bool
+  , elem (id _) _ :: Bool
+  , elem (id _) xs :: Bool
+  , elem (id x) _ :: Bool
+  , elem (abs _) _ :: Bool
+  , elem (negate _) _ :: Bool
+  , _:sort _ :: [Int]
+  , _:sort xs :: [Int]
+  , _:tail _ :: [Int]
+  , _:tail xs :: [Int]
+  , _:tail ys :: [Int]
+  , x:sort _ :: [Int]
+  , x:tail _ :: [Int]
+  , x:tail xs :: [Int]
+  , y:tail _ :: [Int]
+  , [f _] :: [Int]
+  , f 0:_ :: [Int]
+  , ord _:_ :: [Int]
+  , ord _:xs :: [Int]
+  , ord _:ys :: [Int]
+  , ord c:_ :: [Int]
+  , ord c:xs :: [Int]
+  , ord d:_ :: [Int]
+  , id _:_ :: [Int]
+  , id _:xs :: [Int]
+  , id _:ys :: [Int]
+  , id _:zs :: [Int]
+  , id x:_ :: [Int]
+  , id x:xs :: [Int]
+  , id x:ys :: [Int]
+  , id y:_ :: [Int]
+  , id y:xs :: [Int]
+  , id z:_ :: [Int]
+  , abs _:_ :: [Int]
+  , abs _:xs :: [Int]
+  , abs _:ys :: [Int]
+  , abs x:_ :: [Int]
+  , abs x:xs :: [Int]
+  , abs y:_ :: [Int]
+  , negate _:_ :: [Int]
+  , negate _:xs :: [Int]
+  , negate _:ys :: [Int]
+  , negate x:_ :: [Int]
+  , negate x:xs :: [Int]
+  , negate y:_ :: [Int]
+  , head _:xs :: [Int]
+  , head _:ys :: [Int]
+  , head xs:_ :: [Int]
+  , head ys:_ :: [Int]
+  , insert _ (tail _) :: [Int]
+  , insert (ord _) _ :: [Int]
+  , insert (id _) _ :: [Int]
+  , insert (id _) xs :: [Int]
+  , insert (id x) _ :: [Int]
+  , insert (abs _) _ :: [Int]
+  , insert (negate _) _ :: [Int]
+  , _ ++ tail xs :: [Int]
+  , xs ++ tail _ :: [Int]
+  , tail _ ++ xs :: [Int]
+  , tail xs ++ _ :: [Int]
+  , ((_ || _) ||) :: Bool -> Bool
+  , ((_ + _) +) :: Int -> Int
+  , not (_ && _) :: Bool
+  , not (_ <= _) :: Bool
+  , not (_ == _) :: Bool
+  , not (_ || _) :: Bool
+  , not (p || p) :: Bool
+  , not (_ ==> _) :: Bool
+  , not (_ <= _) :: Bool
+  , not (_ == _) :: Bool
+  , odd (_ + _) :: Bool
+  , even (_ + _) :: Bool
+  , id (_ * _) :: Int
+  , id (x * x) :: Int
+  , id (_ + _) :: Int
+  , id (x + x) :: Int
+  , id (y + y) :: Int
+  , abs (_ * _) :: Int
+  , abs (_ + _) :: Int
+  , abs (x + x) :: Int
+  , negate (_ * _) :: Int
+  , negate (_ + _) :: Int
+  , negate (x + x) :: Int
+  , head (_ ++ _) :: Int
+  , head (xs ++ xs) :: Int
+  , sort (_ ++ _) :: [Int]
+  , tail (_ ++ _) :: [Int]
+  , ((_ + _) *) :: Int -> Int
+  , (_ * _ +) :: Int -> Int
+  , _ && not _ :: Bool
+  , not _ && _ :: Bool
+  , _ <= not _ :: Bool
+  , not _ <= _ :: Bool
+  , _ == not _ :: Bool
+  , not _ == _ :: Bool
+  , _ || not _ :: Bool
+  , p || not p :: Bool
+  , not _ || _ :: Bool
+  , not p || p :: Bool
+  , _ ==> not _ :: Bool
+  , not _ ==> _ :: Bool
+  , _ <= id _ :: Bool
+  , id _ <= _ :: Bool
+  , _ == id _ :: Bool
+  , _ == abs _ :: Bool
+  , _ == negate _ :: Bool
+  , id _ == _ :: Bool
+  , abs _ == _ :: Bool
+  , negate _ == _ :: Bool
+  , _ * id _ :: Int
+  , _ * abs _ :: Int
+  , _ * negate _ :: Int
+  , x * id x :: Int
+  , id _ * _ :: Int
+  , id x * x :: Int
+  , abs _ * _ :: Int
+  , negate _ * _ :: Int
+  , _ + id _ :: Int
+  , _ + abs _ :: Int
+  , _ + negate _ :: Int
+  , x + id x :: Int
+  , x + abs x :: Int
+  , x + negate x :: Int
+  , id _ + _ :: Int
+  , id x + x :: Int
+  , abs _ + _ :: Int
+  , abs x + x :: Int
+  , negate _ + _ :: Int
+  , negate x + x :: Int
+  , elem (head _) _ :: Bool
+  , head _:_ :: [Int]
+  , head xs:xs :: [Int]
+  , insert (head _) _ :: [Int]
+  , _ ++ sort _ :: [Int]
+  , _ ++ tail _ :: [Int]
+  , sort _ ++ _ :: [Int]
+  , tail _ ++ _ :: [Int]
+  , not (not (not _)) :: Bool
+  , not (not (not p)) :: Bool
+  , not (not (not q)) :: Bool
+  , id (id (id _)) :: Int
+  , id (id (id x)) :: Int
+  , id (id (id y)) :: Int
+  , id (id (id z)) :: Int
+  , id (id (id x')) :: Int
+  , abs (abs (abs _)) :: Int
+  , negate (negate (negate _)) :: Int
+  , f (id (id 0)) :: Int
+  , not (not (odd _)) :: Bool
+  , not (not (even _)) :: Bool
+  , odd (id (id _)) :: Bool
+  , even (id (id _)) :: Bool
+  , id (f (id 0)) :: Int
+  , id (f (id 1)) :: Int
+  , id (g (id 0)) :: Int
+  , id (id (f 0)) :: Int
+  , id (id (f 1)) :: Int
+  , id (id (g 0)) :: Int
+  , id (id (ord _)) :: Int
+  , id (id (ord c)) :: Int
+  , id (id (ord d)) :: Int
+  , id (id (ord e)) :: Int
+  , id (id (abs _)) :: Int
+  , id (id (abs x)) :: Int
+  , id (id (abs y)) :: Int
+  , id (id (abs z)) :: Int
+  , id (id (negate _)) :: Int
+  , id (id (negate x)) :: Int
+  , id (id (negate y)) :: Int
+  , id (id (negate z)) :: Int
+  , id (id (head _)) :: Int
+  , id (id (head xs)) :: Int
+  , id (id (head ys)) :: Int
+  , id (id (head zs)) :: Int
+  , id (abs (id _)) :: Int
+  , id (abs (id x)) :: Int
+  , id (abs (id y)) :: Int
+  , id (abs (id z)) :: Int
+  , id (abs (abs _)) :: Int
+  , id (abs (abs x)) :: Int
+  , id (abs (abs y)) :: Int
+  , id (negate (id _)) :: Int
+  , id (negate (id x)) :: Int
+  , id (negate (id y)) :: Int
+  , id (negate (id z)) :: Int
+  , id (negate (negate _)) :: Int
+  , id (negate (negate x)) :: Int
+  , id (negate (negate y)) :: Int
+  , abs (id (id _)) :: Int
+  , abs (id (id x)) :: Int
+  , abs (id (id y)) :: Int
+  , abs (id (abs _)) :: Int
+  , abs (id (abs x)) :: Int
+  , abs (abs (ord _)) :: Int
+  , abs (abs (id _)) :: Int
+  , abs (abs (id x)) :: Int
+  , abs (abs (negate _)) :: Int
+  , abs (abs (head _)) :: Int
+  , abs (negate (abs _)) :: Int
+  , abs (negate (negate _)) :: Int
+  , negate (id (id _)) :: Int
+  , negate (id (id x)) :: Int
+  , negate (id (id y)) :: Int
+  , negate (id (negate _)) :: Int
+  , negate (id (negate x)) :: Int
+  , negate (abs (abs _)) :: Int
+  , negate (abs (negate _)) :: Int
+  , negate (negate (ord _)) :: Int
+  , negate (negate (id _)) :: Int
+  , negate (negate (id x)) :: Int
+  , negate (negate (abs _)) :: Int
+  , negate (negate (head _)) :: Int
+  , head (tail (tail _)) :: Int
+  , (not (not _) ||) :: Bool -> Bool
+  , (id (id _) *) :: Int -> Int
+  , (id (id _) +) :: Int -> Int
+  , (id (id x) +) :: Int -> Int
+  , ((_ + 0) +) :: Int -> Int
+  , ((0 + _) +) :: Int -> Int
+  , not (odd (id _)) :: Bool
+  , not (even (id _)) :: Bool
+  , not (_ && False) :: Bool
+  , not (_ && True) :: Bool
+  , not (False && _) :: Bool
+  , not (True && _) :: Bool
+  , not (_ == False) :: Bool
+  , not (_ == True) :: Bool
+  , not (False == _) :: Bool
+  , not (True == _) :: Bool
+  , not (_ || False) :: Bool
+  , not (_ || True) :: Bool
+  , not (p || False) :: Bool
+  , not (p || True) :: Bool
+  , not (False || _) :: Bool
+  , not (False || p) :: Bool
+  , not (True || _) :: Bool
+  , not (True || p) :: Bool
+  , not (_ == 0) :: Bool
+  , not (0 == _) :: Bool
+  , not (elem _ []) :: Bool
+  , not (elem 0 _) :: Bool
+  , id (f (ord 'a')) :: Int
+  , id (f (abs 0)) :: Int
+  , id (f (negate 0)) :: Int
+  , id (f (head [])) :: Int
+  , id (abs (f 0)) :: Int
+  , id (abs (ord _)) :: Int
+  , id (abs (ord c)) :: Int
+  , id (abs (ord d)) :: Int
+  , id (abs (negate _)) :: Int
+  , id (abs (negate x)) :: Int
+  , id (abs (negate y)) :: Int
+  , id (abs (head _)) :: Int
+  , id (abs (head xs)) :: Int
+  , id (abs (head ys)) :: Int
+  , id (negate (f 0)) :: Int
+  , id (negate (ord _)) :: Int
+  , id (negate (ord c)) :: Int
+  , id (negate (ord d)) :: Int
+  , id (negate (abs _)) :: Int
+  , id (negate (abs x)) :: Int
+  , id (negate (abs y)) :: Int
+  , id (negate (head _)) :: Int
+  , id (negate (head xs)) :: Int
+  , id (negate (head ys)) :: Int
+  , id (head (sort _)) :: Int
+  , id (head (tail _)) :: Int
+  , id (head (tail xs)) :: Int
+  , id (head (tail ys)) :: Int
+  , id (_ * 0) :: Int
+  , id (_ * 1) :: Int
+  , id (_ * (-1)) :: Int
+  , id (x * 0) :: Int
+  , id (x * 1) :: Int
+  , id (y * 0) :: Int
+  , id (0 * _) :: Int
+  , id (0 * x) :: Int
+  , id (0 * y) :: Int
+  , id (1 * _) :: Int
+  , id (1 * x) :: Int
+  , id ((-1) * _) :: Int
+  , id (_ + 0) :: Int
+  , id (_ + 1) :: Int
+  , id (_ + 2) :: Int
+  , id (_ + (-1)) :: Int
+  , id (x + 0) :: Int
+  , id (x + 1) :: Int
+  , id (x + (-1)) :: Int
+  , id (y + 0) :: Int
+  , id (y + 1) :: Int
+  , id (z + 0) :: Int
+  , id (0 + _) :: Int
+  , id (0 + x) :: Int
+  , id (0 + y) :: Int
+  , id (0 + z) :: Int
+  , id (1 + _) :: Int
+  , id (1 + x) :: Int
+  , id (1 + y) :: Int
+  , id (2 + _) :: Int
+  , id ((-1) + _) :: Int
+  , id ((-1) + x) :: Int
+  , abs (id (ord _)) :: Int
+  , abs (id (ord c)) :: Int
+  , abs (id (negate _)) :: Int
+  , abs (id (negate x)) :: Int
+  , abs (id (head _)) :: Int
+  , abs (id (head xs)) :: Int
+  , abs (negate (ord _)) :: Int
+  , abs (negate (id _)) :: Int
+  , abs (negate (id x)) :: Int
+  , abs (negate (head _)) :: Int
+  , abs (head (tail _)) :: Int
+  , abs (_ * 0) :: Int
+  , abs (0 * _) :: Int
+  , abs (_ + 0) :: Int
+  , abs (_ + 1) :: Int
+  , abs (x + 0) :: Int
+  , abs (0 + _) :: Int
+  , abs (0 + x) :: Int
+  , abs (1 + _) :: Int
+  , negate (id (ord _)) :: Int
+  , negate (id (ord c)) :: Int
+  , negate (id (abs _)) :: Int
+  , negate (id (abs x)) :: Int
+  , negate (id (head _)) :: Int
+  , negate (id (head xs)) :: Int
+  , negate (abs (ord _)) :: Int
+  , negate (abs (id _)) :: Int
+  , negate (abs (id x)) :: Int
+  , negate (abs (head _)) :: Int
+  , negate (head (tail _)) :: Int
+  , negate (_ * 0) :: Int
+  , negate (0 * _) :: Int
+  , negate (_ + 0) :: Int
+  , negate (_ + 1) :: Int
+  , negate (x + 0) :: Int
+  , negate (0 + _) :: Int
+  , negate (0 + x) :: Int
+  , negate (1 + _) :: Int
+  , head [_] :: Int
+  , head (_:[0]) :: Int
+  , head (_:[1]) :: Int
+  , head (_:[0,0]) :: Int
+  , head [x] :: Int
+  , head (x:[0]) :: Int
+  , head [y] :: Int
+  , head (0:_) :: Int
+  , head (0:xs) :: Int
+  , head (0:ys) :: Int
+  , head (1:_) :: Int
+  , head (1:xs) :: Int
+  , head ((-1):_) :: Int
+  , head (insert _ []) :: Int
+  , head (insert 0 _) :: Int
+  , head (_ ++ []) :: Int
+  , head (_ ++ [0]) :: Int
+  , head (xs ++ []) :: Int
+  , head ([] ++ _) :: Int
+  , head ([] ++ xs) :: Int
+  , head ([0] ++ _) :: Int
+  , sort [_] :: [Int]
+  , sort (0:_) :: [Int]
+  , tail [_] :: [Int]
+  , tail (_:[0]) :: [Int]
+  , tail [x] :: [Int]
+  , tail (0:_) :: [Int]
+  , tail (0:xs) :: [Int]
+  , tail (1:_) :: [Int]
+  , tail (_ ++ []) :: [Int]
+  , tail ([] ++ _) :: [Int]
+  , (id (ord _) +) :: Int -> Int
+  , (id (abs _) +) :: Int -> Int
+  , (id (negate _) +) :: Int -> Int
+  , (id (head _) +) :: Int -> Int
+  , (abs (id _) +) :: Int -> Int
+  , (negate (id _) +) :: Int -> Int
+  , _ && not False :: Bool
+  , _ && not True :: Bool
+  , False && not _ :: Bool
+  , True && not _ :: Bool
+  , not _ && False :: Bool
+  , not _ && True :: Bool
+  , not False && _ :: Bool
+  , not True && _ :: Bool
+  , _ == not False :: Bool
+  , _ == not True :: Bool
+  , False == not _ :: Bool
+  , True == not _ :: Bool
+  , not _ == False :: Bool
+  , not _ == True :: Bool
+  , not False == _ :: Bool
+  , not True == _ :: Bool
+  , _ || not False :: Bool
+  , _ || not True :: Bool
+  , p || not False :: Bool
+  , p || not True :: Bool
+  , False || not _ :: Bool
+  , False || not p :: Bool
+  , True || not _ :: Bool
+  , True || not p :: Bool
+  , not _ || False :: Bool
+  , not _ || True :: Bool
+  , not p || False :: Bool
+  , not p || True :: Bool
+  , not False || _ :: Bool
+  , not False || p :: Bool
+  , not True || _ :: Bool
+  , not True || p :: Bool
+  , _ == id 0 :: Bool
+  , 0 == id _ :: Bool
+  , id _ == 0 :: Bool
+  , id 0 == _ :: Bool
+  , _ * ord 'a' :: Int
+  , _ * id 0 :: Int
+  , _ * id 1 :: Int
+  , _ * abs 0 :: Int
+  , _ * negate 0 :: Int
+  , _ * head [] :: Int
+  , x * id 0 :: Int
+  , 0 * ord _ :: Int
+  , 0 * id _ :: Int
+  , 0 * id x :: Int
+  , 0 * abs _ :: Int
+  , 0 * negate _ :: Int
+  , 0 * head _ :: Int
+  , 1 * id _ :: Int
+  , ord _ * 0 :: Int
+  , ord 'a' * _ :: Int
+  , id _ * 0 :: Int
+  , id _ * 1 :: Int
+  , id x * 0 :: Int
+  , id 0 * _ :: Int
+  , id 0 * x :: Int
+  , id 1 * _ :: Int
+  , abs _ * 0 :: Int
+  , abs 0 * _ :: Int
+  , negate _ * 0 :: Int
+  , negate 0 * _ :: Int
+  , head _ * 0 :: Int
+  , head [] * _ :: Int
+  , _ + ord ' ' :: Int
+  , _ + ord 'a' :: Int
+  , _ + id 0 :: Int
+  , _ + id 1 :: Int
+  , _ + id (-1) :: Int
+  , _ + abs 0 :: Int
+  , _ + abs 1 :: Int
+  , _ + negate 0 :: Int
+  , _ + negate 1 :: Int
+  , _ + head [] :: Int
+  , _ + head [0] :: Int
+  , x + ord 'a' :: Int
+  , x + id 0 :: Int
+  , x + id 1 :: Int
+  , x + abs 0 :: Int
+  , x + negate 0 :: Int
+  , x + head [] :: Int
+  , y + id 0 :: Int
+  , 0 + ord _ :: Int
+  , 0 + ord c :: Int
+  , 0 + id _ :: Int
+  , 0 + id x :: Int
+  , 0 + id y :: Int
+  , 0 + abs _ :: Int
+  , 0 + abs x :: Int
+  , 0 + negate _ :: Int
+  , 0 + negate x :: Int
+  , 0 + head _ :: Int
+  , 0 + head xs :: Int
+  , 1 + ord _ :: Int
+  , 1 + id _ :: Int
+  , 1 + id x :: Int
+  , 1 + abs _ :: Int
+  , 1 + negate _ :: Int
+  , 1 + head _ :: Int
+  , (-1) + id _ :: Int
+  , ord _ + 0 :: Int
+  , ord _ + 1 :: Int
+  , ord c + 0 :: Int
+  , ord ' ' + _ :: Int
+  , ord 'a' + _ :: Int
+  , ord 'a' + x :: Int
+  , id _ + 0 :: Int
+  , id _ + 1 :: Int
+  , id _ + (-1) :: Int
+  , id x + 0 :: Int
+  , id x + 1 :: Int
+  , id y + 0 :: Int
+  , id 0 + _ :: Int
+  , id 0 + x :: Int
+  , id 0 + y :: Int
+  , id 1 + _ :: Int
+  , id 1 + x :: Int
+  , id (-1) + _ :: Int
+  , abs _ + 0 :: Int
+  , abs _ + 1 :: Int
+  , abs x + 0 :: Int
+  , abs 0 + _ :: Int
+  , abs 0 + x :: Int
+  , abs 1 + _ :: Int
+  , negate _ + 0 :: Int
+  , negate _ + 1 :: Int
+  , negate x + 0 :: Int
+  , negate 0 + _ :: Int
+  , negate 0 + x :: Int
+  , negate 1 + _ :: Int
+  , head _ + 0 :: Int
+  , head _ + 1 :: Int
+  , head xs + 0 :: Int
+  , head [] + _ :: Int
+  , head [] + x :: Int
+  , head [0] + _ :: Int
+  , elem (id _) [] :: Bool
+  , elem (id 0) _ :: Bool
+  , _:sort [] :: [Int]
+  , _:tail [] :: [Int]
+  , _:tail [0] :: [Int]
+  , x:tail [] :: [Int]
+  , 0:sort _ :: [Int]
+  , 0:tail _ :: [Int]
+  , 0:tail xs :: [Int]
+  , 1:tail _ :: [Int]
+  , [ord _] :: [Int]
+  , ord _:[0] :: [Int]
+  , [ord c] :: [Int]
+  , ord ' ':_ :: [Int]
+  , ord 'a':_ :: [Int]
+  , ord 'a':xs :: [Int]
+  , [id _] :: [Int]
+  , id _:[0] :: [Int]
+  , id _:[1] :: [Int]
+  , id _:[0,0] :: [Int]
+  , [id x] :: [Int]
+  , id x:[0] :: [Int]
+  , [id y] :: [Int]
+  , id 0:_ :: [Int]
+  , id 0:xs :: [Int]
+  , id 0:ys :: [Int]
+  , id 1:_ :: [Int]
+  , id 1:xs :: [Int]
+  , id (-1):_ :: [Int]
+  , [abs _] :: [Int]
+  , abs _:[0] :: [Int]
+  , [abs x] :: [Int]
+  , abs 0:_ :: [Int]
+  , abs 0:xs :: [Int]
+  , abs 1:_ :: [Int]
+  , [negate _] :: [Int]
+  , negate _:[0] :: [Int]
+  , [negate x] :: [Int]
+  , negate 0:_ :: [Int]
+  , negate 0:xs :: [Int]
+  , negate 1:_ :: [Int]
+  , [head _] :: [Int]
+  , head _:[0] :: [Int]
+  , [head xs] :: [Int]
+  , head []:_ :: [Int]
+  , head []:xs :: [Int]
+  , head [0]:_ :: [Int]
+  , insert (id _) [] :: [Int]
+  , insert (id 0) _ :: [Int]
+  , _ ++ tail [] :: [Int]
+  , [] ++ tail _ :: [Int]
+  , tail _ ++ [] :: [Int]
+  , tail [] ++ _ :: [Int]
+  , not (not (not False)) :: Bool
+  , not (not (not True)) :: Bool
+  , id (id (id 0)) :: Int
+  , id (id (id 1)) :: Int
+  , id (id (id 2)) :: Int
+  , id (id (id (-1))) :: Int
+  , not (False || False) :: Bool
+  , not (True || True) :: Bool
+  , id (id (ord ' ')) :: Int
+  , id (id (ord 'a')) :: Int
+  , id (id (ord 'b')) :: Int
+  , id (id (abs 0)) :: Int
+  , id (id (abs 1)) :: Int
+  , id (id (abs (-1))) :: Int
+  , id (id (negate 0)) :: Int
+  , id (id (negate 1)) :: Int
+  , id (id (negate (-1))) :: Int
+  , id (id (head [])) :: Int
+  , id (id (head [0])) :: Int
+  , id (id (head [1])) :: Int
+  , id (id (head [0,0])) :: Int
+  , id (abs (id 0)) :: Int
+  , id (abs (id 1)) :: Int
+  , id (abs (id (-1))) :: Int
+  , id (abs (abs 0)) :: Int
+  , id (abs (abs 1)) :: Int
+  , id (negate (id 0)) :: Int
+  , id (negate (id 1)) :: Int
+  , id (negate (id (-1))) :: Int
+  , id (negate (negate 0)) :: Int
+  , id (negate (negate 1)) :: Int
+  , id (0 * 0) :: Int
+  , id (0 + 0) :: Int
+  , id (1 + 1) :: Int
+  , abs (id (id 0)) :: Int
+  , abs (id (id 1)) :: Int
+  , abs (id (abs 0)) :: Int
+  , abs (abs (id 0)) :: Int
+  , abs (0 + 0) :: Int
+  , negate (id (id 0)) :: Int
+  , negate (id (id 1)) :: Int
+  , negate (id (negate 0)) :: Int
+  , negate (negate (id 0)) :: Int
+  , negate (0 + 0) :: Int
+  , head ([] ++ []) :: Int
+  , (id (id 0) +) :: Int -> Int
+  , False || not False :: Bool
+  , True || not True :: Bool
+  , not False || False :: Bool
+  , not True || True :: Bool
+  , 0 * id 0 :: Int
+  , id 0 * 0 :: Int
+  , 0 + id 0 :: Int
+  , 0 + abs 0 :: Int
+  , 0 + negate 0 :: Int
+  , id 0 + 0 :: Int
+  , abs 0 + 0 :: Int
+  , negate 0 + 0 :: Int
+  , [head []] :: [Int]
+  , not (False || True) :: Bool
+  , not (True || False) :: Bool
+  , id (abs (ord ' ')) :: Int
+  , id (abs (ord 'a')) :: Int
+  , id (abs (negate 0)) :: Int
+  , id (abs (negate 1)) :: Int
+  , id (abs (head [])) :: Int
+  , id (abs (head [0])) :: Int
+  , id (negate (ord ' ')) :: Int
+  , id (negate (ord 'a')) :: Int
+  , id (negate (abs 0)) :: Int
+  , id (negate (abs 1)) :: Int
+  , id (negate (head [])) :: Int
+  , id (negate (head [0])) :: Int
+  , id (head (tail [])) :: Int
+  , id (head (tail [0])) :: Int
+  , id (0 * 1) :: Int
+  , id (1 * 0) :: Int
+  , id (0 + 1) :: Int
+  , id (0 + (-1)) :: Int
+  , id (1 + 0) :: Int
+  , id ((-1) + 0) :: Int
+  , abs (id (ord 'a')) :: Int
+  , abs (id (negate 0)) :: Int
+  , abs (id (head [])) :: Int
+  , abs (negate (id 0)) :: Int
+  , negate (id (ord 'a')) :: Int
+  , negate (id (abs 0)) :: Int
+  , negate (id (head [])) :: Int
+  , negate (abs (id 0)) :: Int
+  , head [0] :: Int
+  , head (0:[0]) :: Int
+  , head [1] :: Int
+  , tail [0] :: [Int]
+  , False || not True :: Bool
+  , True || not False :: Bool
+  , not False || True :: Bool
+  , not True || False :: Bool
+  , 0 + ord 'a' :: Int
+  , 0 + id 1 :: Int
+  , 0 + head [] :: Int
+  , 1 + id 0 :: Int
+  , ord 'a' + 0 :: Int
+  , id 0 + 1 :: Int
+  , id 1 + 0 :: Int
+  , head [] + 0 :: Int
+  , 0:tail [] :: [Int]
+  , [ord 'a'] :: [Int]
+  , [id 0] :: [Int]
+  , id 0:[0] :: [Int]
+  , [id 1] :: [Int]
+  , [abs 0] :: [Int]
+  , [negate 0] :: [Int]
+  , _:x:_ :: [Int]
+  , _:x:xs :: [Int]
+  , _:x:ys :: [Int]
+  , _:y:_ :: [Int]
+  , _:y:xs :: [Int]
+  , _:z:_ :: [Int]
+  , x:_:_ :: [Int]
+  , x:_:xs :: [Int]
+  , x:_:ys :: [Int]
+  , x:y:_ :: [Int]
+  , y:_:_ :: [Int]
+  , y:_:xs :: [Int]
+  , y:x:_ :: [Int]
+  , z:_:_ :: [Int]
+  , f (head (_:_)) :: Int
+  , id (f (_ + x)) :: Int
+  , id (f (x + _)) :: Int
+  , id (_ + f x) :: Int
+  , id (x + f _) :: Int
+  , id (f _ + x) :: Int
+  , id (f x + _) :: Int
+  , head (f _:_) :: Int
+  , _ || elem _ _ :: Bool
+  , elem _ _ || _ :: Bool
+  , elem _ (x:_) :: Bool
+  , elem x (_:_) :: Bool
+  , _:insert x _ :: [Int]
+  , _:(_ ++ xs) :: [Int]
+  , _:(_ ++ ys) :: [Int]
+  , _:(xs ++ _) :: [Int]
+  , _:(ys ++ _) :: [Int]
+  , x:insert _ _ :: [Int]
+  , x:(_ ++ xs) :: [Int]
+  , x:(xs ++ _) :: [Int]
+  , f (id _):_ :: [Int]
+  , id (f _):_ :: [Int]
+  , _ * x:_ :: [Int]
+  , x * _:_ :: [Int]
+  , _ + x:_ :: [Int]
+  , _ + x:xs :: [Int]
+  , _ + y:_ :: [Int]
+  , x + _:_ :: [Int]
+  , x + _:xs :: [Int]
+  , y + _:_ :: [Int]
+  , insert _ (x:_) :: [Int]
+  , insert x (_:_) :: [Int]
+  , _ ++ (_:xs) :: [Int]
+  , _ ++ (_:ys) :: [Int]
+  , _ ++ (x:xs) :: [Int]
+  , xs ++ (_:_) :: [Int]
+  , xs ++ (x:_) :: [Int]
+  , ys ++ (_:_) :: [Int]
+  , (_:_) ++ xs :: [Int]
+  , (_:_) ++ ys :: [Int]
+  , (_:xs) ++ _ :: [Int]
+  , (_:ys) ++ _ :: [Int]
+  , (x:_) ++ xs :: [Int]
+  , (x:xs) ++ _ :: [Int]
+  , _ || (_ || p) :: Bool
+  , _ || (p || _) :: Bool
+  , p || (_ || _) :: Bool
+  , (_ || _) || p :: Bool
+  , (_ || p) || _ :: Bool
+  , (p || _) || _ :: Bool
+  , _ + (_ + x) :: Int
+  , _ + (_ + y) :: Int
+  , _ + (x + _) :: Int
+  , _ + (x + x) :: Int
+  , _ + (y + _) :: Int
+  , x + (_ + _) :: Int
+  , x + (_ + x) :: Int
+  , x + (x + _) :: Int
+  , y + (_ + _) :: Int
+  , (_ + _) + x :: Int
+  , (_ + _) + y :: Int
+  , (_ + x) + _ :: Int
+  , (_ + x) + x :: Int
+  , (_ + y) + _ :: Int
+  , (x + _) + _ :: Int
+  , (x + _) + x :: Int
+  , (x + x) + _ :: Int
+  , (y + _) + _ :: Int
+  , _:_:_ :: [Int]
+  , _:_:xs :: [Int]
+  , _:_:ys :: [Int]
+  , _:_:zs :: [Int]
+  , x:x:_ :: [Int]
+  , x:x:xs :: [Int]
+  , _ ++ (_ ++ xs) :: [Int]
+  , _ ++ (xs ++ _) :: [Int]
+  , xs ++ (_ ++ _) :: [Int]
+  , (_ ++ _) ++ xs :: [Int]
+  , (_ ++ xs) ++ _ :: [Int]
+  , (xs ++ _) ++ _ :: [Int]
+  , f (id (_ + _)) :: Int
+  , f (_ + id _) :: Int
+  , f (id _ + _) :: Int
+  , id (f (_ * _)) :: Int
+  , id (f (_ + _)) :: Int
+  , id (g (_ + _)) :: Int
+  , id (_ * f _) :: Int
+  , id (f _ * _) :: Int
+  , id (_ + f _) :: Int
+  , id (_ + g _) :: Int
+  , id (f _ + _) :: Int
+  , id (g _ + _) :: Int
+  , _ || _ == _ :: Bool
+  , _ == _ || _ :: Bool
+  , _ * (_ + x) :: Int
+  , _ * (x + _) :: Int
+  , x * (_ + _) :: Int
+  , (_ + _) * x :: Int
+  , (_ + x) * _ :: Int
+  , (x + _) * _ :: Int
+  , _ + f (id _) :: Int
+  , _ + id (f _) :: Int
+  , _ + _ * x :: Int
+  , _ + x * _ :: Int
+  , x + _ * _ :: Int
+  , f _ + id _ :: Int
+  , f (id _) + _ :: Int
+  , id _ + f _ :: Int
+  , id (f _) + _ :: Int
+  , _ * _ + x :: Int
+  , _ * x + _ :: Int
+  , x * _ + _ :: Int
+  , elem _ (_:_) :: Bool
+  , elem _ (_:xs) :: Bool
+  , elem _ (_ ++ _) :: Bool
+  , elem (_ + _) _ :: Bool
+  , _:insert _ _ :: [Int]
+  , _:insert _ xs :: [Int]
+  , _:(_ ++ _) :: [Int]
+  , _:(xs ++ xs) :: [Int]
+  , x:(_ ++ _) :: [Int]
+  , y:(_ ++ _) :: [Int]
+  , _ * _:_ :: [Int]
+  , _ * _:xs :: [Int]
+  , _ + _:_ :: [Int]
+  , _ + _:xs :: [Int]
+  , _ + _:ys :: [Int]
+  , x + x:_ :: [Int]
+  , insert _ (_:_) :: [Int]
+  , insert _ (_:xs) :: [Int]
+  , insert _ (_ ++ _) :: [Int]
+  , insert (_ + _) _ :: [Int]
+  , _ ++ (_:_) :: [Int]
+  , _ ++ (x:_) :: [Int]
+  , _ ++ (y:_) :: [Int]
+  , _ ++ insert _ _ :: [Int]
+  , xs ++ (_:xs) :: [Int]
+  , (_:_) ++ _ :: [Int]
+  , (_:xs) ++ xs :: [Int]
+  , (x:_) ++ _ :: [Int]
+  , (y:_) ++ _ :: [Int]
+  , insert _ _ ++ _ :: [Int]
+  , f (id (id (id _))) :: Int
+  , id (f (id (id _))) :: Int
+  , id (f (id (id x))) :: Int
+  , id (g (id (id _))) :: Int
+  , id (id (f (id _))) :: Int
+  , id (id (f (id x))) :: Int
+  , id (id (g (id _))) :: Int
+  , id (id (id (f _))) :: Int
+  , id (id (id (f x))) :: Int
+  , id (id (id (g _))) :: Int
+  , not (not (_ || p)) :: Bool
+  , not (not (p || _)) :: Bool
+  , not (not (elem _ _)) :: Bool
+  , not (_ || not p) :: Bool
+  , not (p || not _) :: Bool
+  , not (not _ || p) :: Bool
+  , not (not p || _) :: Bool
+  , id (f (id (ord _))) :: Int
+  , id (f (id (abs _))) :: Int
+  , id (f (id (negate _))) :: Int
+  , id (f (id (head _))) :: Int
+  , id (f (abs (id _))) :: Int
+  , id (f (negate (id _))) :: Int
+  , id (id (f (ord _))) :: Int
+  , id (id (f (abs _))) :: Int
+  , id (id (f (negate _))) :: Int
+  , id (id (f (head _))) :: Int
+  , id (id (abs (f _))) :: Int
+  , id (id (negate (f _))) :: Int
+  , id (id (_ * x)) :: Int
+  , id (id (_ * y)) :: Int
+  , id (id (x * _)) :: Int
+  , id (id (y * _)) :: Int
+  , id (id (_ + x)) :: Int
+  , id (id (_ + y)) :: Int
+  , id (id (_ + z)) :: Int
+  , id (id (x + _)) :: Int
+  , id (id (x + y)) :: Int
+  , id (id (y + _)) :: Int
+  , id (id (y + x)) :: Int
+  , id (id (z + _)) :: Int
+  , id (abs (f (id _))) :: Int
+  , id (abs (id (f _))) :: Int
+  , id (negate (f (id _))) :: Int
+  , id (negate (id (f _))) :: Int
+  , id (_ * id x) :: Int
+  , id (_ * id y) :: Int
+  , id (x * id _) :: Int
+  , id (y * id _) :: Int
+  , id (id _ * x) :: Int
+  , id (id _ * y) :: Int
+  , id (id x * _) :: Int
+  , id (id y * _) :: Int
+  , id (_ + id x) :: Int
+  , id (_ + id y) :: Int
+  , id (_ + id z) :: Int
+  , id (x + id _) :: Int
+  , id (x + id y) :: Int
+  , id (y + id _) :: Int
+  , id (y + id x) :: Int
+  , id (z + id _) :: Int
+  , id (id _ + x) :: Int
+  , id (id _ + y) :: Int
+  , id (id _ + z) :: Int
+  , id (id x + _) :: Int
+  , id (id x + y) :: Int
+  , id (id y + _) :: Int
+  , id (id y + x) :: Int
+  , id (id z + _) :: Int
+  , head (head _:xs) :: Int
+  , head (head xs:_) :: Int
+  , tail (tail (_:_)) :: [Int]
+  , tail (_:tail _) :: [Int]
+  , _ || not (not p) :: Bool
+  , p || not (not _) :: Bool
+  , not _ || not p :: Bool
+  , not p || not _ :: Bool
+  , not (not _) || p :: Bool
+  , not (not p) || _ :: Bool
+  , _ * id (id x) :: Int
+  , x * id (id _) :: Int
+  , id _ * id x :: Int
+  , id x * id _ :: Int
+  , id (id _) * x :: Int
+  , id (id x) * _ :: Int
+  , _ + id (id x) :: Int
+  , _ + id (id y) :: Int
+  , _ + (x + 0) :: Int
+  , _ + (0 + x) :: Int
+  , x + id (id _) :: Int
+  , x + (_ + 0) :: Int
+  , x + (0 + _) :: Int
+  , y + id (id _) :: Int
+  , 0 + (_ + x) :: Int
+  , 0 + (x + _) :: Int
+  , id _ + id x :: Int
+  , id _ + id y :: Int
+  , id x + id _ :: Int
+  , id y + id _ :: Int
+  , id (id _) + x :: Int
+  , id (id _) + y :: Int
+  , id (id x) + _ :: Int
+  , id (id y) + _ :: Int
+  , (_ + x) + 0 :: Int
+  , (_ + 0) + x :: Int
+  , (x + _) + 0 :: Int
+  , (x + 0) + _ :: Int
+  , (0 + _) + x :: Int
+  , (0 + x) + _ :: Int
+  , elem (id (id _)) _ :: Bool
+  , _:tail (tail _) :: [Int]
+  , [_,x] :: [Int]
+  , _:x:[0] :: [Int]
+  , [_,y] :: [Int]
+  , _:0:_ :: [Int]
+  , _:0:xs :: [Int]
+  , _:0:ys :: [Int]
+  , _:1:_ :: [Int]
+  , _:1:xs :: [Int]
+  , _:(-1):_ :: [Int]
+  , [x,_] :: [Int]
+  , x:_:[0] :: [Int]
+  , x:0:_ :: [Int]
+  , x:0:xs :: [Int]
+  , x:1:_ :: [Int]
+  , [y,_] :: [Int]
+  , y:0:_ :: [Int]
+  , 0:_:_ :: [Int]
+  , 0:_:xs :: [Int]
+  , 0:_:ys :: [Int]
+  , 0:x:_ :: [Int]
+  , 0:x:xs :: [Int]
+  , 0:y:_ :: [Int]
+  , 1:_:_ :: [Int]
+  , 1:_:xs :: [Int]
+  , 1:x:_ :: [Int]
+  , (-1):_:_ :: [Int]
+  , id (id _):_ :: [Int]
+  , id (id _):xs :: [Int]
+  , id (id _):ys :: [Int]
+  , id (id x):_ :: [Int]
+  , id (id x):xs :: [Int]
+  , id (id y):_ :: [Int]
+  , abs (abs _):_ :: [Int]
+  , negate (negate _):_ :: [Int]
+  , insert (id (id _)) _ :: [Int]
+  , not (elem (id _) _) :: Bool
+  , id (f (_ + 0)) :: Int
+  , id (f (0 + _)) :: Int
+  , id (abs (_ * x)) :: Int
+  , id (abs (x * _)) :: Int
+  , id (abs (_ + x)) :: Int
+  , id (abs (_ + y)) :: Int
+  , id (abs (x + _)) :: Int
+  , id (abs (y + _)) :: Int
+  , id (negate (_ * x)) :: Int
+  , id (negate (x * _)) :: Int
+  , id (negate (_ + x)) :: Int
+  , id (negate (_ + y)) :: Int
+  , id (negate (x + _)) :: Int
+  , id (negate (y + _)) :: Int
+  , id (head (_:_)) :: Int
+  , id (head (_:xs)) :: Int
+  , id (head (_:ys)) :: Int
+  , id (head (_:zs)) :: Int
+  , id (head (x:_)) :: Int
+  , id (head (x:xs)) :: Int
+  , id (head (x:ys)) :: Int
+  , id (head (y:_)) :: Int
+  , id (head (y:xs)) :: Int
+  , id (head (z:_)) :: Int
+  , id (head (insert _ _)) :: Int
+  , id (head (_ ++ xs)) :: Int
+  , id (head (_ ++ ys)) :: Int
+  , id (head (xs ++ _)) :: Int
+  , id (head (ys ++ _)) :: Int
+  , id (_ * ord _) :: Int
+  , id (_ * ord c) :: Int
+  , id (_ * abs x) :: Int
+  , id (_ * negate x) :: Int
+  , id (_ * head _) :: Int
+  , id (_ * head xs) :: Int
+  , id (x * ord _) :: Int
+  , id (x * abs _) :: Int
+  , id (x * negate _) :: Int
+  , id (x * head _) :: Int
+  , id (ord _ * _) :: Int
+  , id (ord _ * x) :: Int
+  , id (ord c * _) :: Int
+  , id (abs _ * x) :: Int
+  , id (abs x * _) :: Int
+  , id (negate _ * x) :: Int
+  , id (negate x * _) :: Int
+  , id (head _ * _) :: Int
+  , id (head _ * x) :: Int
+  , id (head xs * _) :: Int
+  , id (_ + f 0) :: Int
+  , id (_ + ord _) :: Int
+  , id (_ + ord c) :: Int
+  , id (_ + ord d) :: Int
+  , id (_ + abs x) :: Int
+  , id (_ + abs y) :: Int
+  , id (_ + negate x) :: Int
+  , id (_ + negate y) :: Int
+  , id (_ + head _) :: Int
+  , id (_ + head xs) :: Int
+  , id (_ + head ys) :: Int
+  , id (x + ord _) :: Int
+  , id (x + ord c) :: Int
+  , id (x + abs _) :: Int
+  , id (x + negate _) :: Int
+  , id (x + head _) :: Int
+  , id (x + head xs) :: Int
+  , id (y + ord _) :: Int
+  , id (y + abs _) :: Int
+  , id (y + negate _) :: Int
+  , id (y + head _) :: Int
+  , id (0 + f _) :: Int
+  , id (f _ + 0) :: Int
+  , id (f 0 + _) :: Int
+  , id (ord _ + _) :: Int
+  , id (ord _ + x) :: Int
+  , id (ord _ + y) :: Int
+  , id (ord c + _) :: Int
+  , id (ord c + x) :: Int
+  , id (ord d + _) :: Int
+  , id (abs _ + x) :: Int
+  , id (abs _ + y) :: Int
+  , id (abs x + _) :: Int
+  , id (abs y + _) :: Int
+  , id (negate _ + x) :: Int
+  , id (negate _ + y) :: Int
+  , id (negate x + _) :: Int
+  , id (negate y + _) :: Int
+  , id (head _ + _) :: Int
+  , id (head _ + x) :: Int
+  , id (head _ + y) :: Int
+  , id (head xs + _) :: Int
+  , id (head xs + x) :: Int
+  , id (head ys + _) :: Int
+  , abs (id (_ + x)) :: Int
+  , abs (id (x + _)) :: Int
+  , abs (head (_:_)) :: Int
+  , abs (head (_:xs)) :: Int
+  , abs (head (x:_)) :: Int
+  , abs (_ + ord _) :: Int
+  , abs (_ + id x) :: Int
+  , abs (_ + head _) :: Int
+  , abs (x + id _) :: Int
+  , abs (ord _ + _) :: Int
+  , abs (id _ + x) :: Int
+  , abs (id x + _) :: Int
+  , abs (head _ + _) :: Int
+  , negate (id (_ + x)) :: Int
+  , negate (id (x + _)) :: Int
+  , negate (head (_:_)) :: Int
+  , negate (head (_:xs)) :: Int
+  , negate (head (x:_)) :: Int
+  , negate (_ + ord _) :: Int
+  , negate (_ + id x) :: Int
+  , negate (_ + head _) :: Int
+  , negate (x + id _) :: Int
+  , negate (ord _ + _) :: Int
+  , negate (id _ + x) :: Int
+  , negate (id x + _) :: Int
+  , negate (head _ + _) :: Int
+  , head (sort (_:_)) :: Int
+  , head (tail (_:_)) :: Int
+  , head (tail (_:xs)) :: Int
+  , head (tail (x:_)) :: Int
+  , head (_:sort _) :: Int
+  , head (_:tail _) :: Int
+  , head (_:tail xs) :: Int
+  , head (x:tail _) :: Int
+  , head (ord _:_) :: Int
+  , head (ord _:xs) :: Int
+  , head (ord c:_) :: Int
+  , head (id _:_) :: Int
+  , head (id _:xs) :: Int
+  , head (id _:ys) :: Int
+  , head (id x:_) :: Int
+  , head (id x:xs) :: Int
+  , head (id y:_) :: Int
+  , head (abs _:_) :: Int
+  , head (abs _:xs) :: Int
+  , head (abs x:_) :: Int
+  , head (negate _:_) :: Int
+  , head (negate _:xs) :: Int
+  , head (negate x:_) :: Int
+  , head (insert (id _) _) :: Int
+  , sort (id _:_) :: [Int]
+  , tail (ord _:_) :: [Int]
+  , tail (id _:_) :: [Int]
+  , tail (id _:xs) :: [Int]
+  , tail (id x:_) :: [Int]
+  , tail (abs _:_) :: [Int]
+  , tail (negate _:_) :: [Int]
+  , (head (_:_) +) :: Int -> Int
+  , _ * id (ord _) :: Int
+  , _ * id (head _) :: Int
+  , ord _ * id _ :: Int
+  , id _ * ord _ :: Int
+  , id _ * head _ :: Int
+  , id (ord _) * _ :: Int
+  , id (head _) * _ :: Int
+  , head _ * id _ :: Int
+  , _ + id (ord _) :: Int
+  , _ + id (ord c) :: Int
+  , _ + id (abs x) :: Int
+  , _ + id (negate x) :: Int
+  , _ + id (head _) :: Int
+  , _ + id (head xs) :: Int
+  , _ + abs (ord _) :: Int
+  , _ + abs (id x) :: Int
+  , _ + abs (head _) :: Int
+  , _ + negate (ord _) :: Int
+  , _ + negate (id x) :: Int
+  , _ + negate (head _) :: Int
+  , _ + head (tail _) :: Int
+  , x + id (ord _) :: Int
+  , x + id (abs _) :: Int
+  , x + id (negate _) :: Int
+  , x + id (head _) :: Int
+  , x + abs (id _) :: Int
+  , x + negate (id _) :: Int
+  , ord _ + id _ :: Int
+  , ord _ + id x :: Int
+  , ord _ + abs _ :: Int
+  , ord _ + negate _ :: Int
+  , ord _ + head _ :: Int
+  , ord c + id _ :: Int
+  , id _ + ord _ :: Int
+  , id _ + ord c :: Int
+  , id _ + abs x :: Int
+  , id _ + negate x :: Int
+  , id _ + head _ :: Int
+  , id _ + head xs :: Int
+  , id x + ord _ :: Int
+  , id x + abs _ :: Int
+  , id x + negate _ :: Int
+  , id x + head _ :: Int
+  , id (ord _) + _ :: Int
+  , id (ord _) + x :: Int
+  , id (ord c) + _ :: Int
+  , id (abs _) + x :: Int
+  , id (abs x) + _ :: Int
+  , id (negate _) + x :: Int
+  , id (negate x) + _ :: Int
+  , id (head _) + _ :: Int
+  , id (head _) + x :: Int
+  , id (head xs) + _ :: Int
+  , abs _ + ord _ :: Int
+  , abs _ + id x :: Int
+  , abs _ + head _ :: Int
+  , abs x + id _ :: Int
+  , abs (ord _) + _ :: Int
+  , abs (id _) + x :: Int
+  , abs (id x) + _ :: Int
+  , abs (head _) + _ :: Int
+  , negate _ + ord _ :: Int
+  , negate _ + id x :: Int
+  , negate _ + head _ :: Int
+  , negate x + id _ :: Int
+  , negate (ord _) + _ :: Int
+  , negate (id _) + x :: Int
+  , negate (id x) + _ :: Int
+  , negate (head _) + _ :: Int
+  , head _ + ord _ :: Int
+  , head _ + id _ :: Int
+  , head _ + id x :: Int
+  , head _ + abs _ :: Int
+  , head _ + negate _ :: Int
+  , head xs + id _ :: Int
+  , head (tail _) + _ :: Int
+  , elem _ (0:_) :: Bool
+  , elem 0 (_:_) :: Bool
+  , _:insert 0 _ :: [Int]
+  , _:(_ ++ []) :: [Int]
+  , _:(_ ++ [0]) :: [Int]
+  , _:(xs ++ []) :: [Int]
+  , _:([] ++ _) :: [Int]
+  , _:([] ++ xs) :: [Int]
+  , _:([0] ++ _) :: [Int]
+  , x:(_ ++ []) :: [Int]
+  , x:([] ++ _) :: [Int]
+  , 0:insert _ _ :: [Int]
+  , 0:(_ ++ xs) :: [Int]
+  , 0:(xs ++ _) :: [Int]
+  , ord _:tail _ :: [Int]
+  , id _:sort _ :: [Int]
+  , id _:tail _ :: [Int]
+  , id _:tail xs :: [Int]
+  , id x:tail _ :: [Int]
+  , id (ord _):_ :: [Int]
+  , id (ord _):xs :: [Int]
+  , id (ord c):_ :: [Int]
+  , id (abs _):_ :: [Int]
+  , id (abs _):xs :: [Int]
+  , id (abs x):_ :: [Int]
+  , id (negate _):_ :: [Int]
+  , id (negate _):xs :: [Int]
+  , id (negate x):_ :: [Int]
+  , id (head _):xs :: [Int]
+  , id (head xs):_ :: [Int]
+  , abs _:tail _ :: [Int]
+  , abs (ord _):_ :: [Int]
+  , abs (id _):_ :: [Int]
+  , abs (id _):xs :: [Int]
+  , abs (id x):_ :: [Int]
+  , abs (negate _):_ :: [Int]
+  , negate _:tail _ :: [Int]
+  , negate (ord _):_ :: [Int]
+  , negate (id _):_ :: [Int]
+  , negate (id _):xs :: [Int]
+  , negate (id x):_ :: [Int]
+  , negate (abs _):_ :: [Int]
+  , _ * 0:_ :: [Int]
+  , 0 * _:_ :: [Int]
+  , [_ + x] :: [Int]
+  , _ + 0:_ :: [Int]
+  , _ + 0:xs :: [Int]
+  , _ + 1:_ :: [Int]
+  , [x + _] :: [Int]
+  , x + 0:_ :: [Int]
+  , 0 + _:_ :: [Int]
+  , 0 + _:xs :: [Int]
+  , 0 + x:_ :: [Int]
+  , 1 + _:_ :: [Int]
+  , insert _ (0:_) :: [Int]
+  , insert 0 (_:_) :: [Int]
+  , _ ++ [_] :: [Int]
+  , _ ++ (_:[0]) :: [Int]
+  , _ ++ [x] :: [Int]
+  , _ ++ (0:xs) :: [Int]
+  , xs ++ [_] :: [Int]
+  , xs ++ (0:_) :: [Int]
+  , [] ++ (_:_) :: [Int]
+  , [] ++ (_:xs) :: [Int]
+  , [] ++ (x:_) :: [Int]
+  , [0] ++ (_:_) :: [Int]
+  , (_:_) ++ [] :: [Int]
+  , (_:_) ++ [0] :: [Int]
+  , (_:xs) ++ [] :: [Int]
+  , [_] ++ _ :: [Int]
+  , [_] ++ xs :: [Int]
+  , (_:[0]) ++ _ :: [Int]
+  , (x:_) ++ [] :: [Int]
+  , [x] ++ _ :: [Int]
+  , (0:_) ++ xs :: [Int]
+  , (0:xs) ++ _ :: [Int]
+  , _ || (_ || _) :: Bool
+  , (_ || _) || _ :: Bool
+  , _ * (_ * _) :: Int
+  , (_ * _) * _ :: Int
+  , _ + (_ + _) :: Int
+  , (_ + _) + _ :: Int
+  , _ ++ (_ ++ _) :: [Int]
+  , (_ ++ _) ++ _ :: [Int]
+  , _ && (_ || _) :: Bool
+  , (_ || _) && _ :: Bool
+  , _ == (_ || _) :: Bool
+  , (_ || _) == _ :: Bool
+  , _ || _ && _ :: Bool
+  , _ || _ == _ :: Bool
+  , _ && _ || _ :: Bool
+  , _ == _ || _ :: Bool
+  , _ == _ + _ :: Bool
+  , _ + _ == _ :: Bool
+  , _ * (_ + _) :: Int
+  , (_ + _) * _ :: Int
+  , _ + _ * _ :: Int
+  , _ * _ + _ :: Int
+  , not (not (_ && _)) :: Bool
+  , not (not (_ == _)) :: Bool
+  , not (not (_ || _)) :: Bool
+  , not (not (_ == _)) :: Bool
+  , not (_ && not _) :: Bool
+  , not (not _ && _) :: Bool
+  , not (_ == not _) :: Bool
+  , not (not _ == _) :: Bool
+  , not (_ || not _) :: Bool
+  , not (not _ || _) :: Bool
+  , id (id (_ * _)) :: Int
+  , id (id (x * x)) :: Int
+  , id (id (_ + _)) :: Int
+  , id (id (x + x)) :: Int
+  , id (_ * id _) :: Int
+  , id (x * id x) :: Int
+  , id (id _ * _) :: Int
+  , id (id x * x) :: Int
+  , id (_ + id _) :: Int
+  , id (x + id x) :: Int
+  , id (id _ + _) :: Int
+  , id (id x + x) :: Int
+  , abs (abs (_ + _)) :: Int
+  , abs (_ + abs _) :: Int
+  , abs (abs _ + _) :: Int
+  , negate (negate (_ + _)) :: Int
+  , negate (_ + negate _) :: Int
+  , negate (negate _ + _) :: Int
+  , head (head _:_) :: Int
+  , (id (_ + _) +) :: Int -> Int
+  , ((_ + id _) +) :: Int -> Int
+  , ((id _ + _) +) :: Int -> Int
+  , _ && not (not _) :: Bool
+  , not _ && not _ :: Bool
+  , not (not _) && _ :: Bool
+  , _ == not (not _) :: Bool
+  , not _ == not _ :: Bool
+  , not (not _) == _ :: Bool
+  , _ || not (not _) :: Bool
+  , _ || (_ || False) :: Bool
+  , _ || (_ || True) :: Bool
+  , _ || (False || _) :: Bool
+  , _ || (True || _) :: Bool
+  , False || (_ || _) :: Bool
+  , True || (_ || _) :: Bool
+  , not _ || not _ :: Bool
+  , not (not _) || _ :: Bool
+  , (_ || _) || False :: Bool
+  , (_ || _) || True :: Bool
+  , (_ || False) || _ :: Bool
+  , (_ || True) || _ :: Bool
+  , (False || _) || _ :: Bool
+  , (True || _) || _ :: Bool
+  , _ == id (id _) :: Bool
+  , id _ == id _ :: Bool
+  , id (id _) == _ :: Bool
+  , _ * id (id _) :: Int
+  , id _ * id _ :: Int
+  , id (id _) * _ :: Int
+  , _ + id (id _) :: Int
+  , _ + abs (abs _) :: Int
+  , _ + negate (negate _) :: Int
+  , _ + (_ + 0) :: Int
+  , _ + (_ + 1) :: Int
+  , _ + (0 + _) :: Int
+  , _ + (1 + _) :: Int
+  , x + id (id x) :: Int
+  , 0 + (_ + _) :: Int
+  , 1 + (_ + _) :: Int
+  , ord _ + ord _ :: Int
+  , id _ + id _ :: Int
+  , id x + id x :: Int
+  , id (id _) + _ :: Int
+  , id (id x) + x :: Int
+  , abs _ + abs _ :: Int
+  , abs (abs _) + _ :: Int
+  , negate _ + negate _ :: Int
+  , negate (negate _) + _ :: Int
+  , head _ + head _ :: Int
+  , (_ + _) + 0 :: Int
+  , (_ + _) + 1 :: Int
+  , (_ + 0) + _ :: Int
+  , (_ + 1) + _ :: Int
+  , (0 + _) + _ :: Int
+  , (1 + _) + _ :: Int
+  , [_,_] :: [Int]
+  , _:_:[0] :: [Int]
+  , _:_:[1] :: [Int]
+  , _:_:[0,0] :: [Int]
+  , [x,x] :: [Int]
+  , _ ++ (_ ++ []) :: [Int]
+  , _ ++ ([] ++ _) :: [Int]
+  , [] ++ (_ ++ _) :: [Int]
+  , (_ ++ _) ++ [] :: [Int]
+  , (_ ++ []) ++ _ :: [Int]
+  , ([] ++ _) ++ _ :: [Int]
+  , not (_ == id _) :: Bool
+  , not (id _ == _) :: Bool
+  , id (abs (_ * _)) :: Int
+  , id (abs (_ + _)) :: Int
+  , id (abs (x + x)) :: Int
+  , id (negate (_ * _)) :: Int
+  , id (negate (_ + _)) :: Int
+  , id (negate (x + x)) :: Int
+  , id (head (_ ++ _)) :: Int
+  , id (head (xs ++ xs)) :: Int
+  , id (_ * abs _) :: Int
+  , id (_ * negate _) :: Int
+  , id (abs _ * _) :: Int
+  , id (negate _ * _) :: Int
+  , id (_ + abs _) :: Int
+  , id (_ + negate _) :: Int
+  , id (x + abs x) :: Int
+  , id (x + negate x) :: Int
+  , id (abs _ + _) :: Int
+  , id (abs x + x) :: Int
+  , id (negate _ + _) :: Int
+  , id (negate x + x) :: Int
+  , abs (id (_ * _)) :: Int
+  , abs (id (_ + _)) :: Int
+  , abs (negate (_ + _)) :: Int
+  , abs (head (_ ++ _)) :: Int
+  , abs (_ * id _) :: Int
+  , abs (id _ * _) :: Int
+  , abs (_ + id _) :: Int
+  , abs (_ + negate _) :: Int
+  , abs (id _ + _) :: Int
+  , abs (negate _ + _) :: Int
+  , negate (id (_ * _)) :: Int
+  , negate (id (_ + _)) :: Int
+  , negate (abs (_ + _)) :: Int
+  , negate (head (_ ++ _)) :: Int
+  , negate (_ * id _) :: Int
+  , negate (id _ * _) :: Int
+  , negate (_ + id _) :: Int
+  , negate (_ + abs _) :: Int
+  , negate (id _ + _) :: Int
+  , negate (abs _ + _) :: Int
+  , head (tail (_ ++ _)) :: Int
+  , head (_ ++ tail _) :: Int
+  , head (tail _ ++ _) :: Int
+  , tail (head _:_) :: [Int]
+  , _ * id (abs _) :: Int
+  , _ * id (negate _) :: Int
+  , _ * abs (id _) :: Int
+  , _ * negate (id _) :: Int
+  , _ * (_ + 0) :: Int
+  , _ * (0 + _) :: Int
+  , 0 * (_ + _) :: Int
+  , id _ * abs _ :: Int
+  , id _ * negate _ :: Int
+  , id (abs _) * _ :: Int
+  , id (negate _) * _ :: Int
+  , abs _ * id _ :: Int
+  , abs (id _) * _ :: Int
+  , negate _ * id _ :: Int
+  , negate (id _) * _ :: Int
+  , (_ + _) * 0 :: Int
+  , (_ + 0) * _ :: Int
+  , (0 + _) * _ :: Int
+  , _ + id (abs _) :: Int
+  , _ + id (negate _) :: Int
+  , _ + abs (id _) :: Int
+  , _ + abs (negate _) :: Int
+  , _ + negate (id _) :: Int
+  , _ + negate (abs _) :: Int
+  , _ + _ * 0 :: Int
+  , _ + 0 * _ :: Int
+  , 0 + _ * _ :: Int
+  , id _ + abs _ :: Int
+  , id _ + negate _ :: Int
+  , id (abs _) + _ :: Int
+  , id (negate _) + _ :: Int
+  , abs _ + id _ :: Int
+  , abs _ + negate _ :: Int
+  , abs (id _) + _ :: Int
+  , abs (negate _) + _ :: Int
+  , negate _ + id _ :: Int
+  , negate _ + abs _ :: Int
+  , negate (id _) + _ :: Int
+  , negate (abs _) + _ :: Int
+  , _ * _ + 0 :: Int
+  , _ * 0 + _ :: Int
+  , 0 * _ + _ :: Int
+  , elem _ [_] :: Bool
+  , _:insert _ [] :: [Int]
+  , 0:(_ ++ _) :: [Int]
+  , 1:(_ ++ _) :: [Int]
+  , id (head _):_ :: [Int]
+  , abs (head _):_ :: [Int]
+  , negate (head _):_ :: [Int]
+  , head _:tail _ :: [Int]
+  , head (tail _):_ :: [Int]
+  , [_ * _] :: [Int]
+  , [_ + _] :: [Int]
+  , _ + _:[0] :: [Int]
+  , insert _ [_] :: [Int]
+  , _ ++ (0:_) :: [Int]
+  , _ ++ (1:_) :: [Int]
+  , (0:_) ++ _ :: [Int]
+  , (1:_) ++ _ :: [Int]
+  , not (not (not (not _))) :: Bool
+  , not (not (not (not p))) :: Bool
+  , id (id (id (id _))) :: Int
+  , id (id (id (id x))) :: Int
+  , id (id (id (id y))) :: Int
+  , id (id (id (id z))) :: Int
+  , id (f (id (id 0))) :: Int
+  , id (id (f (id 0))) :: Int
+  , id (id (id (f 0))) :: Int
+  , id (id (id (ord _))) :: Int
+  , id (id (id (ord c))) :: Int
+  , id (id (id (ord d))) :: Int
+  , id (id (id (abs _))) :: Int
+  , id (id (id (abs x))) :: Int
+  , id (id (id (abs y))) :: Int
+  , id (id (id (negate _))) :: Int
+  , id (id (id (negate x))) :: Int
+  , id (id (id (negate y))) :: Int
+  , id (id (id (head _))) :: Int
+  , id (id (id (head xs))) :: Int
+  , id (id (id (head ys))) :: Int
+  , id (id (abs (id _))) :: Int
+  , id (id (abs (id x))) :: Int
+  , id (id (abs (id y))) :: Int
+  , id (id (abs (abs _))) :: Int
+  , id (id (abs (abs x))) :: Int
+  , id (id (negate (id _))) :: Int
+  , id (id (negate (id x))) :: Int
+  , id (id (negate (id y))) :: Int
+  , id (id (negate (negate _))) :: Int
+  , id (id (negate (negate x))) :: Int
+  , id (abs (id (id _))) :: Int
+  , id (abs (id (id x))) :: Int
+  , id (abs (id (id y))) :: Int
+  , id (abs (id (abs _))) :: Int
+  , id (abs (id (abs x))) :: Int
+  , id (abs (abs (id _))) :: Int
+  , id (abs (abs (id x))) :: Int
+  , id (abs (abs (abs _))) :: Int
+  , id (negate (id (id _))) :: Int
+  , id (negate (id (id x))) :: Int
+  , id (negate (id (id y))) :: Int
+  , id (negate (id (negate _))) :: Int
+  , id (negate (id (negate x))) :: Int
+  , id (negate (negate (id _))) :: Int
+  , id (negate (negate (id x))) :: Int
+  , id (negate (negate (negate _))) :: Int
+  , abs (id (id (id _))) :: Int
+  , abs (id (id (id x))) :: Int
+  , abs (id (id (abs _))) :: Int
+  , abs (id (abs (id _))) :: Int
+  , abs (abs (id (id _))) :: Int
+  , negate (id (id (id _))) :: Int
+  , negate (id (id (id x))) :: Int
+  , negate (id (id (negate _))) :: Int
+  , negate (id (negate (id _))) :: Int
+  , negate (negate (id (id _))) :: Int
+  , (id (id (id _)) +) :: Int -> Int
+  , _ + (0 + 0) :: Int
+  , 0 + (_ + 0) :: Int
+  , 0 + (0 + _) :: Int
+  , (_ + 0) + 0 :: Int
+  , (0 + _) + 0 :: Int
+  , (0 + 0) + _ :: Int
+  , 0:0:_ :: [Int]
+  , 0:0:xs :: [Int]
+  , not (not (_ || False)) :: Bool
+  , not (not (_ || True)) :: Bool
+  , not (not (False || _)) :: Bool
+  , not (not (True || _)) :: Bool
+  , not (_ || not False) :: Bool
+  , not (_ || not True) :: Bool
+  , not (False || not _) :: Bool
+  , not (True || not _) :: Bool
+  , not (not _ || False) :: Bool
+  , not (not _ || True) :: Bool
+  , not (not False || _) :: Bool
+  , not (not True || _) :: Bool
+  , id (id (abs (ord _))) :: Int
+  , id (id (abs (ord c))) :: Int
+  , id (id (abs (negate _))) :: Int
+  , id (id (abs (negate x))) :: Int
+  , id (id (abs (head _))) :: Int
+  , id (id (abs (head xs))) :: Int
+  , id (id (negate (ord _))) :: Int
+  , id (id (negate (ord c))) :: Int
+  , id (id (negate (abs _))) :: Int
+  , id (id (negate (abs x))) :: Int
+  , id (id (negate (head _))) :: Int
+  , id (id (negate (head xs))) :: Int
+  , id (id (head (sort _))) :: Int
+  , id (id (head (tail _))) :: Int
+  , id (id (head (tail xs))) :: Int
+  , id (id (_ * 0)) :: Int
+  , id (id (_ * 1)) :: Int
+  , id (id (x * 0)) :: Int
+  , id (id (0 * _)) :: Int
+  , id (id (0 * x)) :: Int
+  , id (id (1 * _)) :: Int
+  , id (id (_ + 0)) :: Int
+  , id (id (_ + 1)) :: Int
+  , id (id (_ + (-1))) :: Int
+  , id (id (x + 0)) :: Int
+  , id (id (x + 1)) :: Int
+  , id (id (y + 0)) :: Int
+  , id (id (0 + _)) :: Int
+  , id (id (0 + x)) :: Int
+  , id (id (0 + y)) :: Int
+  , id (id (1 + _)) :: Int
+  , id (id (1 + x)) :: Int
+  , id (id ((-1) + _)) :: Int
+  , id (abs (id (ord _))) :: Int
+  , id (abs (id (ord c))) :: Int
+  , id (abs (id (negate _))) :: Int
+  , id (abs (id (negate x))) :: Int
+  , id (abs (id (head _))) :: Int
+  , id (abs (id (head xs))) :: Int
+  , id (abs (abs (ord _))) :: Int
+  , id (abs (abs (negate _))) :: Int
+  , id (abs (abs (head _))) :: Int
+  , id (abs (negate (id _))) :: Int
+  , id (abs (negate (id x))) :: Int
+  , id (abs (negate (abs _))) :: Int
+  , id (abs (negate (negate _))) :: Int
+  , id (negate (id (ord _))) :: Int
+  , id (negate (id (ord c))) :: Int
+  , id (negate (id (abs _))) :: Int
+  , id (negate (id (abs x))) :: Int
+  , id (negate (id (head _))) :: Int
+  , id (negate (id (head xs))) :: Int
+  , id (negate (abs (id _))) :: Int
+  , id (negate (abs (id x))) :: Int
+  , id (negate (abs (abs _))) :: Int
+  , id (negate (abs (negate _))) :: Int
+  , id (negate (negate (ord _))) :: Int
+  , id (negate (negate (abs _))) :: Int
+  , id (negate (negate (head _))) :: Int
+  , id (head (tail (tail _))) :: Int
+  , id (_ * id 0) :: Int
+  , id (_ * id 1) :: Int
+  , id (x * id 0) :: Int
+  , id (0 * id _) :: Int
+  , id (0 * id x) :: Int
+  , id (1 * id _) :: Int
+  , id (id _ * 0) :: Int
+  , id (id _ * 1) :: Int
+  , id (id x * 0) :: Int
+  , id (id 0 * _) :: Int
+  , id (id 0 * x) :: Int
+  , id (id 1 * _) :: Int
+  , id (_ + id 0) :: Int
+  , id (_ + id 1) :: Int
+  , id (_ + id (-1)) :: Int
+  , id (x + id 0) :: Int
+  , id (x + id 1) :: Int
+  , id (y + id 0) :: Int
+  , id (0 + id _) :: Int
+  , id (0 + id x) :: Int
+  , id (0 + id y) :: Int
+  , id (1 + id _) :: Int
+  , id (1 + id x) :: Int
+  , id ((-1) + id _) :: Int
+  , id (id _ + 0) :: Int
+  , id (id _ + 1) :: Int
+  , id (id _ + (-1)) :: Int
+  , id (id x + 0) :: Int
+  , id (id x + 1) :: Int
+  , id (id y + 0) :: Int
+  , id (id 0 + _) :: Int
+  , id (id 0 + x) :: Int
+  , id (id 0 + y) :: Int
+  , id (id 1 + _) :: Int
+  , id (id 1 + x) :: Int
+  , id (id (-1) + _) :: Int
+  , abs (id (id (ord _))) :: Int
+  , abs (id (id (negate _))) :: Int
+  , abs (id (id (head _))) :: Int
+  , abs (id (negate (id _))) :: Int
+  , abs (negate (id (id _))) :: Int
+  , negate (id (id (ord _))) :: Int
+  , negate (id (id (abs _))) :: Int
+  , negate (id (id (head _))) :: Int
+  , negate (id (abs (id _))) :: Int
+  , negate (abs (id (id _))) :: Int
+  , head [head _] :: Int
+  , head (head []:_) :: Int
+  , _ || not (not False) :: Bool
+  , _ || not (not True) :: Bool
+  , False || not (not _) :: Bool
+  , True || not (not _) :: Bool
+  , not _ || not False :: Bool
+  , not _ || not True :: Bool
+  , not False || not _ :: Bool
+  , not True || not _ :: Bool
+  , not (not _) || False :: Bool
+  , not (not _) || True :: Bool
+  , not (not False) || _ :: Bool
+  , not (not True) || _ :: Bool
+  , _ * id (id 0) :: Int
+  , 0 * id (id _) :: Int
+  , id _ * id 0 :: Int
+  , id 0 * id _ :: Int
+  , id (id _) * 0 :: Int
+  , id (id 0) * _ :: Int
+  , _ + id (id 0) :: Int
+  , _ + id (id 1) :: Int
+  , x + id (id 0) :: Int
+  , 0 + id (id _) :: Int
+  , 0 + id (id x) :: Int
+  , 1 + id (id _) :: Int
+  , id _ + id 0 :: Int
+  , id _ + id 1 :: Int
+  , id x + id 0 :: Int
+  , id 0 + id _ :: Int
+  , id 0 + id x :: Int
+  , id 1 + id _ :: Int
+  , id (id _) + 0 :: Int
+  , id (id _) + 1 :: Int
+  , id (id x) + 0 :: Int
+  , id (id 0) + _ :: Int
+  , id (id 0) + x :: Int
+  , id (id 1) + _ :: Int
+  , [_,0] :: [Int]
+  , _:0:[0] :: [Int]
+  , [_,1] :: [Int]
+  , _:([] ++ []) :: [Int]
+  , [x,0] :: [Int]
+  , [0,_] :: [Int]
+  , 0:_:[0] :: [Int]
+  , [0,x] :: [Int]
+  , 0:1:_ :: [Int]
+  , [1,_] :: [Int]
+  , 1:0:_ :: [Int]
+  , [id (id _)] :: [Int]
+  , id (id _):[0] :: [Int]
+  , [id (id x)] :: [Int]
+  , id (id 0):_ :: [Int]
+  , id (id 0):xs :: [Int]
+  , id (id 1):_ :: [Int]
+  , 0 + 0:_ :: [Int]
+  , [] ++ [_] :: [Int]
+  , [_] ++ [] :: [Int]
+  , id (abs (negate (ord _))) :: Int
+  , id (abs (negate (head _))) :: Int
+  , id (abs (head (tail _))) :: Int
+  , id (abs (_ * 0)) :: Int
+  , id (abs (0 * _)) :: Int
+  , id (abs (_ + 0)) :: Int
+  , id (abs (_ + 1)) :: Int
+  , id (abs (x + 0)) :: Int
+  , id (abs (0 + _)) :: Int
+  , id (abs (0 + x)) :: Int
+  , id (abs (1 + _)) :: Int
+  , id (negate (abs (ord _))) :: Int
+  , id (negate (abs (head _))) :: Int
+  , id (negate (head (tail _))) :: Int
+  , id (negate (_ * 0)) :: Int
+  , id (negate (0 * _)) :: Int
+  , id (negate (_ + 0)) :: Int
+  , id (negate (_ + 1)) :: Int
+  , id (negate (x + 0)) :: Int
+  , id (negate (0 + _)) :: Int
+  , id (negate (0 + x)) :: Int
+  , id (negate (1 + _)) :: Int
+  , id (head [_]) :: Int
+  , id (head (_:[0])) :: Int
+  , id (head (_:[1])) :: Int
+  , id (head (_:[0,0])) :: Int
+  , id (head [x]) :: Int
+  , id (head (x:[0])) :: Int
+  , id (head [y]) :: Int
+  , id (head (0:_)) :: Int
+  , id (head (0:xs)) :: Int
+  , id (head (0:ys)) :: Int
+  , id (head (1:_)) :: Int
+  , id (head (1:xs)) :: Int
+  , id (head ((-1):_)) :: Int
+  , id (head (_ ++ [])) :: Int
+  , id (head (_ ++ [0])) :: Int
+  , id (head (xs ++ [])) :: Int
+  , id (head ([] ++ _)) :: Int
+  , id (head ([] ++ xs)) :: Int
+  , id (head ([0] ++ _)) :: Int
+  , id (_ * ord 'a') :: Int
+  , id (_ * abs 0) :: Int
+  , id (_ * negate 0) :: Int
+  , id (_ * head []) :: Int
+  , id (0 * ord _) :: Int
+  , id (0 * abs _) :: Int
+  , id (0 * negate _) :: Int
+  , id (0 * head _) :: Int
+  , id (ord _ * 0) :: Int
+  , id (ord 'a' * _) :: Int
+  , id (abs _ * 0) :: Int
+  , id (abs 0 * _) :: Int
+  , id (negate _ * 0) :: Int
+  , id (negate 0 * _) :: Int
+  , id (head _ * 0) :: Int
+  , id (head [] * _) :: Int
+  , id (_ + ord ' ') :: Int
+  , id (_ + ord 'a') :: Int
+  , id (_ + abs 0) :: Int
+  , id (_ + abs 1) :: Int
+  , id (_ + negate 0) :: Int
+  , id (_ + negate 1) :: Int
+  , id (_ + head []) :: Int
+  , id (_ + head [0]) :: Int
+  , id (x + ord 'a') :: Int
+  , id (x + abs 0) :: Int
+  , id (x + negate 0) :: Int
+  , id (x + head []) :: Int
+  , id (0 + ord _) :: Int
+  , id (0 + ord c) :: Int
+  , id (0 + abs _) :: Int
+  , id (0 + abs x) :: Int
+  , id (0 + negate _) :: Int
+  , id (0 + negate x) :: Int
+  , id (0 + head _) :: Int
+  , id (0 + head xs) :: Int
+  , id (1 + ord _) :: Int
+  , id (1 + abs _) :: Int
+  , id (1 + negate _) :: Int
+  , id (1 + head _) :: Int
+  , id (ord _ + 0) :: Int
+  , id (ord _ + 1) :: Int
+  , id (ord c + 0) :: Int
+  , id (ord ' ' + _) :: Int
+  , id (ord 'a' + _) :: Int
+  , id (ord 'a' + x) :: Int
+  , id (abs _ + 0) :: Int
+  , id (abs _ + 1) :: Int
+  , id (abs x + 0) :: Int
+  , id (abs 0 + _) :: Int
+  , id (abs 0 + x) :: Int
+  , id (abs 1 + _) :: Int
+  , id (negate _ + 0) :: Int
+  , id (negate _ + 1) :: Int
+  , id (negate x + 0) :: Int
+  , id (negate 0 + _) :: Int
+  , id (negate 0 + x) :: Int
+  , id (negate 1 + _) :: Int
+  , id (head _ + 0) :: Int
+  , id (head _ + 1) :: Int
+  , id (head xs + 0) :: Int
+  , id (head [] + _) :: Int
+  , id (head [] + x) :: Int
+  , id (head [0] + _) :: Int
+  , abs (id (_ + 0)) :: Int
+  , abs (id (0 + _)) :: Int
+  , abs (head [_]) :: Int
+  , abs (head (0:_)) :: Int
+  , abs (_ + id 0) :: Int
+  , abs (0 + id _) :: Int
+  , abs (id _ + 0) :: Int
+  , abs (id 0 + _) :: Int
+  , negate (id (_ + 0)) :: Int
+  , negate (id (0 + _)) :: Int
+  , negate (head [_]) :: Int
+  , negate (head (0:_)) :: Int
+  , negate (_ + id 0) :: Int
+  , negate (0 + id _) :: Int
+  , negate (id _ + 0) :: Int
+  , negate (id 0 + _) :: Int
+  , head (tail [_]) :: Int
+  , head (tail (0:_)) :: Int
+  , head (_:tail []) :: Int
+  , head (0:tail _) :: Int
+  , head [ord _] :: Int
+  , head (ord 'a':_) :: Int
+  , head [id _] :: Int
+  , head (id _:[0]) :: Int
+  , head [id x] :: Int
+  , head (id 0:_) :: Int
+  , head (id 0:xs) :: Int
+  , head (id 1:_) :: Int
+  , head [abs _] :: Int
+  , head (abs 0:_) :: Int
+  , head [negate _] :: Int
+  , head (negate 0:_) :: Int
+  , tail [id _] :: [Int]
+  , tail (id 0:_) :: [Int]
+  , _ + id (ord 'a') :: Int
+  , _ + id (abs 0) :: Int
+  , _ + id (negate 0) :: Int
+  , _ + id (head []) :: Int
+  , _ + abs (id 0) :: Int
+  , _ + negate (id 0) :: Int
+  , 0 + id (ord _) :: Int
+  , 0 + id (abs _) :: Int
+  , 0 + id (negate _) :: Int
+  , 0 + id (head _) :: Int
+  , 0 + abs (id _) :: Int
+  , 0 + negate (id _) :: Int
+  , ord _ + id 0 :: Int
+  , ord 'a' + id _ :: Int
+  , id _ + ord 'a' :: Int
+  , id _ + abs 0 :: Int
+  , id _ + negate 0 :: Int
+  , id _ + head [] :: Int
+  , id 0 + ord _ :: Int
+  , id 0 + abs _ :: Int
+  , id 0 + negate _ :: Int
+  , id 0 + head _ :: Int
+  , id (ord _) + 0 :: Int
+  , id (ord 'a') + _ :: Int
+  , id (abs _) + 0 :: Int
+  , id (abs 0) + _ :: Int
+  , id (negate _) + 0 :: Int
+  , id (negate 0) + _ :: Int
+  , id (head _) + 0 :: Int
+  , id (head []) + _ :: Int
+  , abs _ + id 0 :: Int
+  , abs 0 + id _ :: Int
+  , abs (id _) + 0 :: Int
+  , abs (id 0) + _ :: Int
+  , negate _ + id 0 :: Int
+  , negate 0 + id _ :: Int
+  , negate (id _) + 0 :: Int
+  , negate (id 0) + _ :: Int
+  , head _ + id 0 :: Int
+  , head [] + id _ :: Int
+  , 0:(_ ++ []) :: [Int]
+  , 0:([] ++ _) :: [Int]
+  , id _:tail [] :: [Int]
+  , id 0:tail _ :: [Int]
+  , [id (ord _)] :: [Int]
+  , id (ord 'a'):_ :: [Int]
+  , [id (abs _)] :: [Int]
+  , id (abs 0):_ :: [Int]
+  , [id (negate _)] :: [Int]
+  , id (negate 0):_ :: [Int]
+  , [id (head _)] :: [Int]
+  , id (head []):_ :: [Int]
+  , [abs (id _)] :: [Int]
+  , abs (id 0):_ :: [Int]
+  , [negate (id _)] :: [Int]
+  , negate (id 0):_ :: [Int]
+  , [_ + 0] :: [Int]
+  , [0 + _] :: [Int]
+  , _ ++ [0] :: [Int]
+  , [] ++ (0:_) :: [Int]
+  , (0:_) ++ [] :: [Int]
+  , [0] ++ _ :: [Int]
+  , not (not (not (not False))) :: Bool
+  , not (not (not (not True))) :: Bool
+  , id (id (id (id 0))) :: Int
+  , id (id (id (id 1))) :: Int
+  , id (id (id (id (-1)))) :: Int
+  , id (id (id (ord ' '))) :: Int
+  , id (id (id (ord 'a'))) :: Int
+  , id (id (id (abs 0))) :: Int
+  , id (id (id (abs 1))) :: Int
+  , id (id (id (negate 0))) :: Int
+  , id (id (id (negate 1))) :: Int
+  , id (id (id (head []))) :: Int
+  , id (id (id (head [0]))) :: Int
+  , id (id (abs (id 0))) :: Int
+  , id (id (abs (id 1))) :: Int
+  , id (id (abs (abs 0))) :: Int
+  , id (id (negate (id 0))) :: Int
+  , id (id (negate (id 1))) :: Int
+  , id (id (negate (negate 0))) :: Int
+  , id (id (0 * 0)) :: Int
+  , id (id (0 + 0)) :: Int
+  , id (abs (id (id 0))) :: Int
+  , id (abs (id (id 1))) :: Int
+  , id (abs (id (abs 0))) :: Int
+  , id (abs (abs (id 0))) :: Int
+  , id (negate (id (id 0))) :: Int
+  , id (negate (id (id 1))) :: Int
+  , id (negate (id (negate 0))) :: Int
+  , id (negate (negate (id 0))) :: Int
+  , id (0 * id 0) :: Int
+  , id (id 0 * 0) :: Int
+  , id (0 + id 0) :: Int
+  , id (id 0 + 0) :: Int
+  , abs (id (id (id 0))) :: Int
+  , negate (id (id (id 0))) :: Int
+  , 0 + id (id 0) :: Int
+  , id 0 + id 0 :: Int
+  , id (id 0) + 0 :: Int
+  , [0,0] :: [Int]
+  , id (id (abs (ord 'a'))) :: Int
+  , id (id (abs (negate 0))) :: Int
+  , id (id (abs (head []))) :: Int
+  , id (id (negate (ord 'a'))) :: Int
+  , id (id (negate (abs 0))) :: Int
+  , id (id (negate (head []))) :: Int
+  , id (id (head (tail []))) :: Int
+  , id (id (0 + 1)) :: Int
+  , id (id (1 + 0)) :: Int
+  , id (abs (id (ord 'a'))) :: Int
+  , id (abs (id (negate 0))) :: Int
+  , id (abs (id (head []))) :: Int
+  , id (abs (negate (id 0))) :: Int
+  , id (abs (0 + 0)) :: Int
+  , id (negate (id (ord 'a'))) :: Int
+  , id (negate (id (abs 0))) :: Int
+  , id (negate (id (head []))) :: Int
+  , id (negate (abs (id 0))) :: Int
+  , id (negate (0 + 0)) :: Int
+  , id (head ([] ++ [])) :: Int
+  , id (0 + id 1) :: Int
+  , id (0 + abs 0) :: Int
+  , id (0 + negate 0) :: Int
+  , id (1 + id 0) :: Int
+  , id (id 0 + 1) :: Int
+  , id (id 1 + 0) :: Int
+  , id (abs 0 + 0) :: Int
+  , id (negate 0 + 0) :: Int
+  , [id (id 0)] :: [Int]
+  , id (head [0]) :: Int
+  , id (head (0:[0])) :: Int
+  , id (head [1]) :: Int
+  , id (0 + ord 'a') :: Int
+  , id (0 + head []) :: Int
+  , id (ord 'a' + 0) :: Int
+  , id (head [] + 0) :: Int
+  , head [id 0] :: Int
+  , _:f _:_ :: [Int]
+  , f _:_:_ :: [Int]
+  , head (_:x:_) :: Int
+  , head (_:x:xs) :: Int
+  , head (_:y:_) :: Int
+  , head (x:_:_) :: Int
+  , head (x:_:xs) :: Int
+  , head (y:_:_) :: Int
+  , tail (_:x:_) :: [Int]
+  , tail (x:_:_) :: [Int]
+  , _:tail (x:_) :: [Int]
+  , _:x:tail _ :: [Int]
+  , _:ord _:_ :: [Int]
+  , _:ord _:xs :: [Int]
+  , _:ord c:_ :: [Int]
+  , _:id x:_ :: [Int]
+  , _:id x:xs :: [Int]
+  , _:id y:_ :: [Int]
+  , _:abs x:_ :: [Int]
+  , _:negate x:_ :: [Int]
+  , _:head _:xs :: [Int]
+  , _:head xs:_ :: [Int]
+  , x:tail (_:_) :: [Int]
+  , x:_:tail _ :: [Int]
+  , x:ord _:_ :: [Int]
+  , x:id _:_ :: [Int]
+  , x:id _:xs :: [Int]
+  , x:abs _:_ :: [Int]
+  , x:negate _:_ :: [Int]
+  , y:id _:_ :: [Int]
+  , ord _:_:_ :: [Int]
+  , ord _:_:xs :: [Int]
+  , ord _:x:_ :: [Int]
+  , ord c:_:_ :: [Int]
+  , id _:x:_ :: [Int]
+  , id _:x:xs :: [Int]
+  , id _:y:_ :: [Int]
+  , id x:_:_ :: [Int]
+  , id x:_:xs :: [Int]
+  , id y:_:_ :: [Int]
+  , abs _:x:_ :: [Int]
+  , abs x:_:_ :: [Int]
+  , negate _:x:_ :: [Int]
+  , negate x:_:_ :: [Int]
+  , head _:_:xs :: [Int]
+  , head xs:_:_ :: [Int]
+  , head (_:_):xs :: [Int]
+  , head (_:xs):_ :: [Int]
+  , id (f (head (_:_))) :: Int
+  , id (head (f _:_)) :: Int
+  , head (_:(_ ++ xs)) :: Int
+  , head (_:(xs ++ _)) :: Int
+  , head (_ + x:_) :: Int
+  , head (x + _:_) :: Int
+  , head (_ ++ (_:xs)) :: Int
+  , head (xs ++ (_:_)) :: Int
+  , head ((_:_) ++ xs) :: Int
+  , head ((_:xs) ++ _) :: Int
+  , _ + head (x:_) :: Int
+  , x + head (_:_) :: Int
+  , head (_:_) + x :: Int
+  , head (x:_) + _ :: Int
+  , id _:(_ ++ xs) :: [Int]
+  , id _:(xs ++ _) :: [Int]
+  , id (_ + x):_ :: [Int]
+  , id (x + _):_ :: [Int]
+  , _ + ord _:_ :: [Int]
+  , _ + id x:_ :: [Int]
+  , x + id _:_ :: [Int]
+  , ord _ + _:_ :: [Int]
+  , id _ + x:_ :: [Int]
+  , id x + _:_ :: [Int]
+  , _ ++ (id _:xs) :: [Int]
+  , xs ++ (id _:_) :: [Int]
+  , (id _:_) ++ xs :: [Int]
+  , (id _:xs) ++ _ :: [Int]
+  , id (f (id (_ + _))) :: Int
+  , id (f (_ + id _)) :: Int
+  , id (f (id _ + _)) :: Int
+  , id (id (f (_ + _))) :: Int
+  , id (id (_ + f _)) :: Int
+  , id (id (f _ + _)) :: Int
+  , id (_ + f (id _)) :: Int
+  , id (_ + id (f _)) :: Int
+  , id (_ + (_ + x)) :: Int
+  , id (_ + (_ + y)) :: Int
+  , id (_ + (x + _)) :: Int
+  , id (_ + (x + x)) :: Int
+  , id (_ + (y + _)) :: Int
+  , id (x + (_ + _)) :: Int
+  , id (x + (_ + x)) :: Int
+  , id (x + (x + _)) :: Int
+  , id (y + (_ + _)) :: Int
+  , id (f _ + id _) :: Int
+  , id (f (id _) + _) :: Int
+  , id (id _ + f _) :: Int
+  , id (id (f _) + _) :: Int
+  , id ((_ + _) + x) :: Int
+  , id ((_ + _) + y) :: Int
+  , id ((_ + x) + _) :: Int
+  , id ((_ + x) + x) :: Int
+  , id ((_ + y) + _) :: Int
+  , id ((x + _) + _) :: Int
+  , id ((x + _) + x) :: Int
+  , id ((x + x) + _) :: Int
+  , id ((y + _) + _) :: Int
+  , head (_:_:_) :: Int
+  , head (_:_:xs) :: Int
+  , head (_:_:ys) :: Int
+  , head (x:x:_) :: Int
+  , sort (_:_:_) :: [Int]
+  , tail (_:_:_) :: [Int]
+  , tail (_:_:xs) :: [Int]
+  , _ + id (_ + x) :: Int
+  , _ + id (x + _) :: Int
+  , _ + (_ + ord _) :: Int
+  , _ + (_ + id x) :: Int
+  , _ + (_ + head _) :: Int
+  , _ + (x + id _) :: Int
+  , _ + (ord _ + _) :: Int
+  , _ + (id _ + x) :: Int
+  , _ + (id x + _) :: Int
+  , _ + (head _ + _) :: Int
+  , x + id (_ + _) :: Int
+  , x + (_ + id _) :: Int
+  , x + (id _ + _) :: Int
+  , ord _ + (_ + _) :: Int
+  , id _ + (_ + x) :: Int
+  , id _ + (x + _) :: Int
+  , id x + (_ + _) :: Int
+  , id (_ + _) + x :: Int
+  , id (_ + x) + _ :: Int
+  , id (x + _) + _ :: Int
+  , head _ + (_ + _) :: Int
+  , (_ + _) + ord _ :: Int
+  , (_ + _) + id x :: Int
+  , (_ + _) + head _ :: Int
+  , (_ + x) + id _ :: Int
+  , (_ + ord _) + _ :: Int
+  , (_ + id _) + x :: Int
+  , (_ + id x) + _ :: Int
+  , (_ + head _) + _ :: Int
+  , (x + _) + id _ :: Int
+  , (x + id _) + _ :: Int
+  , (ord _ + _) + _ :: Int
+  , (id _ + _) + x :: Int
+  , (id _ + x) + _ :: Int
+  , (id x + _) + _ :: Int
+  , (head _ + _) + _ :: Int
+  , _:sort (_:_) :: [Int]
+  , _:tail (_:_) :: [Int]
+  , _:tail (_:xs) :: [Int]
+  , _:_:sort _ :: [Int]
+  , _:_:tail _ :: [Int]
+  , _:_:tail xs :: [Int]
+  , _:id _:_ :: [Int]
+  , _:id _:xs :: [Int]
+  , _:id _:ys :: [Int]
+  , _:abs _:_ :: [Int]
+  , _:abs _:xs :: [Int]
+  , _:negate _:_ :: [Int]
+  , _:negate _:xs :: [Int]
+  , _:head _:_ :: [Int]
+  , x:id x:_ :: [Int]
+  , x:head _:_ :: [Int]
+  , id _:_:_ :: [Int]
+  , id _:_:xs :: [Int]
+  , id _:_:ys :: [Int]
+  , id x:x:_ :: [Int]
+  , abs _:_:_ :: [Int]
+  , abs _:_:xs :: [Int]
+  , negate _:_:_ :: [Int]
+  , negate _:_:xs :: [Int]
+  , head _:_:_ :: [Int]
+  , head _:x:_ :: [Int]
+  , head (_:_):_ :: [Int]
+  , head (x:_):_ :: [Int]
+  , not (elem _ (_:_)) :: Bool
+  , id (_ * (_ + x)) :: Int
+  , id (_ * (x + _)) :: Int
+  , id (x * (_ + _)) :: Int
+  , id ((_ + _) * x) :: Int
+  , id ((_ + x) * _) :: Int
+  , id ((x + _) * _) :: Int
+  , id (_ + _ * x) :: Int
+  , id (_ + x * _) :: Int
+  , id (x + _ * _) :: Int
+  , id (_ * _ + x) :: Int
+  , id (_ * x + _) :: Int
+  , id (x * _ + _) :: Int
+  , head (_:insert _ _) :: Int
+  , head (_:(_ ++ _)) :: Int
+  , head (x:(_ ++ _)) :: Int
+  , head (_ * _:_) :: Int
+  , head (_ + _:_) :: Int
+  , head (_ + _:xs) :: Int
+  , head (insert _ (_:_)) :: Int
+  , head (_ ++ (_:_)) :: Int
+  , head (_ ++ (x:_)) :: Int
+  , head ((_:_) ++ _) :: Int
+  , head ((x:_) ++ _) :: Int
+  , tail (_:(_ ++ _)) :: [Int]
+  , tail (_ + _:_) :: [Int]
+  , tail (_ ++ (_:_)) :: [Int]
+  , tail ((_:_) ++ _) :: [Int]
+  , _ * head (_:_) :: Int
+  , head (_:_) * _ :: Int
+  , _ + head (_:_) :: Int
+  , _ + head (_:xs) :: Int
+  , _ + head (_ ++ _) :: Int
+  , head (_:_) + _ :: Int
+  , head (_:xs) + _ :: Int
+  , head (_ ++ _) + _ :: Int
+  , elem _ (id _:_) :: Bool
+  , elem (id _) (_:_) :: Bool
+  , _:tail (_ ++ _) :: [Int]
+  , _:insert (id _) _ :: [Int]
+  , _:(_ ++ tail _) :: [Int]
+  , _:(tail _ ++ _) :: [Int]
+  , ord _:(_ ++ _) :: [Int]
+  , id _:insert _ _ :: [Int]
+  , id _:(_ ++ _) :: [Int]
+  , id x:(_ ++ _) :: [Int]
+  , id (_ * _):_ :: [Int]
+  , id (_ + _):_ :: [Int]
+  , id (_ + _):xs :: [Int]
+  , abs _:(_ ++ _) :: [Int]
+  , abs (_ + _):_ :: [Int]
+  , negate _:(_ ++ _) :: [Int]
+  , negate (_ + _):_ :: [Int]
+  , _ * id _:_ :: [Int]
+  , id _ * _:_ :: [Int]
+  , _ + _:tail _ :: [Int]
+  , _ + id _:_ :: [Int]
+  , _ + id _:xs :: [Int]
+  , _ + abs _:_ :: [Int]
+  , _ + negate _:_ :: [Int]
+  , _ + head _:_ :: [Int]
+  , id _ + _:_ :: [Int]
+  , id _ + _:xs :: [Int]
+  , abs _ + _:_ :: [Int]
+  , negate _ + _:_ :: [Int]
+  , head _ + _:_ :: [Int]
+  , insert _ (id _:_) :: [Int]
+  , insert (id _) (_:_) :: [Int]
+  , _ ++ tail (_:_) :: [Int]
+  , _ ++ (_:tail _) :: [Int]
+  , _ ++ (ord _:_) :: [Int]
+  , _ ++ (id _:_) :: [Int]
+  , _ ++ (id x:_) :: [Int]
+  , _ ++ (abs _:_) :: [Int]
+  , _ ++ (negate _:_) :: [Int]
+  , tail _ ++ (_:_) :: [Int]
+  , tail (_:_) ++ _ :: [Int]
+  , (_:_) ++ tail _ :: [Int]
+  , (_:tail _) ++ _ :: [Int]
+  , (ord _:_) ++ _ :: [Int]
+  , (id _:_) ++ _ :: [Int]
+  , (id x:_) ++ _ :: [Int]
+  , (abs _:_) ++ _ :: [Int]
+  , (negate _:_) ++ _ :: [Int]
+  , id (f (id (id (id _)))) :: Int
+  , id (id (f (id (id _)))) :: Int
+  , id (id (id (f (id _)))) :: Int
+  , id (id (id (id (f _)))) :: Int
+  , id (id (id (_ * x))) :: Int
+  , id (id (id (x * _))) :: Int
+  , id (id (id (_ + x))) :: Int
+  , id (id (id (_ + y))) :: Int
+  , id (id (id (x + _))) :: Int
+  , id (id (id (y + _))) :: Int
+  , id (id (_ * id x)) :: Int
+  , id (id (x * id _)) :: Int
+  , id (id (id _ * x)) :: Int
+  , id (id (id x * _)) :: Int
+  , id (id (_ + id x)) :: Int
+  , id (id (_ + id y)) :: Int
+  , id (id (x + id _)) :: Int
+  , id (id (y + id _)) :: Int
+  , id (id (id _ + x)) :: Int
+  , id (id (id _ + y)) :: Int
+  , id (id (id x + _)) :: Int
+  , id (id (id y + _)) :: Int
+  , id (_ * id (id x)) :: Int
+  , id (x * id (id _)) :: Int
+  , id (id _ * id x) :: Int
+  , id (id x * id _) :: Int
+  , id (id (id _) * x) :: Int
+  , id (id (id x) * _) :: Int
+  , id (_ + id (id x)) :: Int
+  , id (_ + id (id y)) :: Int
+  , id (x + id (id _)) :: Int
+  , id (y + id (id _)) :: Int
+  , id (id _ + id x) :: Int
+  , id (id _ + id y) :: Int
+  , id (id x + id _) :: Int
+  , id (id y + id _) :: Int
+  , id (id (id _) + x) :: Int
+  , id (id (id _) + y) :: Int
+  , id (id (id x) + _) :: Int
+  , id (id (id y) + _) :: Int
+  , _ + id (id (id x)) :: Int
+  , x + id (id (id _)) :: Int
+  , id _ + id (id x) :: Int
+  , id x + id (id _) :: Int
+  , id (id _) + id x :: Int
+  , id (id x) + id _ :: Int
+  , id (id (id _)) + x :: Int
+  , id (id (id x)) + _ :: Int
+  , id (id (id _)):_ :: [Int]
+  , id (id (id _)):xs :: [Int]
+  , id (id (id x)):_ :: [Int]
+  , id (id (abs (_ + x))) :: Int
+  , id (id (abs (x + _))) :: Int
+  , id (id (negate (_ + x))) :: Int
+  , id (id (negate (x + _))) :: Int
+  , id (id (head (_:_))) :: Int
+  , id (id (head (_:xs))) :: Int
+  , id (id (head (_:ys))) :: Int
+  , id (id (head (x:_))) :: Int
+  , id (id (head (x:xs))) :: Int
+  , id (id (head (y:_))) :: Int
+  , id (id (head (insert _ _))) :: Int
+  , id (id (head (_ ++ xs))) :: Int
+  , id (id (head (xs ++ _))) :: Int
+  , id (id (_ * ord _)) :: Int
+  , id (id (_ * head _)) :: Int
+  , id (id (ord _ * _)) :: Int
+  , id (id (head _ * _)) :: Int
+  , id (id (_ + ord _)) :: Int
+  , id (id (_ + ord c)) :: Int
+  , id (id (_ + abs x)) :: Int
+  , id (id (_ + negate x)) :: Int
+  , id (id (_ + head _)) :: Int
+  , id (id (_ + head xs)) :: Int
+  , id (id (x + ord _)) :: Int
+  , id (id (x + abs _)) :: Int
+  , id (id (x + negate _)) :: Int
+  , id (id (x + head _)) :: Int
+  , id (id (ord _ + _)) :: Int
+  , id (id (ord _ + x)) :: Int
+  , id (id (ord c + _)) :: Int
+  , id (id (abs _ + x)) :: Int
+  , id (id (abs x + _)) :: Int
+  , id (id (negate _ + x)) :: Int
+  , id (id (negate x + _)) :: Int
+  , id (id (head _ + _)) :: Int
+  , id (id (head _ + x)) :: Int
+  , id (id (head xs + _)) :: Int
+  , id (abs (id (_ + x))) :: Int
+  , id (abs (id (x + _))) :: Int
+  , id (abs (_ + id x)) :: Int
+  , id (abs (x + id _)) :: Int
+  , id (abs (id _ + x)) :: Int
+  , id (abs (id x + _)) :: Int
+  , id (negate (id (_ + x))) :: Int
+  , id (negate (id (x + _))) :: Int
+  , id (negate (_ + id x)) :: Int
+  , id (negate (x + id _)) :: Int
+  , id (negate (id _ + x)) :: Int
+  , id (negate (id x + _)) :: Int
+  , id (head (id _:_)) :: Int
+  , id (head (id _:xs)) :: Int
+  , id (head (id _:ys)) :: Int
+  , id (head (id x:_)) :: Int
+  , id (head (id x:xs)) :: Int
+  , id (head (id y:_)) :: Int
+  , id (head (head _:xs)) :: Int
+  , id (head (head xs:_)) :: Int
+  , id (_ * id (ord _)) :: Int
+  , id (_ * id (head _)) :: Int
+  , id (ord _ * id _) :: Int
+  , id (id _ * ord _) :: Int
+  , id (id _ * head _) :: Int
+  , id (id (ord _) * _) :: Int
+  , id (id (head _) * _) :: Int
+  , id (head _ * id _) :: Int
+  , id (_ + id (ord _)) :: Int
+  , id (_ + id (ord c)) :: Int
+  , id (_ + id (abs x)) :: Int
+  , id (_ + id (negate x)) :: Int
+  , id (_ + id (head _)) :: Int
+  , id (_ + id (head xs)) :: Int
+  , id (_ + abs (id x)) :: Int
+  , id (_ + negate (id x)) :: Int
+  , id (_ + (x + 0)) :: Int
+  , id (_ + (0 + x)) :: Int
+  , id (x + id (ord _)) :: Int
+  , id (x + id (abs _)) :: Int
+  , id (x + id (negate _)) :: Int
+  , id (x + id (head _)) :: Int
+  , id (x + abs (id _)) :: Int
+  , id (x + negate (id _)) :: Int
+  , id (x + (_ + 0)) :: Int
+  , id (x + (0 + _)) :: Int
+  , id (0 + (_ + x)) :: Int
+  , id (0 + (x + _)) :: Int
+  , id (ord _ + id _) :: Int
+  , id (ord _ + id x) :: Int
+  , id (ord c + id _) :: Int
+  , id (id _ + ord _) :: Int
+  , id (id _ + ord c) :: Int
+  , id (id _ + abs x) :: Int
+  , id (id _ + negate x) :: Int
+  , id (id _ + head _) :: Int
+  , id (id _ + head xs) :: Int
+  , id (id x + ord _) :: Int
+  , id (id x + abs _) :: Int
+  , id (id x + negate _) :: Int
+  , id (id x + head _) :: Int
+  , id (id (ord _) + _) :: Int
+  , id (id (ord _) + x) :: Int
+  , id (id (ord c) + _) :: Int
+  , id (id (abs _) + x) :: Int
+  , id (id (abs x) + _) :: Int
+  , id (id (negate _) + x) :: Int
+  , id (id (negate x) + _) :: Int
+  , id (id (head _) + _) :: Int
+  , id (id (head _) + x) :: Int
+  , id (id (head xs) + _) :: Int
+  , id (abs _ + id x) :: Int
+  , id (abs x + id _) :: Int
+  , id (abs (id _) + x) :: Int
+  , id (abs (id x) + _) :: Int
+  , id (negate _ + id x) :: Int
+  , id (negate x + id _) :: Int
+  , id (negate (id _) + x) :: Int
+  , id (negate (id x) + _) :: Int
+  , id (head _ + id _) :: Int
+  , id (head _ + id x) :: Int
+  , id (head xs + id _) :: Int
+  , id ((_ + x) + 0) :: Int
+  , id ((_ + 0) + x) :: Int
+  , id ((x + _) + 0) :: Int
+  , id ((x + 0) + _) :: Int
+  , id ((0 + _) + x) :: Int
+  , id ((0 + x) + _) :: Int
+  , head [_,x] :: Int
+  , head (_:0:_) :: Int
+  , head (_:0:xs) :: Int
+  , head (_:1:_) :: Int
+  , head [x,_] :: Int
+  , head (x:0:_) :: Int
+  , head (0:_:_) :: Int
+  , head (0:_:xs) :: Int
+  , head (0:x:_) :: Int
+  , head (1:_:_) :: Int
+  , head (id (id _):_) :: Int
+  , head (id (id _):xs) :: Int
+  , head (id (id x):_) :: Int
+  , tail (_:0:_) :: [Int]
+  , tail (0:_:_) :: [Int]
+  , tail (id (id _):_) :: [Int]
+  , _ + id (id (ord _)) :: Int
+  , _ + id (id (head _)) :: Int
+  , ord _ + id (id _) :: Int
+  , id _ + id (ord _) :: Int
+  , id _ + id (head _) :: Int
+  , id (ord _) + id _ :: Int
+  , id (id _) + ord _ :: Int
+  , id (id _) + head _ :: Int
+  , id (id (ord _)) + _ :: Int
+  , id (id (head _)) + _ :: Int
+  , id (head _) + id _ :: Int
+  , head _ + id (id _) :: Int
+  , _:tail (0:_) :: [Int]
+  , _:0:tail _ :: [Int]
+  , [_,ord _] :: [Int]
+  , _:ord 'a':_ :: [Int]
+  , [_,id x] :: [Int]
+  , _:id 0:_ :: [Int]
+  , _:id 0:xs :: [Int]
+  , _:id 1:_ :: [Int]
+  , _:abs 0:_ :: [Int]
+  , _:negate 0:_ :: [Int]
+  , [_,head _] :: [Int]
+  , _:head []:_ :: [Int]
+  , [x,id _] :: [Int]
+  , x:id 0:_ :: [Int]
+  , 0:tail (_:_) :: [Int]
+  , 0:_:tail _ :: [Int]
+  , 0:ord _:_ :: [Int]
+  , 0:id _:_ :: [Int]
+  , 0:id _:xs :: [Int]
+  , 0:id x:_ :: [Int]
+  , 0:abs _:_ :: [Int]
+  , 0:negate _:_ :: [Int]
+  , 1:id _:_ :: [Int]
+  , [ord _,_] :: [Int]
+  , ord _:0:_ :: [Int]
+  , ord 'a':_:_ :: [Int]
+  , [id _,x] :: [Int]
+  , id _:0:_ :: [Int]
+  , id _:0:xs :: [Int]
+  , id _:1:_ :: [Int]
+  , [id x,_] :: [Int]
+  , id x:0:_ :: [Int]
+  , id 0:_:_ :: [Int]
+  , id 0:_:xs :: [Int]
+  , id 0:x:_ :: [Int]
+  , id 1:_:_ :: [Int]
+  , id (id _):tail _ :: [Int]
+  , id (id (ord _)):_ :: [Int]
+  , id (id (abs _)):_ :: [Int]
+  , id (id (negate _)):_ :: [Int]
+  , id (abs (id _)):_ :: [Int]
+  , id (negate (id _)):_ :: [Int]
+  , abs _:0:_ :: [Int]
+  , abs 0:_:_ :: [Int]
+  , abs (id (id _)):_ :: [Int]
+  , negate _:0:_ :: [Int]
+  , negate 0:_:_ :: [Int]
+  , negate (id (id _)):_ :: [Int]
+  , [head _,_] :: [Int]
+  , head []:_:_ :: [Int]
+  , [head (_:_)] :: [Int]
+  , head [_]:_ :: [Int]
+  , id (abs (head (_:_))) :: Int
+  , id (abs (head (_:xs))) :: Int
+  , id (abs (head (x:_))) :: Int
+  , id (abs (_ + ord _)) :: Int
+  , id (abs (_ + head _)) :: Int
+  , id (abs (ord _ + _)) :: Int
+  , id (abs (head _ + _)) :: Int
+  , id (negate (head (_:_))) :: Int
+  , id (negate (head (_:xs))) :: Int
+  , id (negate (head (x:_))) :: Int
+  , id (negate (_ + ord _)) :: Int
+  , id (negate (_ + head _)) :: Int
+  , id (negate (ord _ + _)) :: Int
+  , id (negate (head _ + _)) :: Int
+  , id (head (tail (_:_))) :: Int
+  , id (head (tail (_:xs))) :: Int
+  , id (head (tail (x:_))) :: Int
+  , id (head (_:sort _)) :: Int
+  , id (head (_:tail _)) :: Int
+  , id (head (_:tail xs)) :: Int
+  , id (head (x:tail _)) :: Int
+  , id (head (ord _:_)) :: Int
+  , id (head (ord _:xs)) :: Int
+  , id (head (ord c:_)) :: Int
+  , id (head (abs _:_)) :: Int
+  , id (head (abs _:xs)) :: Int
+  , id (head (abs x:_)) :: Int
+  , id (head (negate _:_)) :: Int
+  , id (head (negate _:xs)) :: Int
+  , id (head (negate x:_)) :: Int
+  , id (_ + abs (ord _)) :: Int
+  , id (_ + abs (head _)) :: Int
+  , id (_ + negate (ord _)) :: Int
+  , id (_ + negate (head _)) :: Int
+  , id (_ + head (tail _)) :: Int
+  , id (ord _ + abs _) :: Int
+  , id (ord _ + negate _) :: Int
+  , id (ord _ + head _) :: Int
+  , id (abs _ + ord _) :: Int
+  , id (abs _ + head _) :: Int
+  , id (abs (ord _) + _) :: Int
+  , id (abs (head _) + _) :: Int
+  , id (negate _ + ord _) :: Int
+  , id (negate _ + head _) :: Int
+  , id (negate (ord _) + _) :: Int
+  , id (negate (head _) + _) :: Int
+  , id (head _ + ord _) :: Int
+  , id (head _ + abs _) :: Int
+  , id (head _ + negate _) :: Int
+  , id (head (tail _) + _) :: Int
+  , abs (id (head (_:_))) :: Int
+  , abs (head (id _:_)) :: Int
+  , negate (id (head (_:_))) :: Int
+  , negate (head (id _:_)) :: Int
+  , head (tail (id _:_)) :: Int
+  , head (_:(_ ++ [])) :: Int
+  , head (_:([] ++ _)) :: Int
+  , head (id _:tail _) :: Int
+  , head (id (ord _):_) :: Int
+  , head (id (abs _):_) :: Int
+  , head (id (negate _):_) :: Int
+  , head (abs (id _):_) :: Int
+  , head (negate (id _):_) :: Int
+  , head (_ + 0:_) :: Int
+  , head (0 + _:_) :: Int
+  , head (_ ++ [_]) :: Int
+  , head ([] ++ (_:_)) :: Int
+  , head ((_:_) ++ []) :: Int
+  , head ([_] ++ _) :: Int
+  , _ + head (0:_) :: Int
+  , 0 + head (_:_) :: Int
+  , head (_:_) + 0 :: Int
+  , head (0:_) + _ :: Int
+  , id _:(_ ++ []) :: [Int]
+  , id _:([] ++ _) :: [Int]
+  , id (_ + 0):_ :: [Int]
+  , id (0 + _):_ :: [Int]
+  , _ + id 0:_ :: [Int]
+  , 0 + id _:_ :: [Int]
+  , id _ + 0:_ :: [Int]
+  , id 0 + _:_ :: [Int]
+  , _ ++ [id _] :: [Int]
+  , [] ++ (id _:_) :: [Int]
+  , (id _:_) ++ [] :: [Int]
+  , [id _] ++ _ :: [Int]
+  , not (_ || (_ || _)) :: Bool
+  , not ((_ || _) || _) :: Bool
+  , id (_ * (_ * _)) :: Int
+  , id ((_ * _) * _) :: Int
+  , id (_ + (_ + _)) :: Int
+  , id ((_ + _) + _) :: Int
+  , abs (_ + (_ + _)) :: Int
+  , abs ((_ + _) + _) :: Int
+  , negate (_ + (_ + _)) :: Int
+  , negate ((_ + _) + _) :: Int
+  , head (_ ++ (_ ++ _)) :: Int
+  , head ((_ ++ _) ++ _) :: Int
+  , _ || not (_ || _) :: Bool
+  , _ || (_ || not _) :: Bool
+  , _ || (not _ || _) :: Bool
+  , not _ || (_ || _) :: Bool
+  , not (_ || _) || _ :: Bool
+  , (_ || _) || not _ :: Bool
+  , (_ || not _) || _ :: Bool
+  , (not _ || _) || _ :: Bool
+  , _ + id (_ + _) :: Int
+  , _ + abs (_ + _) :: Int
+  , _ + negate (_ + _) :: Int
+  , _ + (_ + id _) :: Int
+  , _ + (_ + abs _) :: Int
+  , _ + (_ + negate _) :: Int
+  , _ + (id _ + _) :: Int
+  , _ + (abs _ + _) :: Int
+  , _ + (negate _ + _) :: Int
+  , id _ + (_ + _) :: Int
+  , id (_ + _) + _ :: Int
+  , abs _ + (_ + _) :: Int
+  , abs (_ + _) + _ :: Int
+  , negate _ + (_ + _) :: Int
+  , negate (_ + _) + _ :: Int
+  , (_ + _) + id _ :: Int
+  , (_ + _) + abs _ :: Int
+  , (_ + _) + negate _ :: Int
+  , (_ + id _) + _ :: Int
+  , (_ + abs _) + _ :: Int
+  , (_ + negate _) + _ :: Int
+  , (id _ + _) + _ :: Int
+  , (abs _ + _) + _ :: Int
+  , (negate _ + _) + _ :: Int
+  , id (_ * (_ + _)) :: Int
+  , id ((_ + _) * _) :: Int
+  , id (_ + _ * _) :: Int
+  , id (_ * _ + _) :: Int
+  , _ * id (_ + _) :: Int
+  , _ * (_ + id _) :: Int
+  , _ * (id _ + _) :: Int
+  , id _ * (_ + _) :: Int
+  , id (_ + _) * _ :: Int
+  , (_ + _) * id _ :: Int
+  , (_ + id _) * _ :: Int
+  , (id _ + _) * _ :: Int
+  , _ + id (_ * _) :: Int
+  , _ + _ * id _ :: Int
+  , _ + id _ * _ :: Int
+  , id _ + _ * _ :: Int
+  , id (_ * _) + _ :: Int
+  , _ * _ + id _ :: Int
+  , _ * id _ + _ :: Int
+  , id _ * _ + _ :: Int
+  , head _:(_ ++ _) :: [Int]
+  , head (_ ++ _):_ :: [Int]
+  , _ ++ (head _:_) :: [Int]
+  , (head _:_) ++ _ :: [Int]
+  , not (not (not (_ || _))) :: Bool
+  , not (not (_ || not _)) :: Bool
+  , not (not (not _ || _)) :: Bool
+  , not (_ || not (not _)) :: Bool
+  , not (not _ || not _) :: Bool
+  , not (not (not _) || _) :: Bool
+  , id (id (id (_ * _))) :: Int
+  , id (id (id (_ + _))) :: Int
+  , id (id (id (x + x))) :: Int
+  , id (id (_ * id _)) :: Int
+  , id (id (id _ * _)) :: Int
+  , id (id (_ + id _)) :: Int
+  , id (id (x + id x)) :: Int
+  , id (id (id _ + _)) :: Int
+  , id (id (id x + x)) :: Int
+  , id (_ * id (id _)) :: Int
+  , id (id _ * id _) :: Int
+  , id (id (id _) * _) :: Int
+  , id (_ + id (id _)) :: Int
+  , id (x + id (id x)) :: Int
+  , id (id _ + id _) :: Int
+  , id (id x + id x) :: Int
+  , id (id (id _) + _) :: Int
+  , id (id (id x) + x) :: Int
+  , _ || not (not (not _)) :: Bool
+  , not _ || not (not _) :: Bool
+  , not (not _) || not _ :: Bool
+  , not (not (not _)) || _ :: Bool
+  , _ * id (id (id _)) :: Int
+  , id _ * id (id _) :: Int
+  , id (id _) * id _ :: Int
+  , id (id (id _)) * _ :: Int
+  , _ + id (id (id _)) :: Int
+  , id _ + id (id _) :: Int
+  , id (id _) + id _ :: Int
+  , id (id (id _)) + _ :: Int
+  , id (id (abs (_ * _))) :: Int
+  , id (id (abs (_ + _))) :: Int
+  , id (id (negate (_ * _))) :: Int
+  , id (id (negate (_ + _))) :: Int
+  , id (id (head (_ ++ _))) :: Int
+  , id (id (_ * abs _)) :: Int
+  , id (id (_ * negate _)) :: Int
+  , id (id (abs _ * _)) :: Int
+  , id (id (negate _ * _)) :: Int
+  , id (id (_ + abs _)) :: Int
+  , id (id (_ + negate _)) :: Int
+  , id (id (abs _ + _)) :: Int
+  , id (id (negate _ + _)) :: Int
+  , id (abs (id (_ * _))) :: Int
+  , id (abs (id (_ + _))) :: Int
+  , id (abs (abs (_ + _))) :: Int
+  , id (abs (_ * id _)) :: Int
+  , id (abs (id _ * _)) :: Int
+  , id (abs (_ + id _)) :: Int
+  , id (abs (_ + abs _)) :: Int
+  , id (abs (id _ + _)) :: Int
+  , id (abs (abs _ + _)) :: Int
+  , id (negate (id (_ * _))) :: Int
+  , id (negate (id (_ + _))) :: Int
+  , id (negate (negate (_ + _))) :: Int
+  , id (negate (_ * id _)) :: Int
+  , id (negate (id _ * _)) :: Int
+  , id (negate (_ + id _)) :: Int
+  , id (negate (_ + negate _)) :: Int
+  , id (negate (id _ + _)) :: Int
+  , id (negate (negate _ + _)) :: Int
+  , id (head (head _:_)) :: Int
+  , id (_ * id (abs _)) :: Int
+  , id (_ * id (negate _)) :: Int
+  , id (_ * abs (id _)) :: Int
+  , id (_ * negate (id _)) :: Int
+  , id (id _ * abs _) :: Int
+  , id (id _ * negate _) :: Int
+  , id (id (abs _) * _) :: Int
+  , id (id (negate _) * _) :: Int
+  , id (abs _ * id _) :: Int
+  , id (abs (id _) * _) :: Int
+  , id (negate _ * id _) :: Int
+  , id (negate (id _) * _) :: Int
+  , id (_ + id (abs _)) :: Int
+  , id (_ + id (negate _)) :: Int
+  , id (_ + abs (id _)) :: Int
+  , id (_ + abs (abs _)) :: Int
+  , id (_ + negate (id _)) :: Int
+  , id (_ + negate (negate _)) :: Int
+  , id (_ + (_ + 0)) :: Int
+  , id (_ + (_ + 1)) :: Int
+  , id (_ + (0 + _)) :: Int
+  , id (_ + (1 + _)) :: Int
+  , id (0 + (_ + _)) :: Int
+  , id (1 + (_ + _)) :: Int
+  , id (ord _ + ord _) :: Int
+  , id (id _ + abs _) :: Int
+  , id (id _ + negate _) :: Int
+  , id (id (abs _) + _) :: Int
+  , id (id (negate _) + _) :: Int
+  , id (abs _ + id _) :: Int
+  , id (abs _ + abs _) :: Int
+  , id (abs (id _) + _) :: Int
+  , id (abs (abs _) + _) :: Int
+  , id (negate _ + id _) :: Int
+  , id (negate _ + negate _) :: Int
+  , id (negate (id _) + _) :: Int
+  , id (negate (negate _) + _) :: Int
+  , id (head _ + head _) :: Int
+  , id ((_ + _) + 0) :: Int
+  , id ((_ + _) + 1) :: Int
+  , id ((_ + 0) + _) :: Int
+  , id ((_ + 1) + _) :: Int
+  , id ((0 + _) + _) :: Int
+  , id ((1 + _) + _) :: Int
+  , abs (id (id (_ + _))) :: Int
+  , abs (id (_ + id _)) :: Int
+  , abs (id (id _ + _)) :: Int
+  , abs (_ + id (id _)) :: Int
+  , abs (id _ + id _) :: Int
+  , abs (id (id _) + _) :: Int
+  , negate (id (id (_ + _))) :: Int
+  , negate (id (_ + id _)) :: Int
+  , negate (id (id _ + _)) :: Int
+  , negate (_ + id (id _)) :: Int
+  , negate (id _ + id _) :: Int
+  , negate (id (id _) + _) :: Int
+  , head [_,_] :: Int
+  , head (_:_:[0]) :: Int
+  , head (id (head _):_) :: Int
+  , tail [_,_] :: [Int]
+  , _ + id (id (abs _)) :: Int
+  , _ + id (id (negate _)) :: Int
+  , _ + id (abs (id _)) :: Int
+  , _ + id (negate (id _)) :: Int
+  , _ + id (_ + 0) :: Int
+  , _ + id (0 + _) :: Int
+  , _ + abs (id (id _)) :: Int
+  , _ + negate (id (id _)) :: Int
+  , _ + (_ + id 0) :: Int
+  , _ + (0 + id _) :: Int
+  , _ + (id _ + 0) :: Int
+  , _ + (id 0 + _) :: Int
+  , 0 + id (_ + _) :: Int
+  , 0 + (_ + id _) :: Int
+  , 0 + (id _ + _) :: Int
+  , id _ + id (abs _) :: Int
+  , id _ + id (negate _) :: Int
+  , id _ + abs (id _) :: Int
+  , id _ + negate (id _) :: Int
+  , id _ + (_ + 0) :: Int
+  , id _ + (0 + _) :: Int
+  , id 0 + (_ + _) :: Int
+  , id (id _) + abs _ :: Int
+  , id (id _) + negate _ :: Int
+  , id (id (abs _)) + _ :: Int
+  , id (id (negate _)) + _ :: Int
+  , id (abs _) + id _ :: Int
+  , id (abs (id _)) + _ :: Int
+  , id (negate _) + id _ :: Int
+  , id (negate (id _)) + _ :: Int
+  , id (_ + _) + 0 :: Int
+  , id (_ + 0) + _ :: Int
+  , id (0 + _) + _ :: Int
+  , abs _ + id (id _) :: Int
+  , abs (id _) + id _ :: Int
+  , abs (id (id _)) + _ :: Int
+  , negate _ + id (id _) :: Int
+  , negate (id _) + id _ :: Int
+  , negate (id (id _)) + _ :: Int
+  , (_ + _) + id 0 :: Int
+  , (_ + 0) + id _ :: Int
+  , (_ + id _) + 0 :: Int
+  , (_ + id 0) + _ :: Int
+  , (0 + _) + id _ :: Int
+  , (0 + id _) + _ :: Int
+  , (id _ + _) + 0 :: Int
+  , (id _ + 0) + _ :: Int
+  , (id 0 + _) + _ :: Int
+  , _:tail [_] :: [Int]
+  , _:_:tail [] :: [Int]
+  , [_,id _] :: [Int]
+  , _:id _:[0] :: [Int]
+  , [_,abs _] :: [Int]
+  , [_,negate _] :: [Int]
+  , 0:head _:_ :: [Int]
+  , [id _,_] :: [Int]
+  , id _:_:[0] :: [Int]
+  , id (id (head _)):_ :: [Int]
+  , [abs _,_] :: [Int]
+  , [negate _,_] :: [Int]
+  , head _:0:_ :: [Int]
+  , head (0:_):_ :: [Int]
+  , id (abs (negate (_ + _))) :: Int
+  , id (abs (head (_ ++ _))) :: Int
+  , id (abs (_ + negate _)) :: Int
+  , id (abs (negate _ + _)) :: Int
+  , id (negate (abs (_ + _))) :: Int
+  , id (negate (head (_ ++ _))) :: Int
+  , id (negate (_ + abs _)) :: Int
+  , id (negate (abs _ + _)) :: Int
+  , id (head (tail (_ ++ _))) :: Int
+  , id (head (_ ++ tail _)) :: Int
+  , id (_ * (_ + 0)) :: Int
+  , id (_ * (0 + _)) :: Int
+  , id (0 * (_ + _)) :: Int
+  , id ((_ + _) * 0) :: Int
+  , id ((_ + 0) * _) :: Int
+  , id ((0 + _) * _) :: Int
+  , id (_ + abs (negate _)) :: Int
+  , id (_ + negate (abs _)) :: Int
+  , id (_ + _ * 0) :: Int
+  , id (_ + 0 * _) :: Int
+  , id (0 + _ * _) :: Int
+  , id (abs _ + negate _) :: Int
+  , id (abs (negate _) + _) :: Int
+  , id (negate _ + abs _) :: Int
+  , id (negate (abs _) + _) :: Int
+  , id (_ * _ + 0) :: Int
+  , id (_ * 0 + _) :: Int
+  , id (0 * _ + _) :: Int
+  , head (0:(_ ++ _)) :: Int
+  , head [_ + _] :: Int
+  , head (_ ++ (0:_)) :: Int
+  , head ((0:_) ++ _) :: Int
+  , _ + head [_] :: Int
+  , head [_] + _ :: Int
+  , id 0:(_ ++ _) :: [Int]
+  , [id (_ + _)] :: [Int]
+  , [_ + id _] :: [Int]
+  , [id _ + _] :: [Int]
+  , _ ++ (id 0:_) :: [Int]
+  , (id 0:_) ++ _ :: [Int]
+  , not (not (not (not (not _)))) :: Bool
+  , id (id (id (id (id _)))) :: Int
+  , id (id (id (id (id x)))) :: Int
+  , id (id (id (id (id y)))) :: Int
+  , id (id (id (id (ord _)))) :: Int
+  , id (id (id (id (ord c)))) :: Int
+  , id (id (id (id (abs _)))) :: Int
+  , id (id (id (id (abs x)))) :: Int
+  , id (id (id (id (negate _)))) :: Int
+  , id (id (id (id (negate x)))) :: Int
+  , id (id (id (id (head _)))) :: Int
+  , id (id (id (id (head xs)))) :: Int
+  , id (id (id (abs (id _)))) :: Int
+  , id (id (id (abs (id x)))) :: Int
+  , id (id (id (abs (abs _)))) :: Int
+  , id (id (id (negate (id _)))) :: Int
+  , id (id (id (negate (id x)))) :: Int
+  , id (id (id (negate (negate _)))) :: Int
+  , id (id (abs (id (id _)))) :: Int
+  , id (id (abs (id (id x)))) :: Int
+  , id (id (abs (id (abs _)))) :: Int
+  , id (id (abs (abs (id _)))) :: Int
+  , id (id (negate (id (id _)))) :: Int
+  , id (id (negate (id (id x)))) :: Int
+  , id (id (negate (id (negate _)))) :: Int
+  , id (id (negate (negate (id _)))) :: Int
+  , id (abs (id (id (id _)))) :: Int
+  , id (abs (id (id (id x)))) :: Int
+  , id (abs (id (id (abs _)))) :: Int
+  , id (abs (id (abs (id _)))) :: Int
+  , id (abs (abs (id (id _)))) :: Int
+  , id (negate (id (id (id _)))) :: Int
+  , id (negate (id (id (id x)))) :: Int
+  , id (negate (id (id (negate _)))) :: Int
+  , id (negate (id (negate (id _)))) :: Int
+  , id (negate (negate (id (id _)))) :: Int
+  , abs (id (id (id (id _)))) :: Int
+  , negate (id (id (id (id _)))) :: Int
+  , id (id (id (abs (ord _)))) :: Int
+  , id (id (id (abs (negate _)))) :: Int
+  , id (id (id (abs (head _)))) :: Int
+  , id (id (id (negate (ord _)))) :: Int
+  , id (id (id (negate (abs _)))) :: Int
+  , id (id (id (negate (head _)))) :: Int
+  , id (id (id (head (tail _)))) :: Int
+  , id (id (id (_ * 0))) :: Int
+  , id (id (id (0 * _))) :: Int
+  , id (id (id (_ + 0))) :: Int
+  , id (id (id (_ + 1))) :: Int
+  , id (id (id (x + 0))) :: Int
+  , id (id (id (0 + _))) :: Int
+  , id (id (id (0 + x))) :: Int
+  , id (id (id (1 + _))) :: Int
+  , id (id (abs (id (ord _)))) :: Int
+  , id (id (abs (id (negate _)))) :: Int
+  , id (id (abs (id (head _)))) :: Int
+  , id (id (abs (negate (id _)))) :: Int
+  , id (id (negate (id (ord _)))) :: Int
+  , id (id (negate (id (abs _)))) :: Int
+  , id (id (negate (id (head _)))) :: Int
+  , id (id (negate (abs (id _)))) :: Int
+  , id (id (_ * id 0)) :: Int
+  , id (id (0 * id _)) :: Int
+  , id (id (id _ * 0)) :: Int
+  , id (id (id 0 * _)) :: Int
+  , id (id (_ + id 0)) :: Int
+  , id (id (_ + id 1)) :: Int
+  , id (id (x + id 0)) :: Int
+  , id (id (0 + id _)) :: Int
+  , id (id (0 + id x)) :: Int
+  , id (id (1 + id _)) :: Int
+  , id (id (id _ + 0)) :: Int
+  , id (id (id _ + 1)) :: Int
+  , id (id (id x + 0)) :: Int
+  , id (id (id 0 + _)) :: Int
+  , id (id (id 0 + x)) :: Int
+  , id (id (id 1 + _)) :: Int
+  , id (abs (id (id (ord _)))) :: Int
+  , id (abs (id (id (negate _)))) :: Int
+  , id (abs (id (id (head _)))) :: Int
+  , id (abs (id (negate (id _)))) :: Int
+  , id (abs (negate (id (id _)))) :: Int
+  , id (negate (id (id (ord _)))) :: Int
+  , id (negate (id (id (abs _)))) :: Int
+  , id (negate (id (id (head _)))) :: Int
+  , id (negate (id (abs (id _)))) :: Int
+  , id (negate (abs (id (id _)))) :: Int
+  , id (_ * id (id 0)) :: Int
+  , id (0 * id (id _)) :: Int
+  , id (id _ * id 0) :: Int
+  , id (id 0 * id _) :: Int
+  , id (id (id _) * 0) :: Int
+  , id (id (id 0) * _) :: Int
+  , id (_ + id (id 0)) :: Int
+  , id (_ + id (id 1)) :: Int
+  , id (_ + (0 + 0)) :: Int
+  , id (x + id (id 0)) :: Int
+  , id (0 + id (id _)) :: Int
+  , id (0 + id (id x)) :: Int
+  , id (0 + (_ + 0)) :: Int
+  , id (0 + (0 + _)) :: Int
+  , id (1 + id (id _)) :: Int
+  , id (id _ + id 0) :: Int
+  , id (id _ + id 1) :: Int
+  , id (id x + id 0) :: Int
+  , id (id 0 + id _) :: Int
+  , id (id 0 + id x) :: Int
+  , id (id 1 + id _) :: Int
+  , id (id (id _) + 0) :: Int
+  , id (id (id _) + 1) :: Int
+  , id (id (id x) + 0) :: Int
+  , id (id (id 0) + _) :: Int
+  , id (id (id 0) + x) :: Int
+  , id (id (id 1) + _) :: Int
+  , id ((_ + 0) + 0) :: Int
+  , id ((0 + _) + 0) :: Int
+  , id ((0 + 0) + _) :: Int
+  , head (0:0:_) :: Int
+  , _ + id (id (id 0)) :: Int
+  , 0 + id (id (id _)) :: Int
+  , id _ + id (id 0) :: Int
+  , id 0 + id (id _) :: Int
+  , id (id _) + id 0 :: Int
+  , id (id 0) + id _ :: Int
+  , id (id (id _)) + 0 :: Int
+  , id (id (id 0)) + _ :: Int
+  , 0:id 0:_ :: [Int]
+  , id 0:0:_ :: [Int]
+  , [id (id (id _))] :: [Int]
+  , id (id (id 0)):_ :: [Int]
+  , id (id (abs (_ + 0))) :: Int
+  , id (id (abs (0 + _))) :: Int
+  , id (id (negate (_ + 0))) :: Int
+  , id (id (negate (0 + _))) :: Int
+  , id (id (head [_])) :: Int
+  , id (id (head (_:[0]))) :: Int
+  , id (id (head [x])) :: Int
+  , id (id (head (0:_))) :: Int
+  , id (id (head (0:xs))) :: Int
+  , id (id (head (1:_))) :: Int
+  , id (id (head (_ ++ []))) :: Int
+  , id (id (head ([] ++ _))) :: Int
+  , id (id (_ + ord 'a')) :: Int
+  , id (id (_ + abs 0)) :: Int
+  , id (id (_ + negate 0)) :: Int
+  , id (id (_ + head [])) :: Int
+  , id (id (0 + ord _)) :: Int
+  , id (id (0 + abs _)) :: Int
+  , id (id (0 + negate _)) :: Int
+  , id (id (0 + head _)) :: Int
+  , id (id (ord _ + 0)) :: Int
+  , id (id (ord 'a' + _)) :: Int
+  , id (id (abs _ + 0)) :: Int
+  , id (id (abs 0 + _)) :: Int
+  , id (id (negate _ + 0)) :: Int
+  , id (id (negate 0 + _)) :: Int
+  , id (id (head _ + 0)) :: Int
+  , id (id (head [] + _)) :: Int
+  , id (abs (id (_ + 0))) :: Int
+  , id (abs (id (0 + _))) :: Int
+  , id (abs (_ + id 0)) :: Int
+  , id (abs (0 + id _)) :: Int
+  , id (abs (id _ + 0)) :: Int
+  , id (abs (id 0 + _)) :: Int
+  , id (negate (id (_ + 0))) :: Int
+  , id (negate (id (0 + _))) :: Int
+  , id (negate (_ + id 0)) :: Int
+  , id (negate (0 + id _)) :: Int
+  , id (negate (id _ + 0)) :: Int
+  , id (negate (id 0 + _)) :: Int
+  , id (head [id _]) :: Int
+  , id (head (id _:[0])) :: Int
+  , id (head [id x]) :: Int
+  , id (head (id 0:_)) :: Int
+  , id (head (id 0:xs)) :: Int
+  , id (head (id 1:_)) :: Int
+  , id (head [head _]) :: Int
+  , id (head (head []:_)) :: Int
+  , id (_ + id (ord 'a')) :: Int
+  , id (_ + id (abs 0)) :: Int
+  , id (_ + id (negate 0)) :: Int
+  , id (_ + id (head [])) :: Int
+  , id (_ + abs (id 0)) :: Int
+  , id (_ + negate (id 0)) :: Int
+  , id (0 + id (ord _)) :: Int
+  , id (0 + id (abs _)) :: Int
+  , id (0 + id (negate _)) :: Int
+  , id (0 + id (head _)) :: Int
+  , id (0 + abs (id _)) :: Int
+  , id (0 + negate (id _)) :: Int
+  , id (ord _ + id 0) :: Int
+  , id (ord 'a' + id _) :: Int
+  , id (id _ + ord 'a') :: Int
+  , id (id _ + abs 0) :: Int
+  , id (id _ + negate 0) :: Int
+  , id (id _ + head []) :: Int
+  , id (id 0 + ord _) :: Int
+  , id (id 0 + abs _) :: Int
+  , id (id 0 + negate _) :: Int
+  , id (id 0 + head _) :: Int
+  , id (id (ord _) + 0) :: Int
+  , id (id (ord 'a') + _) :: Int
+  , id (id (abs _) + 0) :: Int
+  , id (id (abs 0) + _) :: Int
+  , id (id (negate _) + 0) :: Int
+  , id (id (negate 0) + _) :: Int
+  , id (id (head _) + 0) :: Int
+  , id (id (head []) + _) :: Int
+  , id (abs _ + id 0) :: Int
+  , id (abs 0 + id _) :: Int
+  , id (abs (id _) + 0) :: Int
+  , id (abs (id 0) + _) :: Int
+  , id (negate _ + id 0) :: Int
+  , id (negate 0 + id _) :: Int
+  , id (negate (id _) + 0) :: Int
+  , id (negate (id 0) + _) :: Int
+  , id (head _ + id 0) :: Int
+  , id (head [] + id _) :: Int
+  , head [_,0] :: Int
+  , head [0,_] :: Int
+  , head [id (id _)] :: Int
+  , head (id (id 0):_) :: Int
+  , [_,id 0] :: [Int]
+  , [0,id _] :: [Int]
+  , [id _,0] :: [Int]
+  , [id 0,_] :: [Int]
+  , id (abs (head [_])) :: Int
+  , id (abs (head (0:_))) :: Int
+  , id (negate (head [_])) :: Int
+  , id (negate (head (0:_))) :: Int
+  , id (head (tail [_])) :: Int
+  , id (head (tail (0:_))) :: Int
+  , id (head (_:tail [])) :: Int
+  , id (head (0:tail _)) :: Int
+  , id (head [ord _]) :: Int
+  , id (head (ord 'a':_)) :: Int
+  , id (head [abs _]) :: Int
+  , id (head (abs 0:_)) :: Int
+  , id (head [negate _]) :: Int
+  , id (head (negate 0:_)) :: Int
+  , id (id (id (id (id 0)))) :: Int
+  , id (id (id (id (id 1)))) :: Int
+  , id (id (id (id (ord 'a')))) :: Int
+  , id (id (id (id (abs 0)))) :: Int
+  , id (id (id (id (negate 0)))) :: Int
+  , id (id (id (id (head [])))) :: Int
+  , id (id (id (abs (id 0)))) :: Int
+  , id (id (id (negate (id 0)))) :: Int
+  , id (id (id (0 + 0))) :: Int
+  , id (id (abs (id (id 0)))) :: Int
+  , id (id (negate (id (id 0)))) :: Int
+  , id (id (0 + id 0)) :: Int
+  , id (id (id 0 + 0)) :: Int
+  , id (abs (id (id (id 0)))) :: Int
+  , id (negate (id (id (id 0)))) :: Int
+  , id (0 + id (id 0)) :: Int
+  , id (id 0 + id 0) :: Int
+  , id (id (id 0) + 0) :: Int
+  , id (id (head [0])) :: Int
+  , id (head [id 0]) :: Int
+  , _:_:x:_ :: [Int]
+  , _:_:x:xs :: [Int]
+  , _:_:y:_ :: [Int]
+  , _:x:_:_ :: [Int]
+  , _:x:_:xs :: [Int]
+  , _:x:x:_ :: [Int]
+  , _:y:_:_ :: [Int]
+  , x:_:_:_ :: [Int]
+  , x:_:_:xs :: [Int]
+  , x:_:x:_ :: [Int]
+  , x:x:_:_ :: [Int]
+  , y:_:_:_ :: [Int]
+  , _:_:(_ ++ xs) :: [Int]
+  , _:_:(xs ++ _) :: [Int]
+  , _:x:(_ ++ _) :: [Int]
+  , _:_ + x:_ :: [Int]
+  , _:x + _:_ :: [Int]
+  , _:(_ ++ (_:xs)) :: [Int]
+  , _:(_ ++ (x:_)) :: [Int]
+  , _:(xs ++ (_:_)) :: [Int]
+  , _:((_:_) ++ xs) :: [Int]
+  , _:((_:xs) ++ _) :: [Int]
+  , _:((x:_) ++ _) :: [Int]
+  , x:_:(_ ++ _) :: [Int]
+  , x:_ + _:_ :: [Int]
+  , x:(_ ++ (_:_)) :: [Int]
+  , x:((_:_) ++ _) :: [Int]
+  , _ + _:x:_ :: [Int]
+  , _ + x:_:_ :: [Int]
+  , x + _:_:_ :: [Int]
+  , _ ++ (_:_:xs) :: [Int]
+  , _ ++ (_:x:_) :: [Int]
+  , _ ++ (x:_:_) :: [Int]
+  , xs ++ (_:_:_) :: [Int]
+  , (_:_) ++ (_:xs) :: [Int]
+  , (_:_) ++ (x:_) :: [Int]
+  , (_:xs) ++ (_:_) :: [Int]
+  , (_:_:_) ++ xs :: [Int]
+  , (_:_:xs) ++ _ :: [Int]
+  , (_:x:_) ++ _ :: [Int]
+  , (x:_) ++ (_:_) :: [Int]
+  , (x:_:_) ++ _ :: [Int]
+  , _:x:0:_ :: [Int]
+  , _:0:x:_ :: [Int]
+  , _:id (id x):_ :: [Int]
+  , x:_:0:_ :: [Int]
+  , x:0:_:_ :: [Int]
+  , x:id (id _):_ :: [Int]
+  , 0:_:x:_ :: [Int]
+  , 0:x:_:_ :: [Int]
+  , id _:id x:_ :: [Int]
+  , id x:id _:_ :: [Int]
+  , id (id _):x:_ :: [Int]
+  , id (id x):_:_ :: [Int]
+  , id (head (_:x:_)) :: Int
+  , id (head (_:x:xs)) :: Int
+  , id (head (_:y:_)) :: Int
+  , id (head (x:_:_)) :: Int
+  , id (head (x:_:xs)) :: Int
+  , id (head (y:_:_)) :: Int
+  , head (_:ord _:_) :: Int
+  , head (_:id x:_) :: Int
+  , head (x:id _:_) :: Int
+  , head (ord _:_:_) :: Int
+  , head (id _:x:_) :: Int
+  , head (id x:_:_) :: Int
+  , _:id (ord _):_ :: [Int]
+  , ord _:id _:_ :: [Int]
+  , id _:ord _:_ :: [Int]
+  , id (ord _):_:_ :: [Int]
+  , id (head (_:(_ ++ xs))) :: Int
+  , id (head (_:(xs ++ _))) :: Int
+  , id (head (_ + x:_)) :: Int
+  , id (head (x + _:_)) :: Int
+  , id (head (_ ++ (_:xs))) :: Int
+  , id (head (xs ++ (_:_))) :: Int
+  , id (head ((_:_) ++ xs)) :: Int
+  , id (head ((_:xs) ++ _)) :: Int
+  , id (_ + head (x:_)) :: Int
+  , id (x + head (_:_)) :: Int
+  , id (head (_:_) + x) :: Int
+  , id (head (x:_) + _) :: Int
+  , _:_:_:_ :: [Int]
+  , _:_:_:xs :: [Int]
+  , _:_:_:ys :: [Int]
+  , elem _ (_:_:_) :: Bool
+  , _:_:insert _ _ :: [Int]
+  , _:_:(_ ++ _) :: [Int]
+  , _:_ * _:_ :: [Int]
+  , _:_ + _:_ :: [Int]
+  , _:_ + _:xs :: [Int]
+  , _:insert _ (_:_) :: [Int]
+  , _:(_ ++ (_:_)) :: [Int]
+  , _:(_ ++ (_ ++ _)) :: [Int]
+  , _:((_:_) ++ _) :: [Int]
+  , _:((_ ++ _) ++ _) :: [Int]
+  , _ * _:_:_ :: [Int]
+  , _ + _:_:_ :: [Int]
+  , _ + _:_:xs :: [Int]
+  , _ + (_ + _):_ :: [Int]
+  , (_ + _) + _:_ :: [Int]
+  , insert _ (_:_:_) :: [Int]
+  , _ ++ (_:_:_) :: [Int]
+  , _ ++ (_:(_ ++ _)) :: [Int]
+  , _ ++ (_ ++ (_:_)) :: [Int]
+  , _ ++ ((_:_) ++ _) :: [Int]
+  , (_:_) ++ (_:_) :: [Int]
+  , (_:_) ++ (_ ++ _) :: [Int]
+  , (_:_:_) ++ _ :: [Int]
+  , (_:(_ ++ _)) ++ _ :: [Int]
+  , (_ ++ _) ++ (_:_) :: [Int]
+  , (_ ++ (_:_)) ++ _ :: [Int]
+  , ((_:_) ++ _) ++ _ :: [Int]
+  , _ + _:(_ ++ _) :: [Int]
+  , _ ++ (_ + _:_) :: [Int]
+  , (_ + _:_) ++ _ :: [Int]
+  , id (id (_ + (_ + x))) :: Int
+  , id (id (_ + (x + _))) :: Int
+  , id (id (x + (_ + _))) :: Int
+  , id (id ((_ + _) + x)) :: Int
+  , id (id ((_ + x) + _)) :: Int
+  , id (id ((x + _) + _)) :: Int
+  , id (_ + id (_ + x)) :: Int
+  , id (_ + id (x + _)) :: Int
+  , id (_ + (_ + id x)) :: Int
+  , id (_ + (x + id _)) :: Int
+  , id (_ + (id _ + x)) :: Int
+  , id (_ + (id x + _)) :: Int
+  , id (x + id (_ + _)) :: Int
+  , id (x + (_ + id _)) :: Int
+  , id (x + (id _ + _)) :: Int
+  , id (id _ + (_ + x)) :: Int
+  , id (id _ + (x + _)) :: Int
+  , id (id x + (_ + _)) :: Int
+  , id (id (_ + _) + x) :: Int
+  , id (id (_ + x) + _) :: Int
+  , id (id (x + _) + _) :: Int
+  , id ((_ + _) + id x) :: Int
+  , id ((_ + x) + id _) :: Int
+  , id ((_ + id _) + x) :: Int
+  , id ((_ + id x) + _) :: Int
+  , id ((x + _) + id _) :: Int
+  , id ((x + id _) + _) :: Int
+  , id ((id _ + _) + x) :: Int
+  , id ((id _ + x) + _) :: Int
+  , id ((id x + _) + _) :: Int
+  , head (_:head _:_) :: Int
+  , head (head _:_:_) :: Int
+  , head (head (_:_):_) :: Int
+  , [_,_,x] :: [Int]
+  , _:_:0:_ :: [Int]
+  , _:_:0:xs :: [Int]
+  , _:_:1:_ :: [Int]
+  , [_,x,_] :: [Int]
+  , _:0:_:_ :: [Int]
+  , _:0:_:xs :: [Int]
+  , _:1:_:_ :: [Int]
+  , _:id (id _):_ :: [Int]
+  , _:id (id _):xs :: [Int]
+  , [x,_,_] :: [Int]
+  , 0:_:_:_ :: [Int]
+  , 0:_:_:xs :: [Int]
+  , 1:_:_:_ :: [Int]
+  , id _:id _:_ :: [Int]
+  , id _:id _:xs :: [Int]
+  , id (id _):_:_ :: [Int]
+  , id (id _):_:xs :: [Int]
+  , id (head (_:_:_)) :: Int
+  , id (head (_:_:xs)) :: Int
+  , id (head (_:_:ys)) :: Int
+  , id (head (x:x:_)) :: Int
+  , id (_ + (_ + ord _)) :: Int
+  , id (_ + (_ + head _)) :: Int
+  , id (_ + (ord _ + _)) :: Int
+  , id (_ + (head _ + _)) :: Int
+  , id (ord _ + (_ + _)) :: Int
+  , id (head _ + (_ + _)) :: Int
+  , id ((_ + _) + ord _) :: Int
+  , id ((_ + _) + head _) :: Int
+  , id ((_ + ord _) + _) :: Int
+  , id ((_ + head _) + _) :: Int
+  , id ((ord _ + _) + _) :: Int
+  , id ((head _ + _) + _) :: Int
+  , abs (head (_:_:_)) :: Int
+  , negate (head (_:_:_)) :: Int
+  , head (tail (_:_:_)) :: Int
+  , head (_:tail (_:_)) :: Int
+  , head (_:_:tail _) :: Int
+  , head (_:id _:_) :: Int
+  , head (_:id _:xs) :: Int
+  , head (_:abs _:_) :: Int
+  , head (_:negate _:_) :: Int
+  , head (id _:_:_) :: Int
+  , head (id _:_:xs) :: Int
+  , head (abs _:_:_) :: Int
+  , head (negate _:_:_) :: Int
+  , tail (_:id _:_) :: [Int]
+  , tail (id _:_:_) :: [Int]
+  , _:tail (id _:_) :: [Int]
+  , _:_:(_ ++ []) :: [Int]
+  , _:_:([] ++ _) :: [Int]
+  , _:0:(_ ++ _) :: [Int]
+  , _:id _:tail _ :: [Int]
+  , _:id (abs _):_ :: [Int]
+  , _:id (negate _):_ :: [Int]
+  , _:id (head _):_ :: [Int]
+  , _:abs (id _):_ :: [Int]
+  , _:negate (id _):_ :: [Int]
+  , _:_ + 0:_ :: [Int]
+  , _:0 + _:_ :: [Int]
+  , _:(_ ++ [_]) :: [Int]
+  , _:(_ ++ (0:_)) :: [Int]
+  , _:([] ++ (_:_)) :: [Int]
+  , _:((_:_) ++ []) :: [Int]
+  , _:([_] ++ _) :: [Int]
+  , _:((0:_) ++ _) :: [Int]
+  , 0:_:(_ ++ _) :: [Int]
+  , 0:_ + _:_ :: [Int]
+  , 0:(_ ++ (_:_)) :: [Int]
+  , 0:((_:_) ++ _) :: [Int]
+  , id _:tail (_:_) :: [Int]
+  , id _:_:tail _ :: [Int]
+  , id _:abs _:_ :: [Int]
+  , id _:negate _:_ :: [Int]
+  , id _:head _:_ :: [Int]
+  , id (id _):(_ ++ _) :: [Int]
+  , id (id (_ + _)):_ :: [Int]
+  , id (abs _):_:_ :: [Int]
+  , id (negate _):_:_ :: [Int]
+  , id (head _):_:_ :: [Int]
+  , id (head (_:_)):_ :: [Int]
+  , id (_ + id _):_ :: [Int]
+  , id (id _ + _):_ :: [Int]
+  , abs _:id _:_ :: [Int]
+  , abs (id _):_:_ :: [Int]
+  , negate _:id _:_ :: [Int]
+  , negate (id _):_:_ :: [Int]
+  , head _:id _:_ :: [Int]
+  , head (id _:_):_ :: [Int]
+  , _ + _:0:_ :: [Int]
+  , _ + 0:_:_ :: [Int]
+  , _ + id (id _):_ :: [Int]
+  , 0 + _:_:_ :: [Int]
+  , id _ + id _:_ :: [Int]
+  , id (id _) + _:_ :: [Int]
+  , _ ++ [_,_] :: [Int]
+  , _ ++ (_:0:_) :: [Int]
+  , _ ++ (0:_:_) :: [Int]
+  , _ ++ (id (id _):_) :: [Int]
+  , [] ++ (_:_:_) :: [Int]
+  , (_:_) ++ [_] :: [Int]
+  , (_:_) ++ (0:_) :: [Int]
+  , [_] ++ (_:_) :: [Int]
+  , (_:_:_) ++ [] :: [Int]
+  , [_,_] ++ _ :: [Int]
+  , (_:0:_) ++ _ :: [Int]
+  , (0:_) ++ (_:_) :: [Int]
+  , (0:_:_) ++ _ :: [Int]
+  , (id (id _):_) ++ _ :: [Int]
+  , id (head (_:insert _ _)) :: Int
+  , id (head (_:(_ ++ _))) :: Int
+  , id (head (x:(_ ++ _))) :: Int
+  , id (head (_ * _:_)) :: Int
+  , id (head (_ + _:_)) :: Int
+  , id (head (_ + _:xs)) :: Int
+  , id (head (_ ++ (_:_))) :: Int
+  , id (head (_ ++ (x:_))) :: Int
+  , id (head ((_:_) ++ _)) :: Int
+  , id (head ((x:_) ++ _)) :: Int
+  , id (_ * head (_:_)) :: Int
+  , id (head (_:_) * _) :: Int
+  , id (_ + head (_:_)) :: Int
+  , id (_ + head (_:xs)) :: Int
+  , id (_ + head (_ ++ _)) :: Int
+  , id (head (_:_) + _) :: Int
+  , id (head (_:xs) + _) :: Int
+  , id (head (_ ++ _) + _) :: Int
+  , head (id _:(_ ++ _)) :: Int
+  , head (id (_ + _):_) :: Int
+  , head (_ + id _:_) :: Int
+  , head (id _ + _:_) :: Int
+  , head (_ ++ (id _:_)) :: Int
+  , head ((id _:_) ++ _) :: Int
+  , _ + id (head (_:_)) :: Int
+  , _ + head (id _:_) :: Int
+  , id _ + head (_:_) :: Int
+  , id (head (_:_)) + _ :: Int
+  , head (_:_) + id _ :: Int
+  , head (id _:_) + _ :: Int
+  , id (id (id (id (_ + x)))) :: Int
+  , id (id (id (id (x + _)))) :: Int
+  , id (id (id (_ + id x))) :: Int
+  , id (id (id (x + id _))) :: Int
+  , id (id (id (id _ + x))) :: Int
+  , id (id (id (id x + _))) :: Int
+  , id (id (_ + id (id x))) :: Int
+  , id (id (x + id (id _))) :: Int
+  , id (id (id _ + id x)) :: Int
+  , id (id (id x + id _)) :: Int
+  , id (id (id (id _) + x)) :: Int
+  , id (id (id (id x) + _)) :: Int
+  , id (_ + id (id (id x))) :: Int
+  , id (x + id (id (id _))) :: Int
+  , id (id _ + id (id x)) :: Int
+  , id (id x + id (id _)) :: Int
+  , id (id (id _) + id x) :: Int
+  , id (id (id x) + id _) :: Int
+  , id (id (id (id _)) + x) :: Int
+  , id (id (id (id x)) + _) :: Int
+  , _:0:0:_ :: [Int]
+  , 0:_:0:_ :: [Int]
+  , 0:0:_:_ :: [Int]
+  , id (id (id (id _))):_ :: [Int]
+  , id (id (id (head (_:_)))) :: Int
+  , id (id (id (head (_:xs)))) :: Int
+  , id (id (id (head (x:_)))) :: Int
+  , id (id (id (_ + ord _))) :: Int
+  , id (id (id (_ + head _))) :: Int
+  , id (id (id (ord _ + _))) :: Int
+  , id (id (id (head _ + _))) :: Int
+  , id (id (head (id _:_))) :: Int
+  , id (id (head (id _:xs))) :: Int
+  , id (id (head (id x:_))) :: Int
+  , id (id (_ + id (ord _))) :: Int
+  , id (id (_ + id (head _))) :: Int
+  , id (id (ord _ + id _)) :: Int
+  , id (id (id _ + ord _)) :: Int
+  , id (id (id _ + head _)) :: Int
+  , id (id (id (ord _) + _)) :: Int
+  , id (id (id (head _) + _)) :: Int
+  , id (id (head _ + id _)) :: Int
+  , id (head (id (id _):_)) :: Int
+  , id (head (id (id _):xs)) :: Int
+  , id (head (id (id x):_)) :: Int
+  , id (_ + id (id (ord _))) :: Int
+  , id (_ + id (id (head _))) :: Int
+  , id (ord _ + id (id _)) :: Int
+  , id (id _ + id (ord _)) :: Int
+  , id (id _ + id (head _)) :: Int
+  , id (id (ord _) + id _) :: Int
+  , id (id (id _) + ord _) :: Int
+  , id (id (id _) + head _) :: Int
+  , id (id (id (ord _)) + _) :: Int
+  , id (id (id (head _)) + _) :: Int
+  , id (id (head _) + id _) :: Int
+  , id (head _ + id (id _)) :: Int
+  , head (id (id (id _)):_) :: Int
+  , _:id (id 0):_ :: [Int]
+  , 0:id (id _):_ :: [Int]
+  , id _:id 0:_ :: [Int]
+  , id 0:id _:_ :: [Int]
+  , id (id _):0:_ :: [Int]
+  , id (id 0):_:_ :: [Int]
+  , id (id (abs (head (_:_)))) :: Int
+  , id (id (negate (head (_:_)))) :: Int
+  , id (id (head (tail (_:_)))) :: Int
+  , id (id (head (_:tail _))) :: Int
+  , id (id (head (ord _:_))) :: Int
+  , id (id (head (abs _:_))) :: Int
+  , id (id (head (negate _:_))) :: Int
+  , id (abs (id (head (_:_)))) :: Int
+  , id (abs (head (id _:_))) :: Int
+  , id (negate (id (head (_:_)))) :: Int
+  , id (negate (head (id _:_))) :: Int
+  , id (head (tail (id _:_))) :: Int
+  , id (head [_,x]) :: Int
+  , id (head (_:0:_)) :: Int
+  , id (head (_:0:xs)) :: Int
+  , id (head (_:1:_)) :: Int
+  , id (head [x,_]) :: Int
+  , id (head (x:0:_)) :: Int
+  , id (head (0:_:_)) :: Int
+  , id (head (0:_:xs)) :: Int
+  , id (head (0:x:_)) :: Int
+  , id (head (1:_:_)) :: Int
+  , id (head (id _:tail _)) :: Int
+  , id (head (id (ord _):_)) :: Int
+  , id (head (id (abs _):_)) :: Int
+  , id (head (id (negate _):_)) :: Int
+  , id (head (abs (id _):_)) :: Int
+  , id (head (negate (id _):_)) :: Int
+  , head (_:id 0:_) :: Int
+  , head (0:id _:_) :: Int
+  , head (id _:0:_) :: Int
+  , head (id 0:_:_) :: Int
+  , id (head (_:(_ ++ []))) :: Int
+  , id (head (_:([] ++ _))) :: Int
+  , id (head (_ + 0:_)) :: Int
+  , id (head (0 + _:_)) :: Int
+  , id (head (_ ++ [_])) :: Int
+  , id (head ([] ++ (_:_))) :: Int
+  , id (head ((_:_) ++ [])) :: Int
+  , id (head ([_] ++ _)) :: Int
+  , id (_ + head (0:_)) :: Int
+  , id (0 + head (_:_)) :: Int
+  , id (head (_:_) + 0) :: Int
+  , id (head (0:_) + _) :: Int
+  , _ + (_ + (_ + _)) :: Int
+  , _ + ((_ + _) + _) :: Int
+  , (_ + _) + (_ + _) :: Int
+  , (_ + (_ + _)) + _ :: Int
+  , ((_ + _) + _) + _ :: Int
+  , id (id (_ + (_ + _))) :: Int
+  , id (id ((_ + _) + _)) :: Int
+  , id (_ + id (_ + _)) :: Int
+  , id (_ + (_ + id _)) :: Int
+  , id (_ + (id _ + _)) :: Int
+  , id (id _ + (_ + _)) :: Int
+  , id (id (_ + _) + _) :: Int
+  , id ((_ + _) + id _) :: Int
+  , id ((_ + id _) + _) :: Int
+  , id ((id _ + _) + _) :: Int
+  , _ + id (id (_ + _)) :: Int
+  , _ + id (_ + id _) :: Int
+  , _ + id (id _ + _) :: Int
+  , _ + (_ + id (id _)) :: Int
+  , _ + (id _ + id _) :: Int
+  , _ + (id (id _) + _) :: Int
+  , id _ + id (_ + _) :: Int
+  , id _ + (_ + id _) :: Int
+  , id _ + (id _ + _) :: Int
+  , id (id _) + (_ + _) :: Int
+  , id (id (_ + _)) + _ :: Int
+  , id (_ + _) + id _ :: Int
+  , id (_ + id _) + _ :: Int
+  , id (id _ + _) + _ :: Int
+  , (_ + _) + id (id _) :: Int
+  , (_ + id _) + id _ :: Int
+  , (_ + id (id _)) + _ :: Int
+  , (id _ + _) + id _ :: Int
+  , (id _ + id _) + _ :: Int
+  , (id (id _) + _) + _ :: Int
+  , [_,_,_] :: [Int]
+  , _:_:_:[0] :: [Int]
+  , id (id (_ * (_ + _))) :: Int
+  , id (id ((_ + _) * _)) :: Int
+  , id (id (_ + _ * _)) :: Int
+  , id (id (_ * _ + _)) :: Int
+  , id (abs (_ + (_ + _))) :: Int
+  , id (abs ((_ + _) + _)) :: Int
+  , id (negate (_ + (_ + _))) :: Int
+  , id (negate ((_ + _) + _)) :: Int
+  , id (head (_ ++ (_ ++ _))) :: Int
+  , id (_ * id (_ + _)) :: Int
+  , id (_ * (_ + id _)) :: Int
+  , id (_ * (id _ + _)) :: Int
+  , id (id _ * (_ + _)) :: Int
+  , id (id (_ + _) * _) :: Int
+  , id ((_ + _) * id _) :: Int
+  , id ((_ + id _) * _) :: Int
+  , id ((id _ + _) * _) :: Int
+  , id (_ + id (_ * _)) :: Int
+  , id (_ + abs (_ + _)) :: Int
+  , id (_ + negate (_ + _)) :: Int
+  , id (_ + _ * id _) :: Int
+  , id (_ + id _ * _) :: Int
+  , id (_ + (_ + abs _)) :: Int
+  , id (_ + (_ + negate _)) :: Int
+  , id (_ + (abs _ + _)) :: Int
+  , id (_ + (negate _ + _)) :: Int
+  , id (id _ + _ * _) :: Int
+  , id (id (_ * _) + _) :: Int
+  , id (abs _ + (_ + _)) :: Int
+  , id (abs (_ + _) + _) :: Int
+  , id (negate _ + (_ + _)) :: Int
+  , id (negate (_ + _) + _) :: Int
+  , id (_ * _ + id _) :: Int
+  , id (_ * id _ + _) :: Int
+  , id (id _ * _ + _) :: Int
+  , id ((_ + _) + abs _) :: Int
+  , id ((_ + _) + negate _) :: Int
+  , id ((_ + abs _) + _) :: Int
+  , id ((_ + negate _) + _) :: Int
+  , id ((abs _ + _) + _) :: Int
+  , id ((negate _ + _) + _) :: Int
+  , [_,_ + _] :: [Int]
+  , [_ + _,_] :: [Int]
+  , id (id (id (id (_ * _)))) :: Int
+  , id (id (id (id (_ + _)))) :: Int
+  , id (id (id (_ * id _))) :: Int
+  , id (id (id (id _ * _))) :: Int
+  , id (id (id (_ + id _))) :: Int
+  , id (id (id (id _ + _))) :: Int
+  , id (id (_ * id (id _))) :: Int
+  , id (id (id _ * id _)) :: Int
+  , id (id (id (id _) * _)) :: Int
+  , id (id (_ + id (id _))) :: Int
+  , id (id (id _ + id _)) :: Int
+  , id (id (id (id _) + _)) :: Int
+  , id (_ * id (id (id _))) :: Int
+  , id (id _ * id (id _)) :: Int
+  , id (id (id _) * id _) :: Int
+  , id (id (id (id _)) * _) :: Int
+  , id (_ + id (id (id _))) :: Int
+  , id (id _ + id (id _)) :: Int
+  , id (id (id _) + id _) :: Int
+  , id (id (id (id _)) + _) :: Int
+  , _ + id (id (id (id _))) :: Int
+  , id _ + id (id (id _)) :: Int
+  , id (id _) + id (id _) :: Int
+  , id (id (id _)) + id _ :: Int
+  , id (id (id (id _))) + _ :: Int
+  , id (id (id (abs (_ + _)))) :: Int
+  , id (id (id (negate (_ + _)))) :: Int
+  , id (id (id (head (_ ++ _)))) :: Int
+  , id (id (id (_ + abs _))) :: Int
+  , id (id (id (_ + negate _))) :: Int
+  , id (id (id (abs _ + _))) :: Int
+  , id (id (id (negate _ + _))) :: Int
+  , id (id (abs (id (_ + _)))) :: Int
+  , id (id (abs (_ + id _))) :: Int
+  , id (id (abs (id _ + _))) :: Int
+  , id (id (negate (id (_ + _)))) :: Int
+  , id (id (negate (_ + id _))) :: Int
+  , id (id (negate (id _ + _))) :: Int
+  , id (id (head (head _:_))) :: Int
+  , id (id (_ + id (abs _))) :: Int
+  , id (id (_ + id (negate _))) :: Int
+  , id (id (_ + abs (id _))) :: Int
+  , id (id (_ + negate (id _))) :: Int
+  , id (id (_ + (_ + 0))) :: Int
+  , id (id (_ + (0 + _))) :: Int
+  , id (id (0 + (_ + _))) :: Int
+  , id (id (id _ + abs _)) :: Int
+  , id (id (id _ + negate _)) :: Int
+  , id (id (id (abs _) + _)) :: Int
+  , id (id (id (negate _) + _)) :: Int
+  , id (id (abs _ + id _)) :: Int
+  , id (id (abs (id _) + _)) :: Int
+  , id (id (negate _ + id _)) :: Int
+  , id (id (negate (id _) + _)) :: Int
+  , id (id ((_ + _) + 0)) :: Int
+  , id (id ((_ + 0) + _)) :: Int
+  , id (id ((0 + _) + _)) :: Int
+  , id (abs (id (id (_ + _)))) :: Int
+  , id (abs (id (_ + id _))) :: Int
+  , id (abs (id (id _ + _))) :: Int
+  , id (abs (_ + id (id _))) :: Int
+  , id (abs (id _ + id _)) :: Int
+  , id (abs (id (id _) + _)) :: Int
+  , id (negate (id (id (_ + _)))) :: Int
+  , id (negate (id (_ + id _))) :: Int
+  , id (negate (id (id _ + _))) :: Int
+  , id (negate (_ + id (id _))) :: Int
+  , id (negate (id _ + id _)) :: Int
+  , id (negate (id (id _) + _)) :: Int
+  , id (head (id (head _):_)) :: Int
+  , id (_ + id (id (abs _))) :: Int
+  , id (_ + id (id (negate _))) :: Int
+  , id (_ + id (abs (id _))) :: Int
+  , id (_ + id (negate (id _))) :: Int
+  , id (_ + id (_ + 0)) :: Int
+  , id (_ + id (0 + _)) :: Int
+  , id (_ + abs (id (id _))) :: Int
+  , id (_ + negate (id (id _))) :: Int
+  , id (_ + (_ + id 0)) :: Int
+  , id (_ + (0 + id _)) :: Int
+  , id (_ + (id _ + 0)) :: Int
+  , id (_ + (id 0 + _)) :: Int
+  , id (0 + id (_ + _)) :: Int
+  , id (0 + (_ + id _)) :: Int
+  , id (0 + (id _ + _)) :: Int
+  , id (id _ + id (abs _)) :: Int
+  , id (id _ + id (negate _)) :: Int
+  , id (id _ + abs (id _)) :: Int
+  , id (id _ + negate (id _)) :: Int
+  , id (id _ + (_ + 0)) :: Int
+  , id (id _ + (0 + _)) :: Int
+  , id (id 0 + (_ + _)) :: Int
+  , id (id (id _) + abs _) :: Int
+  , id (id (id _) + negate _) :: Int
+  , id (id (id (abs _)) + _) :: Int
+  , id (id (id (negate _)) + _) :: Int
+  , id (id (abs _) + id _) :: Int
+  , id (id (abs (id _)) + _) :: Int
+  , id (id (negate _) + id _) :: Int
+  , id (id (negate (id _)) + _) :: Int
+  , id (id (_ + _) + 0) :: Int
+  , id (id (_ + 0) + _) :: Int
+  , id (id (0 + _) + _) :: Int
+  , id (abs _ + id (id _)) :: Int
+  , id (abs (id _) + id _) :: Int
+  , id (abs (id (id _)) + _) :: Int
+  , id (negate _ + id (id _)) :: Int
+  , id (negate (id _) + id _) :: Int
+  , id (negate (id (id _)) + _) :: Int
+  , id ((_ + _) + id 0) :: Int
+  , id ((_ + 0) + id _) :: Int
+  , id ((_ + id _) + 0) :: Int
+  , id ((_ + id 0) + _) :: Int
+  , id ((0 + _) + id _) :: Int
+  , id ((0 + id _) + _) :: Int
+  , id ((id _ + _) + 0) :: Int
+  , id ((id _ + 0) + _) :: Int
+  , id ((id 0 + _) + _) :: Int
+  , [_,_,0] :: [Int]
+  , [_,0,_] :: [Int]
+  , [_,id (id _)] :: [Int]
+  , [0,_,_] :: [Int]
+  , [id _,id _] :: [Int]
+  , [id (id _),_] :: [Int]
+  , id (head [_,_]) :: Int
+  , id (head (_:_:[0])) :: Int
+  , head [_,id _] :: Int
+  , head [id _,_] :: Int
+  , id (head (0:(_ ++ _))) :: Int
+  , id (head [_ + _]) :: Int
+  , id (head (_ ++ (0:_))) :: Int
+  , id (head ((0:_) ++ _)) :: Int
+  , id (_ + head [_]) :: Int
+  , id (head [_] + _) :: Int
+  , id (id (id (id (id (id _))))) :: Int
+  , id (id (id (id (id (id x))))) :: Int
+  , id (id (id (id (id (ord _))))) :: Int
+  , id (id (id (id (id (abs _))))) :: Int
+  , id (id (id (id (id (negate _))))) :: Int
+  , id (id (id (id (id (head _))))) :: Int
+  , id (id (id (id (abs (id _))))) :: Int
+  , id (id (id (id (negate (id _))))) :: Int
+  , id (id (id (abs (id (id _))))) :: Int
+  , id (id (id (negate (id (id _))))) :: Int
+  , id (id (abs (id (id (id _))))) :: Int
+  , id (id (negate (id (id (id _))))) :: Int
+  , id (abs (id (id (id (id _))))) :: Int
+  , id (negate (id (id (id (id _))))) :: Int
+  , id (id (id (id (_ + 0)))) :: Int
+  , id (id (id (id (0 + _)))) :: Int
+  , id (id (id (_ + id 0))) :: Int
+  , id (id (id (0 + id _))) :: Int
+  , id (id (id (id _ + 0))) :: Int
+  , id (id (id (id 0 + _))) :: Int
+  , id (id (_ + id (id 0))) :: Int
+  , id (id (0 + id (id _))) :: Int
+  , id (id (id _ + id 0)) :: Int
+  , id (id (id 0 + id _)) :: Int
+  , id (id (id (id _) + 0)) :: Int
+  , id (id (id (id 0) + _)) :: Int
+  , id (_ + id (id (id 0))) :: Int
+  , id (0 + id (id (id _))) :: Int
+  , id (id _ + id (id 0)) :: Int
+  , id (id 0 + id (id _)) :: Int
+  , id (id (id _) + id 0) :: Int
+  , id (id (id 0) + id _) :: Int
+  , id (id (id (id _)) + 0) :: Int
+  , id (id (id (id 0)) + _) :: Int
+  , id (id (id (head [_]))) :: Int
+  , id (id (id (head (0:_)))) :: Int
+  , id (id (head [id _])) :: Int
+  , id (id (head (id 0:_))) :: Int
+  , id (head (0:0:_)) :: Int
+  , id (head [id (id _)]) :: Int
+  , id (head (id (id 0):_)) :: Int
+  , id (head [_,0]) :: Int
+  , id (head [0,_]) :: Int
+  , id (id (id (id (id (id 0))))) :: Int
+  , head (_:_:x:_) :: Int
+  , head (_:x:_:_) :: Int
+  , head (x:_:_:_) :: Int
+  , _:_:ord _:_ :: [Int]
+  , _:_:id x:_ :: [Int]
+  , _:x:id _:_ :: [Int]
+  , _:ord _:_:_ :: [Int]
+  , _:id _:x:_ :: [Int]
+  , _:id x:_:_ :: [Int]
+  , x:_:id _:_ :: [Int]
+  , x:id _:_:_ :: [Int]
+  , ord _:_:_:_ :: [Int]
+  , id _:_:x:_ :: [Int]
+  , id _:x:_:_ :: [Int]
+  , id x:_:_:_ :: [Int]
+  , id (id (head (_:x:_))) :: Int
+  , id (id (head (x:_:_))) :: Int
+  , id (head (_:id x:_)) :: Int
+  , id (head (x:id _:_)) :: Int
+  , id (head (id _:x:_)) :: Int
+  , id (head (id x:_:_)) :: Int
+  , id (head (_:ord _:_)) :: Int
+  , id (head (ord _:_:_)) :: Int
+  , head (_:_:_:_) :: Int
+  , head (_:_:_:xs) :: Int
+  , tail (_:_:_:_) :: [Int]
+  , _:tail (_:_:_) :: [Int]
+  , _:_:tail (_:_) :: [Int]
+  , _:_:_:tail _ :: [Int]
+  , _:_:id _:_ :: [Int]
+  , _:_:id _:xs :: [Int]
+  , _:_:abs _:_ :: [Int]
+  , _:_:negate _:_ :: [Int]
+  , _:_:head _:_ :: [Int]
+  , _:id _:_:_ :: [Int]
+  , _:id _:_:xs :: [Int]
+  , _:abs _:_:_ :: [Int]
+  , _:negate _:_:_ :: [Int]
+  , _:head _:_:_ :: [Int]
+  , _:head (_:_):_ :: [Int]
+  , id _:_:_:_ :: [Int]
+  , id _:_:_:xs :: [Int]
+  , abs _:_:_:_ :: [Int]
+  , negate _:_:_:_ :: [Int]
+  , head _:_:_:_ :: [Int]
+  , head (_:_):_:_ :: [Int]
+  , head (_:_:_):_ :: [Int]
+  , head (_:_:(_ ++ _)) :: Int
+  , head (_:_ + _:_) :: Int
+  , head (_:(_ ++ (_:_))) :: Int
+  , head (_:((_:_) ++ _)) :: Int
+  , head (_ + _:_:_) :: Int
+  , head (_ ++ (_:_:_)) :: Int
+  , head ((_:_) ++ (_:_)) :: Int
+  , head ((_:_:_) ++ _) :: Int
+  , _ + head (_:_:_) :: Int
+  , head (_:_:_) + _ :: Int
+  , _:id _:(_ ++ _) :: [Int]
+  , _:id (_ + _):_ :: [Int]
+  , _:_ + id _:_ :: [Int]
+  , _:id _ + _:_ :: [Int]
+  , _:(_ ++ (id _:_)) :: [Int]
+  , _:((id _:_) ++ _) :: [Int]
+  , id _:_:(_ ++ _) :: [Int]
+  , id _:_ + _:_ :: [Int]
+  , id _:(_ ++ (_:_)) :: [Int]
+  , id _:((_:_) ++ _) :: [Int]
+  , id (_ + _):_:_ :: [Int]
+  , _ + _:id _:_ :: [Int]
+  , _ + id _:_:_ :: [Int]
+  , id _ + _:_:_ :: [Int]
+  , _ ++ (_:id _:_) :: [Int]
+  , _ ++ (id _:_:_) :: [Int]
+  , (_:_) ++ (id _:_) :: [Int]
+  , (_:id _:_) ++ _ :: [Int]
+  , (id _:_) ++ (_:_) :: [Int]
+  , (id _:_:_) ++ _ :: [Int]
+  , _:id (id (id _)):_ :: [Int]
+  , id _:id (id _):_ :: [Int]
+  , id (id _):id _:_ :: [Int]
+  , id (id (id _)):_:_ :: [Int]
+  , id (id (head (_:_:_))) :: Int
+  , id (id (head (_:_:xs))) :: Int
+  , id (head (_:id _:_)) :: Int
+  , id (head (_:id _:xs)) :: Int
+  , id (head (_:head _:_)) :: Int
+  , id (head (id _:_:_)) :: Int
+  , id (head (id _:_:xs)) :: Int
+  , id (head (head _:_:_)) :: Int
+  , id (head (head (_:_):_)) :: Int
+  , head (_:_:0:_) :: Int
+  , head (_:0:_:_) :: Int
+  , head (_:id (id _):_) :: Int
+  , head (0:_:_:_) :: Int
+  , head (id _:id _:_) :: Int
+  , head (id (id _):_:_) :: Int
+  , _:_:id 0:_ :: [Int]
+  , _:0:id _:_ :: [Int]
+  , _:id _:0:_ :: [Int]
+  , _:id 0:_:_ :: [Int]
+  , 0:_:id _:_ :: [Int]
+  , 0:id _:_:_ :: [Int]
+  , id _:_:0:_ :: [Int]
+  , id _:0:_:_ :: [Int]
+  , id 0:_:_:_ :: [Int]
+  , id (id (head (_:(_ ++ _)))) :: Int
+  , id (id (head (_ + _:_))) :: Int
+  , id (id (head (_ ++ (_:_)))) :: Int
+  , id (id (head ((_:_) ++ _))) :: Int
+  , id (id (_ + head (_:_))) :: Int
+  , id (id (head (_:_) + _)) :: Int
+  , id (abs (head (_:_:_))) :: Int
+  , id (negate (head (_:_:_))) :: Int
+  , id (head (tail (_:_:_))) :: Int
+  , id (head (_:tail (_:_))) :: Int
+  , id (head (_:_:tail _)) :: Int
+  , id (head (_:abs _:_)) :: Int
+  , id (head (_:negate _:_)) :: Int
+  , id (head (id _:(_ ++ _))) :: Int
+  , id (head (id (_ + _):_)) :: Int
+  , id (head (abs _:_:_)) :: Int
+  , id (head (negate _:_:_)) :: Int
+  , id (head (_ + id _:_)) :: Int
+  , id (head (id _ + _:_)) :: Int
+  , id (head (_ ++ (id _:_))) :: Int
+  , id (head ((id _:_) ++ _)) :: Int
+  , id (_ + id (head (_:_))) :: Int
+  , id (_ + head (id _:_)) :: Int
+  , id (id _ + head (_:_)) :: Int
+  , id (id (head (_:_)) + _) :: Int
+  , id (head (_:_) + id _) :: Int
+  , id (head (id _:_) + _) :: Int
+  , id (id (id (id (head (_:_))))) :: Int
+  , id (id (id (head (id _:_)))) :: Int
+  , id (id (head (id (id _):_))) :: Int
+  , id (head (id (id (id _)):_)) :: Int
+  , id (id (head (_:0:_))) :: Int
+  , id (id (head (0:_:_))) :: Int
+  , id (head (_:id 0:_)) :: Int
+  , id (head (0:id _:_)) :: Int
+  , id (head (id _:0:_)) :: Int
+  , id (head (id 0:_:_)) :: Int
+  , id (_ + (_ + (_ + _))) :: Int
+  , id (_ + ((_ + _) + _)) :: Int
+  , id ((_ + _) + (_ + _)) :: Int
+  , id ((_ + (_ + _)) + _) :: Int
+  , id (((_ + _) + _) + _) :: Int
+  , id (id (id (_ + (_ + _)))) :: Int
+  , id (id (id ((_ + _) + _))) :: Int
+  , id (id (_ + id (_ + _))) :: Int
+  , id (id (_ + (_ + id _))) :: Int
+  , id (id (_ + (id _ + _))) :: Int
+  , id (id (id _ + (_ + _))) :: Int
+  , id (id (id (_ + _) + _)) :: Int
+  , id (id ((_ + _) + id _)) :: Int
+  , id (id ((_ + id _) + _)) :: Int
+  , id (id ((id _ + _) + _)) :: Int
+  , id (_ + id (id (_ + _))) :: Int
+  , id (_ + id (_ + id _)) :: Int
+  , id (_ + id (id _ + _)) :: Int
+  , id (_ + (_ + id (id _))) :: Int
+  , id (_ + (id _ + id _)) :: Int
+  , id (_ + (id (id _) + _)) :: Int
+  , id (id _ + id (_ + _)) :: Int
+  , id (id _ + (_ + id _)) :: Int
+  , id (id _ + (id _ + _)) :: Int
+  , id (id (id _) + (_ + _)) :: Int
+  , id (id (id (_ + _)) + _) :: Int
+  , id (id (_ + _) + id _) :: Int
+  , id (id (_ + id _) + _) :: Int
+  , id (id (id _ + _) + _) :: Int
+  , id ((_ + _) + id (id _)) :: Int
+  , id ((_ + id _) + id _) :: Int
+  , id ((_ + id (id _)) + _) :: Int
+  , id ((id _ + _) + id _) :: Int
+  , id ((id _ + id _) + _) :: Int
+  , id ((id (id _) + _) + _) :: Int
+  , head [_,_,_] :: Int
+  , [_,_,id _] :: [Int]
+  , [_,id _,_] :: [Int]
+  , [id _,_,_] :: [Int]
+  , id (id (id (id (id (_ + _))))) :: Int
+  , id (id (id (id (_ + id _)))) :: Int
+  , id (id (id (id (id _ + _)))) :: Int
+  , id (id (id (_ + id (id _)))) :: Int
+  , id (id (id (id _ + id _))) :: Int
+  , id (id (id (id (id _) + _))) :: Int
+  , id (id (_ + id (id (id _)))) :: Int
+  , id (id (id _ + id (id _))) :: Int
+  , id (id (id (id _) + id _)) :: Int
+  , id (id (id (id (id _)) + _)) :: Int
+  , id (_ + id (id (id (id _)))) :: Int
+  , id (id _ + id (id (id _))) :: Int
+  , id (id (id _) + id (id _)) :: Int
+  , id (id (id (id _)) + id _) :: Int
+  , id (id (id (id (id _))) + _) :: Int
+  , id (id (head [_,_])) :: Int
+  , id (head [_,id _]) :: Int
+  , id (head [id _,_]) :: Int
+  , id (id (id (id (id (id (id _)))))) :: Int
+  , _:_:_:x:_ :: [Int]
+  , _:_:x:_:_ :: [Int]
+  , _:x:_:_:_ :: [Int]
+  , x:_:_:_:_ :: [Int]
+  , id (head (_:_:x:_)) :: Int
+  , id (head (_:x:_:_)) :: Int
+  , id (head (x:_:_:_)) :: Int
+  , _:_:_:_:_ :: [Int]
+  , _:_:_:_:xs :: [Int]
+  , _:_:_:(_ ++ _) :: [Int]
+  , _:_:_ + _:_ :: [Int]
+  , _:_:(_ ++ (_:_)) :: [Int]
+  , _:_:((_:_) ++ _) :: [Int]
+  , _:_ + _:_:_ :: [Int]
+  , _:(_ ++ (_:_:_)) :: [Int]
+  , _:((_:_) ++ (_:_)) :: [Int]
+  , _:((_:_:_) ++ _) :: [Int]
+  , _ + _:_:_:_ :: [Int]
+  , _ ++ (_:_:_:_) :: [Int]
+  , (_:_) ++ (_:_:_) :: [Int]
+  , (_:_:_) ++ (_:_) :: [Int]
+  , (_:_:_:_) ++ _ :: [Int]
+  , _:_:_:0:_ :: [Int]
+  , _:_:0:_:_ :: [Int]
+  , _:_:id (id _):_ :: [Int]
+  , _:0:_:_:_ :: [Int]
+  , _:id _:id _:_ :: [Int]
+  , _:id (id _):_:_ :: [Int]
+  , 0:_:_:_:_ :: [Int]
+  , id _:_:id _:_ :: [Int]
+  , id _:id _:_:_ :: [Int]
+  , id (id _):_:_:_ :: [Int]
+  , id (head (_:_:_:_)) :: Int
+  , id (head (_:_:_:xs)) :: Int
+  , head (_:_:id _:_) :: Int
+  , head (_:id _:_:_) :: Int
+  , head (id _:_:_:_) :: Int
+  , id (head (_:_:(_ ++ _))) :: Int
+  , id (head (_:_ + _:_)) :: Int
+  , id (head (_:(_ ++ (_:_)))) :: Int
+  , id (head (_:((_:_) ++ _))) :: Int
+  , id (head (_ + _:_:_)) :: Int
+  , id (head (_ ++ (_:_:_))) :: Int
+  , id (head ((_:_) ++ (_:_))) :: Int
+  , id (head ((_:_:_) ++ _)) :: Int
+  , id (_ + head (_:_:_)) :: Int
+  , id (head (_:_:_) + _) :: Int
+  , id (id (id (head (_:_:_)))) :: Int
+  , id (id (head (_:id _:_))) :: Int
+  , id (id (head (id _:_:_))) :: Int
+  , id (head (_:id (id _):_)) :: Int
+  , id (head (id _:id _:_)) :: Int
+  , id (head (id (id _):_:_)) :: Int
+  , id (head (_:_:0:_)) :: Int
+  , id (head (_:0:_:_)) :: Int
+  , id (head (0:_:_:_)) :: Int
+  , [_,_,_,_] :: [Int]
+  , id (head [_,_,_]) :: Int
+  , head (_:_:_:_:_) :: Int
+  , _:_:_:id _:_ :: [Int]
+  , _:_:id _:_:_ :: [Int]
+  , _:id _:_:_:_ :: [Int]
+  , id _:_:_:_:_ :: [Int]
+  , id (id (head (_:_:_:_))) :: Int
+  , id (head (_:_:id _:_)) :: Int
+  , id (head (_:id _:_:_)) :: Int
+  , id (head (id _:_:_:_)) :: Int
+  , _:_:_:_:_:_ :: [Int]
+  , id (head (_:_:_:_:_)) :: Int
+  ]
+
+sortBy compareLexicographically $ take 5040 $ list  ::  [ Expr ]  =
+  [ _ :: Bool
+  , p :: Bool
+  , q :: Bool
+  , r :: Bool
+  , p' :: Bool
+  , q' :: Bool
+  , _ :: Char
+  , c :: Char
+  , d :: Char
+  , e :: Char
+  , c' :: Char
+  , d' :: Char
+  , _ :: Int
+  , x :: Int
+  , y :: Int
+  , z :: Int
+  , x' :: Int
+  , y' :: Int
+  , z' :: Int
+  , x'' :: Int
+  , _ :: [Int]
+  , xs :: [Int]
+  , ys :: [Int]
+  , zs :: [Int]
+  , xs' :: [Int]
+  , ys' :: [Int]
+  , f :: Int -> Int
+  , g :: Int -> Int
+  , h :: Int -> Int
+  , False :: Bool
+  , True :: Bool
+  , ' ' :: Char
+  , 'A' :: Char
+  , 'a' :: Char
+  , 'b' :: Char
+  , 'c' :: Char
+  , 0 :: Int
+  , 1 :: Int
+  , 2 :: Int
+  , 3 :: Int
+  , -1 :: Int
+  , -2 :: Int
+  , -3 :: Int
+  , [] :: [Int]
+  , [0] :: [Int]
+  , [1] :: [Int]
+  , [2] :: [Int]
+  , [-1] :: [Int]
+  , [0,0] :: [Int]
+  , [0,1] :: [Int]
+  , [1,0] :: [Int]
+  , [1,1] :: [Int]
+  , [-1,0] :: [Int]
+  , [0,-1] :: [Int]
+  , [0,0,0] :: [Int]
+  , [0,0,1] :: [Int]
+  , [0,1,0] :: [Int]
+  , [1,0,0] :: [Int]
+  , [0,0,0,0] :: [Int]
+  , not :: Bool -> Bool
+  , id :: Int -> Int
+  , abs :: Int -> Int
+  , negate :: Int -> Int
+  , (&&) :: Bool -> Bool -> Bool
+  , (||) :: Bool -> Bool -> Bool
+  , (==>) :: Bool -> Bool -> Bool
+  , (*) :: Int -> Int -> Int
+  , (+) :: Int -> Int -> Int
+  , f _ :: Int
+  , f x :: Int
+  , f y :: Int
+  , f z :: Int
+  , f 0 :: Int
+  , f 1 :: Int
+  , f (-1) :: Int
+  , f (f _) :: Int
+  , f (ord _) :: Int
+  , f (ord c) :: Int
+  , f (ord 'a') :: Int
+  , f (id _) :: Int
+  , f (id x) :: Int
+  , f (id y) :: Int
+  , f (id 0) :: Int
+  , f (id 1) :: Int
+  , f (id (ord _)) :: Int
+  , f (id (id _)) :: Int
+  , f (id (id x)) :: Int
+  , f (id (id 0)) :: Int
+  , f (id (id (id _))) :: Int
+  , f (id (abs _)) :: Int
+  , f (id (negate _)) :: Int
+  , f (id (head _)) :: Int
+  , f (id (_ + _)) :: Int
+  , f (abs _) :: Int
+  , f (abs x) :: Int
+  , f (abs 0) :: Int
+  , f (abs (id _)) :: Int
+  , f (negate _) :: Int
+  , f (negate x) :: Int
+  , f (negate 0) :: Int
+  , f (negate (id _)) :: Int
+  , f (head _) :: Int
+  , f (head xs) :: Int
+  , f (head []) :: Int
+  , f (head (_:_)) :: Int
+  , f (_ * _) :: Int
+  , f (_ + _) :: Int
+  , f (_ + x) :: Int
+  , f (_ + 0) :: Int
+  , f (_ + id _) :: Int
+  , f (x + _) :: Int
+  , f (0 + _) :: Int
+  , f (id _ + _) :: Int
+  , g _ :: Int
+  , g x :: Int
+  , g y :: Int
+  , g 0 :: Int
+  , g 1 :: Int
+  , g (ord _) :: Int
+  , g (id _) :: Int
+  , g (id x) :: Int
+  , g (id 0) :: Int
+  , g (id (id _)) :: Int
+  , g (abs _) :: Int
+  , g (negate _) :: Int
+  , g (head _) :: Int
+  , g (_ + _) :: Int
+  , h _ :: Int
+  , h x :: Int
+  , h 0 :: Int
+  , h (id _) :: Int
+  , f' _ :: Int
+  , not _ :: Bool
+  , not p :: Bool
+  , not q :: Bool
+  , not r :: Bool
+  , not p' :: Bool
+  , not False :: Bool
+  , not True :: Bool
+  , not (not _) :: Bool
+  , not (not p) :: Bool
+  , not (not q) :: Bool
+  , not (not r) :: Bool
+  , not (not False) :: Bool
+  , not (not True) :: Bool
+  , not (not (not _)) :: Bool
+  , not (not (not p)) :: Bool
+  , not (not (not q)) :: Bool
+  , not (not (not False)) :: Bool
+  , not (not (not True)) :: Bool
+  , not (not (not (not _))) :: Bool
+  , not (not (not (not p))) :: Bool
+  , not (not (not (not False))) :: Bool
+  , not (not (not (not True))) :: Bool
+  , not (not (not (not (not _)))) :: Bool
+  , not (not (not (_ || _))) :: Bool
+  , not (not (odd _)) :: Bool
+  , not (not (even _)) :: Bool
+  , not (not (_ && _)) :: Bool
+  , not (not (_ == _)) :: Bool
+  , not (not (_ || _)) :: Bool
+  , not (not (_ || p)) :: Bool
+  , not (not (_ || False)) :: Bool
+  , not (not (_ || True)) :: Bool
+  , not (not (_ || not _)) :: Bool
+  , not (not (p || _)) :: Bool
+  , not (not (False || _)) :: Bool
+  , not (not (True || _)) :: Bool
+  , not (not (not _ || _)) :: Bool
+  , not (not (_ == _)) :: Bool
+  , not (not (elem _ _)) :: Bool
+  , not (odd _) :: Bool
+  , not (odd x) :: Bool
+  , not (odd 0) :: Bool
+  , not (odd (id _)) :: Bool
+  , not (even _) :: Bool
+  , not (even x) :: Bool
+  , not (even 0) :: Bool
+  , not (even (id _)) :: Bool
+  , not (_ && _) :: Bool
+  , not (_ && p) :: Bool
+  , not (_ && False) :: Bool
+  , not (_ && True) :: Bool
+  , not (_ && not _) :: Bool
+  , not (p && _) :: Bool
+  , not (False && _) :: Bool
+  , not (True && _) :: Bool
+  , not (not _ && _) :: Bool
+  , not (_ <= _) :: Bool
+  , not (_ == _) :: Bool
+  , not (_ == p) :: Bool
+  , not (_ == False) :: Bool
+  , not (_ == True) :: Bool
+  , not (_ == not _) :: Bool
+  , not (p == _) :: Bool
+  , not (False == _) :: Bool
+  , not (True == _) :: Bool
+  , not (not _ == _) :: Bool
+  , not (_ || _) :: Bool
+  , not (_ || p) :: Bool
+  , not (_ || q) :: Bool
+  , not (_ || False) :: Bool
+  , not (_ || True) :: Bool
+  , not (_ || not _) :: Bool
+  , not (_ || not p) :: Bool
+  , not (_ || not False) :: Bool
+  , not (_ || not True) :: Bool
+  , not (_ || not (not _)) :: Bool
+  , not (_ || (_ || _)) :: Bool
+  , not (p || _) :: Bool
+  , not (p || p) :: Bool
+  , not (p || False) :: Bool
+  , not (p || True) :: Bool
+  , not (p || not _) :: Bool
+  , not (q || _) :: Bool
+  , not (False || _) :: Bool
+  , not (False || p) :: Bool
+  , not (False || False) :: Bool
+  , not (False || True) :: Bool
+  , not (False || not _) :: Bool
+  , not (True || _) :: Bool
+  , not (True || p) :: Bool
+  , not (True || False) :: Bool
+  , not (True || True) :: Bool
+  , not (True || not _) :: Bool
+  , not (not _ || _) :: Bool
+  , not (not _ || p) :: Bool
+  , not (not _ || False) :: Bool
+  , not (not _ || True) :: Bool
+  , not (not _ || not _) :: Bool
+  , not (not p || _) :: Bool
+  , not (not False || _) :: Bool
+  , not (not True || _) :: Bool
+  , not (not (not _) || _) :: Bool
+  , not ((_ || _) || _) :: Bool
+  , not (_ ==> _) :: Bool
+  , not (_ <= _) :: Bool
+  , not (_ == _) :: Bool
+  , not (_ == x) :: Bool
+  , not (_ == 0) :: Bool
+  , not (_ == id _) :: Bool
+  , not (x == _) :: Bool
+  , not (0 == _) :: Bool
+  , not (id _ == _) :: Bool
+  , not (elem _ _) :: Bool
+  , not (elem _ xs) :: Bool
+  , not (elem _ []) :: Bool
+  , not (elem _ (_:_)) :: Bool
+  , not (elem x _) :: Bool
+  , not (elem 0 _) :: Bool
+  , not (elem (id _) _) :: Bool
+  , ord _ :: Int
+  , ord c :: Int
+  , ord d :: Int
+  , ord e :: Int
+  , ord c' :: Int
+  , ord ' ' :: Int
+  , ord 'A' :: Int
+  , ord 'a' :: Int
+  , ord 'b' :: Int
+  , odd _ :: Bool
+  , odd x :: Bool
+  , odd y :: Bool
+  , odd 0 :: Bool
+  , odd 1 :: Bool
+  , odd (ord _) :: Bool
+  , odd (id _) :: Bool
+  , odd (id x) :: Bool
+  , odd (id 0) :: Bool
+  , odd (id (id _)) :: Bool
+  , odd (abs _) :: Bool
+  , odd (negate _) :: Bool
+  , odd (head _) :: Bool
+  , odd (_ + _) :: Bool
+  , even _ :: Bool
+  , even x :: Bool
+  , even y :: Bool
+  , even 0 :: Bool
+  , even 1 :: Bool
+  , even (ord _) :: Bool
+  , even (id _) :: Bool
+  , even (id x) :: Bool
+  , even (id 0) :: Bool
+  , even (id (id _)) :: Bool
+  , even (abs _) :: Bool
+  , even (negate _) :: Bool
+  , even (head _) :: Bool
+  , even (_ + _) :: Bool
+  , id _ :: Int
+  , id x :: Int
+  , id y :: Int
+  , id z :: Int
+  , id x' :: Int
+  , id y' :: Int
+  , id z' :: Int
+  , id 0 :: Int
+  , id 1 :: Int
+  , id 2 :: Int
+  , id 3 :: Int
+  , id (-1) :: Int
+  , id (-2) :: Int
+  , id (f _) :: Int
+  , id (f x) :: Int
+  , id (f y) :: Int
+  , id (f z) :: Int
+  , id (f 0) :: Int
+  , id (f 1) :: Int
+  , id (f (-1)) :: Int
+  , id (f (f _)) :: Int
+  , id (f (ord _)) :: Int
+  , id (f (ord c)) :: Int
+  , id (f (ord 'a')) :: Int
+  , id (f (id _)) :: Int
+  , id (f (id x)) :: Int
+  , id (f (id y)) :: Int
+  , id (f (id 0)) :: Int
+  , id (f (id 1)) :: Int
+  , id (f (id (ord _))) :: Int
+  , id (f (id (id _))) :: Int
+  , id (f (id (id x))) :: Int
+  , id (f (id (id 0))) :: Int
+  , id (f (id (id (id _)))) :: Int
+  , id (f (id (abs _))) :: Int
+  , id (f (id (negate _))) :: Int
+  , id (f (id (head _))) :: Int
+  , id (f (id (_ + _))) :: Int
+  , id (f (abs _)) :: Int
+  , id (f (abs x)) :: Int
+  , id (f (abs 0)) :: Int
+  , id (f (abs (id _))) :: Int
+  , id (f (negate _)) :: Int
+  , id (f (negate x)) :: Int
+  , id (f (negate 0)) :: Int
+  , id (f (negate (id _))) :: Int
+  , id (f (head _)) :: Int
+  , id (f (head xs)) :: Int
+  , id (f (head [])) :: Int
+  , id (f (head (_:_))) :: Int
+  , id (f (_ * _)) :: Int
+  , id (f (_ + _)) :: Int
+  , id (f (_ + x)) :: Int
+  , id (f (_ + 0)) :: Int
+  , id (f (_ + id _)) :: Int
+  , id (f (x + _)) :: Int
+  , id (f (0 + _)) :: Int
+  , id (f (id _ + _)) :: Int
+  , id (g _) :: Int
+  , id (g x) :: Int
+  , id (g y) :: Int
+  , id (g 0) :: Int
+  , id (g 1) :: Int
+  , id (g (ord _)) :: Int
+  , id (g (id _)) :: Int
+  , id (g (id x)) :: Int
+  , id (g (id 0)) :: Int
+  , id (g (id (id _))) :: Int
+  , id (g (abs _)) :: Int
+  , id (g (negate _)) :: Int
+  , id (g (head _)) :: Int
+  , id (g (_ + _)) :: Int
+  , id (h _) :: Int
+  , id (h x) :: Int
+  , id (h 0) :: Int
+  , id (h (id _)) :: Int
+  , id (f' _) :: Int
+  , id (ord _) :: Int
+  , id (ord c) :: Int
+  , id (ord d) :: Int
+  , id (ord e) :: Int
+  , id (ord ' ') :: Int
+  , id (ord 'a') :: Int
+  , id (ord 'b') :: Int
+  , id (id _) :: Int
+  , id (id x) :: Int
+  , id (id y) :: Int
+  , id (id z) :: Int
+  , id (id x') :: Int
+  , id (id y') :: Int
+  , id (id 0) :: Int
+  , id (id 1) :: Int
+  , id (id 2) :: Int
+  , id (id (-1)) :: Int
+  , id (id (-2)) :: Int
+  , id (id (f _)) :: Int
+  , id (id (f x)) :: Int
+  , id (id (f y)) :: Int
+  , id (id (f 0)) :: Int
+  , id (id (f 1)) :: Int
+  , id (id (f (ord _))) :: Int
+  , id (id (f (id _))) :: Int
+  , id (id (f (id x))) :: Int
+  , id (id (f (id 0))) :: Int
+  , id (id (f (id (id _)))) :: Int
+  , id (id (f (abs _))) :: Int
+  , id (id (f (negate _))) :: Int
+  , id (id (f (head _))) :: Int
+  , id (id (f (_ + _))) :: Int
+  , id (id (g _)) :: Int
+  , id (id (g x)) :: Int
+  , id (id (g 0)) :: Int
+  , id (id (g (id _))) :: Int
+  , id (id (h _)) :: Int
+  , id (id (ord _)) :: Int
+  , id (id (ord c)) :: Int
+  , id (id (ord d)) :: Int
+  , id (id (ord e)) :: Int
+  , id (id (ord ' ')) :: Int
+  , id (id (ord 'a')) :: Int
+  , id (id (ord 'b')) :: Int
+  , id (id (id _)) :: Int
+  , id (id (id x)) :: Int
+  , id (id (id y)) :: Int
+  , id (id (id z)) :: Int
+  , id (id (id x')) :: Int
+  , id (id (id 0)) :: Int
+  , id (id (id 1)) :: Int
+  , id (id (id 2)) :: Int
+  , id (id (id (-1))) :: Int
+  , id (id (id (f _))) :: Int
+  , id (id (id (f x))) :: Int
+  , id (id (id (f 0))) :: Int
+  , id (id (id (f (id _)))) :: Int
+  , id (id (id (g _))) :: Int
+  , id (id (id (ord _))) :: Int
+  , id (id (id (ord c))) :: Int
+  , id (id (id (ord d))) :: Int
+  , id (id (id (ord ' '))) :: Int
+  , id (id (id (ord 'a'))) :: Int
+  , id (id (id (id _))) :: Int
+  , id (id (id (id x))) :: Int
+  , id (id (id (id y))) :: Int
+  , id (id (id (id z))) :: Int
+  , id (id (id (id 0))) :: Int
+  , id (id (id (id 1))) :: Int
+  , id (id (id (id (-1)))) :: Int
+  , id (id (id (id (f _)))) :: Int
+  , id (id (id (id (ord _)))) :: Int
+  , id (id (id (id (ord c)))) :: Int
+  , id (id (id (id (ord 'a')))) :: Int
+  , id (id (id (id (id _)))) :: Int
+  , id (id (id (id (id x)))) :: Int
+  , id (id (id (id (id y)))) :: Int
+  , id (id (id (id (id 0)))) :: Int
+  , id (id (id (id (id 1)))) :: Int
+  , id (id (id (id (id (ord _))))) :: Int
+  , id (id (id (id (id (id _))))) :: Int
+  , id (id (id (id (id (id x))))) :: Int
+  , id (id (id (id (id (id 0))))) :: Int
+  , id (id (id (id (id (id (id _)))))) :: Int
+  , id (id (id (id (id (abs _))))) :: Int
+  , id (id (id (id (id (negate _))))) :: Int
+  , id (id (id (id (id (head _))))) :: Int
+  , id (id (id (id (id (_ + _))))) :: Int
+  , id (id (id (id (abs _)))) :: Int
+  , id (id (id (id (abs x)))) :: Int
+  , id (id (id (id (abs 0)))) :: Int
+  , id (id (id (id (abs (id _))))) :: Int
+  , id (id (id (id (negate _)))) :: Int
+  , id (id (id (id (negate x)))) :: Int
+  , id (id (id (id (negate 0)))) :: Int
+  , id (id (id (id (negate (id _))))) :: Int
+  , id (id (id (id (head _)))) :: Int
+  , id (id (id (id (head xs)))) :: Int
+  , id (id (id (id (head [])))) :: Int
+  , id (id (id (id (head (_:_))))) :: Int
+  , id (id (id (id (_ * _)))) :: Int
+  , id (id (id (id (_ + _)))) :: Int
+  , id (id (id (id (_ + x)))) :: Int
+  , id (id (id (id (_ + 0)))) :: Int
+  , id (id (id (id (_ + id _)))) :: Int
+  , id (id (id (id (x + _)))) :: Int
+  , id (id (id (id (0 + _)))) :: Int
+  , id (id (id (id (id _ + _)))) :: Int
+  , id (id (id (abs _))) :: Int
+  , id (id (id (abs x))) :: Int
+  , id (id (id (abs y))) :: Int
+  , id (id (id (abs 0))) :: Int
+  , id (id (id (abs 1))) :: Int
+  , id (id (id (abs (ord _)))) :: Int
+  , id (id (id (abs (id _)))) :: Int
+  , id (id (id (abs (id x)))) :: Int
+  , id (id (id (abs (id 0)))) :: Int
+  , id (id (id (abs (id (id _))))) :: Int
+  , id (id (id (abs (abs _)))) :: Int
+  , id (id (id (abs (negate _)))) :: Int
+  , id (id (id (abs (head _)))) :: Int
+  , id (id (id (abs (_ + _)))) :: Int
+  , id (id (id (negate _))) :: Int
+  , id (id (id (negate x))) :: Int
+  , id (id (id (negate y))) :: Int
+  , id (id (id (negate 0))) :: Int
+  , id (id (id (negate 1))) :: Int
+  , id (id (id (negate (ord _)))) :: Int
+  , id (id (id (negate (id _)))) :: Int
+  , id (id (id (negate (id x)))) :: Int
+  , id (id (id (negate (id 0)))) :: Int
+  , id (id (id (negate (id (id _))))) :: Int
+  , id (id (id (negate (abs _)))) :: Int
+  , id (id (id (negate (negate _)))) :: Int
+  , id (id (id (negate (head _)))) :: Int
+  , id (id (id (negate (_ + _)))) :: Int
+  , id (id (id (head _))) :: Int
+  , id (id (id (head xs))) :: Int
+  , id (id (id (head ys))) :: Int
+  , id (id (id (head []))) :: Int
+  , id (id (id (head [0]))) :: Int
+  , id (id (id (head (tail _)))) :: Int
+  , id (id (id (head (_:_)))) :: Int
+  , id (id (id (head (_:xs)))) :: Int
+  , id (id (id (head [_]))) :: Int
+  , id (id (id (head (_:_:_)))) :: Int
+  , id (id (id (head (x:_)))) :: Int
+  , id (id (id (head (0:_)))) :: Int
+  , id (id (id (head (id _:_)))) :: Int
+  , id (id (id (head (_ ++ _)))) :: Int
+  , id (id (id (_ * _))) :: Int
+  , id (id (id (_ * x))) :: Int
+  , id (id (id (_ * 0))) :: Int
+  , id (id (id (_ * id _))) :: Int
+  , id (id (id (x * _))) :: Int
+  , id (id (id (0 * _))) :: Int
+  , id (id (id (id _ * _))) :: Int
+  , id (id (id (_ + _))) :: Int
+  , id (id (id (_ + x))) :: Int
+  , id (id (id (_ + y))) :: Int
+  , id (id (id (_ + 0))) :: Int
+  , id (id (id (_ + 1))) :: Int
+  , id (id (id (_ + ord _))) :: Int
+  , id (id (id (_ + id _))) :: Int
+  , id (id (id (_ + id x))) :: Int
+  , id (id (id (_ + id 0))) :: Int
+  , id (id (id (_ + id (id _)))) :: Int
+  , id (id (id (_ + abs _))) :: Int
+  , id (id (id (_ + negate _))) :: Int
+  , id (id (id (_ + head _))) :: Int
+  , id (id (id (_ + (_ + _)))) :: Int
+  , id (id (id (x + _))) :: Int
+  , id (id (id (x + x))) :: Int
+  , id (id (id (x + 0))) :: Int
+  , id (id (id (x + id _))) :: Int
+  , id (id (id (y + _))) :: Int
+  , id (id (id (0 + _))) :: Int
+  , id (id (id (0 + x))) :: Int
+  , id (id (id (0 + 0))) :: Int
+  , id (id (id (0 + id _))) :: Int
+  , id (id (id (1 + _))) :: Int
+  , id (id (id (ord _ + _))) :: Int
+  , id (id (id (id _ + _))) :: Int
+  , id (id (id (id _ + x))) :: Int
+  , id (id (id (id _ + 0))) :: Int
+  , id (id (id (id _ + id _))) :: Int
+  , id (id (id (id x + _))) :: Int
+  , id (id (id (id 0 + _))) :: Int
+  , id (id (id (id (id _) + _))) :: Int
+  , id (id (id (abs _ + _))) :: Int
+  , id (id (id (negate _ + _))) :: Int
+  , id (id (id (head _ + _))) :: Int
+  , id (id (id ((_ + _) + _))) :: Int
+  , id (id (abs _)) :: Int
+  , id (id (abs x)) :: Int
+  , id (id (abs y)) :: Int
+  , id (id (abs z)) :: Int
+  , id (id (abs 0)) :: Int
+  , id (id (abs 1)) :: Int
+  , id (id (abs (-1))) :: Int
+  , id (id (abs (f _))) :: Int
+  , id (id (abs (ord _))) :: Int
+  , id (id (abs (ord c))) :: Int
+  , id (id (abs (ord 'a'))) :: Int
+  , id (id (abs (id _))) :: Int
+  , id (id (abs (id x))) :: Int
+  , id (id (abs (id y))) :: Int
+  , id (id (abs (id 0))) :: Int
+  , id (id (abs (id 1))) :: Int
+  , id (id (abs (id (ord _)))) :: Int
+  , id (id (abs (id (id _)))) :: Int
+  , id (id (abs (id (id x)))) :: Int
+  , id (id (abs (id (id 0)))) :: Int
+  , id (id (abs (id (id (id _))))) :: Int
+  , id (id (abs (id (abs _)))) :: Int
+  , id (id (abs (id (negate _)))) :: Int
+  , id (id (abs (id (head _)))) :: Int
+  , id (id (abs (id (_ + _)))) :: Int
+  , id (id (abs (abs _))) :: Int
+  , id (id (abs (abs x))) :: Int
+  , id (id (abs (abs 0))) :: Int
+  , id (id (abs (abs (id _)))) :: Int
+  , id (id (abs (negate _))) :: Int
+  , id (id (abs (negate x))) :: Int
+  , id (id (abs (negate 0))) :: Int
+  , id (id (abs (negate (id _)))) :: Int
+  , id (id (abs (head _))) :: Int
+  , id (id (abs (head xs))) :: Int
+  , id (id (abs (head []))) :: Int
+  , id (id (abs (head (_:_)))) :: Int
+  , id (id (abs (_ * _))) :: Int
+  , id (id (abs (_ + _))) :: Int
+  , id (id (abs (_ + x))) :: Int
+  , id (id (abs (_ + 0))) :: Int
+  , id (id (abs (_ + id _))) :: Int
+  , id (id (abs (x + _))) :: Int
+  , id (id (abs (0 + _))) :: Int
+  , id (id (abs (id _ + _))) :: Int
+  , id (id (negate _)) :: Int
+  , id (id (negate x)) :: Int
+  , id (id (negate y)) :: Int
+  , id (id (negate z)) :: Int
+  , id (id (negate 0)) :: Int
+  , id (id (negate 1)) :: Int
+  , id (id (negate (-1))) :: Int
+  , id (id (negate (f _))) :: Int
+  , id (id (negate (ord _))) :: Int
+  , id (id (negate (ord c))) :: Int
+  , id (id (negate (ord 'a'))) :: Int
+  , id (id (negate (id _))) :: Int
+  , id (id (negate (id x))) :: Int
+  , id (id (negate (id y))) :: Int
+  , id (id (negate (id 0))) :: Int
+  , id (id (negate (id 1))) :: Int
+  , id (id (negate (id (ord _)))) :: Int
+  , id (id (negate (id (id _)))) :: Int
+  , id (id (negate (id (id x)))) :: Int
+  , id (id (negate (id (id 0)))) :: Int
+  , id (id (negate (id (id (id _))))) :: Int
+  , id (id (negate (id (abs _)))) :: Int
+  , id (id (negate (id (negate _)))) :: Int
+  , id (id (negate (id (head _)))) :: Int
+  , id (id (negate (id (_ + _)))) :: Int
+  , id (id (negate (abs _))) :: Int
+  , id (id (negate (abs x))) :: Int
+  , id (id (negate (abs 0))) :: Int
+  , id (id (negate (abs (id _)))) :: Int
+  , id (id (negate (negate _))) :: Int
+  , id (id (negate (negate x))) :: Int
+  , id (id (negate (negate 0))) :: Int
+  , id (id (negate (negate (id _)))) :: Int
+  , id (id (negate (head _))) :: Int
+  , id (id (negate (head xs))) :: Int
+  , id (id (negate (head []))) :: Int
+  , id (id (negate (head (_:_)))) :: Int
+  , id (id (negate (_ * _))) :: Int
+  , id (id (negate (_ + _))) :: Int
+  , id (id (negate (_ + x))) :: Int
+  , id (id (negate (_ + 0))) :: Int
+  , id (id (negate (_ + id _))) :: Int
+  , id (id (negate (x + _))) :: Int
+  , id (id (negate (0 + _))) :: Int
+  , id (id (negate (id _ + _))) :: Int
+  , id (id (head _)) :: Int
+  , id (id (head xs)) :: Int
+  , id (id (head ys)) :: Int
+  , id (id (head zs)) :: Int
+  , id (id (head [])) :: Int
+  , id (id (head [0])) :: Int
+  , id (id (head [1])) :: Int
+  , id (id (head [0,0])) :: Int
+  , id (id (head (sort _))) :: Int
+  , id (id (head (tail _))) :: Int
+  , id (id (head (tail xs))) :: Int
+  , id (id (head (tail []))) :: Int
+  , id (id (head (tail (_:_)))) :: Int
+  , id (id (head (_:_))) :: Int
+  , id (id (head (_:xs))) :: Int
+  , id (id (head (_:ys))) :: Int
+  , id (id (head [_])) :: Int
+  , id (id (head (_:[0]))) :: Int
+  , id (id (head (_:tail _))) :: Int
+  , id (id (head (_:_:_))) :: Int
+  , id (id (head (_:_:xs))) :: Int
+  , id (id (head [_,_])) :: Int
+  , id (id (head (_:_:_:_))) :: Int
+  , id (id (head (_:x:_))) :: Int
+  , id (id (head (_:0:_))) :: Int
+  , id (id (head (_:id _:_))) :: Int
+  , id (id (head (_:(_ ++ _)))) :: Int
+  , id (id (head (x:_))) :: Int
+  , id (id (head (x:xs))) :: Int
+  , id (id (head [x])) :: Int
+  , id (id (head (x:_:_))) :: Int
+  , id (id (head (y:_))) :: Int
+  , id (id (head (0:_))) :: Int
+  , id (id (head (0:xs))) :: Int
+  , id (id (head [0])) :: Int
+  , id (id (head (0:_:_))) :: Int
+  , id (id (head (1:_))) :: Int
+  , id (id (head (ord _:_))) :: Int
+  , id (id (head (id _:_))) :: Int
+  , id (id (head (id _:xs))) :: Int
+  , id (id (head [id _])) :: Int
+  , id (id (head (id _:_:_))) :: Int
+  , id (id (head (id x:_))) :: Int
+  , id (id (head (id 0:_))) :: Int
+  , id (id (head (id (id _):_))) :: Int
+  , id (id (head (abs _:_))) :: Int
+  , id (id (head (negate _:_))) :: Int
+  , id (id (head (head _:_))) :: Int
+  , id (id (head (_ + _:_))) :: Int
+  , id (id (head (insert _ _))) :: Int
+  , id (id (head (_ ++ _))) :: Int
+  , id (id (head (_ ++ xs))) :: Int
+  , id (id (head (_ ++ []))) :: Int
+  , id (id (head (_ ++ (_:_)))) :: Int
+  , id (id (head (xs ++ _))) :: Int
+  , id (id (head ([] ++ _))) :: Int
+  , id (id (head ((_:_) ++ _))) :: Int
+  , id (id (_ * _)) :: Int
+  , id (id (_ * x)) :: Int
+  , id (id (_ * y)) :: Int
+  , id (id (_ * 0)) :: Int
+  , id (id (_ * 1)) :: Int
+  , id (id (_ * ord _)) :: Int
+  , id (id (_ * id _)) :: Int
+  , id (id (_ * id x)) :: Int
+  , id (id (_ * id 0)) :: Int
+  , id (id (_ * id (id _))) :: Int
+  , id (id (_ * abs _)) :: Int
+  , id (id (_ * negate _)) :: Int
+  , id (id (_ * head _)) :: Int
+  , id (id (_ * (_ + _))) :: Int
+  , id (id (x * _)) :: Int
+  , id (id (x * x)) :: Int
+  , id (id (x * 0)) :: Int
+  , id (id (x * id _)) :: Int
+  , id (id (y * _)) :: Int
+  , id (id (0 * _)) :: Int
+  , id (id (0 * x)) :: Int
+  , id (id (0 * 0)) :: Int
+  , id (id (0 * id _)) :: Int
+  , id (id (1 * _)) :: Int
+  , id (id (ord _ * _)) :: Int
+  , id (id (id _ * _)) :: Int
+  , id (id (id _ * x)) :: Int
+  , id (id (id _ * 0)) :: Int
+  , id (id (id _ * id _)) :: Int
+  , id (id (id x * _)) :: Int
+  , id (id (id 0 * _)) :: Int
+  , id (id (id (id _) * _)) :: Int
+  , id (id (abs _ * _)) :: Int
+  , id (id (negate _ * _)) :: Int
+  , id (id (head _ * _)) :: Int
+  , id (id ((_ + _) * _)) :: Int
+  , id (id (_ + _)) :: Int
+  , id (id (_ + x)) :: Int
+  , id (id (_ + y)) :: Int
+  , id (id (_ + z)) :: Int
+  , id (id (_ + 0)) :: Int
+  , id (id (_ + 1)) :: Int
+  , id (id (_ + (-1))) :: Int
+  , id (id (_ + f _)) :: Int
+  , id (id (_ + ord _)) :: Int
+  , id (id (_ + ord c)) :: Int
+  , id (id (_ + ord 'a')) :: Int
+  , id (id (_ + id _)) :: Int
+  , id (id (_ + id x)) :: Int
+  , id (id (_ + id y)) :: Int
+  , id (id (_ + id 0)) :: Int
+  , id (id (_ + id 1)) :: Int
+  , id (id (_ + id (ord _))) :: Int
+  , id (id (_ + id (id _))) :: Int
+  , id (id (_ + id (id x))) :: Int
+  , id (id (_ + id (id 0))) :: Int
+  , id (id (_ + id (id (id _)))) :: Int
+  , id (id (_ + id (abs _))) :: Int
+  , id (id (_ + id (negate _))) :: Int
+  , id (id (_ + id (head _))) :: Int
+  , id (id (_ + id (_ + _))) :: Int
+  , id (id (_ + abs _)) :: Int
+  , id (id (_ + abs x)) :: Int
+  , id (id (_ + abs 0)) :: Int
+  , id (id (_ + abs (id _))) :: Int
+  , id (id (_ + negate _)) :: Int
+  , id (id (_ + negate x)) :: Int
+  , id (id (_ + negate 0)) :: Int
+  , id (id (_ + negate (id _))) :: Int
+  , id (id (_ + head _)) :: Int
+  , id (id (_ + head xs)) :: Int
+  , id (id (_ + head [])) :: Int
+  , id (id (_ + head (_:_))) :: Int
+  , id (id (_ + _ * _)) :: Int
+  , id (id (_ + (_ + _))) :: Int
+  , id (id (_ + (_ + x))) :: Int
+  , id (id (_ + (_ + 0))) :: Int
+  , id (id (_ + (_ + id _))) :: Int
+  , id (id (_ + (x + _))) :: Int
+  , id (id (_ + (0 + _))) :: Int
+  , id (id (_ + (id _ + _))) :: Int
+  , id (id (x + _)) :: Int
+  , id (id (x + x)) :: Int
+  , id (id (x + y)) :: Int
+  , id (id (x + 0)) :: Int
+  , id (id (x + 1)) :: Int
+  , id (id (x + ord _)) :: Int
+  , id (id (x + id _)) :: Int
+  , id (id (x + id x)) :: Int
+  , id (id (x + id 0)) :: Int
+  , id (id (x + id (id _))) :: Int
+  , id (id (x + abs _)) :: Int
+  , id (id (x + negate _)) :: Int
+  , id (id (x + head _)) :: Int
+  , id (id (x + (_ + _))) :: Int
+  , id (id (y + _)) :: Int
+  , id (id (y + x)) :: Int
+  , id (id (y + 0)) :: Int
+  , id (id (y + id _)) :: Int
+  , id (id (z + _)) :: Int
+  , id (id (0 + _)) :: Int
+  , id (id (0 + x)) :: Int
+  , id (id (0 + y)) :: Int
+  , id (id (0 + 0)) :: Int
+  , id (id (0 + 1)) :: Int
+  , id (id (0 + ord _)) :: Int
+  , id (id (0 + id _)) :: Int
+  , id (id (0 + id x)) :: Int
+  , id (id (0 + id 0)) :: Int
+  , id (id (0 + id (id _))) :: Int
+  , id (id (0 + abs _)) :: Int
+  , id (id (0 + negate _)) :: Int
+  , id (id (0 + head _)) :: Int
+  , id (id (0 + (_ + _))) :: Int
+  , id (id (1 + _)) :: Int
+  , id (id (1 + x)) :: Int
+  , id (id (1 + 0)) :: Int
+  , id (id (1 + id _)) :: Int
+  , id (id ((-1) + _)) :: Int
+  , id (id (f _ + _)) :: Int
+  , id (id (ord _ + _)) :: Int
+  , id (id (ord _ + x)) :: Int
+  , id (id (ord _ + 0)) :: Int
+  , id (id (ord _ + id _)) :: Int
+  , id (id (ord c + _)) :: Int
+  , id (id (ord 'a' + _)) :: Int
+  , id (id (id _ + _)) :: Int
+  , id (id (id _ + x)) :: Int
+  , id (id (id _ + y)) :: Int
+  , id (id (id _ + 0)) :: Int
+  , id (id (id _ + 1)) :: Int
+  , id (id (id _ + ord _)) :: Int
+  , id (id (id _ + id _)) :: Int
+  , id (id (id _ + id x)) :: Int
+  , id (id (id _ + id 0)) :: Int
+  , id (id (id _ + id (id _))) :: Int
+  , id (id (id _ + abs _)) :: Int
+  , id (id (id _ + negate _)) :: Int
+  , id (id (id _ + head _)) :: Int
+  , id (id (id _ + (_ + _))) :: Int
+  , id (id (id x + _)) :: Int
+  , id (id (id x + x)) :: Int
+  , id (id (id x + 0)) :: Int
+  , id (id (id x + id _)) :: Int
+  , id (id (id y + _)) :: Int
+  , id (id (id 0 + _)) :: Int
+  , id (id (id 0 + x)) :: Int
+  , id (id (id 0 + 0)) :: Int
+  , id (id (id 0 + id _)) :: Int
+  , id (id (id 1 + _)) :: Int
+  , id (id (id (ord _) + _)) :: Int
+  , id (id (id (id _) + _)) :: Int
+  , id (id (id (id _) + x)) :: Int
+  , id (id (id (id _) + 0)) :: Int
+  , id (id (id (id _) + id _)) :: Int
+  , id (id (id (id x) + _)) :: Int
+  , id (id (id (id 0) + _)) :: Int
+  , id (id (id (id (id _)) + _)) :: Int
+  , id (id (id (abs _) + _)) :: Int
+  , id (id (id (negate _) + _)) :: Int
+  , id (id (id (head _) + _)) :: Int
+  , id (id (id (_ + _) + _)) :: Int
+  , id (id (abs _ + _)) :: Int
+  , id (id (abs _ + x)) :: Int
+  , id (id (abs _ + 0)) :: Int
+  , id (id (abs _ + id _)) :: Int
+  , id (id (abs x + _)) :: Int
+  , id (id (abs 0 + _)) :: Int
+  , id (id (abs (id _) + _)) :: Int
+  , id (id (negate _ + _)) :: Int
+  , id (id (negate _ + x)) :: Int
+  , id (id (negate _ + 0)) :: Int
+  , id (id (negate _ + id _)) :: Int
+  , id (id (negate x + _)) :: Int
+  , id (id (negate 0 + _)) :: Int
+  , id (id (negate (id _) + _)) :: Int
+  , id (id (head _ + _)) :: Int
+  , id (id (head _ + x)) :: Int
+  , id (id (head _ + 0)) :: Int
+  , id (id (head _ + id _)) :: Int
+  , id (id (head xs + _)) :: Int
+  , id (id (head [] + _)) :: Int
+  , id (id (head (_:_) + _)) :: Int
+  , id (id (_ * _ + _)) :: Int
+  , id (id ((_ + _) + _)) :: Int
+  , id (id ((_ + _) + x)) :: Int
+  , id (id ((_ + _) + 0)) :: Int
+  , id (id ((_ + _) + id _)) :: Int
+  , id (id ((_ + x) + _)) :: Int
+  , id (id ((_ + 0) + _)) :: Int
+  , id (id ((_ + id _) + _)) :: Int
+  , id (id ((x + _) + _)) :: Int
+  , id (id ((0 + _) + _)) :: Int
+  , id (id ((id _ + _) + _)) :: Int
+  , id (abs _) :: Int
+  , id (abs x) :: Int
+  , id (abs y) :: Int
+  , id (abs z) :: Int
+  , id (abs x') :: Int
+  , id (abs 0) :: Int
+  , id (abs 1) :: Int
+  , id (abs 2) :: Int
+  , id (abs (-1)) :: Int
+  , id (abs (f _)) :: Int
+  , id (abs (f x)) :: Int
+  , id (abs (f 0)) :: Int
+  , id (abs (f (id _))) :: Int
+  , id (abs (g _)) :: Int
+  , id (abs (ord _)) :: Int
+  , id (abs (ord c)) :: Int
+  , id (abs (ord d)) :: Int
+  , id (abs (ord ' ')) :: Int
+  , id (abs (ord 'a')) :: Int
+  , id (abs (id _)) :: Int
+  , id (abs (id x)) :: Int
+  , id (abs (id y)) :: Int
+  , id (abs (id z)) :: Int
+  , id (abs (id 0)) :: Int
+  , id (abs (id 1)) :: Int
+  , id (abs (id (-1))) :: Int
+  , id (abs (id (f _))) :: Int
+  , id (abs (id (ord _))) :: Int
+  , id (abs (id (ord c))) :: Int
+  , id (abs (id (ord 'a'))) :: Int
+  , id (abs (id (id _))) :: Int
+  , id (abs (id (id x))) :: Int
+  , id (abs (id (id y))) :: Int
+  , id (abs (id (id 0))) :: Int
+  , id (abs (id (id 1))) :: Int
+  , id (abs (id (id (ord _)))) :: Int
+  , id (abs (id (id (id _)))) :: Int
+  , id (abs (id (id (id x)))) :: Int
+  , id (abs (id (id (id 0)))) :: Int
+  , id (abs (id (id (id (id _))))) :: Int
+  , id (abs (id (id (abs _)))) :: Int
+  , id (abs (id (id (negate _)))) :: Int
+  , id (abs (id (id (head _)))) :: Int
+  , id (abs (id (id (_ + _)))) :: Int
+  , id (abs (id (abs _))) :: Int
+  , id (abs (id (abs x))) :: Int
+  , id (abs (id (abs 0))) :: Int
+  , id (abs (id (abs (id _)))) :: Int
+  , id (abs (id (negate _))) :: Int
+  , id (abs (id (negate x))) :: Int
+  , id (abs (id (negate 0))) :: Int
+  , id (abs (id (negate (id _)))) :: Int
+  , id (abs (id (head _))) :: Int
+  , id (abs (id (head xs))) :: Int
+  , id (abs (id (head []))) :: Int
+  , id (abs (id (head (_:_)))) :: Int
+  , id (abs (id (_ * _))) :: Int
+  , id (abs (id (_ + _))) :: Int
+  , id (abs (id (_ + x))) :: Int
+  , id (abs (id (_ + 0))) :: Int
+  , id (abs (id (_ + id _))) :: Int
+  , id (abs (id (x + _))) :: Int
+  , id (abs (id (0 + _))) :: Int
+  , id (abs (id (id _ + _))) :: Int
+  , id (abs (abs _)) :: Int
+  , id (abs (abs x)) :: Int
+  , id (abs (abs y)) :: Int
+  , id (abs (abs 0)) :: Int
+  , id (abs (abs 1)) :: Int
+  , id (abs (abs (ord _))) :: Int
+  , id (abs (abs (id _))) :: Int
+  , id (abs (abs (id x))) :: Int
+  , id (abs (abs (id 0))) :: Int
+  , id (abs (abs (id (id _)))) :: Int
+  , id (abs (abs (abs _))) :: Int
+  , id (abs (abs (negate _))) :: Int
+  , id (abs (abs (head _))) :: Int
+  , id (abs (abs (_ + _))) :: Int
+  , id (abs (negate _)) :: Int
+  , id (abs (negate x)) :: Int
+  , id (abs (negate y)) :: Int
+  , id (abs (negate 0)) :: Int
+  , id (abs (negate 1)) :: Int
+  , id (abs (negate (ord _))) :: Int
+  , id (abs (negate (id _))) :: Int
+  , id (abs (negate (id x))) :: Int
+  , id (abs (negate (id 0))) :: Int
+  , id (abs (negate (id (id _)))) :: Int
+  , id (abs (negate (abs _))) :: Int
+  , id (abs (negate (negate _))) :: Int
+  , id (abs (negate (head _))) :: Int
+  , id (abs (negate (_ + _))) :: Int
+  , id (abs (head _)) :: Int
+  , id (abs (head xs)) :: Int
+  , id (abs (head ys)) :: Int
+  , id (abs (head [])) :: Int
+  , id (abs (head [0])) :: Int
+  , id (abs (head (tail _))) :: Int
+  , id (abs (head (_:_))) :: Int
+  , id (abs (head (_:xs))) :: Int
+  , id (abs (head [_])) :: Int
+  , id (abs (head (_:_:_))) :: Int
+  , id (abs (head (x:_))) :: Int
+  , id (abs (head (0:_))) :: Int
+  , id (abs (head (id _:_))) :: Int
+  , id (abs (head (_ ++ _))) :: Int
+  , id (abs (_ * _)) :: Int
+  , id (abs (_ * x)) :: Int
+  , id (abs (_ * 0)) :: Int
+  , id (abs (_ * id _)) :: Int
+  , id (abs (x * _)) :: Int
+  , id (abs (0 * _)) :: Int
+  , id (abs (id _ * _)) :: Int
+  , id (abs (_ + _)) :: Int
+  , id (abs (_ + x)) :: Int
+  , id (abs (_ + y)) :: Int
+  , id (abs (_ + 0)) :: Int
+  , id (abs (_ + 1)) :: Int
+  , id (abs (_ + ord _)) :: Int
+  , id (abs (_ + id _)) :: Int
+  , id (abs (_ + id x)) :: Int
+  , id (abs (_ + id 0)) :: Int
+  , id (abs (_ + id (id _))) :: Int
+  , id (abs (_ + abs _)) :: Int
+  , id (abs (_ + negate _)) :: Int
+  , id (abs (_ + head _)) :: Int
+  , id (abs (_ + (_ + _))) :: Int
+  , id (abs (x + _)) :: Int
+  , id (abs (x + x)) :: Int
+  , id (abs (x + 0)) :: Int
+  , id (abs (x + id _)) :: Int
+  , id (abs (y + _)) :: Int
+  , id (abs (0 + _)) :: Int
+  , id (abs (0 + x)) :: Int
+  , id (abs (0 + 0)) :: Int
+  , id (abs (0 + id _)) :: Int
+  , id (abs (1 + _)) :: Int
+  , id (abs (ord _ + _)) :: Int
+  , id (abs (id _ + _)) :: Int
+  , id (abs (id _ + x)) :: Int
+  , id (abs (id _ + 0)) :: Int
+  , id (abs (id _ + id _)) :: Int
+  , id (abs (id x + _)) :: Int
+  , id (abs (id 0 + _)) :: Int
+  , id (abs (id (id _) + _)) :: Int
+  , id (abs (abs _ + _)) :: Int
+  , id (abs (negate _ + _)) :: Int
+  , id (abs (head _ + _)) :: Int
+  , id (abs ((_ + _) + _)) :: Int
+  , id (negate _) :: Int
+  , id (negate x) :: Int
+  , id (negate y) :: Int
+  , id (negate z) :: Int
+  , id (negate x') :: Int
+  , id (negate 0) :: Int
+  , id (negate 1) :: Int
+  , id (negate 2) :: Int
+  , id (negate (-1)) :: Int
+  , id (negate (f _)) :: Int
+  , id (negate (f x)) :: Int
+  , id (negate (f 0)) :: Int
+  , id (negate (f (id _))) :: Int
+  , id (negate (g _)) :: Int
+  , id (negate (ord _)) :: Int
+  , id (negate (ord c)) :: Int
+  , id (negate (ord d)) :: Int
+  , id (negate (ord ' ')) :: Int
+  , id (negate (ord 'a')) :: Int
+  , id (negate (id _)) :: Int
+  , id (negate (id x)) :: Int
+  , id (negate (id y)) :: Int
+  , id (negate (id z)) :: Int
+  , id (negate (id 0)) :: Int
+  , id (negate (id 1)) :: Int
+  , id (negate (id (-1))) :: Int
+  , id (negate (id (f _))) :: Int
+  , id (negate (id (ord _))) :: Int
+  , id (negate (id (ord c))) :: Int
+  , id (negate (id (ord 'a'))) :: Int
+  , id (negate (id (id _))) :: Int
+  , id (negate (id (id x))) :: Int
+  , id (negate (id (id y))) :: Int
+  , id (negate (id (id 0))) :: Int
+  , id (negate (id (id 1))) :: Int
+  , id (negate (id (id (ord _)))) :: Int
+  , id (negate (id (id (id _)))) :: Int
+  , id (negate (id (id (id x)))) :: Int
+  , id (negate (id (id (id 0)))) :: Int
+  , id (negate (id (id (id (id _))))) :: Int
+  , id (negate (id (id (abs _)))) :: Int
+  , id (negate (id (id (negate _)))) :: Int
+  , id (negate (id (id (head _)))) :: Int
+  , id (negate (id (id (_ + _)))) :: Int
+  , id (negate (id (abs _))) :: Int
+  , id (negate (id (abs x))) :: Int
+  , id (negate (id (abs 0))) :: Int
+  , id (negate (id (abs (id _)))) :: Int
+  , id (negate (id (negate _))) :: Int
+  , id (negate (id (negate x))) :: Int
+  , id (negate (id (negate 0))) :: Int
+  , id (negate (id (negate (id _)))) :: Int
+  , id (negate (id (head _))) :: Int
+  , id (negate (id (head xs))) :: Int
+  , id (negate (id (head []))) :: Int
+  , id (negate (id (head (_:_)))) :: Int
+  , id (negate (id (_ * _))) :: Int
+  , id (negate (id (_ + _))) :: Int
+  , id (negate (id (_ + x))) :: Int
+  , id (negate (id (_ + 0))) :: Int
+  , id (negate (id (_ + id _))) :: Int
+  , id (negate (id (x + _))) :: Int
+  , id (negate (id (0 + _))) :: Int
+  , id (negate (id (id _ + _))) :: Int
+  , id (negate (abs _)) :: Int
+  , id (negate (abs x)) :: Int
+  , id (negate (abs y)) :: Int
+  , id (negate (abs 0)) :: Int
+  , id (negate (abs 1)) :: Int
+  , id (negate (abs (ord _))) :: Int
+  , id (negate (abs (id _))) :: Int
+  , id (negate (abs (id x))) :: Int
+  , id (negate (abs (id 0))) :: Int
+  , id (negate (abs (id (id _)))) :: Int
+  , id (negate (abs (abs _))) :: Int
+  , id (negate (abs (negate _))) :: Int
+  , id (negate (abs (head _))) :: Int
+  , id (negate (abs (_ + _))) :: Int
+  , id (negate (negate _)) :: Int
+  , id (negate (negate x)) :: Int
+  , id (negate (negate y)) :: Int
+  , id (negate (negate 0)) :: Int
+  , id (negate (negate 1)) :: Int
+  , id (negate (negate (ord _))) :: Int
+  , id (negate (negate (id _))) :: Int
+  , id (negate (negate (id x))) :: Int
+  , id (negate (negate (id 0))) :: Int
+  , id (negate (negate (id (id _)))) :: Int
+  , id (negate (negate (abs _))) :: Int
+  , id (negate (negate (negate _))) :: Int
+  , id (negate (negate (head _))) :: Int
+  , id (negate (negate (_ + _))) :: Int
+  , id (negate (head _)) :: Int
+  , id (negate (head xs)) :: Int
+  , id (negate (head ys)) :: Int
+  , id (negate (head [])) :: Int
+  , id (negate (head [0])) :: Int
+  , id (negate (head (tail _))) :: Int
+  , id (negate (head (_:_))) :: Int
+  , id (negate (head (_:xs))) :: Int
+  , id (negate (head [_])) :: Int
+  , id (negate (head (_:_:_))) :: Int
+  , id (negate (head (x:_))) :: Int
+  , id (negate (head (0:_))) :: Int
+  , id (negate (head (id _:_))) :: Int
+  , id (negate (head (_ ++ _))) :: Int
+  , id (negate (_ * _)) :: Int
+  , id (negate (_ * x)) :: Int
+  , id (negate (_ * 0)) :: Int
+  , id (negate (_ * id _)) :: Int
+  , id (negate (x * _)) :: Int
+  , id (negate (0 * _)) :: Int
+  , id (negate (id _ * _)) :: Int
+  , id (negate (_ + _)) :: Int
+  , id (negate (_ + x)) :: Int
+  , id (negate (_ + y)) :: Int
+  , id (negate (_ + 0)) :: Int
+  , id (negate (_ + 1)) :: Int
+  , id (negate (_ + ord _)) :: Int
+  , id (negate (_ + id _)) :: Int
+  , id (negate (_ + id x)) :: Int
+  , id (negate (_ + id 0)) :: Int
+  , id (negate (_ + id (id _))) :: Int
+  , id (negate (_ + abs _)) :: Int
+  , id (negate (_ + negate _)) :: Int
+  , id (negate (_ + head _)) :: Int
+  , id (negate (_ + (_ + _))) :: Int
+  , id (negate (x + _)) :: Int
+  , id (negate (x + x)) :: Int
+  , id (negate (x + 0)) :: Int
+  , id (negate (x + id _)) :: Int
+  , id (negate (y + _)) :: Int
+  , id (negate (0 + _)) :: Int
+  , id (negate (0 + x)) :: Int
+  , id (negate (0 + 0)) :: Int
+  , id (negate (0 + id _)) :: Int
+  , id (negate (1 + _)) :: Int
+  , id (negate (ord _ + _)) :: Int
+  , id (negate (id _ + _)) :: Int
+  , id (negate (id _ + x)) :: Int
+  , id (negate (id _ + 0)) :: Int
+  , id (negate (id _ + id _)) :: Int
+  , id (negate (id x + _)) :: Int
+  , id (negate (id 0 + _)) :: Int
+  , id (negate (id (id _) + _)) :: Int
+  , id (negate (abs _ + _)) :: Int
+  , id (negate (negate _ + _)) :: Int
+  , id (negate (head _ + _)) :: Int
+  , id (negate ((_ + _) + _)) :: Int
+  , id (head _) :: Int
+  , id (head xs) :: Int
+  , id (head ys) :: Int
+  , id (head zs) :: Int
+  , id (head xs') :: Int
+  , id (head []) :: Int
+  , id (head [0]) :: Int
+  , id (head [1]) :: Int
+  , id (head [-1]) :: Int
+  , id (head [0,0]) :: Int
+  , id (head [0,1]) :: Int
+  , id (head [1,0]) :: Int
+  , id (head [0,0,0]) :: Int
+  , id (head (sort _)) :: Int
+  , id (head (tail _)) :: Int
+  , id (head (tail xs)) :: Int
+  , id (head (tail ys)) :: Int
+  , id (head (tail [])) :: Int
+  , id (head (tail [0])) :: Int
+  , id (head (tail (tail _))) :: Int
+  , id (head (tail (_:_))) :: Int
+  , id (head (tail (_:xs))) :: Int
+  , id (head (tail [_])) :: Int
+  , id (head (tail (_:_:_))) :: Int
+  , id (head (tail (x:_))) :: Int
+  , id (head (tail (0:_))) :: Int
+  , id (head (tail (id _:_))) :: Int
+  , id (head (tail (_ ++ _))) :: Int
+  , id (head (_:_)) :: Int
+  , id (head (_:xs)) :: Int
+  , id (head (_:ys)) :: Int
+  , id (head (_:zs)) :: Int
+  , id (head [_]) :: Int
+  , id (head (_:[0])) :: Int
+  , id (head (_:[1])) :: Int
+  , id (head (_:[0,0])) :: Int
+  , id (head (_:sort _)) :: Int
+  , id (head (_:tail _)) :: Int
+  , id (head (_:tail xs)) :: Int
+  , id (head (_:tail [])) :: Int
+  , id (head (_:tail (_:_))) :: Int
+  , id (head (_:_:_)) :: Int
+  , id (head (_:_:xs)) :: Int
+  , id (head (_:_:ys)) :: Int
+  , id (head [_,_]) :: Int
+  , id (head (_:_:[0])) :: Int
+  , id (head (_:_:tail _)) :: Int
+  , id (head (_:_:_:_)) :: Int
+  , id (head (_:_:_:xs)) :: Int
+  , id (head [_,_,_]) :: Int
+  , id (head (_:_:_:_:_)) :: Int
+  , id (head (_:_:x:_)) :: Int
+  , id (head (_:_:0:_)) :: Int
+  , id (head (_:_:id _:_)) :: Int
+  , id (head (_:_:(_ ++ _))) :: Int
+  , id (head (_:x:_)) :: Int
+  , id (head (_:x:xs)) :: Int
+  , id (head [_,x]) :: Int
+  , id (head (_:x:_:_)) :: Int
+  , id (head (_:y:_)) :: Int
+  , id (head (_:0:_)) :: Int
+  , id (head (_:0:xs)) :: Int
+  , id (head [_,0]) :: Int
+  , id (head (_:0:_:_)) :: Int
+  , id (head (_:1:_)) :: Int
+  , id (head (_:ord _:_)) :: Int
+  , id (head (_:id _:_)) :: Int
+  , id (head (_:id _:xs)) :: Int
+  , id (head [_,id _]) :: Int
+  , id (head (_:id _:_:_)) :: Int
+  , id (head (_:id x:_)) :: Int
+  , id (head (_:id 0:_)) :: Int
+  , id (head (_:id (id _):_)) :: Int
+  , id (head (_:abs _:_)) :: Int
+  , id (head (_:negate _:_)) :: Int
+  , id (head (_:head _:_)) :: Int
+  , id (head (_:_ + _:_)) :: Int
+  , id (head (_:insert _ _)) :: Int
+  , id (head (_:(_ ++ _))) :: Int
+  , id (head (_:(_ ++ xs))) :: Int
+  , id (head (_:(_ ++ []))) :: Int
+  , id (head (_:(_ ++ (_:_)))) :: Int
+  , id (head (_:(xs ++ _))) :: Int
+  , id (head (_:([] ++ _))) :: Int
+  , id (head (_:((_:_) ++ _))) :: Int
+  , id (head (x:_)) :: Int
+  , id (head (x:xs)) :: Int
+  , id (head (x:ys)) :: Int
+  , id (head [x]) :: Int
+  , id (head (x:[0])) :: Int
+  , id (head (x:tail _)) :: Int
+  , id (head (x:_:_)) :: Int
+  , id (head (x:_:xs)) :: Int
+  , id (head [x,_]) :: Int
+  , id (head (x:_:_:_)) :: Int
+  , id (head (x:x:_)) :: Int
+  , id (head (x:0:_)) :: Int
+  , id (head (x:id _:_)) :: Int
+  , id (head (x:(_ ++ _))) :: Int
+  , id (head (y:_)) :: Int
+  , id (head (y:xs)) :: Int
+  , id (head [y]) :: Int
+  , id (head (y:_:_)) :: Int
+  , id (head (z:_)) :: Int
+  , id (head (0:_)) :: Int
+  , id (head (0:xs)) :: Int
+  , id (head (0:ys)) :: Int
+  , id (head [0]) :: Int
+  , id (head (0:[0])) :: Int
+  , id (head (0:tail _)) :: Int
+  , id (head (0:_:_)) :: Int
+  , id (head (0:_:xs)) :: Int
+  , id (head [0,_]) :: Int
+  , id (head (0:_:_:_)) :: Int
+  , id (head (0:x:_)) :: Int
+  , id (head (0:0:_)) :: Int
+  , id (head (0:id _:_)) :: Int
+  , id (head (0:(_ ++ _))) :: Int
+  , id (head (1:_)) :: Int
+  , id (head (1:xs)) :: Int
+  , id (head [1]) :: Int
+  , id (head (1:_:_)) :: Int
+  , id (head ((-1):_)) :: Int
+  , id (head (f _:_)) :: Int
+  , id (head (ord _:_)) :: Int
+  , id (head (ord _:xs)) :: Int
+  , id (head [ord _]) :: Int
+  , id (head (ord _:_:_)) :: Int
+  , id (head (ord c:_)) :: Int
+  , id (head (ord 'a':_)) :: Int
+  , id (head (id _:_)) :: Int
+  , id (head (id _:xs)) :: Int
+  , id (head (id _:ys)) :: Int
+  , id (head [id _]) :: Int
+  , id (head (id _:[0])) :: Int
+  , id (head (id _:tail _)) :: Int
+  , id (head (id _:_:_)) :: Int
+  , id (head (id _:_:xs)) :: Int
+  , id (head [id _,_]) :: Int
+  , id (head (id _:_:_:_)) :: Int
+  , id (head (id _:x:_)) :: Int
+  , id (head (id _:0:_)) :: Int
+  , id (head (id _:id _:_)) :: Int
+  , id (head (id _:(_ ++ _))) :: Int
+  , id (head (id x:_)) :: Int
+  , id (head (id x:xs)) :: Int
+  , id (head [id x]) :: Int
+  , id (head (id x:_:_)) :: Int
+  , id (head (id y:_)) :: Int
+  , id (head (id 0:_)) :: Int
+  , id (head (id 0:xs)) :: Int
+  , id (head [id 0]) :: Int
+  , id (head (id 0:_:_)) :: Int
+  , id (head (id 1:_)) :: Int
+  , id (head (id (ord _):_)) :: Int
+  , id (head (id (id _):_)) :: Int
+  , id (head (id (id _):xs)) :: Int
+  , id (head [id (id _)]) :: Int
+  , id (head (id (id _):_:_)) :: Int
+  , id (head (id (id x):_)) :: Int
+  , id (head (id (id 0):_)) :: Int
+  , id (head (id (id (id _)):_)) :: Int
+  , id (head (id (abs _):_)) :: Int
+  , id (head (id (negate _):_)) :: Int
+  , id (head (id (head _):_)) :: Int
+  , id (head (id (_ + _):_)) :: Int
+  , id (head (abs _:_)) :: Int
+  , id (head (abs _:xs)) :: Int
+  , id (head [abs _]) :: Int
+  , id (head (abs _:_:_)) :: Int
+  , id (head (abs x:_)) :: Int
+  , id (head (abs 0:_)) :: Int
+  , id (head (abs (id _):_)) :: Int
+  , id (head (negate _:_)) :: Int
+  , id (head (negate _:xs)) :: Int
+  , id (head [negate _]) :: Int
+  , id (head (negate _:_:_)) :: Int
+  , id (head (negate x:_)) :: Int
+  , id (head (negate 0:_)) :: Int
+  , id (head (negate (id _):_)) :: Int
+  , id (head (head _:_)) :: Int
+  , id (head (head _:xs)) :: Int
+  , id (head [head _]) :: Int
+  , id (head (head _:_:_)) :: Int
+  , id (head (head xs:_)) :: Int
+  , id (head (head []:_)) :: Int
+  , id (head (head (_:_):_)) :: Int
+  , id (head (_ * _:_)) :: Int
+  , id (head (_ + _:_)) :: Int
+  , id (head (_ + _:xs)) :: Int
+  , id (head [_ + _]) :: Int
+  , id (head (_ + _:_:_)) :: Int
+  , id (head (_ + x:_)) :: Int
+  , id (head (_ + 0:_)) :: Int
+  , id (head (_ + id _:_)) :: Int
+  , id (head (x + _:_)) :: Int
+  , id (head (0 + _:_)) :: Int
+  , id (head (id _ + _:_)) :: Int
+  , id (head (insert _ _)) :: Int
+  , id (head (_ ++ _)) :: Int
+  , id (head (_ ++ xs)) :: Int
+  , id (head (_ ++ ys)) :: Int
+  , id (head (_ ++ [])) :: Int
+  , id (head (_ ++ [0])) :: Int
+  , id (head (_ ++ tail _)) :: Int
+  , id (head (_ ++ (_:_))) :: Int
+  , id (head (_ ++ (_:xs))) :: Int
+  , id (head (_ ++ [_])) :: Int
+  , id (head (_ ++ (_:_:_))) :: Int
+  , id (head (_ ++ (x:_))) :: Int
+  , id (head (_ ++ (0:_))) :: Int
+  , id (head (_ ++ (id _:_))) :: Int
+  , id (head (_ ++ (_ ++ _))) :: Int
+  , id (head (xs ++ _)) :: Int
+  , id (head (xs ++ xs)) :: Int
+  , id (head (xs ++ [])) :: Int
+  , id (head (xs ++ (_:_))) :: Int
+  , id (head (ys ++ _)) :: Int
+  , id (head ([] ++ _)) :: Int
+  , id (head ([] ++ xs)) :: Int
+  , id (head ([] ++ [])) :: Int
+  , id (head ([] ++ (_:_))) :: Int
+  , id (head ([0] ++ _)) :: Int
+  , id (head ((_:_) ++ _)) :: Int
+  , id (head ((_:_) ++ xs)) :: Int
+  , id (head ((_:_) ++ [])) :: Int
+  , id (head ((_:_) ++ (_:_))) :: Int
+  , id (head ((_:xs) ++ _)) :: Int
+  , id (head ([_] ++ _)) :: Int
+  , id (head ((_:_:_) ++ _)) :: Int
+  , id (head ((x:_) ++ _)) :: Int
+  , id (head ((0:_) ++ _)) :: Int
+  , id (head ((id _:_) ++ _)) :: Int
+  , id (_ * _) :: Int
+  , id (_ * x) :: Int
+  , id (_ * y) :: Int
+  , id (_ * z) :: Int
+  , id (_ * 0) :: Int
+  , id (_ * 1) :: Int
+  , id (_ * (-1)) :: Int
+  , id (_ * f _) :: Int
+  , id (_ * ord _) :: Int
+  , id (_ * ord c) :: Int
+  , id (_ * ord 'a') :: Int
+  , id (_ * id _) :: Int
+  , id (_ * id x) :: Int
+  , id (_ * id y) :: Int
+  , id (_ * id 0) :: Int
+  , id (_ * id 1) :: Int
+  , id (_ * id (ord _)) :: Int
+  , id (_ * id (id _)) :: Int
+  , id (_ * id (id x)) :: Int
+  , id (_ * id (id 0)) :: Int
+  , id (_ * id (id (id _))) :: Int
+  , id (_ * id (abs _)) :: Int
+  , id (_ * id (negate _)) :: Int
+  , id (_ * id (head _)) :: Int
+  , id (_ * id (_ + _)) :: Int
+  , id (_ * abs _) :: Int
+  , id (_ * abs x) :: Int
+  , id (_ * abs 0) :: Int
+  , id (_ * abs (id _)) :: Int
+  , id (_ * negate _) :: Int
+  , id (_ * negate x) :: Int
+  , id (_ * negate 0) :: Int
+  , id (_ * negate (id _)) :: Int
+  , id (_ * head _) :: Int
+  , id (_ * head xs) :: Int
+  , id (_ * head []) :: Int
+  , id (_ * head (_:_)) :: Int
+  , id (_ * (_ * _)) :: Int
+  , id (_ * (_ + _)) :: Int
+  , id (_ * (_ + x)) :: Int
+  , id (_ * (_ + 0)) :: Int
+  , id (_ * (_ + id _)) :: Int
+  , id (_ * (x + _)) :: Int
+  , id (_ * (0 + _)) :: Int
+  , id (_ * (id _ + _)) :: Int
+  , id (x * _) :: Int
+  , id (x * x) :: Int
+  , id (x * y) :: Int
+  , id (x * 0) :: Int
+  , id (x * 1) :: Int
+  , id (x * ord _) :: Int
+  , id (x * id _) :: Int
+  , id (x * id x) :: Int
+  , id (x * id 0) :: Int
+  , id (x * id (id _)) :: Int
+  , id (x * abs _) :: Int
+  , id (x * negate _) :: Int
+  , id (x * head _) :: Int
+  , id (x * (_ + _)) :: Int
+  , id (y * _) :: Int
+  , id (y * x) :: Int
+  , id (y * 0) :: Int
+  , id (y * id _) :: Int
+  , id (z * _) :: Int
+  , id (0 * _) :: Int
+  , id (0 * x) :: Int
+  , id (0 * y) :: Int
+  , id (0 * 0) :: Int
+  , id (0 * 1) :: Int
+  , id (0 * ord _) :: Int
+  , id (0 * id _) :: Int
+  , id (0 * id x) :: Int
+  , id (0 * id 0) :: Int
+  , id (0 * id (id _)) :: Int
+  , id (0 * abs _) :: Int
+  , id (0 * negate _) :: Int
+  , id (0 * head _) :: Int
+  , id (0 * (_ + _)) :: Int
+  , id (1 * _) :: Int
+  , id (1 * x) :: Int
+  , id (1 * 0) :: Int
+  , id (1 * id _) :: Int
+  , id ((-1) * _) :: Int
+  , id (f _ * _) :: Int
+  , id (ord _ * _) :: Int
+  , id (ord _ * x) :: Int
+  , id (ord _ * 0) :: Int
+  , id (ord _ * id _) :: Int
+  , id (ord c * _) :: Int
+  , id (ord 'a' * _) :: Int
+  , id (id _ * _) :: Int
+  , id (id _ * x) :: Int
+  , id (id _ * y) :: Int
+  , id (id _ * 0) :: Int
+  , id (id _ * 1) :: Int
+  , id (id _ * ord _) :: Int
+  , id (id _ * id _) :: Int
+  , id (id _ * id x) :: Int
+  , id (id _ * id 0) :: Int
+  , id (id _ * id (id _)) :: Int
+  , id (id _ * abs _) :: Int
+  , id (id _ * negate _) :: Int
+  , id (id _ * head _) :: Int
+  , id (id _ * (_ + _)) :: Int
+  , id (id x * _) :: Int
+  , id (id x * x) :: Int
+  , id (id x * 0) :: Int
+  , id (id x * id _) :: Int
+  , id (id y * _) :: Int
+  , id (id 0 * _) :: Int
+  , id (id 0 * x) :: Int
+  , id (id 0 * 0) :: Int
+  , id (id 0 * id _) :: Int
+  , id (id 1 * _) :: Int
+  , id (id (ord _) * _) :: Int
+  , id (id (id _) * _) :: Int
+  , id (id (id _) * x) :: Int
+  , id (id (id _) * 0) :: Int
+  , id (id (id _) * id _) :: Int
+  , id (id (id x) * _) :: Int
+  , id (id (id 0) * _) :: Int
+  , id (id (id (id _)) * _) :: Int
+  , id (id (abs _) * _) :: Int
+  , id (id (negate _) * _) :: Int
+  , id (id (head _) * _) :: Int
+  , id (id (_ + _) * _) :: Int
+  , id (abs _ * _) :: Int
+  , id (abs _ * x) :: Int
+  , id (abs _ * 0) :: Int
+  , id (abs _ * id _) :: Int
+  , id (abs x * _) :: Int
+  , id (abs 0 * _) :: Int
+  , id (abs (id _) * _) :: Int
+  , id (negate _ * _) :: Int
+  , id (negate _ * x) :: Int
+  , id (negate _ * 0) :: Int
+  , id (negate _ * id _) :: Int
+  , id (negate x * _) :: Int
+  , id (negate 0 * _) :: Int
+  , id (negate (id _) * _) :: Int
+  , id (head _ * _) :: Int
+  , id (head _ * x) :: Int
+  , id (head _ * 0) :: Int
+  , id (head _ * id _) :: Int
+  , id (head xs * _) :: Int
+  , id (head [] * _) :: Int
+  , id (head (_:_) * _) :: Int
+  , id ((_ * _) * _) :: Int
+  , id ((_ + _) * _) :: Int
+  , id ((_ + _) * x) :: Int
+  , id ((_ + _) * 0) :: Int
+  , id ((_ + _) * id _) :: Int
+  , id ((_ + x) * _) :: Int
+  , id ((_ + 0) * _) :: Int
+  , id ((_ + id _) * _) :: Int
+  , id ((x + _) * _) :: Int
+  , id ((0 + _) * _) :: Int
+  , id ((id _ + _) * _) :: Int
+  , id (_ + _) :: Int
+  , id (_ + x) :: Int
+  , id (_ + y) :: Int
+  , id (_ + z) :: Int
+  , id (_ + x') :: Int
+  , id (_ + 0) :: Int
+  , id (_ + 1) :: Int
+  , id (_ + 2) :: Int
+  , id (_ + (-1)) :: Int
+  , id (_ + f _) :: Int
+  , id (_ + f x) :: Int
+  , id (_ + f 0) :: Int
+  , id (_ + f (id _)) :: Int
+  , id (_ + g _) :: Int
+  , id (_ + ord _) :: Int
+  , id (_ + ord c) :: Int
+  , id (_ + ord d) :: Int
+  , id (_ + ord ' ') :: Int
+  , id (_ + ord 'a') :: Int
+  , id (_ + id _) :: Int
+  , id (_ + id x) :: Int
+  , id (_ + id y) :: Int
+  , id (_ + id z) :: Int
+  , id (_ + id 0) :: Int
+  , id (_ + id 1) :: Int
+  , id (_ + id (-1)) :: Int
+  , id (_ + id (f _)) :: Int
+  , id (_ + id (ord _)) :: Int
+  , id (_ + id (ord c)) :: Int
+  , id (_ + id (ord 'a')) :: Int
+  , id (_ + id (id _)) :: Int
+  , id (_ + id (id x)) :: Int
+  , id (_ + id (id y)) :: Int
+  , id (_ + id (id 0)) :: Int
+  , id (_ + id (id 1)) :: Int
+  , id (_ + id (id (ord _))) :: Int
+  , id (_ + id (id (id _))) :: Int
+  , id (_ + id (id (id x))) :: Int
+  , id (_ + id (id (id 0))) :: Int
+  , id (_ + id (id (id (id _)))) :: Int
+  , id (_ + id (id (abs _))) :: Int
+  , id (_ + id (id (negate _))) :: Int
+  , id (_ + id (id (head _))) :: Int
+  , id (_ + id (id (_ + _))) :: Int
+  , id (_ + id (abs _)) :: Int
+  , id (_ + id (abs x)) :: Int
+  , id (_ + id (abs 0)) :: Int
+  , id (_ + id (abs (id _))) :: Int
+  , id (_ + id (negate _)) :: Int
+  , id (_ + id (negate x)) :: Int
+  , id (_ + id (negate 0)) :: Int
+  , id (_ + id (negate (id _))) :: Int
+  , id (_ + id (head _)) :: Int
+  , id (_ + id (head xs)) :: Int
+  , id (_ + id (head [])) :: Int
+  , id (_ + id (head (_:_))) :: Int
+  , id (_ + id (_ * _)) :: Int
+  , id (_ + id (_ + _)) :: Int
+  , id (_ + id (_ + x)) :: Int
+  , id (_ + id (_ + 0)) :: Int
+  , id (_ + id (_ + id _)) :: Int
+  , id (_ + id (x + _)) :: Int
+  , id (_ + id (0 + _)) :: Int
+  , id (_ + id (id _ + _)) :: Int
+  , id (_ + abs _) :: Int
+  , id (_ + abs x) :: Int
+  , id (_ + abs y) :: Int
+  , id (_ + abs 0) :: Int
+  , id (_ + abs 1) :: Int
+  , id (_ + abs (ord _)) :: Int
+  , id (_ + abs (id _)) :: Int
+  , id (_ + abs (id x)) :: Int
+  , id (_ + abs (id 0)) :: Int
+  , id (_ + abs (id (id _))) :: Int
+  , id (_ + abs (abs _)) :: Int
+  , id (_ + abs (negate _)) :: Int
+  , id (_ + abs (head _)) :: Int
+  , id (_ + abs (_ + _)) :: Int
+  , id (_ + negate _) :: Int
+  , id (_ + negate x) :: Int
+  , id (_ + negate y) :: Int
+  , id (_ + negate 0) :: Int
+  , id (_ + negate 1) :: Int
+  , id (_ + negate (ord _)) :: Int
+  , id (_ + negate (id _)) :: Int
+  , id (_ + negate (id x)) :: Int
+  , id (_ + negate (id 0)) :: Int
+  , id (_ + negate (id (id _))) :: Int
+  , id (_ + negate (abs _)) :: Int
+  , id (_ + negate (negate _)) :: Int
+  , id (_ + negate (head _)) :: Int
+  , id (_ + negate (_ + _)) :: Int
+  , id (_ + head _) :: Int
+  , id (_ + head xs) :: Int
+  , id (_ + head ys) :: Int
+  , id (_ + head []) :: Int
+  , id (_ + head [0]) :: Int
+  , id (_ + head (tail _)) :: Int
+  , id (_ + head (_:_)) :: Int
+  , id (_ + head (_:xs)) :: Int
+  , id (_ + head [_]) :: Int
+  , id (_ + head (_:_:_)) :: Int
+  , id (_ + head (x:_)) :: Int
+  , id (_ + head (0:_)) :: Int
+  , id (_ + head (id _:_)) :: Int
+  , id (_ + head (_ ++ _)) :: Int
+  , id (_ + _ * _) :: Int
+  , id (_ + _ * x) :: Int
+  , id (_ + _ * 0) :: Int
+  , id (_ + _ * id _) :: Int
+  , id (_ + x * _) :: Int
+  , id (_ + 0 * _) :: Int
+  , id (_ + id _ * _) :: Int
+  , id (_ + (_ + _)) :: Int
+  , id (_ + (_ + x)) :: Int
+  , id (_ + (_ + y)) :: Int
+  , id (_ + (_ + 0)) :: Int
+  , id (_ + (_ + 1)) :: Int
+  , id (_ + (_ + ord _)) :: Int
+  , id (_ + (_ + id _)) :: Int
+  , id (_ + (_ + id x)) :: Int
+  , id (_ + (_ + id 0)) :: Int
+  , id (_ + (_ + id (id _))) :: Int
+  , id (_ + (_ + abs _)) :: Int
+  , id (_ + (_ + negate _)) :: Int
+  , id (_ + (_ + head _)) :: Int
+  , id (_ + (_ + (_ + _))) :: Int
+  , id (_ + (x + _)) :: Int
+  , id (_ + (x + x)) :: Int
+  , id (_ + (x + 0)) :: Int
+  , id (_ + (x + id _)) :: Int
+  , id (_ + (y + _)) :: Int
+  , id (_ + (0 + _)) :: Int
+  , id (_ + (0 + x)) :: Int
+  , id (_ + (0 + 0)) :: Int
+  , id (_ + (0 + id _)) :: Int
+  , id (_ + (1 + _)) :: Int
+  , id (_ + (ord _ + _)) :: Int
+  , id (_ + (id _ + _)) :: Int
+  , id (_ + (id _ + x)) :: Int
+  , id (_ + (id _ + 0)) :: Int
+  , id (_ + (id _ + id _)) :: Int
+  , id (_ + (id x + _)) :: Int
+  , id (_ + (id 0 + _)) :: Int
+  , id (_ + (id (id _) + _)) :: Int
+  , id (_ + (abs _ + _)) :: Int
+  , id (_ + (negate _ + _)) :: Int
+  , id (_ + (head _ + _)) :: Int
+  , id (_ + ((_ + _) + _)) :: Int
+  , id (x + _) :: Int
+  , id (x + x) :: Int
+  , id (x + y) :: Int
+  , id (x + z) :: Int
+  , id (x + 0) :: Int
+  , id (x + 1) :: Int
+  , id (x + (-1)) :: Int
+  , id (x + f _) :: Int
+  , id (x + ord _) :: Int
+  , id (x + ord c) :: Int
+  , id (x + ord 'a') :: Int
+  , id (x + id _) :: Int
+  , id (x + id x) :: Int
+  , id (x + id y) :: Int
+  , id (x + id 0) :: Int
+  , id (x + id 1) :: Int
+  , id (x + id (ord _)) :: Int
+  , id (x + id (id _)) :: Int
+  , id (x + id (id x)) :: Int
+  , id (x + id (id 0)) :: Int
+  , id (x + id (id (id _))) :: Int
+  , id (x + id (abs _)) :: Int
+  , id (x + id (negate _)) :: Int
+  , id (x + id (head _)) :: Int
+  , id (x + id (_ + _)) :: Int
+  , id (x + abs _) :: Int
+  , id (x + abs x) :: Int
+  , id (x + abs 0) :: Int
+  , id (x + abs (id _)) :: Int
+  , id (x + negate _) :: Int
+  , id (x + negate x) :: Int
+  , id (x + negate 0) :: Int
+  , id (x + negate (id _)) :: Int
+  , id (x + head _) :: Int
+  , id (x + head xs) :: Int
+  , id (x + head []) :: Int
+  , id (x + head (_:_)) :: Int
+  , id (x + _ * _) :: Int
+  , id (x + (_ + _)) :: Int
+  , id (x + (_ + x)) :: Int
+  , id (x + (_ + 0)) :: Int
+  , id (x + (_ + id _)) :: Int
+  , id (x + (x + _)) :: Int
+  , id (x + (0 + _)) :: Int
+  , id (x + (id _ + _)) :: Int
+  , id (y + _) :: Int
+  , id (y + x) :: Int
+  , id (y + y) :: Int
+  , id (y + 0) :: Int
+  , id (y + 1) :: Int
+  , id (y + ord _) :: Int
+  , id (y + id _) :: Int
+  , id (y + id x) :: Int
+  , id (y + id 0) :: Int
+  , id (y + id (id _)) :: Int
+  , id (y + abs _) :: Int
+  , id (y + negate _) :: Int
+  , id (y + head _) :: Int
+  , id (y + (_ + _)) :: Int
+  , id (z + _) :: Int
+  , id (z + x) :: Int
+  , id (z + 0) :: Int
+  , id (z + id _) :: Int
+  , id (x' + _) :: Int
+  , id (0 + _) :: Int
+  , id (0 + x) :: Int
+  , id (0 + y) :: Int
+  , id (0 + z) :: Int
+  , id (0 + 0) :: Int
+  , id (0 + 1) :: Int
+  , id (0 + (-1)) :: Int
+  , id (0 + f _) :: Int
+  , id (0 + ord _) :: Int
+  , id (0 + ord c) :: Int
+  , id (0 + ord 'a') :: Int
+  , id (0 + id _) :: Int
+  , id (0 + id x) :: Int
+  , id (0 + id y) :: Int
+  , id (0 + id 0) :: Int
+  , id (0 + id 1) :: Int
+  , id (0 + id (ord _)) :: Int
+  , id (0 + id (id _)) :: Int
+  , id (0 + id (id x)) :: Int
+  , id (0 + id (id 0)) :: Int
+  , id (0 + id (id (id _))) :: Int
+  , id (0 + id (abs _)) :: Int
+  , id (0 + id (negate _)) :: Int
+  , id (0 + id (head _)) :: Int
+  , id (0 + id (_ + _)) :: Int
+  , id (0 + abs _) :: Int
+  , id (0 + abs x) :: Int
+  , id (0 + abs 0) :: Int
+  , id (0 + abs (id _)) :: Int
+  , id (0 + negate _) :: Int
+  , id (0 + negate x) :: Int
+  , id (0 + negate 0) :: Int
+  , id (0 + negate (id _)) :: Int
+  , id (0 + head _) :: Int
+  , id (0 + head xs) :: Int
+  , id (0 + head []) :: Int
+  , id (0 + head (_:_)) :: Int
+  , id (0 + _ * _) :: Int
+  , id (0 + (_ + _)) :: Int
+  , id (0 + (_ + x)) :: Int
+  , id (0 + (_ + 0)) :: Int
+  , id (0 + (_ + id _)) :: Int
+  , id (0 + (x + _)) :: Int
+  , id (0 + (0 + _)) :: Int
+  , id (0 + (id _ + _)) :: Int
+  , id (1 + _) :: Int
+  , id (1 + x) :: Int
+  , id (1 + y) :: Int
+  , id (1 + 0) :: Int
+  , id (1 + 1) :: Int
+  , id (1 + ord _) :: Int
+  , id (1 + id _) :: Int
+  , id (1 + id x) :: Int
+  , id (1 + id 0) :: Int
+  , id (1 + id (id _)) :: Int
+  , id (1 + abs _) :: Int
+  , id (1 + negate _) :: Int
+  , id (1 + head _) :: Int
+  , id (1 + (_ + _)) :: Int
+  , id (2 + _) :: Int
+  , id ((-1) + _) :: Int
+  , id ((-1) + x) :: Int
+  , id ((-1) + 0) :: Int
+  , id ((-1) + id _) :: Int
+  , id (f _ + _) :: Int
+  , id (f _ + x) :: Int
+  , id (f _ + 0) :: Int
+  , id (f _ + id _) :: Int
+  , id (f x + _) :: Int
+  , id (f 0 + _) :: Int
+  , id (f (id _) + _) :: Int
+  , id (g _ + _) :: Int
+  , id (ord _ + _) :: Int
+  , id (ord _ + x) :: Int
+  , id (ord _ + y) :: Int
+  , id (ord _ + 0) :: Int
+  , id (ord _ + 1) :: Int
+  , id (ord _ + ord _) :: Int
+  , id (ord _ + id _) :: Int
+  , id (ord _ + id x) :: Int
+  , id (ord _ + id 0) :: Int
+  , id (ord _ + id (id _)) :: Int
+  , id (ord _ + abs _) :: Int
+  , id (ord _ + negate _) :: Int
+  , id (ord _ + head _) :: Int
+  , id (ord _ + (_ + _)) :: Int
+  , id (ord c + _) :: Int
+  , id (ord c + x) :: Int
+  , id (ord c + 0) :: Int
+  , id (ord c + id _) :: Int
+  , id (ord d + _) :: Int
+  , id (ord ' ' + _) :: Int
+  , id (ord 'a' + _) :: Int
+  , id (ord 'a' + x) :: Int
+  , id (ord 'a' + 0) :: Int
+  , id (ord 'a' + id _) :: Int
+  , id (id _ + _) :: Int
+  , id (id _ + x) :: Int
+  , id (id _ + y) :: Int
+  , id (id _ + z) :: Int
+  , id (id _ + 0) :: Int
+  , id (id _ + 1) :: Int
+  , id (id _ + (-1)) :: Int
+  , id (id _ + f _) :: Int
+  , id (id _ + ord _) :: Int
+  , id (id _ + ord c) :: Int
+  , id (id _ + ord 'a') :: Int
+  , id (id _ + id _) :: Int
+  , id (id _ + id x) :: Int
+  , id (id _ + id y) :: Int
+  , id (id _ + id 0) :: Int
+  , id (id _ + id 1) :: Int
+  , id (id _ + id (ord _)) :: Int
+  , id (id _ + id (id _)) :: Int
+  , id (id _ + id (id x)) :: Int
+  , id (id _ + id (id 0)) :: Int
+  , id (id _ + id (id (id _))) :: Int
+  , id (id _ + id (abs _)) :: Int
+  , id (id _ + id (negate _)) :: Int
+  , id (id _ + id (head _)) :: Int
+  , id (id _ + id (_ + _)) :: Int
+  , id (id _ + abs _) :: Int
+  , id (id _ + abs x) :: Int
+  , id (id _ + abs 0) :: Int
+  , id (id _ + abs (id _)) :: Int
+  , id (id _ + negate _) :: Int
+  , id (id _ + negate x) :: Int
+  , id (id _ + negate 0) :: Int
+  , id (id _ + negate (id _)) :: Int
+  , id (id _ + head _) :: Int
+  , id (id _ + head xs) :: Int
+  , id (id _ + head []) :: Int
+  , id (id _ + head (_:_)) :: Int
+  , id (id _ + _ * _) :: Int
+  , id (id _ + (_ + _)) :: Int
+  , id (id _ + (_ + x)) :: Int
+  , id (id _ + (_ + 0)) :: Int
+  , id (id _ + (_ + id _)) :: Int
+  , id (id _ + (x + _)) :: Int
+  , id (id _ + (0 + _)) :: Int
+  , id (id _ + (id _ + _)) :: Int
+  , id (id x + _) :: Int
+  , id (id x + x) :: Int
+  , id (id x + y) :: Int
+  , id (id x + 0) :: Int
+  , id (id x + 1) :: Int
+  , id (id x + ord _) :: Int
+  , id (id x + id _) :: Int
+  , id (id x + id x) :: Int
+  , id (id x + id 0) :: Int
+  , id (id x + id (id _)) :: Int
+  , id (id x + abs _) :: Int
+  , id (id x + negate _) :: Int
+  , id (id x + head _) :: Int
+  , id (id x + (_ + _)) :: Int
+  , id (id y + _) :: Int
+  , id (id y + x) :: Int
+  , id (id y + 0) :: Int
+  , id (id y + id _) :: Int
+  , id (id z + _) :: Int
+  , id (id 0 + _) :: Int
+  , id (id 0 + x) :: Int
+  , id (id 0 + y) :: Int
+  , id (id 0 + 0) :: Int
+  , id (id 0 + 1) :: Int
+  , id (id 0 + ord _) :: Int
+  , id (id 0 + id _) :: Int
+  , id (id 0 + id x) :: Int
+  , id (id 0 + id 0) :: Int
+  , id (id 0 + id (id _)) :: Int
+  , id (id 0 + abs _) :: Int
+  , id (id 0 + negate _) :: Int
+  , id (id 0 + head _) :: Int
+  , id (id 0 + (_ + _)) :: Int
+  , id (id 1 + _) :: Int
+  , id (id 1 + x) :: Int
+  , id (id 1 + 0) :: Int
+  , id (id 1 + id _) :: Int
+  , id (id (-1) + _) :: Int
+  , id (id (f _) + _) :: Int
+  , id (id (ord _) + _) :: Int
+  , id (id (ord _) + x) :: Int
+  , id (id (ord _) + 0) :: Int
+  , id (id (ord _) + id _) :: Int
+  , id (id (ord c) + _) :: Int
+  , id (id (ord 'a') + _) :: Int
+  , id (id (id _) + _) :: Int
+  , id (id (id _) + x) :: Int
+  , id (id (id _) + y) :: Int
+  , id (id (id _) + 0) :: Int
+  , id (id (id _) + 1) :: Int
+  , id (id (id _) + ord _) :: Int
+  , id (id (id _) + id _) :: Int
+  , id (id (id _) + id x) :: Int
+  , id (id (id _) + id 0) :: Int
+  , id (id (id _) + id (id _)) :: Int
+  , id (id (id _) + abs _) :: Int
+  , id (id (id _) + negate _) :: Int
+  , id (id (id _) + head _) :: Int
+  , id (id (id _) + (_ + _)) :: Int
+  , id (id (id x) + _) :: Int
+  , id (id (id x) + x) :: Int
+  , id (id (id x) + 0) :: Int
+  , id (id (id x) + id _) :: Int
+  , id (id (id y) + _) :: Int
+  , id (id (id 0) + _) :: Int
+  , id (id (id 0) + x) :: Int
+  , id (id (id 0) + 0) :: Int
+  , id (id (id 0) + id _) :: Int
+  , id (id (id 1) + _) :: Int
+  , id (id (id (ord _)) + _) :: Int
+  , id (id (id (id _)) + _) :: Int
+  , id (id (id (id _)) + x) :: Int
+  , id (id (id (id _)) + 0) :: Int
+  , id (id (id (id _)) + id _) :: Int
+  , id (id (id (id x)) + _) :: Int
+  , id (id (id (id 0)) + _) :: Int
+  , id (id (id (id (id _))) + _) :: Int
+  , id (id (id (abs _)) + _) :: Int
+  , id (id (id (negate _)) + _) :: Int
+  , id (id (id (head _)) + _) :: Int
+  , id (id (id (_ + _)) + _) :: Int
+  , id (id (abs _) + _) :: Int
+  , id (id (abs _) + x) :: Int
+  , id (id (abs _) + 0) :: Int
+  , id (id (abs _) + id _) :: Int
+  , id (id (abs x) + _) :: Int
+  , id (id (abs 0) + _) :: Int
+  , id (id (abs (id _)) + _) :: Int
+  , id (id (negate _) + _) :: Int
+  , id (id (negate _) + x) :: Int
+  , id (id (negate _) + 0) :: Int
+  , id (id (negate _) + id _) :: Int
+  , id (id (negate x) + _) :: Int
+  , id (id (negate 0) + _) :: Int
+  , id (id (negate (id _)) + _) :: Int
+  , id (id (head _) + _) :: Int
+  , id (id (head _) + x) :: Int
+  , id (id (head _) + 0) :: Int
+  , id (id (head _) + id _) :: Int
+  , id (id (head xs) + _) :: Int
+  , id (id (head []) + _) :: Int
+  , id (id (head (_:_)) + _) :: Int
+  , id (id (_ * _) + _) :: Int
+  , id (id (_ + _) + _) :: Int
+  , id (id (_ + _) + x) :: Int
+  , id (id (_ + _) + 0) :: Int
+  , id (id (_ + _) + id _) :: Int
+  , id (id (_ + x) + _) :: Int
+  , id (id (_ + 0) + _) :: Int
+  , id (id (_ + id _) + _) :: Int
+  , id (id (x + _) + _) :: Int
+  , id (id (0 + _) + _) :: Int
+  , id (id (id _ + _) + _) :: Int
+  , id (abs _ + _) :: Int
+  , id (abs _ + x) :: Int
+  , id (abs _ + y) :: Int
+  , id (abs _ + 0) :: Int
+  , id (abs _ + 1) :: Int
+  , id (abs _ + ord _) :: Int
+  , id (abs _ + id _) :: Int
+  , id (abs _ + id x) :: Int
+  , id (abs _ + id 0) :: Int
+  , id (abs _ + id (id _)) :: Int
+  , id (abs _ + abs _) :: Int
+  , id (abs _ + negate _) :: Int
+  , id (abs _ + head _) :: Int
+  , id (abs _ + (_ + _)) :: Int
+  , id (abs x + _) :: Int
+  , id (abs x + x) :: Int
+  , id (abs x + 0) :: Int
+  , id (abs x + id _) :: Int
+  , id (abs y + _) :: Int
+  , id (abs 0 + _) :: Int
+  , id (abs 0 + x) :: Int
+  , id (abs 0 + 0) :: Int
+  , id (abs 0 + id _) :: Int
+  , id (abs 1 + _) :: Int
+  , id (abs (ord _) + _) :: Int
+  , id (abs (id _) + _) :: Int
+  , id (abs (id _) + x) :: Int
+  , id (abs (id _) + 0) :: Int
+  , id (abs (id _) + id _) :: Int
+  , id (abs (id x) + _) :: Int
+  , id (abs (id 0) + _) :: Int
+  , id (abs (id (id _)) + _) :: Int
+  , id (abs (abs _) + _) :: Int
+  , id (abs (negate _) + _) :: Int
+  , id (abs (head _) + _) :: Int
+  , id (abs (_ + _) + _) :: Int
+  , id (negate _ + _) :: Int
+  , id (negate _ + x) :: Int
+  , id (negate _ + y) :: Int
+  , id (negate _ + 0) :: Int
+  , id (negate _ + 1) :: Int
+  , id (negate _ + ord _) :: Int
+  , id (negate _ + id _) :: Int
+  , id (negate _ + id x) :: Int
+  , id (negate _ + id 0) :: Int
+  , id (negate _ + id (id _)) :: Int
+  , id (negate _ + abs _) :: Int
+  , id (negate _ + negate _) :: Int
+  , id (negate _ + head _) :: Int
+  , id (negate _ + (_ + _)) :: Int
+  , id (negate x + _) :: Int
+  , id (negate x + x) :: Int
+  , id (negate x + 0) :: Int
+  , id (negate x + id _) :: Int
+  , id (negate y + _) :: Int
+  , id (negate 0 + _) :: Int
+  , id (negate 0 + x) :: Int
+  , id (negate 0 + 0) :: Int
+  , id (negate 0 + id _) :: Int
+  , id (negate 1 + _) :: Int
+  , id (negate (ord _) + _) :: Int
+  , id (negate (id _) + _) :: Int
+  , id (negate (id _) + x) :: Int
+  , id (negate (id _) + 0) :: Int
+  , id (negate (id _) + id _) :: Int
+  , id (negate (id x) + _) :: Int
+  , id (negate (id 0) + _) :: Int
+  , id (negate (id (id _)) + _) :: Int
+  , id (negate (abs _) + _) :: Int
+  , id (negate (negate _) + _) :: Int
+  , id (negate (head _) + _) :: Int
+  , id (negate (_ + _) + _) :: Int
+  , id (head _ + _) :: Int
+  , id (head _ + x) :: Int
+  , id (head _ + y) :: Int
+  , id (head _ + 0) :: Int
+  , id (head _ + 1) :: Int
+  , id (head _ + ord _) :: Int
+  , id (head _ + id _) :: Int
+  , id (head _ + id x) :: Int
+  , id (head _ + id 0) :: Int
+  , id (head _ + id (id _)) :: Int
+  , id (head _ + abs _) :: Int
+  , id (head _ + negate _) :: Int
+  , id (head _ + head _) :: Int
+  , id (head _ + (_ + _)) :: Int
+  , id (head xs + _) :: Int
+  , id (head xs + x) :: Int
+  , id (head xs + 0) :: Int
+  , id (head xs + id _) :: Int
+  , id (head ys + _) :: Int
+  , id (head [] + _) :: Int
+  , id (head [] + x) :: Int
+  , id (head [] + 0) :: Int
+  , id (head [] + id _) :: Int
+  , id (head [0] + _) :: Int
+  , id (head (tail _) + _) :: Int
+  , id (head (_:_) + _) :: Int
+  , id (head (_:_) + x) :: Int
+  , id (head (_:_) + 0) :: Int
+  , id (head (_:_) + id _) :: Int
+  , id (head (_:xs) + _) :: Int
+  , id (head [_] + _) :: Int
+  , id (head (_:_:_) + _) :: Int
+  , id (head (x:_) + _) :: Int
+  , id (head (0:_) + _) :: Int
+  , id (head (id _:_) + _) :: Int
+  , id (head (_ ++ _) + _) :: Int
+  , id (_ * _ + _) :: Int
+  , id (_ * _ + x) :: Int
+  , id (_ * _ + 0) :: Int
+  , id (_ * _ + id _) :: Int
+  , id (_ * x + _) :: Int
+  , id (_ * 0 + _) :: Int
+  , id (_ * id _ + _) :: Int
+  , id (x * _ + _) :: Int
+  , id (0 * _ + _) :: Int
+  , id (id _ * _ + _) :: Int
+  , id ((_ + _) + _) :: Int
+  , id ((_ + _) + x) :: Int
+  , id ((_ + _) + y) :: Int
+  , id ((_ + _) + 0) :: Int
+  , id ((_ + _) + 1) :: Int
+  , id ((_ + _) + ord _) :: Int
+  , id ((_ + _) + id _) :: Int
+  , id ((_ + _) + id x) :: Int
+  , id ((_ + _) + id 0) :: Int
+  , id ((_ + _) + id (id _)) :: Int
+  , id ((_ + _) + abs _) :: Int
+  , id ((_ + _) + negate _) :: Int
+  , id ((_ + _) + head _) :: Int
+  , id ((_ + _) + (_ + _)) :: Int
+  , id ((_ + x) + _) :: Int
+  , id ((_ + x) + x) :: Int
+  , id ((_ + x) + 0) :: Int
+  , id ((_ + x) + id _) :: Int
+  , id ((_ + y) + _) :: Int
+  , id ((_ + 0) + _) :: Int
+  , id ((_ + 0) + x) :: Int
+  , id ((_ + 0) + 0) :: Int
+  , id ((_ + 0) + id _) :: Int
+  , id ((_ + 1) + _) :: Int
+  , id ((_ + ord _) + _) :: Int
+  , id ((_ + id _) + _) :: Int
+  , id ((_ + id _) + x) :: Int
+  , id ((_ + id _) + 0) :: Int
+  , id ((_ + id _) + id _) :: Int
+  , id ((_ + id x) + _) :: Int
+  , id ((_ + id 0) + _) :: Int
+  , id ((_ + id (id _)) + _) :: Int
+  , id ((_ + abs _) + _) :: Int
+  , id ((_ + negate _) + _) :: Int
+  , id ((_ + head _) + _) :: Int
+  , id ((_ + (_ + _)) + _) :: Int
+  , id ((x + _) + _) :: Int
+  , id ((x + _) + x) :: Int
+  , id ((x + _) + 0) :: Int
+  , id ((x + _) + id _) :: Int
+  , id ((x + x) + _) :: Int
+  , id ((x + 0) + _) :: Int
+  , id ((x + id _) + _) :: Int
+  , id ((y + _) + _) :: Int
+  , id ((0 + _) + _) :: Int
+  , id ((0 + _) + x) :: Int
+  , id ((0 + _) + 0) :: Int
+  , id ((0 + _) + id _) :: Int
+  , id ((0 + x) + _) :: Int
+  , id ((0 + 0) + _) :: Int
+  , id ((0 + id _) + _) :: Int
+  , id ((1 + _) + _) :: Int
+  , id ((ord _ + _) + _) :: Int
+  , id ((id _ + _) + _) :: Int
+  , id ((id _ + _) + x) :: Int
+  , id ((id _ + _) + 0) :: Int
+  , id ((id _ + _) + id _) :: Int
+  , id ((id _ + x) + _) :: Int
+  , id ((id _ + 0) + _) :: Int
+  , id ((id _ + id _) + _) :: Int
+  , id ((id x + _) + _) :: Int
+  , id ((id 0 + _) + _) :: Int
+  , id ((id (id _) + _) + _) :: Int
+  , id ((abs _ + _) + _) :: Int
+  , id ((negate _ + _) + _) :: Int
+  , id ((head _ + _) + _) :: Int
+  , id (((_ + _) + _) + _) :: Int
+  , abs _ :: Int
+  , abs x :: Int
+  , abs y :: Int
+  , abs z :: Int
+  , abs x' :: Int
+  , abs 0 :: Int
+  , abs 1 :: Int
+  , abs 2 :: Int
+  , abs (-1) :: Int
+  , abs (f _) :: Int
+  , abs (f x) :: Int
+  , abs (f 0) :: Int
+  , abs (f (id _)) :: Int
+  , abs (g _) :: Int
+  , abs (ord _) :: Int
+  , abs (ord c) :: Int
+  , abs (ord d) :: Int
+  , abs (ord ' ') :: Int
+  , abs (ord 'a') :: Int
+  , abs (id _) :: Int
+  , abs (id x) :: Int
+  , abs (id y) :: Int
+  , abs (id z) :: Int
+  , abs (id 0) :: Int
+  , abs (id 1) :: Int
+  , abs (id (-1)) :: Int
+  , abs (id (f _)) :: Int
+  , abs (id (ord _)) :: Int
+  , abs (id (ord c)) :: Int
+  , abs (id (ord 'a')) :: Int
+  , abs (id (id _)) :: Int
+  , abs (id (id x)) :: Int
+  , abs (id (id y)) :: Int
+  , abs (id (id 0)) :: Int
+  , abs (id (id 1)) :: Int
+  , abs (id (id (ord _))) :: Int
+  , abs (id (id (id _))) :: Int
+  , abs (id (id (id x))) :: Int
+  , abs (id (id (id 0))) :: Int
+  , abs (id (id (id (id _)))) :: Int
+  , abs (id (id (abs _))) :: Int
+  , abs (id (id (negate _))) :: Int
+  , abs (id (id (head _))) :: Int
+  , abs (id (id (_ + _))) :: Int
+  , abs (id (abs _)) :: Int
+  , abs (id (abs x)) :: Int
+  , abs (id (abs 0)) :: Int
+  , abs (id (abs (id _))) :: Int
+  , abs (id (negate _)) :: Int
+  , abs (id (negate x)) :: Int
+  , abs (id (negate 0)) :: Int
+  , abs (id (negate (id _))) :: Int
+  , abs (id (head _)) :: Int
+  , abs (id (head xs)) :: Int
+  , abs (id (head [])) :: Int
+  , abs (id (head (_:_))) :: Int
+  , abs (id (_ * _)) :: Int
+  , abs (id (_ + _)) :: Int
+  , abs (id (_ + x)) :: Int
+  , abs (id (_ + 0)) :: Int
+  , abs (id (_ + id _)) :: Int
+  , abs (id (x + _)) :: Int
+  , abs (id (0 + _)) :: Int
+  , abs (id (id _ + _)) :: Int
+  , abs (abs _) :: Int
+  , abs (abs x) :: Int
+  , abs (abs y) :: Int
+  , abs (abs 0) :: Int
+  , abs (abs 1) :: Int
+  , abs (abs (ord _)) :: Int
+  , abs (abs (id _)) :: Int
+  , abs (abs (id x)) :: Int
+  , abs (abs (id 0)) :: Int
+  , abs (abs (id (id _))) :: Int
+  , abs (abs (abs _)) :: Int
+  , abs (abs (negate _)) :: Int
+  , abs (abs (head _)) :: Int
+  , abs (abs (_ + _)) :: Int
+  , abs (negate _) :: Int
+  , abs (negate x) :: Int
+  , abs (negate y) :: Int
+  , abs (negate 0) :: Int
+  , abs (negate 1) :: Int
+  , abs (negate (ord _)) :: Int
+  , abs (negate (id _)) :: Int
+  , abs (negate (id x)) :: Int
+  , abs (negate (id 0)) :: Int
+  , abs (negate (id (id _))) :: Int
+  , abs (negate (abs _)) :: Int
+  , abs (negate (negate _)) :: Int
+  , abs (negate (head _)) :: Int
+  , abs (negate (_ + _)) :: Int
+  , abs (head _) :: Int
+  , abs (head xs) :: Int
+  , abs (head ys) :: Int
+  , abs (head []) :: Int
+  , abs (head [0]) :: Int
+  , abs (head (tail _)) :: Int
+  , abs (head (_:_)) :: Int
+  , abs (head (_:xs)) :: Int
+  , abs (head [_]) :: Int
+  , abs (head (_:_:_)) :: Int
+  , abs (head (x:_)) :: Int
+  , abs (head (0:_)) :: Int
+  , abs (head (id _:_)) :: Int
+  , abs (head (_ ++ _)) :: Int
+  , abs (_ * _) :: Int
+  , abs (_ * x) :: Int
+  , abs (_ * 0) :: Int
+  , abs (_ * id _) :: Int
+  , abs (x * _) :: Int
+  , abs (0 * _) :: Int
+  , abs (id _ * _) :: Int
+  , abs (_ + _) :: Int
+  , abs (_ + x) :: Int
+  , abs (_ + y) :: Int
+  , abs (_ + 0) :: Int
+  , abs (_ + 1) :: Int
+  , abs (_ + ord _) :: Int
+  , abs (_ + id _) :: Int
+  , abs (_ + id x) :: Int
+  , abs (_ + id 0) :: Int
+  , abs (_ + id (id _)) :: Int
+  , abs (_ + abs _) :: Int
+  , abs (_ + negate _) :: Int
+  , abs (_ + head _) :: Int
+  , abs (_ + (_ + _)) :: Int
+  , abs (x + _) :: Int
+  , abs (x + x) :: Int
+  , abs (x + 0) :: Int
+  , abs (x + id _) :: Int
+  , abs (y + _) :: Int
+  , abs (0 + _) :: Int
+  , abs (0 + x) :: Int
+  , abs (0 + 0) :: Int
+  , abs (0 + id _) :: Int
+  , abs (1 + _) :: Int
+  , abs (ord _ + _) :: Int
+  , abs (id _ + _) :: Int
+  , abs (id _ + x) :: Int
+  , abs (id _ + 0) :: Int
+  , abs (id _ + id _) :: Int
+  , abs (id x + _) :: Int
+  , abs (id 0 + _) :: Int
+  , abs (id (id _) + _) :: Int
+  , abs (abs _ + _) :: Int
+  , abs (negate _ + _) :: Int
+  , abs (head _ + _) :: Int
+  , abs ((_ + _) + _) :: Int
+  , negate _ :: Int
+  , negate x :: Int
+  , negate y :: Int
+  , negate z :: Int
+  , negate x' :: Int
+  , negate 0 :: Int
+  , negate 1 :: Int
+  , negate 2 :: Int
+  , negate (-1) :: Int
+  , negate (f _) :: Int
+  , negate (f x) :: Int
+  , negate (f 0) :: Int
+  , negate (f (id _)) :: Int
+  , negate (g _) :: Int
+  , negate (ord _) :: Int
+  , negate (ord c) :: Int
+  , negate (ord d) :: Int
+  , negate (ord ' ') :: Int
+  , negate (ord 'a') :: Int
+  , negate (id _) :: Int
+  , negate (id x) :: Int
+  , negate (id y) :: Int
+  , negate (id z) :: Int
+  , negate (id 0) :: Int
+  , negate (id 1) :: Int
+  , negate (id (-1)) :: Int
+  , negate (id (f _)) :: Int
+  , negate (id (ord _)) :: Int
+  , negate (id (ord c)) :: Int
+  , negate (id (ord 'a')) :: Int
+  , negate (id (id _)) :: Int
+  , negate (id (id x)) :: Int
+  , negate (id (id y)) :: Int
+  , negate (id (id 0)) :: Int
+  , negate (id (id 1)) :: Int
+  , negate (id (id (ord _))) :: Int
+  , negate (id (id (id _))) :: Int
+  , negate (id (id (id x))) :: Int
+  , negate (id (id (id 0))) :: Int
+  , negate (id (id (id (id _)))) :: Int
+  , negate (id (id (abs _))) :: Int
+  , negate (id (id (negate _))) :: Int
+  , negate (id (id (head _))) :: Int
+  , negate (id (id (_ + _))) :: Int
+  , negate (id (abs _)) :: Int
+  , negate (id (abs x)) :: Int
+  , negate (id (abs 0)) :: Int
+  , negate (id (abs (id _))) :: Int
+  , negate (id (negate _)) :: Int
+  , negate (id (negate x)) :: Int
+  , negate (id (negate 0)) :: Int
+  , negate (id (negate (id _))) :: Int
+  , negate (id (head _)) :: Int
+  , negate (id (head xs)) :: Int
+  , negate (id (head [])) :: Int
+  , negate (id (head (_:_))) :: Int
+  , negate (id (_ * _)) :: Int
+  , negate (id (_ + _)) :: Int
+  , negate (id (_ + x)) :: Int
+  , negate (id (_ + 0)) :: Int
+  , negate (id (_ + id _)) :: Int
+  , negate (id (x + _)) :: Int
+  , negate (id (0 + _)) :: Int
+  , negate (id (id _ + _)) :: Int
+  , negate (abs _) :: Int
+  , negate (abs x) :: Int
+  , negate (abs y) :: Int
+  , negate (abs 0) :: Int
+  , negate (abs 1) :: Int
+  , negate (abs (ord _)) :: Int
+  , negate (abs (id _)) :: Int
+  , negate (abs (id x)) :: Int
+  , negate (abs (id 0)) :: Int
+  , negate (abs (id (id _))) :: Int
+  , negate (abs (abs _)) :: Int
+  , negate (abs (negate _)) :: Int
+  , negate (abs (head _)) :: Int
+  , negate (abs (_ + _)) :: Int
+  , negate (negate _) :: Int
+  , negate (negate x) :: Int
+  , negate (negate y) :: Int
+  , negate (negate 0) :: Int
+  , negate (negate 1) :: Int
+  , negate (negate (ord _)) :: Int
+  , negate (negate (id _)) :: Int
+  , negate (negate (id x)) :: Int
+  , negate (negate (id 0)) :: Int
+  , negate (negate (id (id _))) :: Int
+  , negate (negate (abs _)) :: Int
+  , negate (negate (negate _)) :: Int
+  , negate (negate (head _)) :: Int
+  , negate (negate (_ + _)) :: Int
+  , negate (head _) :: Int
+  , negate (head xs) :: Int
+  , negate (head ys) :: Int
+  , negate (head []) :: Int
+  , negate (head [0]) :: Int
+  , negate (head (tail _)) :: Int
+  , negate (head (_:_)) :: Int
+  , negate (head (_:xs)) :: Int
+  , negate (head [_]) :: Int
+  , negate (head (_:_:_)) :: Int
+  , negate (head (x:_)) :: Int
+  , negate (head (0:_)) :: Int
+  , negate (head (id _:_)) :: Int
+  , negate (head (_ ++ _)) :: Int
+  , negate (_ * _) :: Int
+  , negate (_ * x) :: Int
+  , negate (_ * 0) :: Int
+  , negate (_ * id _) :: Int
+  , negate (x * _) :: Int
+  , negate (0 * _) :: Int
+  , negate (id _ * _) :: Int
+  , negate (_ + _) :: Int
+  , negate (_ + x) :: Int
+  , negate (_ + y) :: Int
+  , negate (_ + 0) :: Int
+  , negate (_ + 1) :: Int
+  , negate (_ + ord _) :: Int
+  , negate (_ + id _) :: Int
+  , negate (_ + id x) :: Int
+  , negate (_ + id 0) :: Int
+  , negate (_ + id (id _)) :: Int
+  , negate (_ + abs _) :: Int
+  , negate (_ + negate _) :: Int
+  , negate (_ + head _) :: Int
+  , negate (_ + (_ + _)) :: Int
+  , negate (x + _) :: Int
+  , negate (x + x) :: Int
+  , negate (x + 0) :: Int
+  , negate (x + id _) :: Int
+  , negate (y + _) :: Int
+  , negate (0 + _) :: Int
+  , negate (0 + x) :: Int
+  , negate (0 + 0) :: Int
+  , negate (0 + id _) :: Int
+  , negate (1 + _) :: Int
+  , negate (ord _ + _) :: Int
+  , negate (id _ + _) :: Int
+  , negate (id _ + x) :: Int
+  , negate (id _ + 0) :: Int
+  , negate (id _ + id _) :: Int
+  , negate (id x + _) :: Int
+  , negate (id 0 + _) :: Int
+  , negate (id (id _) + _) :: Int
+  , negate (abs _ + _) :: Int
+  , negate (negate _ + _) :: Int
+  , negate (head _ + _) :: Int
+  , negate ((_ + _) + _) :: Int
+  , head _ :: Int
+  , head xs :: Int
+  , head ys :: Int
+  , head zs :: Int
+  , head xs' :: Int
+  , head [] :: Int
+  , head [0] :: Int
+  , head [1] :: Int
+  , head [-1] :: Int
+  , head [0,0] :: Int
+  , head [0,1] :: Int
+  , head [1,0] :: Int
+  , head [0,0,0] :: Int
+  , head (sort _) :: Int
+  , head (sort xs) :: Int
+  , head (sort []) :: Int
+  , head (sort (_:_)) :: Int
+  , head (tail _) :: Int
+  , head (tail xs) :: Int
+  , head (tail ys) :: Int
+  , head (tail []) :: Int
+  , head (tail [0]) :: Int
+  , head (tail (tail _)) :: Int
+  , head (tail (_:_)) :: Int
+  , head (tail (_:xs)) :: Int
+  , head (tail [_]) :: Int
+  , head (tail (_:_:_)) :: Int
+  , head (tail (x:_)) :: Int
+  , head (tail (0:_)) :: Int
+  , head (tail (id _:_)) :: Int
+  , head (tail (_ ++ _)) :: Int
+  , head (_:_) :: Int
+  , head (_:xs) :: Int
+  , head (_:ys) :: Int
+  , head (_:zs) :: Int
+  , head [_] :: Int
+  , head (_:[0]) :: Int
+  , head (_:[1]) :: Int
+  , head (_:[0,0]) :: Int
+  , head (_:sort _) :: Int
+  , head (_:tail _) :: Int
+  , head (_:tail xs) :: Int
+  , head (_:tail []) :: Int
+  , head (_:tail (_:_)) :: Int
+  , head (_:_:_) :: Int
+  , head (_:_:xs) :: Int
+  , head (_:_:ys) :: Int
+  , head [_,_] :: Int
+  , head (_:_:[0]) :: Int
+  , head (_:_:tail _) :: Int
+  , head (_:_:_:_) :: Int
+  , head (_:_:_:xs) :: Int
+  , head [_,_,_] :: Int
+  , head (_:_:_:_:_) :: Int
+  , head (_:_:x:_) :: Int
+  , head (_:_:0:_) :: Int
+  , head (_:_:id _:_) :: Int
+  , head (_:_:(_ ++ _)) :: Int
+  , head (_:x:_) :: Int
+  , head (_:x:xs) :: Int
+  , head [_,x] :: Int
+  , head (_:x:_:_) :: Int
+  , head (_:y:_) :: Int
+  , head (_:0:_) :: Int
+  , head (_:0:xs) :: Int
+  , head [_,0] :: Int
+  , head (_:0:_:_) :: Int
+  , head (_:1:_) :: Int
+  , head (_:ord _:_) :: Int
+  , head (_:id _:_) :: Int
+  , head (_:id _:xs) :: Int
+  , head [_,id _] :: Int
+  , head (_:id _:_:_) :: Int
+  , head (_:id x:_) :: Int
+  , head (_:id 0:_) :: Int
+  , head (_:id (id _):_) :: Int
+  , head (_:abs _:_) :: Int
+  , head (_:negate _:_) :: Int
+  , head (_:head _:_) :: Int
+  , head (_:_ + _:_) :: Int
+  , head (_:insert _ _) :: Int
+  , head (_:(_ ++ _)) :: Int
+  , head (_:(_ ++ xs)) :: Int
+  , head (_:(_ ++ [])) :: Int
+  , head (_:(_ ++ (_:_))) :: Int
+  , head (_:(xs ++ _)) :: Int
+  , head (_:([] ++ _)) :: Int
+  , head (_:((_:_) ++ _)) :: Int
+  , head (x:_) :: Int
+  , head (x:xs) :: Int
+  , head (x:ys) :: Int
+  , head [x] :: Int
+  , head (x:[0]) :: Int
+  , head (x:tail _) :: Int
+  , head (x:_:_) :: Int
+  , head (x:_:xs) :: Int
+  , head [x,_] :: Int
+  , head (x:_:_:_) :: Int
+  , head (x:x:_) :: Int
+  , head (x:0:_) :: Int
+  , head (x:id _:_) :: Int
+  , head (x:(_ ++ _)) :: Int
+  , head (y:_) :: Int
+  , head (y:xs) :: Int
+  , head [y] :: Int
+  , head (y:_:_) :: Int
+  , head (z:_) :: Int
+  , head (0:_) :: Int
+  , head (0:xs) :: Int
+  , head (0:ys) :: Int
+  , head [0] :: Int
+  , head (0:[0]) :: Int
+  , head (0:tail _) :: Int
+  , head (0:_:_) :: Int
+  , head (0:_:xs) :: Int
+  , head [0,_] :: Int
+  , head (0:_:_:_) :: Int
+  , head (0:x:_) :: Int
+  , head (0:0:_) :: Int
+  , head (0:id _:_) :: Int
+  , head (0:(_ ++ _)) :: Int
+  , head (1:_) :: Int
+  , head (1:xs) :: Int
+  , head [1] :: Int
+  , head (1:_:_) :: Int
+  , head ((-1):_) :: Int
+  , head (f _:_) :: Int
+  , head (ord _:_) :: Int
+  , head (ord _:xs) :: Int
+  , head [ord _] :: Int
+  , head (ord _:_:_) :: Int
+  , head (ord c:_) :: Int
+  , head (ord 'a':_) :: Int
+  , head (id _:_) :: Int
+  , head (id _:xs) :: Int
+  , head (id _:ys) :: Int
+  , head [id _] :: Int
+  , head (id _:[0]) :: Int
+  , head (id _:tail _) :: Int
+  , head (id _:_:_) :: Int
+  , head (id _:_:xs) :: Int
+  , head [id _,_] :: Int
+  , head (id _:_:_:_) :: Int
+  , head (id _:x:_) :: Int
+  , head (id _:0:_) :: Int
+  , head (id _:id _:_) :: Int
+  , head (id _:(_ ++ _)) :: Int
+  , head (id x:_) :: Int
+  , head (id x:xs) :: Int
+  , head [id x] :: Int
+  , head (id x:_:_) :: Int
+  , head (id y:_) :: Int
+  , head (id 0:_) :: Int
+  , head (id 0:xs) :: Int
+  , head [id 0] :: Int
+  , head (id 0:_:_) :: Int
+  , head (id 1:_) :: Int
+  , head (id (ord _):_) :: Int
+  , head (id (id _):_) :: Int
+  , head (id (id _):xs) :: Int
+  , head [id (id _)] :: Int
+  , head (id (id _):_:_) :: Int
+  , head (id (id x):_) :: Int
+  , head (id (id 0):_) :: Int
+  , head (id (id (id _)):_) :: Int
+  , head (id (abs _):_) :: Int
+  , head (id (negate _):_) :: Int
+  , head (id (head _):_) :: Int
+  , head (id (_ + _):_) :: Int
+  , head (abs _:_) :: Int
+  , head (abs _:xs) :: Int
+  , head [abs _] :: Int
+  , head (abs _:_:_) :: Int
+  , head (abs x:_) :: Int
+  , head (abs 0:_) :: Int
+  , head (abs (id _):_) :: Int
+  , head (negate _:_) :: Int
+  , head (negate _:xs) :: Int
+  , head [negate _] :: Int
+  , head (negate _:_:_) :: Int
+  , head (negate x:_) :: Int
+  , head (negate 0:_) :: Int
+  , head (negate (id _):_) :: Int
+  , head (head _:_) :: Int
+  , head (head _:xs) :: Int
+  , head [head _] :: Int
+  , head (head _:_:_) :: Int
+  , head (head xs:_) :: Int
+  , head (head []:_) :: Int
+  , head (head (_:_):_) :: Int
+  , head (_ * _:_) :: Int
+  , head (_ + _:_) :: Int
+  , head (_ + _:xs) :: Int
+  , head [_ + _] :: Int
+  , head (_ + _:_:_) :: Int
+  , head (_ + x:_) :: Int
+  , head (_ + 0:_) :: Int
+  , head (_ + id _:_) :: Int
+  , head (x + _:_) :: Int
+  , head (0 + _:_) :: Int
+  , head (id _ + _:_) :: Int
+  , head (insert _ _) :: Int
+  , head (insert _ xs) :: Int
+  , head (insert _ []) :: Int
+  , head (insert _ (_:_)) :: Int
+  , head (insert x _) :: Int
+  , head (insert 0 _) :: Int
+  , head (insert (id _) _) :: Int
+  , head (_ ++ _) :: Int
+  , head (_ ++ xs) :: Int
+  , head (_ ++ ys) :: Int
+  , head (_ ++ []) :: Int
+  , head (_ ++ [0]) :: Int
+  , head (_ ++ tail _) :: Int
+  , head (_ ++ (_:_)) :: Int
+  , head (_ ++ (_:xs)) :: Int
+  , head (_ ++ [_]) :: Int
+  , head (_ ++ (_:_:_)) :: Int
+  , head (_ ++ (x:_)) :: Int
+  , head (_ ++ (0:_)) :: Int
+  , head (_ ++ (id _:_)) :: Int
+  , head (_ ++ (_ ++ _)) :: Int
+  , head (xs ++ _) :: Int
+  , head (xs ++ xs) :: Int
+  , head (xs ++ []) :: Int
+  , head (xs ++ (_:_)) :: Int
+  , head (ys ++ _) :: Int
+  , head ([] ++ _) :: Int
+  , head ([] ++ xs) :: Int
+  , head ([] ++ []) :: Int
+  , head ([] ++ (_:_)) :: Int
+  , head ([0] ++ _) :: Int
+  , head (tail _ ++ _) :: Int
+  , head ((_:_) ++ _) :: Int
+  , head ((_:_) ++ xs) :: Int
+  , head ((_:_) ++ []) :: Int
+  , head ((_:_) ++ (_:_)) :: Int
+  , head ((_:xs) ++ _) :: Int
+  , head ([_] ++ _) :: Int
+  , head ((_:_:_) ++ _) :: Int
+  , head ((x:_) ++ _) :: Int
+  , head ((0:_) ++ _) :: Int
+  , head ((id _:_) ++ _) :: Int
+  , head ((_ ++ _) ++ _) :: Int
+  , sort _ :: [Int]
+  , sort xs :: [Int]
+  , sort ys :: [Int]
+  , sort [] :: [Int]
+  , sort [0] :: [Int]
+  , sort (tail _) :: [Int]
+  , sort (_:_) :: [Int]
+  , sort (_:xs) :: [Int]
+  , sort [_] :: [Int]
+  , sort (_:_:_) :: [Int]
+  , sort (x:_) :: [Int]
+  , sort (0:_) :: [Int]
+  , sort (id _:_) :: [Int]
+  , sort (_ ++ _) :: [Int]
+  , tail _ :: [Int]
+  , tail xs :: [Int]
+  , tail ys :: [Int]
+  , tail zs :: [Int]
+  , tail [] :: [Int]
+  , tail [0] :: [Int]
+  , tail [1] :: [Int]
+  , tail [0,0] :: [Int]
+  , tail (sort _) :: [Int]
+  , tail (tail _) :: [Int]
+  , tail (tail xs) :: [Int]
+  , tail (tail []) :: [Int]
+  , tail (tail (_:_)) :: [Int]
+  , tail (_:_) :: [Int]
+  , tail (_:xs) :: [Int]
+  , tail (_:ys) :: [Int]
+  , tail [_] :: [Int]
+  , tail (_:[0]) :: [Int]
+  , tail (_:tail _) :: [Int]
+  , tail (_:_:_) :: [Int]
+  , tail (_:_:xs) :: [Int]
+  , tail [_,_] :: [Int]
+  , tail (_:_:_:_) :: [Int]
+  , tail (_:x:_) :: [Int]
+  , tail (_:0:_) :: [Int]
+  , tail (_:id _:_) :: [Int]
+  , tail (_:(_ ++ _)) :: [Int]
+  , tail (x:_) :: [Int]
+  , tail (x:xs) :: [Int]
+  , tail [x] :: [Int]
+  , tail (x:_:_) :: [Int]
+  , tail (y:_) :: [Int]
+  , tail (0:_) :: [Int]
+  , tail (0:xs) :: [Int]
+  , tail [0] :: [Int]
+  , tail (0:_:_) :: [Int]
+  , tail (1:_) :: [Int]
+  , tail (ord _:_) :: [Int]
+  , tail (id _:_) :: [Int]
+  , tail (id _:xs) :: [Int]
+  , tail [id _] :: [Int]
+  , tail (id _:_:_) :: [Int]
+  , tail (id x:_) :: [Int]
+  , tail (id 0:_) :: [Int]
+  , tail (id (id _):_) :: [Int]
+  , tail (abs _:_) :: [Int]
+  , tail (negate _:_) :: [Int]
+  , tail (head _:_) :: [Int]
+  , tail (_ + _:_) :: [Int]
+  , tail (insert _ _) :: [Int]
+  , tail (_ ++ _) :: [Int]
+  , tail (_ ++ xs) :: [Int]
+  , tail (_ ++ []) :: [Int]
+  , tail (_ ++ (_:_)) :: [Int]
+  , tail (xs ++ _) :: [Int]
+  , tail ([] ++ _) :: [Int]
+  , tail ((_:_) ++ _) :: [Int]
+  , (_ &&) :: Bool -> Bool
+  , (p &&) :: Bool -> Bool
+  , (False &&) :: Bool -> Bool
+  , (True &&) :: Bool -> Bool
+  , (not _ &&) :: Bool -> Bool
+  , (_ ||) :: Bool -> Bool
+  , (p ||) :: Bool -> Bool
+  , (q ||) :: Bool -> Bool
+  , (False ||) :: Bool -> Bool
+  , (True ||) :: Bool -> Bool
+  , (not _ ||) :: Bool -> Bool
+  , (not p ||) :: Bool -> Bool
+  , (not False ||) :: Bool -> Bool
+  , (not True ||) :: Bool -> Bool
+  , (not (not _) ||) :: Bool -> Bool
+  , ((_ || _) ||) :: Bool -> Bool
+  , (_ ==>) :: Bool -> Bool
+  , (_ *) :: Int -> Int
+  , (x *) :: Int -> Int
+  , (y *) :: Int -> Int
+  , (0 *) :: Int -> Int
+  , (1 *) :: Int -> Int
+  , (ord _ *) :: Int -> Int
+  , (id _ *) :: Int -> Int
+  , (id x *) :: Int -> Int
+  , (id 0 *) :: Int -> Int
+  , (id (id _) *) :: Int -> Int
+  , (abs _ *) :: Int -> Int
+  , (negate _ *) :: Int -> Int
+  , (head _ *) :: Int -> Int
+  , ((_ + _) *) :: Int -> Int
+  , (_ +) :: Int -> Int
+  , (x +) :: Int -> Int
+  , (y +) :: Int -> Int
+  , (z +) :: Int -> Int
+  , (0 +) :: Int -> Int
+  , (1 +) :: Int -> Int
+  , ((-1) +) :: Int -> Int
+  , (f _ +) :: Int -> Int
+  , (ord _ +) :: Int -> Int
+  , (ord c +) :: Int -> Int
+  , (ord 'a' +) :: Int -> Int
+  , (id _ +) :: Int -> Int
+  , (id x +) :: Int -> Int
+  , (id y +) :: Int -> Int
+  , (id 0 +) :: Int -> Int
+  , (id 1 +) :: Int -> Int
+  , (id (ord _) +) :: Int -> Int
+  , (id (id _) +) :: Int -> Int
+  , (id (id x) +) :: Int -> Int
+  , (id (id 0) +) :: Int -> Int
+  , (id (id (id _)) +) :: Int -> Int
+  , (id (abs _) +) :: Int -> Int
+  , (id (negate _) +) :: Int -> Int
+  , (id (head _) +) :: Int -> Int
+  , (id (_ + _) +) :: Int -> Int
+  , (abs _ +) :: Int -> Int
+  , (abs x +) :: Int -> Int
+  , (abs 0 +) :: Int -> Int
+  , (abs (id _) +) :: Int -> Int
+  , (negate _ +) :: Int -> Int
+  , (negate x +) :: Int -> Int
+  , (negate 0 +) :: Int -> Int
+  , (negate (id _) +) :: Int -> Int
+  , (head _ +) :: Int -> Int
+  , (head xs +) :: Int -> Int
+  , (head [] +) :: Int -> Int
+  , (head (_:_) +) :: Int -> Int
+  , (_ * _ +) :: Int -> Int
+  , ((_ + _) +) :: Int -> Int
+  , ((_ + x) +) :: Int -> Int
+  , ((_ + 0) +) :: Int -> Int
+  , ((_ + id _) +) :: Int -> Int
+  , ((x + _) +) :: Int -> Int
+  , ((0 + _) +) :: Int -> Int
+  , ((id _ + _) +) :: Int -> Int
+  , _ < _ :: Bool
+  , _ && _ :: Bool
+  , _ && p :: Bool
+  , _ && q :: Bool
+  , _ && False :: Bool
+  , _ && True :: Bool
+  , _ && not _ :: Bool
+  , _ && not p :: Bool
+  , _ && not False :: Bool
+  , _ && not True :: Bool
+  , _ && not (not _) :: Bool
+  , _ && (_ || _) :: Bool
+  , p && _ :: Bool
+  , p && p :: Bool
+  , p && False :: Bool
+  , p && True :: Bool
+  , p && not _ :: Bool
+  , q && _ :: Bool
+  , False && _ :: Bool
+  , False && p :: Bool
+  , False && False :: Bool
+  , False && True :: Bool
+  , False && not _ :: Bool
+  , True && _ :: Bool
+  , True && p :: Bool
+  , True && False :: Bool
+  , True && True :: Bool
+  , True && not _ :: Bool
+  , not _ && _ :: Bool
+  , not _ && p :: Bool
+  , not _ && False :: Bool
+  , not _ && True :: Bool
+  , not _ && not _ :: Bool
+  , not p && _ :: Bool
+  , not False && _ :: Bool
+  , not True && _ :: Bool
+  , not (not _) && _ :: Bool
+  , (_ || _) && _ :: Bool
+  , _ <= _ :: Bool
+  , _ <= p :: Bool
+  , _ <= False :: Bool
+  , _ <= True :: Bool
+  , _ <= not _ :: Bool
+  , p <= _ :: Bool
+  , False <= _ :: Bool
+  , True <= _ :: Bool
+  , not _ <= _ :: Bool
+  , _ == _ :: Bool
+  , _ == p :: Bool
+  , _ == q :: Bool
+  , _ == False :: Bool
+  , _ == True :: Bool
+  , _ == not _ :: Bool
+  , _ == not p :: Bool
+  , _ == not False :: Bool
+  , _ == not True :: Bool
+  , _ == not (not _) :: Bool
+  , _ == (_ || _) :: Bool
+  , p == _ :: Bool
+  , p == p :: Bool
+  , p == False :: Bool
+  , p == True :: Bool
+  , p == not _ :: Bool
+  , q == _ :: Bool
+  , False == _ :: Bool
+  , False == p :: Bool
+  , False == False :: Bool
+  , False == True :: Bool
+  , False == not _ :: Bool
+  , True == _ :: Bool
+  , True == p :: Bool
+  , True == False :: Bool
+  , True == True :: Bool
+  , True == not _ :: Bool
+  , not _ == _ :: Bool
+  , not _ == p :: Bool
+  , not _ == False :: Bool
+  , not _ == True :: Bool
+  , not _ == not _ :: Bool
+  , not p == _ :: Bool
+  , not False == _ :: Bool
+  , not True == _ :: Bool
+  , not (not _) == _ :: Bool
+  , (_ || _) == _ :: Bool
+  , _ || _ :: Bool
+  , _ || p :: Bool
+  , _ || q :: Bool
+  , _ || r :: Bool
+  , _ || False :: Bool
+  , _ || True :: Bool
+  , _ || not _ :: Bool
+  , _ || not p :: Bool
+  , _ || not q :: Bool
+  , _ || not False :: Bool
+  , _ || not True :: Bool
+  , _ || not (not _) :: Bool
+  , _ || not (not p) :: Bool
+  , _ || not (not False) :: Bool
+  , _ || not (not True) :: Bool
+  , _ || not (not (not _)) :: Bool
+  , _ || not (_ || _) :: Bool
+  , _ || odd _ :: Bool
+  , _ || even _ :: Bool
+  , _ || _ && _ :: Bool
+  , _ || _ == _ :: Bool
+  , _ || (_ || _) :: Bool
+  , _ || (_ || p) :: Bool
+  , _ || (_ || False) :: Bool
+  , _ || (_ || True) :: Bool
+  , _ || (_ || not _) :: Bool
+  , _ || (p || _) :: Bool
+  , _ || (False || _) :: Bool
+  , _ || (True || _) :: Bool
+  , _ || (not _ || _) :: Bool
+  , _ || _ == _ :: Bool
+  , _ || elem _ _ :: Bool
+  , p || _ :: Bool
+  , p || p :: Bool
+  , p || q :: Bool
+  , p || False :: Bool
+  , p || True :: Bool
+  , p || not _ :: Bool
+  , p || not p :: Bool
+  , p || not False :: Bool
+  , p || not True :: Bool
+  , p || not (not _) :: Bool
+  , p || (_ || _) :: Bool
+  , q || _ :: Bool
+  , q || p :: Bool
+  , q || False :: Bool
+  , q || True :: Bool
+  , q || not _ :: Bool
+  , r || _ :: Bool
+  , False || _ :: Bool
+  , False || p :: Bool
+  , False || q :: Bool
+  , False || False :: Bool
+  , False || True :: Bool
+  , False || not _ :: Bool
+  , False || not p :: Bool
+  , False || not False :: Bool
+  , False || not True :: Bool
+  , False || not (not _) :: Bool
+  , False || (_ || _) :: Bool
+  , True || _ :: Bool
+  , True || p :: Bool
+  , True || q :: Bool
+  , True || False :: Bool
+  , True || True :: Bool
+  , True || not _ :: Bool
+  , True || not p :: Bool
+  , True || not False :: Bool
+  , True || not True :: Bool
+  , True || not (not _) :: Bool
+  , True || (_ || _) :: Bool
+  , not _ || _ :: Bool
+  , not _ || p :: Bool
+  , not _ || q :: Bool
+  , not _ || False :: Bool
+  , not _ || True :: Bool
+  , not _ || not _ :: Bool
+  , not _ || not p :: Bool
+  , not _ || not False :: Bool
+  , not _ || not True :: Bool
+  , not _ || not (not _) :: Bool
+  , not _ || (_ || _) :: Bool
+  , not p || _ :: Bool
+  , not p || p :: Bool
+  , not p || False :: Bool
+  , not p || True :: Bool
+  , not p || not _ :: Bool
+  , not q || _ :: Bool
+  , not False || _ :: Bool
+  , not False || p :: Bool
+  , not False || False :: Bool
+  , not False || True :: Bool
+  , not False || not _ :: Bool
+  , not True || _ :: Bool
+  , not True || p :: Bool
+  , not True || False :: Bool
+  , not True || True :: Bool
+  , not True || not _ :: Bool
+  , not (not _) || _ :: Bool
+  , not (not _) || p :: Bool
+  , not (not _) || False :: Bool
+  , not (not _) || True :: Bool
+  , not (not _) || not _ :: Bool
+  , not (not p) || _ :: Bool
+  , not (not False) || _ :: Bool
+  , not (not True) || _ :: Bool
+  , not (not (not _)) || _ :: Bool
+  , not (_ || _) || _ :: Bool
+  , odd _ || _ :: Bool
+  , even _ || _ :: Bool
+  , _ && _ || _ :: Bool
+  , _ == _ || _ :: Bool
+  , (_ || _) || _ :: Bool
+  , (_ || _) || p :: Bool
+  , (_ || _) || False :: Bool
+  , (_ || _) || True :: Bool
+  , (_ || _) || not _ :: Bool
+  , (_ || p) || _ :: Bool
+  , (_ || False) || _ :: Bool
+  , (_ || True) || _ :: Bool
+  , (_ || not _) || _ :: Bool
+  , (p || _) || _ :: Bool
+  , (False || _) || _ :: Bool
+  , (True || _) || _ :: Bool
+  , (not _ || _) || _ :: Bool
+  , _ == _ || _ :: Bool
+  , elem _ _ || _ :: Bool
+  , _ ==> _ :: Bool
+  , _ ==> p :: Bool
+  , _ ==> False :: Bool
+  , _ ==> True :: Bool
+  , _ ==> not _ :: Bool
+  , p ==> _ :: Bool
+  , False ==> _ :: Bool
+  , True ==> _ :: Bool
+  , not _ ==> _ :: Bool
+  , _ < _ :: Bool
+  , _ <= _ :: Bool
+  , _ <= x :: Bool
+  , _ <= 0 :: Bool
+  , _ <= id _ :: Bool
+  , x <= _ :: Bool
+  , 0 <= _ :: Bool
+  , id _ <= _ :: Bool
+  , _ == _ :: Bool
+  , _ == x :: Bool
+  , _ == y :: Bool
+  , _ == 0 :: Bool
+  , _ == 1 :: Bool
+  , _ == ord _ :: Bool
+  , _ == id _ :: Bool
+  , _ == id x :: Bool
+  , _ == id 0 :: Bool
+  , _ == id (id _) :: Bool
+  , _ == abs _ :: Bool
+  , _ == negate _ :: Bool
+  , _ == head _ :: Bool
+  , _ == _ + _ :: Bool
+  , x == _ :: Bool
+  , x == x :: Bool
+  , x == 0 :: Bool
+  , x == id _ :: Bool
+  , y == _ :: Bool
+  , 0 == _ :: Bool
+  , 0 == x :: Bool
+  , 0 == 0 :: Bool
+  , 0 == id _ :: Bool
+  , 1 == _ :: Bool
+  , ord _ == _ :: Bool
+  , id _ == _ :: Bool
+  , id _ == x :: Bool
+  , id _ == 0 :: Bool
+  , id _ == id _ :: Bool
+  , id x == _ :: Bool
+  , id 0 == _ :: Bool
+  , id (id _) == _ :: Bool
+  , abs _ == _ :: Bool
+  , negate _ == _ :: Bool
+  , head _ == _ :: Bool
+  , _ + _ == _ :: Bool
+  , _ * _ :: Int
+  , _ * x :: Int
+  , _ * y :: Int
+  , _ * z :: Int
+  , _ * 0 :: Int
+  , _ * 1 :: Int
+  , _ * (-1) :: Int
+  , _ * f _ :: Int
+  , _ * ord _ :: Int
+  , _ * ord c :: Int
+  , _ * ord 'a' :: Int
+  , _ * id _ :: Int
+  , _ * id x :: Int
+  , _ * id y :: Int
+  , _ * id 0 :: Int
+  , _ * id 1 :: Int
+  , _ * id (ord _) :: Int
+  , _ * id (id _) :: Int
+  , _ * id (id x) :: Int
+  , _ * id (id 0) :: Int
+  , _ * id (id (id _)) :: Int
+  , _ * id (abs _) :: Int
+  , _ * id (negate _) :: Int
+  , _ * id (head _) :: Int
+  , _ * id (_ + _) :: Int
+  , _ * abs _ :: Int
+  , _ * abs x :: Int
+  , _ * abs 0 :: Int
+  , _ * abs (id _) :: Int
+  , _ * negate _ :: Int
+  , _ * negate x :: Int
+  , _ * negate 0 :: Int
+  , _ * negate (id _) :: Int
+  , _ * head _ :: Int
+  , _ * head xs :: Int
+  , _ * head [] :: Int
+  , _ * head (_:_) :: Int
+  , _ * (_ * _) :: Int
+  , _ * (_ + _) :: Int
+  , _ * (_ + x) :: Int
+  , _ * (_ + 0) :: Int
+  , _ * (_ + id _) :: Int
+  , _ * (x + _) :: Int
+  , _ * (0 + _) :: Int
+  , _ * (id _ + _) :: Int
+  , x * _ :: Int
+  , x * x :: Int
+  , x * y :: Int
+  , x * 0 :: Int
+  , x * 1 :: Int
+  , x * ord _ :: Int
+  , x * id _ :: Int
+  , x * id x :: Int
+  , x * id 0 :: Int
+  , x * id (id _) :: Int
+  , x * abs _ :: Int
+  , x * negate _ :: Int
+  , x * head _ :: Int
+  , x * (_ + _) :: Int
+  , y * _ :: Int
+  , y * x :: Int
+  , y * 0 :: Int
+  , y * id _ :: Int
+  , z * _ :: Int
+  , 0 * _ :: Int
+  , 0 * x :: Int
+  , 0 * y :: Int
+  , 0 * 0 :: Int
+  , 0 * 1 :: Int
+  , 0 * ord _ :: Int
+  , 0 * id _ :: Int
+  , 0 * id x :: Int
+  , 0 * id 0 :: Int
+  , 0 * id (id _) :: Int
+  , 0 * abs _ :: Int
+  , 0 * negate _ :: Int
+  , 0 * head _ :: Int
+  , 0 * (_ + _) :: Int
+  , 1 * _ :: Int
+  , 1 * x :: Int
+  , 1 * 0 :: Int
+  , 1 * id _ :: Int
+  , (-1) * _ :: Int
+  , f _ * _ :: Int
+  , ord _ * _ :: Int
+  , ord _ * x :: Int
+  , ord _ * 0 :: Int
+  , ord _ * id _ :: Int
+  , ord c * _ :: Int
+  , ord 'a' * _ :: Int
+  , id _ * _ :: Int
+  , id _ * x :: Int
+  , id _ * y :: Int
+  , id _ * 0 :: Int
+  , id _ * 1 :: Int
+  , id _ * ord _ :: Int
+  , id _ * id _ :: Int
+  , id _ * id x :: Int
+  , id _ * id 0 :: Int
+  , id _ * id (id _) :: Int
+  , id _ * abs _ :: Int
+  , id _ * negate _ :: Int
+  , id _ * head _ :: Int
+  , id _ * (_ + _) :: Int
+  , id x * _ :: Int
+  , id x * x :: Int
+  , id x * 0 :: Int
+  , id x * id _ :: Int
+  , id y * _ :: Int
+  , id 0 * _ :: Int
+  , id 0 * x :: Int
+  , id 0 * 0 :: Int
+  , id 0 * id _ :: Int
+  , id 1 * _ :: Int
+  , id (ord _) * _ :: Int
+  , id (id _) * _ :: Int
+  , id (id _) * x :: Int
+  , id (id _) * 0 :: Int
+  , id (id _) * id _ :: Int
+  , id (id x) * _ :: Int
+  , id (id 0) * _ :: Int
+  , id (id (id _)) * _ :: Int
+  , id (abs _) * _ :: Int
+  , id (negate _) * _ :: Int
+  , id (head _) * _ :: Int
+  , id (_ + _) * _ :: Int
+  , abs _ * _ :: Int
+  , abs _ * x :: Int
+  , abs _ * 0 :: Int
+  , abs _ * id _ :: Int
+  , abs x * _ :: Int
+  , abs 0 * _ :: Int
+  , abs (id _) * _ :: Int
+  , negate _ * _ :: Int
+  , negate _ * x :: Int
+  , negate _ * 0 :: Int
+  , negate _ * id _ :: Int
+  , negate x * _ :: Int
+  , negate 0 * _ :: Int
+  , negate (id _) * _ :: Int
+  , head _ * _ :: Int
+  , head _ * x :: Int
+  , head _ * 0 :: Int
+  , head _ * id _ :: Int
+  , head xs * _ :: Int
+  , head [] * _ :: Int
+  , head (_:_) * _ :: Int
+  , (_ * _) * _ :: Int
+  , (_ + _) * _ :: Int
+  , (_ + _) * x :: Int
+  , (_ + _) * 0 :: Int
+  , (_ + _) * id _ :: Int
+  , (_ + x) * _ :: Int
+  , (_ + 0) * _ :: Int
+  , (_ + id _) * _ :: Int
+  , (x + _) * _ :: Int
+  , (0 + _) * _ :: Int
+  , (id _ + _) * _ :: Int
+  , _ + _ :: Int
+  , _ + x :: Int
+  , _ + y :: Int
+  , _ + z :: Int
+  , _ + x' :: Int
+  , _ + 0 :: Int
+  , _ + 1 :: Int
+  , _ + 2 :: Int
+  , _ + (-1) :: Int
+  , _ + f _ :: Int
+  , _ + f x :: Int
+  , _ + f 0 :: Int
+  , _ + f (id _) :: Int
+  , _ + g _ :: Int
+  , _ + ord _ :: Int
+  , _ + ord c :: Int
+  , _ + ord d :: Int
+  , _ + ord ' ' :: Int
+  , _ + ord 'a' :: Int
+  , _ + id _ :: Int
+  , _ + id x :: Int
+  , _ + id y :: Int
+  , _ + id z :: Int
+  , _ + id 0 :: Int
+  , _ + id 1 :: Int
+  , _ + id (-1) :: Int
+  , _ + id (f _) :: Int
+  , _ + id (ord _) :: Int
+  , _ + id (ord c) :: Int
+  , _ + id (ord 'a') :: Int
+  , _ + id (id _) :: Int
+  , _ + id (id x) :: Int
+  , _ + id (id y) :: Int
+  , _ + id (id 0) :: Int
+  , _ + id (id 1) :: Int
+  , _ + id (id (ord _)) :: Int
+  , _ + id (id (id _)) :: Int
+  , _ + id (id (id x)) :: Int
+  , _ + id (id (id 0)) :: Int
+  , _ + id (id (id (id _))) :: Int
+  , _ + id (id (abs _)) :: Int
+  , _ + id (id (negate _)) :: Int
+  , _ + id (id (head _)) :: Int
+  , _ + id (id (_ + _)) :: Int
+  , _ + id (abs _) :: Int
+  , _ + id (abs x) :: Int
+  , _ + id (abs 0) :: Int
+  , _ + id (abs (id _)) :: Int
+  , _ + id (negate _) :: Int
+  , _ + id (negate x) :: Int
+  , _ + id (negate 0) :: Int
+  , _ + id (negate (id _)) :: Int
+  , _ + id (head _) :: Int
+  , _ + id (head xs) :: Int
+  , _ + id (head []) :: Int
+  , _ + id (head (_:_)) :: Int
+  , _ + id (_ * _) :: Int
+  , _ + id (_ + _) :: Int
+  , _ + id (_ + x) :: Int
+  , _ + id (_ + 0) :: Int
+  , _ + id (_ + id _) :: Int
+  , _ + id (x + _) :: Int
+  , _ + id (0 + _) :: Int
+  , _ + id (id _ + _) :: Int
+  , _ + abs _ :: Int
+  , _ + abs x :: Int
+  , _ + abs y :: Int
+  , _ + abs 0 :: Int
+  , _ + abs 1 :: Int
+  , _ + abs (ord _) :: Int
+  , _ + abs (id _) :: Int
+  , _ + abs (id x) :: Int
+  , _ + abs (id 0) :: Int
+  , _ + abs (id (id _)) :: Int
+  , _ + abs (abs _) :: Int
+  , _ + abs (negate _) :: Int
+  , _ + abs (head _) :: Int
+  , _ + abs (_ + _) :: Int
+  , _ + negate _ :: Int
+  , _ + negate x :: Int
+  , _ + negate y :: Int
+  , _ + negate 0 :: Int
+  , _ + negate 1 :: Int
+  , _ + negate (ord _) :: Int
+  , _ + negate (id _) :: Int
+  , _ + negate (id x) :: Int
+  , _ + negate (id 0) :: Int
+  , _ + negate (id (id _)) :: Int
+  , _ + negate (abs _) :: Int
+  , _ + negate (negate _) :: Int
+  , _ + negate (head _) :: Int
+  , _ + negate (_ + _) :: Int
+  , _ + head _ :: Int
+  , _ + head xs :: Int
+  , _ + head ys :: Int
+  , _ + head [] :: Int
+  , _ + head [0] :: Int
+  , _ + head (tail _) :: Int
+  , _ + head (_:_) :: Int
+  , _ + head (_:xs) :: Int
+  , _ + head [_] :: Int
+  , _ + head (_:_:_) :: Int
+  , _ + head (x:_) :: Int
+  , _ + head (0:_) :: Int
+  , _ + head (id _:_) :: Int
+  , _ + head (_ ++ _) :: Int
+  , _ + _ * _ :: Int
+  , _ + _ * x :: Int
+  , _ + _ * 0 :: Int
+  , _ + _ * id _ :: Int
+  , _ + x * _ :: Int
+  , _ + 0 * _ :: Int
+  , _ + id _ * _ :: Int
+  , _ + (_ + _) :: Int
+  , _ + (_ + x) :: Int
+  , _ + (_ + y) :: Int
+  , _ + (_ + 0) :: Int
+  , _ + (_ + 1) :: Int
+  , _ + (_ + ord _) :: Int
+  , _ + (_ + id _) :: Int
+  , _ + (_ + id x) :: Int
+  , _ + (_ + id 0) :: Int
+  , _ + (_ + id (id _)) :: Int
+  , _ + (_ + abs _) :: Int
+  , _ + (_ + negate _) :: Int
+  , _ + (_ + head _) :: Int
+  , _ + (_ + (_ + _)) :: Int
+  , _ + (x + _) :: Int
+  , _ + (x + x) :: Int
+  , _ + (x + 0) :: Int
+  , _ + (x + id _) :: Int
+  , _ + (y + _) :: Int
+  , _ + (0 + _) :: Int
+  , _ + (0 + x) :: Int
+  , _ + (0 + 0) :: Int
+  , _ + (0 + id _) :: Int
+  , _ + (1 + _) :: Int
+  , _ + (ord _ + _) :: Int
+  , _ + (id _ + _) :: Int
+  , _ + (id _ + x) :: Int
+  , _ + (id _ + 0) :: Int
+  , _ + (id _ + id _) :: Int
+  , _ + (id x + _) :: Int
+  , _ + (id 0 + _) :: Int
+  , _ + (id (id _) + _) :: Int
+  , _ + (abs _ + _) :: Int
+  , _ + (negate _ + _) :: Int
+  , _ + (head _ + _) :: Int
+  , _ + ((_ + _) + _) :: Int
+  , x + _ :: Int
+  , x + x :: Int
+  , x + y :: Int
+  , x + z :: Int
+  , x + 0 :: Int
+  , x + 1 :: Int
+  , x + (-1) :: Int
+  , x + f _ :: Int
+  , x + ord _ :: Int
+  , x + ord c :: Int
+  , x + ord 'a' :: Int
+  , x + id _ :: Int
+  , x + id x :: Int
+  , x + id y :: Int
+  , x + id 0 :: Int
+  , x + id 1 :: Int
+  , x + id (ord _) :: Int
+  , x + id (id _) :: Int
+  , x + id (id x) :: Int
+  , x + id (id 0) :: Int
+  , x + id (id (id _)) :: Int
+  , x + id (abs _) :: Int
+  , x + id (negate _) :: Int
+  , x + id (head _) :: Int
+  , x + id (_ + _) :: Int
+  , x + abs _ :: Int
+  , x + abs x :: Int
+  , x + abs 0 :: Int
+  , x + abs (id _) :: Int
+  , x + negate _ :: Int
+  , x + negate x :: Int
+  , x + negate 0 :: Int
+  , x + negate (id _) :: Int
+  , x + head _ :: Int
+  , x + head xs :: Int
+  , x + head [] :: Int
+  , x + head (_:_) :: Int
+  , x + _ * _ :: Int
+  , x + (_ + _) :: Int
+  , x + (_ + x) :: Int
+  , x + (_ + 0) :: Int
+  , x + (_ + id _) :: Int
+  , x + (x + _) :: Int
+  , x + (0 + _) :: Int
+  , x + (id _ + _) :: Int
+  , y + _ :: Int
+  , y + x :: Int
+  , y + y :: Int
+  , y + 0 :: Int
+  , y + 1 :: Int
+  , y + ord _ :: Int
+  , y + id _ :: Int
+  , y + id x :: Int
+  , y + id 0 :: Int
+  , y + id (id _) :: Int
+  , y + abs _ :: Int
+  , y + negate _ :: Int
+  , y + head _ :: Int
+  , y + (_ + _) :: Int
+  , z + _ :: Int
+  , z + x :: Int
+  , z + 0 :: Int
+  , z + id _ :: Int
+  , x' + _ :: Int
+  , 0 + _ :: Int
+  , 0 + x :: Int
+  , 0 + y :: Int
+  , 0 + z :: Int
+  , 0 + 0 :: Int
+  , 0 + 1 :: Int
+  , 0 + (-1) :: Int
+  , 0 + f _ :: Int
+  , 0 + ord _ :: Int
+  , 0 + ord c :: Int
+  , 0 + ord 'a' :: Int
+  , 0 + id _ :: Int
+  , 0 + id x :: Int
+  , 0 + id y :: Int
+  , 0 + id 0 :: Int
+  , 0 + id 1 :: Int
+  , 0 + id (ord _) :: Int
+  , 0 + id (id _) :: Int
+  , 0 + id (id x) :: Int
+  , 0 + id (id 0) :: Int
+  , 0 + id (id (id _)) :: Int
+  , 0 + id (abs _) :: Int
+  , 0 + id (negate _) :: Int
+  , 0 + id (head _) :: Int
+  , 0 + id (_ + _) :: Int
+  , 0 + abs _ :: Int
+  , 0 + abs x :: Int
+  , 0 + abs 0 :: Int
+  , 0 + abs (id _) :: Int
+  , 0 + negate _ :: Int
+  , 0 + negate x :: Int
+  , 0 + negate 0 :: Int
+  , 0 + negate (id _) :: Int
+  , 0 + head _ :: Int
+  , 0 + head xs :: Int
+  , 0 + head [] :: Int
+  , 0 + head (_:_) :: Int
+  , 0 + _ * _ :: Int
+  , 0 + (_ + _) :: Int
+  , 0 + (_ + x) :: Int
+  , 0 + (_ + 0) :: Int
+  , 0 + (_ + id _) :: Int
+  , 0 + (x + _) :: Int
+  , 0 + (0 + _) :: Int
+  , 0 + (id _ + _) :: Int
+  , 1 + _ :: Int
+  , 1 + x :: Int
+  , 1 + y :: Int
+  , 1 + 0 :: Int
+  , 1 + 1 :: Int
+  , 1 + ord _ :: Int
+  , 1 + id _ :: Int
+  , 1 + id x :: Int
+  , 1 + id 0 :: Int
+  , 1 + id (id _) :: Int
+  , 1 + abs _ :: Int
+  , 1 + negate _ :: Int
+  , 1 + head _ :: Int
+  , 1 + (_ + _) :: Int
+  , 2 + _ :: Int
+  , (-1) + _ :: Int
+  , (-1) + x :: Int
+  , (-1) + 0 :: Int
+  , (-1) + id _ :: Int
+  , f _ + _ :: Int
+  , f _ + x :: Int
+  , f _ + 0 :: Int
+  , f _ + id _ :: Int
+  , f x + _ :: Int
+  , f 0 + _ :: Int
+  , f (id _) + _ :: Int
+  , g _ + _ :: Int
+  , ord _ + _ :: Int
+  , ord _ + x :: Int
+  , ord _ + y :: Int
+  , ord _ + 0 :: Int
+  , ord _ + 1 :: Int
+  , ord _ + ord _ :: Int
+  , ord _ + id _ :: Int
+  , ord _ + id x :: Int
+  , ord _ + id 0 :: Int
+  , ord _ + id (id _) :: Int
+  , ord _ + abs _ :: Int
+  , ord _ + negate _ :: Int
+  , ord _ + head _ :: Int
+  , ord _ + (_ + _) :: Int
+  , ord c + _ :: Int
+  , ord c + x :: Int
+  , ord c + 0 :: Int
+  , ord c + id _ :: Int
+  , ord d + _ :: Int
+  , ord ' ' + _ :: Int
+  , ord 'a' + _ :: Int
+  , ord 'a' + x :: Int
+  , ord 'a' + 0 :: Int
+  , ord 'a' + id _ :: Int
+  , id _ + _ :: Int
+  , id _ + x :: Int
+  , id _ + y :: Int
+  , id _ + z :: Int
+  , id _ + 0 :: Int
+  , id _ + 1 :: Int
+  , id _ + (-1) :: Int
+  , id _ + f _ :: Int
+  , id _ + ord _ :: Int
+  , id _ + ord c :: Int
+  , id _ + ord 'a' :: Int
+  , id _ + id _ :: Int
+  , id _ + id x :: Int
+  , id _ + id y :: Int
+  , id _ + id 0 :: Int
+  , id _ + id 1 :: Int
+  , id _ + id (ord _) :: Int
+  , id _ + id (id _) :: Int
+  , id _ + id (id x) :: Int
+  , id _ + id (id 0) :: Int
+  , id _ + id (id (id _)) :: Int
+  , id _ + id (abs _) :: Int
+  , id _ + id (negate _) :: Int
+  , id _ + id (head _) :: Int
+  , id _ + id (_ + _) :: Int
+  , id _ + abs _ :: Int
+  , id _ + abs x :: Int
+  , id _ + abs 0 :: Int
+  , id _ + abs (id _) :: Int
+  , id _ + negate _ :: Int
+  , id _ + negate x :: Int
+  , id _ + negate 0 :: Int
+  , id _ + negate (id _) :: Int
+  , id _ + head _ :: Int
+  , id _ + head xs :: Int
+  , id _ + head [] :: Int
+  , id _ + head (_:_) :: Int
+  , id _ + _ * _ :: Int
+  , id _ + (_ + _) :: Int
+  , id _ + (_ + x) :: Int
+  , id _ + (_ + 0) :: Int
+  , id _ + (_ + id _) :: Int
+  , id _ + (x + _) :: Int
+  , id _ + (0 + _) :: Int
+  , id _ + (id _ + _) :: Int
+  , id x + _ :: Int
+  , id x + x :: Int
+  , id x + y :: Int
+  , id x + 0 :: Int
+  , id x + 1 :: Int
+  , id x + ord _ :: Int
+  , id x + id _ :: Int
+  , id x + id x :: Int
+  , id x + id 0 :: Int
+  , id x + id (id _) :: Int
+  , id x + abs _ :: Int
+  , id x + negate _ :: Int
+  , id x + head _ :: Int
+  , id x + (_ + _) :: Int
+  , id y + _ :: Int
+  , id y + x :: Int
+  , id y + 0 :: Int
+  , id y + id _ :: Int
+  , id z + _ :: Int
+  , id 0 + _ :: Int
+  , id 0 + x :: Int
+  , id 0 + y :: Int
+  , id 0 + 0 :: Int
+  , id 0 + 1 :: Int
+  , id 0 + ord _ :: Int
+  , id 0 + id _ :: Int
+  , id 0 + id x :: Int
+  , id 0 + id 0 :: Int
+  , id 0 + id (id _) :: Int
+  , id 0 + abs _ :: Int
+  , id 0 + negate _ :: Int
+  , id 0 + head _ :: Int
+  , id 0 + (_ + _) :: Int
+  , id 1 + _ :: Int
+  , id 1 + x :: Int
+  , id 1 + 0 :: Int
+  , id 1 + id _ :: Int
+  , id (-1) + _ :: Int
+  , id (f _) + _ :: Int
+  , id (ord _) + _ :: Int
+  , id (ord _) + x :: Int
+  , id (ord _) + 0 :: Int
+  , id (ord _) + id _ :: Int
+  , id (ord c) + _ :: Int
+  , id (ord 'a') + _ :: Int
+  , id (id _) + _ :: Int
+  , id (id _) + x :: Int
+  , id (id _) + y :: Int
+  , id (id _) + 0 :: Int
+  , id (id _) + 1 :: Int
+  , id (id _) + ord _ :: Int
+  , id (id _) + id _ :: Int
+  , id (id _) + id x :: Int
+  , id (id _) + id 0 :: Int
+  , id (id _) + id (id _) :: Int
+  , id (id _) + abs _ :: Int
+  , id (id _) + negate _ :: Int
+  , id (id _) + head _ :: Int
+  , id (id _) + (_ + _) :: Int
+  , id (id x) + _ :: Int
+  , id (id x) + x :: Int
+  , id (id x) + 0 :: Int
+  , id (id x) + id _ :: Int
+  , id (id y) + _ :: Int
+  , id (id 0) + _ :: Int
+  , id (id 0) + x :: Int
+  , id (id 0) + 0 :: Int
+  , id (id 0) + id _ :: Int
+  , id (id 1) + _ :: Int
+  , id (id (ord _)) + _ :: Int
+  , id (id (id _)) + _ :: Int
+  , id (id (id _)) + x :: Int
+  , id (id (id _)) + 0 :: Int
+  , id (id (id _)) + id _ :: Int
+  , id (id (id x)) + _ :: Int
+  , id (id (id 0)) + _ :: Int
+  , id (id (id (id _))) + _ :: Int
+  , id (id (abs _)) + _ :: Int
+  , id (id (negate _)) + _ :: Int
+  , id (id (head _)) + _ :: Int
+  , id (id (_ + _)) + _ :: Int
+  , id (abs _) + _ :: Int
+  , id (abs _) + x :: Int
+  , id (abs _) + 0 :: Int
+  , id (abs _) + id _ :: Int
+  , id (abs x) + _ :: Int
+  , id (abs 0) + _ :: Int
+  , id (abs (id _)) + _ :: Int
+  , id (negate _) + _ :: Int
+  , id (negate _) + x :: Int
+  , id (negate _) + 0 :: Int
+  , id (negate _) + id _ :: Int
+  , id (negate x) + _ :: Int
+  , id (negate 0) + _ :: Int
+  , id (negate (id _)) + _ :: Int
+  , id (head _) + _ :: Int
+  , id (head _) + x :: Int
+  , id (head _) + 0 :: Int
+  , id (head _) + id _ :: Int
+  , id (head xs) + _ :: Int
+  , id (head []) + _ :: Int
+  , id (head (_:_)) + _ :: Int
+  , id (_ * _) + _ :: Int
+  , id (_ + _) + _ :: Int
+  , id (_ + _) + x :: Int
+  , id (_ + _) + 0 :: Int
+  , id (_ + _) + id _ :: Int
+  , id (_ + x) + _ :: Int
+  , id (_ + 0) + _ :: Int
+  , id (_ + id _) + _ :: Int
+  , id (x + _) + _ :: Int
+  , id (0 + _) + _ :: Int
+  , id (id _ + _) + _ :: Int
+  , abs _ + _ :: Int
+  , abs _ + x :: Int
+  , abs _ + y :: Int
+  , abs _ + 0 :: Int
+  , abs _ + 1 :: Int
+  , abs _ + ord _ :: Int
+  , abs _ + id _ :: Int
+  , abs _ + id x :: Int
+  , abs _ + id 0 :: Int
+  , abs _ + id (id _) :: Int
+  , abs _ + abs _ :: Int
+  , abs _ + negate _ :: Int
+  , abs _ + head _ :: Int
+  , abs _ + (_ + _) :: Int
+  , abs x + _ :: Int
+  , abs x + x :: Int
+  , abs x + 0 :: Int
+  , abs x + id _ :: Int
+  , abs y + _ :: Int
+  , abs 0 + _ :: Int
+  , abs 0 + x :: Int
+  , abs 0 + 0 :: Int
+  , abs 0 + id _ :: Int
+  , abs 1 + _ :: Int
+  , abs (ord _) + _ :: Int
+  , abs (id _) + _ :: Int
+  , abs (id _) + x :: Int
+  , abs (id _) + 0 :: Int
+  , abs (id _) + id _ :: Int
+  , abs (id x) + _ :: Int
+  , abs (id 0) + _ :: Int
+  , abs (id (id _)) + _ :: Int
+  , abs (abs _) + _ :: Int
+  , abs (negate _) + _ :: Int
+  , abs (head _) + _ :: Int
+  , abs (_ + _) + _ :: Int
+  , negate _ + _ :: Int
+  , negate _ + x :: Int
+  , negate _ + y :: Int
+  , negate _ + 0 :: Int
+  , negate _ + 1 :: Int
+  , negate _ + ord _ :: Int
+  , negate _ + id _ :: Int
+  , negate _ + id x :: Int
+  , negate _ + id 0 :: Int
+  , negate _ + id (id _) :: Int
+  , negate _ + abs _ :: Int
+  , negate _ + negate _ :: Int
+  , negate _ + head _ :: Int
+  , negate _ + (_ + _) :: Int
+  , negate x + _ :: Int
+  , negate x + x :: Int
+  , negate x + 0 :: Int
+  , negate x + id _ :: Int
+  , negate y + _ :: Int
+  , negate 0 + _ :: Int
+  , negate 0 + x :: Int
+  , negate 0 + 0 :: Int
+  , negate 0 + id _ :: Int
+  , negate 1 + _ :: Int
+  , negate (ord _) + _ :: Int
+  , negate (id _) + _ :: Int
+  , negate (id _) + x :: Int
+  , negate (id _) + 0 :: Int
+  , negate (id _) + id _ :: Int
+  , negate (id x) + _ :: Int
+  , negate (id 0) + _ :: Int
+  , negate (id (id _)) + _ :: Int
+  , negate (abs _) + _ :: Int
+  , negate (negate _) + _ :: Int
+  , negate (head _) + _ :: Int
+  , negate (_ + _) + _ :: Int
+  , head _ + _ :: Int
+  , head _ + x :: Int
+  , head _ + y :: Int
+  , head _ + 0 :: Int
+  , head _ + 1 :: Int
+  , head _ + ord _ :: Int
+  , head _ + id _ :: Int
+  , head _ + id x :: Int
+  , head _ + id 0 :: Int
+  , head _ + id (id _) :: Int
+  , head _ + abs _ :: Int
+  , head _ + negate _ :: Int
+  , head _ + head _ :: Int
+  , head _ + (_ + _) :: Int
+  , head xs + _ :: Int
+  , head xs + x :: Int
+  , head xs + 0 :: Int
+  , head xs + id _ :: Int
+  , head ys + _ :: Int
+  , head [] + _ :: Int
+  , head [] + x :: Int
+  , head [] + 0 :: Int
+  , head [] + id _ :: Int
+  , head [0] + _ :: Int
+  , head (tail _) + _ :: Int
+  , head (_:_) + _ :: Int
+  , head (_:_) + x :: Int
+  , head (_:_) + 0 :: Int
+  , head (_:_) + id _ :: Int
+  , head (_:xs) + _ :: Int
+  , head [_] + _ :: Int
+  , head (_:_:_) + _ :: Int
+  , head (x:_) + _ :: Int
+  , head (0:_) + _ :: Int
+  , head (id _:_) + _ :: Int
+  , head (_ ++ _) + _ :: Int
+  , _ * _ + _ :: Int
+  , _ * _ + x :: Int
+  , _ * _ + 0 :: Int
+  , _ * _ + id _ :: Int
+  , _ * x + _ :: Int
+  , _ * 0 + _ :: Int
+  , _ * id _ + _ :: Int
+  , x * _ + _ :: Int
+  , 0 * _ + _ :: Int
+  , id _ * _ + _ :: Int
+  , (_ + _) + _ :: Int
+  , (_ + _) + x :: Int
+  , (_ + _) + y :: Int
+  , (_ + _) + 0 :: Int
+  , (_ + _) + 1 :: Int
+  , (_ + _) + ord _ :: Int
+  , (_ + _) + id _ :: Int
+  , (_ + _) + id x :: Int
+  , (_ + _) + id 0 :: Int
+  , (_ + _) + id (id _) :: Int
+  , (_ + _) + abs _ :: Int
+  , (_ + _) + negate _ :: Int
+  , (_ + _) + head _ :: Int
+  , (_ + _) + (_ + _) :: Int
+  , (_ + x) + _ :: Int
+  , (_ + x) + x :: Int
+  , (_ + x) + 0 :: Int
+  , (_ + x) + id _ :: Int
+  , (_ + y) + _ :: Int
+  , (_ + 0) + _ :: Int
+  , (_ + 0) + x :: Int
+  , (_ + 0) + 0 :: Int
+  , (_ + 0) + id _ :: Int
+  , (_ + 1) + _ :: Int
+  , (_ + ord _) + _ :: Int
+  , (_ + id _) + _ :: Int
+  , (_ + id _) + x :: Int
+  , (_ + id _) + 0 :: Int
+  , (_ + id _) + id _ :: Int
+  , (_ + id x) + _ :: Int
+  , (_ + id 0) + _ :: Int
+  , (_ + id (id _)) + _ :: Int
+  , (_ + abs _) + _ :: Int
+  , (_ + negate _) + _ :: Int
+  , (_ + head _) + _ :: Int
+  , (_ + (_ + _)) + _ :: Int
+  , (x + _) + _ :: Int
+  , (x + _) + x :: Int
+  , (x + _) + 0 :: Int
+  , (x + _) + id _ :: Int
+  , (x + x) + _ :: Int
+  , (x + 0) + _ :: Int
+  , (x + id _) + _ :: Int
+  , (y + _) + _ :: Int
+  , (0 + _) + _ :: Int
+  , (0 + _) + x :: Int
+  , (0 + _) + 0 :: Int
+  , (0 + _) + id _ :: Int
+  , (0 + x) + _ :: Int
+  , (0 + 0) + _ :: Int
+  , (0 + id _) + _ :: Int
+  , (1 + _) + _ :: Int
+  , (ord _ + _) + _ :: Int
+  , (id _ + _) + _ :: Int
+  , (id _ + _) + x :: Int
+  , (id _ + _) + 0 :: Int
+  , (id _ + _) + id _ :: Int
+  , (id _ + x) + _ :: Int
+  , (id _ + 0) + _ :: Int
+  , (id _ + id _) + _ :: Int
+  , (id x + _) + _ :: Int
+  , (id 0 + _) + _ :: Int
+  , (id (id _) + _) + _ :: Int
+  , (abs _ + _) + _ :: Int
+  , (negate _ + _) + _ :: Int
+  , (head _ + _) + _ :: Int
+  , ((_ + _) + _) + _ :: Int
+  , elem _ _ :: Bool
+  , elem _ xs :: Bool
+  , elem _ ys :: Bool
+  , elem _ [] :: Bool
+  , elem _ [0] :: Bool
+  , elem _ (tail _) :: Bool
+  , elem _ (_:_) :: Bool
+  , elem _ (_:xs) :: Bool
+  , elem _ [_] :: Bool
+  , elem _ (_:_:_) :: Bool
+  , elem _ (x:_) :: Bool
+  , elem _ (0:_) :: Bool
+  , elem _ (id _:_) :: Bool
+  , elem _ (_ ++ _) :: Bool
+  , elem x _ :: Bool
+  , elem x xs :: Bool
+  , elem x [] :: Bool
+  , elem x (_:_) :: Bool
+  , elem y _ :: Bool
+  , elem 0 _ :: Bool
+  , elem 0 xs :: Bool
+  , elem 0 [] :: Bool
+  , elem 0 (_:_) :: Bool
+  , elem 1 _ :: Bool
+  , elem (ord _) _ :: Bool
+  , elem (id _) _ :: Bool
+  , elem (id _) xs :: Bool
+  , elem (id _) [] :: Bool
+  , elem (id _) (_:_) :: Bool
+  , elem (id x) _ :: Bool
+  , elem (id 0) _ :: Bool
+  , elem (id (id _)) _ :: Bool
+  , elem (abs _) _ :: Bool
+  , elem (negate _) _ :: Bool
+  , elem (head _) _ :: Bool
+  , elem (_ + _) _ :: Bool
+  , _:_ :: [Int]
+  , _:xs :: [Int]
+  , _:ys :: [Int]
+  , _:zs :: [Int]
+  , _:xs' :: [Int]
+  , [_] :: [Int]
+  , _:[0] :: [Int]
+  , _:[1] :: [Int]
+  , _:[-1] :: [Int]
+  , _:[0,0] :: [Int]
+  , _:[0,1] :: [Int]
+  , _:[1,0] :: [Int]
+  , _:[0,0,0] :: [Int]
+  , _:sort _ :: [Int]
+  , _:sort xs :: [Int]
+  , _:sort [] :: [Int]
+  , _:sort (_:_) :: [Int]
+  , _:tail _ :: [Int]
+  , _:tail xs :: [Int]
+  , _:tail ys :: [Int]
+  , _:tail [] :: [Int]
+  , _:tail [0] :: [Int]
+  , _:tail (tail _) :: [Int]
+  , _:tail (_:_) :: [Int]
+  , _:tail (_:xs) :: [Int]
+  , _:tail [_] :: [Int]
+  , _:tail (_:_:_) :: [Int]
+  , _:tail (x:_) :: [Int]
+  , _:tail (0:_) :: [Int]
+  , _:tail (id _:_) :: [Int]
+  , _:tail (_ ++ _) :: [Int]
+  , _:_:_ :: [Int]
+  , _:_:xs :: [Int]
+  , _:_:ys :: [Int]
+  , _:_:zs :: [Int]
+  , [_,_] :: [Int]
+  , _:_:[0] :: [Int]
+  , _:_:[1] :: [Int]
+  , _:_:[0,0] :: [Int]
+  , _:_:sort _ :: [Int]
+  , _:_:tail _ :: [Int]
+  , _:_:tail xs :: [Int]
+  , _:_:tail [] :: [Int]
+  , _:_:tail (_:_) :: [Int]
+  , _:_:_:_ :: [Int]
+  , _:_:_:xs :: [Int]
+  , _:_:_:ys :: [Int]
+  , [_,_,_] :: [Int]
+  , _:_:_:[0] :: [Int]
+  , _:_:_:tail _ :: [Int]
+  , _:_:_:_:_ :: [Int]
+  , _:_:_:_:xs :: [Int]
+  , [_,_,_,_] :: [Int]
+  , _:_:_:_:_:_ :: [Int]
+  , _:_:_:x:_ :: [Int]
+  , _:_:_:0:_ :: [Int]
+  , _:_:_:id _:_ :: [Int]
+  , _:_:_:(_ ++ _) :: [Int]
+  , _:_:x:_ :: [Int]
+  , _:_:x:xs :: [Int]
+  , [_,_,x] :: [Int]
+  , _:_:x:_:_ :: [Int]
+  , _:_:y:_ :: [Int]
+  , _:_:0:_ :: [Int]
+  , _:_:0:xs :: [Int]
+  , [_,_,0] :: [Int]
+  , _:_:0:_:_ :: [Int]
+  , _:_:1:_ :: [Int]
+  , _:_:ord _:_ :: [Int]
+  , _:_:id _:_ :: [Int]
+  , _:_:id _:xs :: [Int]
+  , [_,_,id _] :: [Int]
+  , _:_:id _:_:_ :: [Int]
+  , _:_:id x:_ :: [Int]
+  , _:_:id 0:_ :: [Int]
+  , _:_:id (id _):_ :: [Int]
+  , _:_:abs _:_ :: [Int]
+  , _:_:negate _:_ :: [Int]
+  , _:_:head _:_ :: [Int]
+  , _:_:_ + _:_ :: [Int]
+  , _:_:insert _ _ :: [Int]
+  , _:_:(_ ++ _) :: [Int]
+  , _:_:(_ ++ xs) :: [Int]
+  , _:_:(_ ++ []) :: [Int]
+  , _:_:(_ ++ (_:_)) :: [Int]
+  , _:_:(xs ++ _) :: [Int]
+  , _:_:([] ++ _) :: [Int]
+  , _:_:((_:_) ++ _) :: [Int]
+  , _:x:_ :: [Int]
+  , _:x:xs :: [Int]
+  , _:x:ys :: [Int]
+  , [_,x] :: [Int]
+  , _:x:[0] :: [Int]
+  , _:x:tail _ :: [Int]
+  , _:x:_:_ :: [Int]
+  , _:x:_:xs :: [Int]
+  , [_,x,_] :: [Int]
+  , _:x:_:_:_ :: [Int]
+  , _:x:x:_ :: [Int]
+  , _:x:0:_ :: [Int]
+  , _:x:id _:_ :: [Int]
+  , _:x:(_ ++ _) :: [Int]
+  , _:y:_ :: [Int]
+  , _:y:xs :: [Int]
+  , [_,y] :: [Int]
+  , _:y:_:_ :: [Int]
+  , _:z:_ :: [Int]
+  , _:0:_ :: [Int]
+  , _:0:xs :: [Int]
+  , _:0:ys :: [Int]
+  , [_,0] :: [Int]
+  , _:0:[0] :: [Int]
+  , _:0:tail _ :: [Int]
+  , _:0:_:_ :: [Int]
+  , _:0:_:xs :: [Int]
+  , [_,0,_] :: [Int]
+  , _:0:_:_:_ :: [Int]
+  , _:0:x:_ :: [Int]
+  , _:0:0:_ :: [Int]
+  , _:0:id _:_ :: [Int]
+  , _:0:(_ ++ _) :: [Int]
+  , _:1:_ :: [Int]
+  , _:1:xs :: [Int]
+  , [_,1] :: [Int]
+  , _:1:_:_ :: [Int]
+  , _:(-1):_ :: [Int]
+  , _:f _:_ :: [Int]
+  , _:ord _:_ :: [Int]
+  , _:ord _:xs :: [Int]
+  , [_,ord _] :: [Int]
+  , _:ord _:_:_ :: [Int]
+  , _:ord c:_ :: [Int]
+  , _:ord 'a':_ :: [Int]
+  , _:id _:_ :: [Int]
+  , _:id _:xs :: [Int]
+  , _:id _:ys :: [Int]
+  , [_,id _] :: [Int]
+  , _:id _:[0] :: [Int]
+  , _:id _:tail _ :: [Int]
+  , _:id _:_:_ :: [Int]
+  , _:id _:_:xs :: [Int]
+  , [_,id _,_] :: [Int]
+  , _:id _:_:_:_ :: [Int]
+  , _:id _:x:_ :: [Int]
+  , _:id _:0:_ :: [Int]
+  , _:id _:id _:_ :: [Int]
+  , _:id _:(_ ++ _) :: [Int]
+  , _:id x:_ :: [Int]
+  , _:id x:xs :: [Int]
+  , [_,id x] :: [Int]
+  , _:id x:_:_ :: [Int]
+  , _:id y:_ :: [Int]
+  , _:id 0:_ :: [Int]
+  , _:id 0:xs :: [Int]
+  , [_,id 0] :: [Int]
+  , _:id 0:_:_ :: [Int]
+  , _:id 1:_ :: [Int]
+  , _:id (ord _):_ :: [Int]
+  , _:id (id _):_ :: [Int]
+  , _:id (id _):xs :: [Int]
+  , [_,id (id _)] :: [Int]
+  , _:id (id _):_:_ :: [Int]
+  , _:id (id x):_ :: [Int]
+  , _:id (id 0):_ :: [Int]
+  , _:id (id (id _)):_ :: [Int]
+  , _:id (abs _):_ :: [Int]
+  , _:id (negate _):_ :: [Int]
+  , _:id (head _):_ :: [Int]
+  , _:id (_ + _):_ :: [Int]
+  , _:abs _:_ :: [Int]
+  , _:abs _:xs :: [Int]
+  , [_,abs _] :: [Int]
+  , _:abs _:_:_ :: [Int]
+  , _:abs x:_ :: [Int]
+  , _:abs 0:_ :: [Int]
+  , _:abs (id _):_ :: [Int]
+  , _:negate _:_ :: [Int]
+  , _:negate _:xs :: [Int]
+  , [_,negate _] :: [Int]
+  , _:negate _:_:_ :: [Int]
+  , _:negate x:_ :: [Int]
+  , _:negate 0:_ :: [Int]
+  , _:negate (id _):_ :: [Int]
+  , _:head _:_ :: [Int]
+  , _:head _:xs :: [Int]
+  , [_,head _] :: [Int]
+  , _:head _:_:_ :: [Int]
+  , _:head xs:_ :: [Int]
+  , _:head []:_ :: [Int]
+  , _:head (_:_):_ :: [Int]
+  , _:_ * _:_ :: [Int]
+  , _:_ + _:_ :: [Int]
+  , _:_ + _:xs :: [Int]
+  , [_,_ + _] :: [Int]
+  , _:_ + _:_:_ :: [Int]
+  , _:_ + x:_ :: [Int]
+  , _:_ + 0:_ :: [Int]
+  , _:_ + id _:_ :: [Int]
+  , _:x + _:_ :: [Int]
+  , _:0 + _:_ :: [Int]
+  , _:id _ + _:_ :: [Int]
+  , _:insert _ _ :: [Int]
+  , _:insert _ xs :: [Int]
+  , _:insert _ [] :: [Int]
+  , _:insert _ (_:_) :: [Int]
+  , _:insert x _ :: [Int]
+  , _:insert 0 _ :: [Int]
+  , _:insert (id _) _ :: [Int]
+  , _:(_ ++ _) :: [Int]
+  , _:(_ ++ xs) :: [Int]
+  , _:(_ ++ ys) :: [Int]
+  , _:(_ ++ []) :: [Int]
+  , _:(_ ++ [0]) :: [Int]
+  , _:(_ ++ tail _) :: [Int]
+  , _:(_ ++ (_:_)) :: [Int]
+  , _:(_ ++ (_:xs)) :: [Int]
+  , _:(_ ++ [_]) :: [Int]
+  , _:(_ ++ (_:_:_)) :: [Int]
+  , _:(_ ++ (x:_)) :: [Int]
+  , _:(_ ++ (0:_)) :: [Int]
+  , _:(_ ++ (id _:_)) :: [Int]
+  , _:(_ ++ (_ ++ _)) :: [Int]
+  , _:(xs ++ _) :: [Int]
+  , _:(xs ++ xs) :: [Int]
+  , _:(xs ++ []) :: [Int]
+  , _:(xs ++ (_:_)) :: [Int]
+  , _:(ys ++ _) :: [Int]
+  , _:([] ++ _) :: [Int]
+  , _:([] ++ xs) :: [Int]
+  , _:([] ++ []) :: [Int]
+  , _:([] ++ (_:_)) :: [Int]
+  , _:([0] ++ _) :: [Int]
+  , _:(tail _ ++ _) :: [Int]
+  , _:((_:_) ++ _) :: [Int]
+  , _:((_:_) ++ xs) :: [Int]
+  , _:((_:_) ++ []) :: [Int]
+  , _:((_:_) ++ (_:_)) :: [Int]
+  , _:((_:xs) ++ _) :: [Int]
+  , _:([_] ++ _) :: [Int]
+  , _:((_:_:_) ++ _) :: [Int]
+  , _:((x:_) ++ _) :: [Int]
+  , _:((0:_) ++ _) :: [Int]
+  , _:((id _:_) ++ _) :: [Int]
+  , _:((_ ++ _) ++ _) :: [Int]
+  , x:_ :: [Int]
+  , x:xs :: [Int]
+  , x:ys :: [Int]
+  , x:zs :: [Int]
+  , [x] :: [Int]
+  , x:[0] :: [Int]
+  , x:[1] :: [Int]
+  , x:[0,0] :: [Int]
+  , x:sort _ :: [Int]
+  , x:tail _ :: [Int]
+  , x:tail xs :: [Int]
+  , x:tail [] :: [Int]
+  , x:tail (_:_) :: [Int]
+  , x:_:_ :: [Int]
+  , x:_:xs :: [Int]
+  , x:_:ys :: [Int]
+  , [x,_] :: [Int]
+  , x:_:[0] :: [Int]
+  , x:_:tail _ :: [Int]
+  , x:_:_:_ :: [Int]
+  , x:_:_:xs :: [Int]
+  , [x,_,_] :: [Int]
+  , x:_:_:_:_ :: [Int]
+  , x:_:x:_ :: [Int]
+  , x:_:0:_ :: [Int]
+  , x:_:id _:_ :: [Int]
+  , x:_:(_ ++ _) :: [Int]
+  , x:x:_ :: [Int]
+  , x:x:xs :: [Int]
+  , [x,x] :: [Int]
+  , x:x:_:_ :: [Int]
+  , x:y:_ :: [Int]
+  , x:0:_ :: [Int]
+  , x:0:xs :: [Int]
+  , [x,0] :: [Int]
+  , x:0:_:_ :: [Int]
+  , x:1:_ :: [Int]
+  , x:ord _:_ :: [Int]
+  , x:id _:_ :: [Int]
+  , x:id _:xs :: [Int]
+  , [x,id _] :: [Int]
+  , x:id _:_:_ :: [Int]
+  , x:id x:_ :: [Int]
+  , x:id 0:_ :: [Int]
+  , x:id (id _):_ :: [Int]
+  , x:abs _:_ :: [Int]
+  , x:negate _:_ :: [Int]
+  , x:head _:_ :: [Int]
+  , x:_ + _:_ :: [Int]
+  , x:insert _ _ :: [Int]
+  , x:(_ ++ _) :: [Int]
+  , x:(_ ++ xs) :: [Int]
+  , x:(_ ++ []) :: [Int]
+  , x:(_ ++ (_:_)) :: [Int]
+  , x:(xs ++ _) :: [Int]
+  , x:([] ++ _) :: [Int]
+  , x:((_:_) ++ _) :: [Int]
+  , y:_ :: [Int]
+  , y:xs :: [Int]
+  , y:ys :: [Int]
+  , [y] :: [Int]
+  , y:[0] :: [Int]
+  , y:tail _ :: [Int]
+  , y:_:_ :: [Int]
+  , y:_:xs :: [Int]
+  , [y,_] :: [Int]
+  , y:_:_:_ :: [Int]
+  , y:x:_ :: [Int]
+  , y:0:_ :: [Int]
+  , y:id _:_ :: [Int]
+  , y:(_ ++ _) :: [Int]
+  , z:_ :: [Int]
+  , z:xs :: [Int]
+  , [z] :: [Int]
+  , z:_:_ :: [Int]
+  , x':_ :: [Int]
+  , 0:_ :: [Int]
+  , 0:xs :: [Int]
+  , 0:ys :: [Int]
+  , 0:zs :: [Int]
+  , [0] :: [Int]
+  , 0:[0] :: [Int]
+  , 0:[1] :: [Int]
+  , 0:[0,0] :: [Int]
+  , 0:sort _ :: [Int]
+  , 0:tail _ :: [Int]
+  , 0:tail xs :: [Int]
+  , 0:tail [] :: [Int]
+  , 0:tail (_:_) :: [Int]
+  , 0:_:_ :: [Int]
+  , 0:_:xs :: [Int]
+  , 0:_:ys :: [Int]
+  , [0,_] :: [Int]
+  , 0:_:[0] :: [Int]
+  , 0:_:tail _ :: [Int]
+  , 0:_:_:_ :: [Int]
+  , 0:_:_:xs :: [Int]
+  , [0,_,_] :: [Int]
+  , 0:_:_:_:_ :: [Int]
+  , 0:_:x:_ :: [Int]
+  , 0:_:0:_ :: [Int]
+  , 0:_:id _:_ :: [Int]
+  , 0:_:(_ ++ _) :: [Int]
+  , 0:x:_ :: [Int]
+  , 0:x:xs :: [Int]
+  , [0,x] :: [Int]
+  , 0:x:_:_ :: [Int]
+  , 0:y:_ :: [Int]
+  , 0:0:_ :: [Int]
+  , 0:0:xs :: [Int]
+  , [0,0] :: [Int]
+  , 0:0:_:_ :: [Int]
+  , 0:1:_ :: [Int]
+  , 0:ord _:_ :: [Int]
+  , 0:id _:_ :: [Int]
+  , 0:id _:xs :: [Int]
+  , [0,id _] :: [Int]
+  , 0:id _:_:_ :: [Int]
+  , 0:id x:_ :: [Int]
+  , 0:id 0:_ :: [Int]
+  , 0:id (id _):_ :: [Int]
+  , 0:abs _:_ :: [Int]
+  , 0:negate _:_ :: [Int]
+  , 0:head _:_ :: [Int]
+  , 0:_ + _:_ :: [Int]
+  , 0:insert _ _ :: [Int]
+  , 0:(_ ++ _) :: [Int]
+  , 0:(_ ++ xs) :: [Int]
+  , 0:(_ ++ []) :: [Int]
+  , 0:(_ ++ (_:_)) :: [Int]
+  , 0:(xs ++ _) :: [Int]
+  , 0:([] ++ _) :: [Int]
+  , 0:((_:_) ++ _) :: [Int]
+  , 1:_ :: [Int]
+  , 1:xs :: [Int]
+  , 1:ys :: [Int]
+  , [1] :: [Int]
+  , 1:[0] :: [Int]
+  , 1:tail _ :: [Int]
+  , 1:_:_ :: [Int]
+  , 1:_:xs :: [Int]
+  , [1,_] :: [Int]
+  , 1:_:_:_ :: [Int]
+  , 1:x:_ :: [Int]
+  , 1:0:_ :: [Int]
+  , 1:id _:_ :: [Int]
+  , 1:(_ ++ _) :: [Int]
+  , 2:_ :: [Int]
+  , (-1):_ :: [Int]
+  , (-1):xs :: [Int]
+  , [-1] :: [Int]
+  , (-1):_:_ :: [Int]
+  , f _:_ :: [Int]
+  , f _:xs :: [Int]
+  , [f _] :: [Int]
+  , f _:_:_ :: [Int]
+  , f x:_ :: [Int]
+  , f 0:_ :: [Int]
+  , f (id _):_ :: [Int]
+  , g _:_ :: [Int]
+  , ord _:_ :: [Int]
+  , ord _:xs :: [Int]
+  , ord _:ys :: [Int]
+  , [ord _] :: [Int]
+  , ord _:[0] :: [Int]
+  , ord _:tail _ :: [Int]
+  , ord _:_:_ :: [Int]
+  , ord _:_:xs :: [Int]
+  , [ord _,_] :: [Int]
+  , ord _:_:_:_ :: [Int]
+  , ord _:x:_ :: [Int]
+  , ord _:0:_ :: [Int]
+  , ord _:id _:_ :: [Int]
+  , ord _:(_ ++ _) :: [Int]
+  , ord c:_ :: [Int]
+  , ord c:xs :: [Int]
+  , [ord c] :: [Int]
+  , ord c:_:_ :: [Int]
+  , ord d:_ :: [Int]
+  , ord ' ':_ :: [Int]
+  , ord 'a':_ :: [Int]
+  , ord 'a':xs :: [Int]
+  , [ord 'a'] :: [Int]
+  , ord 'a':_:_ :: [Int]
+  , id _:_ :: [Int]
+  , id _:xs :: [Int]
+  , id _:ys :: [Int]
+  , id _:zs :: [Int]
+  , [id _] :: [Int]
+  , id _:[0] :: [Int]
+  , id _:[1] :: [Int]
+  , id _:[0,0] :: [Int]
+  , id _:sort _ :: [Int]
+  , id _:tail _ :: [Int]
+  , id _:tail xs :: [Int]
+  , id _:tail [] :: [Int]
+  , id _:tail (_:_) :: [Int]
+  , id _:_:_ :: [Int]
+  , id _:_:xs :: [Int]
+  , id _:_:ys :: [Int]
+  , [id _,_] :: [Int]
+  , id _:_:[0] :: [Int]
+  , id _:_:tail _ :: [Int]
+  , id _:_:_:_ :: [Int]
+  , id _:_:_:xs :: [Int]
+  , [id _,_,_] :: [Int]
+  , id _:_:_:_:_ :: [Int]
+  , id _:_:x:_ :: [Int]
+  , id _:_:0:_ :: [Int]
+  , id _:_:id _:_ :: [Int]
+  , id _:_:(_ ++ _) :: [Int]
+  , id _:x:_ :: [Int]
+  , id _:x:xs :: [Int]
+  , [id _,x] :: [Int]
+  , id _:x:_:_ :: [Int]
+  , id _:y:_ :: [Int]
+  , id _:0:_ :: [Int]
+  , id _:0:xs :: [Int]
+  , [id _,0] :: [Int]
+  , id _:0:_:_ :: [Int]
+  , id _:1:_ :: [Int]
+  , id _:ord _:_ :: [Int]
+  , id _:id _:_ :: [Int]
+  , id _:id _:xs :: [Int]
+  , [id _,id _] :: [Int]
+  , id _:id _:_:_ :: [Int]
+  , id _:id x:_ :: [Int]
+  , id _:id 0:_ :: [Int]
+  , id _:id (id _):_ :: [Int]
+  , id _:abs _:_ :: [Int]
+  , id _:negate _:_ :: [Int]
+  , id _:head _:_ :: [Int]
+  , id _:_ + _:_ :: [Int]
+  , id _:insert _ _ :: [Int]
+  , id _:(_ ++ _) :: [Int]
+  , id _:(_ ++ xs) :: [Int]
+  , id _:(_ ++ []) :: [Int]
+  , id _:(_ ++ (_:_)) :: [Int]
+  , id _:(xs ++ _) :: [Int]
+  , id _:([] ++ _) :: [Int]
+  , id _:((_:_) ++ _) :: [Int]
+  , id x:_ :: [Int]
+  , id x:xs :: [Int]
+  , id x:ys :: [Int]
+  , [id x] :: [Int]
+  , id x:[0] :: [Int]
+  , id x:tail _ :: [Int]
+  , id x:_:_ :: [Int]
+  , id x:_:xs :: [Int]
+  , [id x,_] :: [Int]
+  , id x:_:_:_ :: [Int]
+  , id x:x:_ :: [Int]
+  , id x:0:_ :: [Int]
+  , id x:id _:_ :: [Int]
+  , id x:(_ ++ _) :: [Int]
+  , id y:_ :: [Int]
+  , id y:xs :: [Int]
+  , [id y] :: [Int]
+  , id y:_:_ :: [Int]
+  , id z:_ :: [Int]
+  , id 0:_ :: [Int]
+  , id 0:xs :: [Int]
+  , id 0:ys :: [Int]
+  , [id 0] :: [Int]
+  , id 0:[0] :: [Int]
+  , id 0:tail _ :: [Int]
+  , id 0:_:_ :: [Int]
+  , id 0:_:xs :: [Int]
+  , [id 0,_] :: [Int]
+  , id 0:_:_:_ :: [Int]
+  , id 0:x:_ :: [Int]
+  , id 0:0:_ :: [Int]
+  , id 0:id _:_ :: [Int]
+  , id 0:(_ ++ _) :: [Int]
+  , id 1:_ :: [Int]
+  , id 1:xs :: [Int]
+  , [id 1] :: [Int]
+  , id 1:_:_ :: [Int]
+  , id (-1):_ :: [Int]
+  , id (f _):_ :: [Int]
+  , id (ord _):_ :: [Int]
+  , id (ord _):xs :: [Int]
+  , [id (ord _)] :: [Int]
+  , id (ord _):_:_ :: [Int]
+  , id (ord c):_ :: [Int]
+  , id (ord 'a'):_ :: [Int]
+  , id (id _):_ :: [Int]
+  , id (id _):xs :: [Int]
+  , id (id _):ys :: [Int]
+  , [id (id _)] :: [Int]
+  , id (id _):[0] :: [Int]
+  , id (id _):tail _ :: [Int]
+  , id (id _):_:_ :: [Int]
+  , id (id _):_:xs :: [Int]
+  , [id (id _),_] :: [Int]
+  , id (id _):_:_:_ :: [Int]
+  , id (id _):x:_ :: [Int]
+  , id (id _):0:_ :: [Int]
+  , id (id _):id _:_ :: [Int]
+  , id (id _):(_ ++ _) :: [Int]
+  , id (id x):_ :: [Int]
+  , id (id x):xs :: [Int]
+  , [id (id x)] :: [Int]
+  , id (id x):_:_ :: [Int]
+  , id (id y):_ :: [Int]
+  , id (id 0):_ :: [Int]
+  , id (id 0):xs :: [Int]
+  , [id (id 0)] :: [Int]
+  , id (id 0):_:_ :: [Int]
+  , id (id 1):_ :: [Int]
+  , id (id (ord _)):_ :: [Int]
+  , id (id (id _)):_ :: [Int]
+  , id (id (id _)):xs :: [Int]
+  , [id (id (id _))] :: [Int]
+  , id (id (id _)):_:_ :: [Int]
+  , id (id (id x)):_ :: [Int]
+  , id (id (id 0)):_ :: [Int]
+  , id (id (id (id _))):_ :: [Int]
+  , id (id (abs _)):_ :: [Int]
+  , id (id (negate _)):_ :: [Int]
+  , id (id (head _)):_ :: [Int]
+  , id (id (_ + _)):_ :: [Int]
+  , id (abs _):_ :: [Int]
+  , id (abs _):xs :: [Int]
+  , [id (abs _)] :: [Int]
+  , id (abs _):_:_ :: [Int]
+  , id (abs x):_ :: [Int]
+  , id (abs 0):_ :: [Int]
+  , id (abs (id _)):_ :: [Int]
+  , id (negate _):_ :: [Int]
+  , id (negate _):xs :: [Int]
+  , [id (negate _)] :: [Int]
+  , id (negate _):_:_ :: [Int]
+  , id (negate x):_ :: [Int]
+  , id (negate 0):_ :: [Int]
+  , id (negate (id _)):_ :: [Int]
+  , id (head _):_ :: [Int]
+  , id (head _):xs :: [Int]
+  , [id (head _)] :: [Int]
+  , id (head _):_:_ :: [Int]
+  , id (head xs):_ :: [Int]
+  , id (head []):_ :: [Int]
+  , id (head (_:_)):_ :: [Int]
+  , id (_ * _):_ :: [Int]
+  , id (_ + _):_ :: [Int]
+  , id (_ + _):xs :: [Int]
+  , [id (_ + _)] :: [Int]
+  , id (_ + _):_:_ :: [Int]
+  , id (_ + x):_ :: [Int]
+  , id (_ + 0):_ :: [Int]
+  , id (_ + id _):_ :: [Int]
+  , id (x + _):_ :: [Int]
+  , id (0 + _):_ :: [Int]
+  , id (id _ + _):_ :: [Int]
+  , abs _:_ :: [Int]
+  , abs _:xs :: [Int]
+  , abs _:ys :: [Int]
+  , [abs _] :: [Int]
+  , abs _:[0] :: [Int]
+  , abs _:tail _ :: [Int]
+  , abs _:_:_ :: [Int]
+  , abs _:_:xs :: [Int]
+  , [abs _,_] :: [Int]
+  , abs _:_:_:_ :: [Int]
+  , abs _:x:_ :: [Int]
+  , abs _:0:_ :: [Int]
+  , abs _:id _:_ :: [Int]
+  , abs _:(_ ++ _) :: [Int]
+  , abs x:_ :: [Int]
+  , abs x:xs :: [Int]
+  , [abs x] :: [Int]
+  , abs x:_:_ :: [Int]
+  , abs y:_ :: [Int]
+  , abs 0:_ :: [Int]
+  , abs 0:xs :: [Int]
+  , [abs 0] :: [Int]
+  , abs 0:_:_ :: [Int]
+  , abs 1:_ :: [Int]
+  , abs (ord _):_ :: [Int]
+  , abs (id _):_ :: [Int]
+  , abs (id _):xs :: [Int]
+  , [abs (id _)] :: [Int]
+  , abs (id _):_:_ :: [Int]
+  , abs (id x):_ :: [Int]
+  , abs (id 0):_ :: [Int]
+  , abs (id (id _)):_ :: [Int]
+  , abs (abs _):_ :: [Int]
+  , abs (negate _):_ :: [Int]
+  , abs (head _):_ :: [Int]
+  , abs (_ + _):_ :: [Int]
+  , negate _:_ :: [Int]
+  , negate _:xs :: [Int]
+  , negate _:ys :: [Int]
+  , [negate _] :: [Int]
+  , negate _:[0] :: [Int]
+  , negate _:tail _ :: [Int]
+  , negate _:_:_ :: [Int]
+  , negate _:_:xs :: [Int]
+  , [negate _,_] :: [Int]
+  , negate _:_:_:_ :: [Int]
+  , negate _:x:_ :: [Int]
+  , negate _:0:_ :: [Int]
+  , negate _:id _:_ :: [Int]
+  , negate _:(_ ++ _) :: [Int]
+  , negate x:_ :: [Int]
+  , negate x:xs :: [Int]
+  , [negate x] :: [Int]
+  , negate x:_:_ :: [Int]
+  , negate y:_ :: [Int]
+  , negate 0:_ :: [Int]
+  , negate 0:xs :: [Int]
+  , [negate 0] :: [Int]
+  , negate 0:_:_ :: [Int]
+  , negate 1:_ :: [Int]
+  , negate (ord _):_ :: [Int]
+  , negate (id _):_ :: [Int]
+  , negate (id _):xs :: [Int]
+  , [negate (id _)] :: [Int]
+  , negate (id _):_:_ :: [Int]
+  , negate (id x):_ :: [Int]
+  , negate (id 0):_ :: [Int]
+  , negate (id (id _)):_ :: [Int]
+  , negate (abs _):_ :: [Int]
+  , negate (negate _):_ :: [Int]
+  , negate (head _):_ :: [Int]
+  , negate (_ + _):_ :: [Int]
+  , head _:_ :: [Int]
+  , head _:xs :: [Int]
+  , head _:ys :: [Int]
+  , [head _] :: [Int]
+  , head _:[0] :: [Int]
+  , head _:tail _ :: [Int]
+  , head _:_:_ :: [Int]
+  , head _:_:xs :: [Int]
+  , [head _,_] :: [Int]
+  , head _:_:_:_ :: [Int]
+  , head _:x:_ :: [Int]
+  , head _:0:_ :: [Int]
+  , head _:id _:_ :: [Int]
+  , head _:(_ ++ _) :: [Int]
+  , head xs:_ :: [Int]
+  , head xs:xs :: [Int]
+  , [head xs] :: [Int]
+  , head xs:_:_ :: [Int]
+  , head ys:_ :: [Int]
+  , head []:_ :: [Int]
+  , head []:xs :: [Int]
+  , [head []] :: [Int]
+  , head []:_:_ :: [Int]
+  , head [0]:_ :: [Int]
+  , head (tail _):_ :: [Int]
+  , head (_:_):_ :: [Int]
+  , head (_:_):xs :: [Int]
+  , [head (_:_)] :: [Int]
+  , head (_:_):_:_ :: [Int]
+  , head (_:xs):_ :: [Int]
+  , head [_]:_ :: [Int]
+  , head (_:_:_):_ :: [Int]
+  , head (x:_):_ :: [Int]
+  , head (0:_):_ :: [Int]
+  , head (id _:_):_ :: [Int]
+  , head (_ ++ _):_ :: [Int]
+  , _ * _:_ :: [Int]
+  , _ * _:xs :: [Int]
+  , [_ * _] :: [Int]
+  , _ * _:_:_ :: [Int]
+  , _ * x:_ :: [Int]
+  , _ * 0:_ :: [Int]
+  , _ * id _:_ :: [Int]
+  , x * _:_ :: [Int]
+  , 0 * _:_ :: [Int]
+  , id _ * _:_ :: [Int]
+  , _ + _:_ :: [Int]
+  , _ + _:xs :: [Int]
+  , _ + _:ys :: [Int]
+  , [_ + _] :: [Int]
+  , _ + _:[0] :: [Int]
+  , _ + _:tail _ :: [Int]
+  , _ + _:_:_ :: [Int]
+  , _ + _:_:xs :: [Int]
+  , [_ + _,_] :: [Int]
+  , _ + _:_:_:_ :: [Int]
+  , _ + _:x:_ :: [Int]
+  , _ + _:0:_ :: [Int]
+  , _ + _:id _:_ :: [Int]
+  , _ + _:(_ ++ _) :: [Int]
+  , _ + x:_ :: [Int]
+  , _ + x:xs :: [Int]
+  , [_ + x] :: [Int]
+  , _ + x:_:_ :: [Int]
+  , _ + y:_ :: [Int]
+  , _ + 0:_ :: [Int]
+  , _ + 0:xs :: [Int]
+  , [_ + 0] :: [Int]
+  , _ + 0:_:_ :: [Int]
+  , _ + 1:_ :: [Int]
+  , _ + ord _:_ :: [Int]
+  , _ + id _:_ :: [Int]
+  , _ + id _:xs :: [Int]
+  , [_ + id _] :: [Int]
+  , _ + id _:_:_ :: [Int]
+  , _ + id x:_ :: [Int]
+  , _ + id 0:_ :: [Int]
+  , _ + id (id _):_ :: [Int]
+  , _ + abs _:_ :: [Int]
+  , _ + negate _:_ :: [Int]
+  , _ + head _:_ :: [Int]
+  , _ + (_ + _):_ :: [Int]
+  , x + _:_ :: [Int]
+  , x + _:xs :: [Int]
+  , [x + _] :: [Int]
+  , x + _:_:_ :: [Int]
+  , x + x:_ :: [Int]
+  , x + 0:_ :: [Int]
+  , x + id _:_ :: [Int]
+  , y + _:_ :: [Int]
+  , 0 + _:_ :: [Int]
+  , 0 + _:xs :: [Int]
+  , [0 + _] :: [Int]
+  , 0 + _:_:_ :: [Int]
+  , 0 + x:_ :: [Int]
+  , 0 + 0:_ :: [Int]
+  , 0 + id _:_ :: [Int]
+  , 1 + _:_ :: [Int]
+  , ord _ + _:_ :: [Int]
+  , id _ + _:_ :: [Int]
+  , id _ + _:xs :: [Int]
+  , [id _ + _] :: [Int]
+  , id _ + _:_:_ :: [Int]
+  , id _ + x:_ :: [Int]
+  , id _ + 0:_ :: [Int]
+  , id _ + id _:_ :: [Int]
+  , id x + _:_ :: [Int]
+  , id 0 + _:_ :: [Int]
+  , id (id _) + _:_ :: [Int]
+  , abs _ + _:_ :: [Int]
+  , negate _ + _:_ :: [Int]
+  , head _ + _:_ :: [Int]
+  , (_ + _) + _:_ :: [Int]
+  , insert _ _ :: [Int]
+  , insert _ xs :: [Int]
+  , insert _ ys :: [Int]
+  , insert _ [] :: [Int]
+  , insert _ [0] :: [Int]
+  , insert _ (tail _) :: [Int]
+  , insert _ (_:_) :: [Int]
+  , insert _ (_:xs) :: [Int]
+  , insert _ [_] :: [Int]
+  , insert _ (_:_:_) :: [Int]
+  , insert _ (x:_) :: [Int]
+  , insert _ (0:_) :: [Int]
+  , insert _ (id _:_) :: [Int]
+  , insert _ (_ ++ _) :: [Int]
+  , insert x _ :: [Int]
+  , insert x xs :: [Int]
+  , insert x [] :: [Int]
+  , insert x (_:_) :: [Int]
+  , insert y _ :: [Int]
+  , insert 0 _ :: [Int]
+  , insert 0 xs :: [Int]
+  , insert 0 [] :: [Int]
+  , insert 0 (_:_) :: [Int]
+  , insert 1 _ :: [Int]
+  , insert (ord _) _ :: [Int]
+  , insert (id _) _ :: [Int]
+  , insert (id _) xs :: [Int]
+  , insert (id _) [] :: [Int]
+  , insert (id _) (_:_) :: [Int]
+  , insert (id x) _ :: [Int]
+  , insert (id 0) _ :: [Int]
+  , insert (id (id _)) _ :: [Int]
+  , insert (abs _) _ :: [Int]
+  , insert (negate _) _ :: [Int]
+  , insert (head _) _ :: [Int]
+  , insert (_ + _) _ :: [Int]
+  , _ ++ _ :: [Int]
+  , _ ++ xs :: [Int]
+  , _ ++ ys :: [Int]
+  , _ ++ zs :: [Int]
+  , _ ++ [] :: [Int]
+  , _ ++ [0] :: [Int]
+  , _ ++ [1] :: [Int]
+  , _ ++ [0,0] :: [Int]
+  , _ ++ sort _ :: [Int]
+  , _ ++ tail _ :: [Int]
+  , _ ++ tail xs :: [Int]
+  , _ ++ tail [] :: [Int]
+  , _ ++ tail (_:_) :: [Int]
+  , _ ++ (_:_) :: [Int]
+  , _ ++ (_:xs) :: [Int]
+  , _ ++ (_:ys) :: [Int]
+  , _ ++ [_] :: [Int]
+  , _ ++ (_:[0]) :: [Int]
+  , _ ++ (_:tail _) :: [Int]
+  , _ ++ (_:_:_) :: [Int]
+  , _ ++ (_:_:xs) :: [Int]
+  , _ ++ [_,_] :: [Int]
+  , _ ++ (_:_:_:_) :: [Int]
+  , _ ++ (_:x:_) :: [Int]
+  , _ ++ (_:0:_) :: [Int]
+  , _ ++ (_:id _:_) :: [Int]
+  , _ ++ (_:(_ ++ _)) :: [Int]
+  , _ ++ (x:_) :: [Int]
+  , _ ++ (x:xs) :: [Int]
+  , _ ++ [x] :: [Int]
+  , _ ++ (x:_:_) :: [Int]
+  , _ ++ (y:_) :: [Int]
+  , _ ++ (0:_) :: [Int]
+  , _ ++ (0:xs) :: [Int]
+  , _ ++ [0] :: [Int]
+  , _ ++ (0:_:_) :: [Int]
+  , _ ++ (1:_) :: [Int]
+  , _ ++ (ord _:_) :: [Int]
+  , _ ++ (id _:_) :: [Int]
+  , _ ++ (id _:xs) :: [Int]
+  , _ ++ [id _] :: [Int]
+  , _ ++ (id _:_:_) :: [Int]
+  , _ ++ (id x:_) :: [Int]
+  , _ ++ (id 0:_) :: [Int]
+  , _ ++ (id (id _):_) :: [Int]
+  , _ ++ (abs _:_) :: [Int]
+  , _ ++ (negate _:_) :: [Int]
+  , _ ++ (head _:_) :: [Int]
+  , _ ++ (_ + _:_) :: [Int]
+  , _ ++ insert _ _ :: [Int]
+  , _ ++ (_ ++ _) :: [Int]
+  , _ ++ (_ ++ xs) :: [Int]
+  , _ ++ (_ ++ []) :: [Int]
+  , _ ++ (_ ++ (_:_)) :: [Int]
+  , _ ++ (xs ++ _) :: [Int]
+  , _ ++ ([] ++ _) :: [Int]
+  , _ ++ ((_:_) ++ _) :: [Int]
+  , xs ++ _ :: [Int]
+  , xs ++ xs :: [Int]
+  , xs ++ ys :: [Int]
+  , xs ++ [] :: [Int]
+  , xs ++ [0] :: [Int]
+  , xs ++ tail _ :: [Int]
+  , xs ++ (_:_) :: [Int]
+  , xs ++ (_:xs) :: [Int]
+  , xs ++ [_] :: [Int]
+  , xs ++ (_:_:_) :: [Int]
+  , xs ++ (x:_) :: [Int]
+  , xs ++ (0:_) :: [Int]
+  , xs ++ (id _:_) :: [Int]
+  , xs ++ (_ ++ _) :: [Int]
+  , ys ++ _ :: [Int]
+  , ys ++ xs :: [Int]
+  , ys ++ [] :: [Int]
+  , ys ++ (_:_) :: [Int]
+  , zs ++ _ :: [Int]
+  , [] ++ _ :: [Int]
+  , [] ++ xs :: [Int]
+  , [] ++ ys :: [Int]
+  , [] ++ [] :: [Int]
+  , [] ++ [0] :: [Int]
+  , [] ++ tail _ :: [Int]
+  , [] ++ (_:_) :: [Int]
+  , [] ++ (_:xs) :: [Int]
+  , [] ++ [_] :: [Int]
+  , [] ++ (_:_:_) :: [Int]
+  , [] ++ (x:_) :: [Int]
+  , [] ++ (0:_) :: [Int]
+  , [] ++ (id _:_) :: [Int]
+  , [] ++ (_ ++ _) :: [Int]
+  , [0] ++ _ :: [Int]
+  , [0] ++ xs :: [Int]
+  , [0] ++ [] :: [Int]
+  , [0] ++ (_:_) :: [Int]
+  , [1] ++ _ :: [Int]
+  , [0,0] ++ _ :: [Int]
+  , sort _ ++ _ :: [Int]
+  , tail _ ++ _ :: [Int]
+  , tail _ ++ xs :: [Int]
+  , tail _ ++ [] :: [Int]
+  , tail _ ++ (_:_) :: [Int]
+  , tail xs ++ _ :: [Int]
+  , tail [] ++ _ :: [Int]
+  , tail (_:_) ++ _ :: [Int]
+  , (_:_) ++ _ :: [Int]
+  , (_:_) ++ xs :: [Int]
+  , (_:_) ++ ys :: [Int]
+  , (_:_) ++ [] :: [Int]
+  , (_:_) ++ [0] :: [Int]
+  , (_:_) ++ tail _ :: [Int]
+  , (_:_) ++ (_:_) :: [Int]
+  , (_:_) ++ (_:xs) :: [Int]
+  , (_:_) ++ [_] :: [Int]
+  , (_:_) ++ (_:_:_) :: [Int]
+  , (_:_) ++ (x:_) :: [Int]
+  , (_:_) ++ (0:_) :: [Int]
+  , (_:_) ++ (id _:_) :: [Int]
+  , (_:_) ++ (_ ++ _) :: [Int]
+  , (_:xs) ++ _ :: [Int]
+  , (_:xs) ++ xs :: [Int]
+  , (_:xs) ++ [] :: [Int]
+  , (_:xs) ++ (_:_) :: [Int]
+  , (_:ys) ++ _ :: [Int]
+  , [_] ++ _ :: [Int]
+  , [_] ++ xs :: [Int]
+  , [_] ++ [] :: [Int]
+  , [_] ++ (_:_) :: [Int]
+  , (_:[0]) ++ _ :: [Int]
+  , (_:tail _) ++ _ :: [Int]
+  , (_:_:_) ++ _ :: [Int]
+  , (_:_:_) ++ xs :: [Int]
+  , (_:_:_) ++ [] :: [Int]
+  , (_:_:_) ++ (_:_) :: [Int]
+  , (_:_:xs) ++ _ :: [Int]
+  , [_,_] ++ _ :: [Int]
+  , (_:_:_:_) ++ _ :: [Int]
+  , (_:x:_) ++ _ :: [Int]
+  , (_:0:_) ++ _ :: [Int]
+  , (_:id _:_) ++ _ :: [Int]
+  , (_:(_ ++ _)) ++ _ :: [Int]
+  , (x:_) ++ _ :: [Int]
+  , (x:_) ++ xs :: [Int]
+  , (x:_) ++ [] :: [Int]
+  , (x:_) ++ (_:_) :: [Int]
+  , (x:xs) ++ _ :: [Int]
+  , [x] ++ _ :: [Int]
+  , (x:_:_) ++ _ :: [Int]
+  , (y:_) ++ _ :: [Int]
+  , (0:_) ++ _ :: [Int]
+  , (0:_) ++ xs :: [Int]
+  , (0:_) ++ [] :: [Int]
+  , (0:_) ++ (_:_) :: [Int]
+  , (0:xs) ++ _ :: [Int]
+  , [0] ++ _ :: [Int]
+  , (0:_:_) ++ _ :: [Int]
+  , (1:_) ++ _ :: [Int]
+  , (ord _:_) ++ _ :: [Int]
+  , (id _:_) ++ _ :: [Int]
+  , (id _:_) ++ xs :: [Int]
+  , (id _:_) ++ [] :: [Int]
+  , (id _:_) ++ (_:_) :: [Int]
+  , (id _:xs) ++ _ :: [Int]
+  , [id _] ++ _ :: [Int]
+  , (id _:_:_) ++ _ :: [Int]
+  , (id x:_) ++ _ :: [Int]
+  , (id 0:_) ++ _ :: [Int]
+  , (id (id _):_) ++ _ :: [Int]
+  , (abs _:_) ++ _ :: [Int]
+  , (negate _:_) ++ _ :: [Int]
+  , (head _:_) ++ _ :: [Int]
+  , (_ + _:_) ++ _ :: [Int]
+  , insert _ _ ++ _ :: [Int]
+  , (_ ++ _) ++ _ :: [Int]
+  , (_ ++ _) ++ xs :: [Int]
+  , (_ ++ _) ++ [] :: [Int]
+  , (_ ++ _) ++ (_:_) :: [Int]
+  , (_ ++ xs) ++ _ :: [Int]
+  , (_ ++ []) ++ _ :: [Int]
+  , (_ ++ (_:_)) ++ _ :: [Int]
+  , (xs ++ _) ++ _ :: [Int]
+  , ([] ++ _) ++ _ :: [Int]
+  , ((_:_) ++ _) ++ _ :: [Int]
+  ]
+
+sortBy compareQuickly $ take 5040 $ list  ::  [ Expr ]  =
+  [ False :: Bool
+  , True :: Bool
+  , _ :: Bool
+  , p :: Bool
+  , p' :: Bool
+  , q :: Bool
+  , q' :: Bool
+  , r :: Bool
+  , ' ' :: Char
+  , 'A' :: Char
+  , 'a' :: Char
+  , 'b' :: Char
+  , 'c' :: Char
+  , _ :: Char
+  , c :: Char
+  , c' :: Char
+  , d :: Char
+  , d' :: Char
+  , e :: Char
+  , -1 :: Int
+  , -2 :: Int
+  , -3 :: Int
+  , 0 :: Int
+  , 1 :: Int
+  , 2 :: Int
+  , 3 :: Int
+  , _ :: Int
+  , x :: Int
+  , x' :: Int
+  , x'' :: Int
+  , y :: Int
+  , y' :: Int
+  , z :: Int
+  , z' :: Int
+  , [-1,0] :: [Int]
+  , [-1] :: [Int]
+  , [0,-1] :: [Int]
+  , [0,0,0,0] :: [Int]
+  , [0,0,0] :: [Int]
+  , [0,0,1] :: [Int]
+  , [0,0] :: [Int]
+  , [0,1,0] :: [Int]
+  , [0,1] :: [Int]
+  , [0] :: [Int]
+  , [1,0,0] :: [Int]
+  , [1,0] :: [Int]
+  , [1,1] :: [Int]
+  , [1] :: [Int]
+  , [2] :: [Int]
+  , [] :: [Int]
+  , _ :: [Int]
+  , xs :: [Int]
+  , xs' :: [Int]
+  , ys :: [Int]
+  , ys' :: [Int]
+  , zs :: [Int]
+  , not :: Bool -> Bool
+  , f :: Int -> Int
+  , g :: Int -> Int
+  , h :: Int -> Int
+  , abs :: Int -> Int
+  , id :: Int -> Int
+  , negate :: Int -> Int
+  , (&&) :: Bool -> Bool -> Bool
+  , (==>) :: Bool -> Bool -> Bool
+  , (||) :: Bool -> Bool -> Bool
+  , (*) :: Int -> Int -> Int
+  , (+) :: Int -> Int -> Int
+  , not False :: Bool
+  , not True :: Bool
+  , not _ :: Bool
+  , not p :: Bool
+  , not p' :: Bool
+  , not q :: Bool
+  , not r :: Bool
+  , not (not False) :: Bool
+  , not (not True) :: Bool
+  , not (not _) :: Bool
+  , not (not p) :: Bool
+  , not (not q) :: Bool
+  , not (not r) :: Bool
+  , not (not (not False)) :: Bool
+  , not (not (not True)) :: Bool
+  , not (not (not _)) :: Bool
+  , not (not (not p)) :: Bool
+  , not (not (not q)) :: Bool
+  , not (not (not (not False))) :: Bool
+  , not (not (not (not True))) :: Bool
+  , not (not (not (not _))) :: Bool
+  , not (not (not (not p))) :: Bool
+  , not (not (not (not (not _)))) :: Bool
+  , not (not (not (_ || _))) :: Bool
+  , not (not (even _)) :: Bool
+  , not (not (odd _)) :: Bool
+  , not (not (_ && _)) :: Bool
+  , not (not (_ == _)) :: Bool
+  , not (not (False || _)) :: Bool
+  , not (not (True || _)) :: Bool
+  , not (not (_ || False)) :: Bool
+  , not (not (_ || True)) :: Bool
+  , not (not (_ || _)) :: Bool
+  , not (not (_ || p)) :: Bool
+  , not (not (_ || not _)) :: Bool
+  , not (not (p || _)) :: Bool
+  , not (not (not _ || _)) :: Bool
+  , not (not (_ == _)) :: Bool
+  , not (not (elem _ _)) :: Bool
+  , not (even 0) :: Bool
+  , not (even _) :: Bool
+  , not (even x) :: Bool
+  , not (even (id _)) :: Bool
+  , not (odd 0) :: Bool
+  , not (odd _) :: Bool
+  , not (odd x) :: Bool
+  , not (odd (id _)) :: Bool
+  , not (False && _) :: Bool
+  , not (True && _) :: Bool
+  , not (_ && False) :: Bool
+  , not (_ && True) :: Bool
+  , not (_ && _) :: Bool
+  , not (_ && p) :: Bool
+  , not (_ && not _) :: Bool
+  , not (p && _) :: Bool
+  , not (not _ && _) :: Bool
+  , not (_ <= _) :: Bool
+  , not (False == _) :: Bool
+  , not (True == _) :: Bool
+  , not (_ == False) :: Bool
+  , not (_ == True) :: Bool
+  , not (_ == _) :: Bool
+  , not (_ == p) :: Bool
+  , not (_ == not _) :: Bool
+  , not (p == _) :: Bool
+  , not (not _ == _) :: Bool
+  , not (_ ==> _) :: Bool
+  , not (False || False) :: Bool
+  , not (False || True) :: Bool
+  , not (False || _) :: Bool
+  , not (False || p) :: Bool
+  , not (False || not _) :: Bool
+  , not (True || False) :: Bool
+  , not (True || True) :: Bool
+  , not (True || _) :: Bool
+  , not (True || p) :: Bool
+  , not (True || not _) :: Bool
+  , not (_ || False) :: Bool
+  , not (_ || True) :: Bool
+  , not (_ || _) :: Bool
+  , not (_ || p) :: Bool
+  , not (_ || q) :: Bool
+  , not (_ || not False) :: Bool
+  , not (_ || not True) :: Bool
+  , not (_ || not _) :: Bool
+  , not (_ || not p) :: Bool
+  , not (_ || not (not _)) :: Bool
+  , not (_ || (_ || _)) :: Bool
+  , not (p || False) :: Bool
+  , not (p || True) :: Bool
+  , not (p || _) :: Bool
+  , not (p || p) :: Bool
+  , not (p || not _) :: Bool
+  , not (q || _) :: Bool
+  , not (not False || _) :: Bool
+  , not (not True || _) :: Bool
+  , not (not _ || False) :: Bool
+  , not (not _ || True) :: Bool
+  , not (not _ || _) :: Bool
+  , not (not _ || p) :: Bool
+  , not (not _ || not _) :: Bool
+  , not (not p || _) :: Bool
+  , not (not (not _) || _) :: Bool
+  , not ((_ || _) || _) :: Bool
+  , not (_ <= _) :: Bool
+  , not (0 == _) :: Bool
+  , not (_ == 0) :: Bool
+  , not (_ == _) :: Bool
+  , not (_ == x) :: Bool
+  , not (_ == id _) :: Bool
+  , not (x == _) :: Bool
+  , not (id _ == _) :: Bool
+  , not (elem 0 _) :: Bool
+  , not (elem _ []) :: Bool
+  , not (elem _ _) :: Bool
+  , not (elem _ xs) :: Bool
+  , not (elem _ (_:_)) :: Bool
+  , not (elem x _) :: Bool
+  , not (elem (id _) _) :: Bool
+  , ord ' ' :: Int
+  , ord 'A' :: Int
+  , ord 'a' :: Int
+  , ord 'b' :: Int
+  , ord _ :: Int
+  , ord c :: Int
+  , ord c' :: Int
+  , ord d :: Int
+  , ord e :: Int
+  , even 0 :: Bool
+  , even 1 :: Bool
+  , even _ :: Bool
+  , even x :: Bool
+  , even y :: Bool
+  , even (ord _) :: Bool
+  , even (abs _) :: Bool
+  , even (id 0) :: Bool
+  , even (id _) :: Bool
+  , even (id x) :: Bool
+  , even (id (id _)) :: Bool
+  , even (negate _) :: Bool
+  , even (head _) :: Bool
+  , even (_ + _) :: Bool
+  , odd 0 :: Bool
+  , odd 1 :: Bool
+  , odd _ :: Bool
+  , odd x :: Bool
+  , odd y :: Bool
+  , odd (ord _) :: Bool
+  , odd (abs _) :: Bool
+  , odd (id 0) :: Bool
+  , odd (id _) :: Bool
+  , odd (id x) :: Bool
+  , odd (id (id _)) :: Bool
+  , odd (negate _) :: Bool
+  , odd (head _) :: Bool
+  , odd (_ + _) :: Bool
+  , f (-1) :: Int
+  , f 0 :: Int
+  , f 1 :: Int
+  , f _ :: Int
+  , f x :: Int
+  , f y :: Int
+  , f z :: Int
+  , f (ord 'a') :: Int
+  , f (ord _) :: Int
+  , f (ord c) :: Int
+  , f (f _) :: Int
+  , f (abs 0) :: Int
+  , f (abs _) :: Int
+  , f (abs x) :: Int
+  , f (abs (id _)) :: Int
+  , f (id 0) :: Int
+  , f (id 1) :: Int
+  , f (id _) :: Int
+  , f (id x) :: Int
+  , f (id y) :: Int
+  , f (id (ord _)) :: Int
+  , f (id (abs _)) :: Int
+  , f (id (id 0)) :: Int
+  , f (id (id _)) :: Int
+  , f (id (id x)) :: Int
+  , f (id (id (id _))) :: Int
+  , f (id (negate _)) :: Int
+  , f (id (head _)) :: Int
+  , f (id (_ + _)) :: Int
+  , f (negate 0) :: Int
+  , f (negate _) :: Int
+  , f (negate x) :: Int
+  , f (negate (id _)) :: Int
+  , f (head []) :: Int
+  , f (head _) :: Int
+  , f (head xs) :: Int
+  , f (head (_:_)) :: Int
+  , f (_ * _) :: Int
+  , f (0 + _) :: Int
+  , f (_ + 0) :: Int
+  , f (_ + _) :: Int
+  , f (_ + x) :: Int
+  , f (_ + id _) :: Int
+  , f (x + _) :: Int
+  , f (id _ + _) :: Int
+  , f' _ :: Int
+  , g 0 :: Int
+  , g 1 :: Int
+  , g _ :: Int
+  , g x :: Int
+  , g y :: Int
+  , g (ord _) :: Int
+  , g (abs _) :: Int
+  , g (id 0) :: Int
+  , g (id _) :: Int
+  , g (id x) :: Int
+  , g (id (id _)) :: Int
+  , g (negate _) :: Int
+  , g (head _) :: Int
+  , g (_ + _) :: Int
+  , h 0 :: Int
+  , h _ :: Int
+  , h x :: Int
+  , h (id _) :: Int
+  , abs (-1) :: Int
+  , abs 0 :: Int
+  , abs 1 :: Int
+  , abs 2 :: Int
+  , abs _ :: Int
+  , abs x :: Int
+  , abs x' :: Int
+  , abs y :: Int
+  , abs z :: Int
+  , abs (ord ' ') :: Int
+  , abs (ord 'a') :: Int
+  , abs (ord _) :: Int
+  , abs (ord c) :: Int
+  , abs (ord d) :: Int
+  , abs (f 0) :: Int
+  , abs (f _) :: Int
+  , abs (f x) :: Int
+  , abs (f (id _)) :: Int
+  , abs (g _) :: Int
+  , abs (abs 0) :: Int
+  , abs (abs 1) :: Int
+  , abs (abs _) :: Int
+  , abs (abs x) :: Int
+  , abs (abs y) :: Int
+  , abs (abs (ord _)) :: Int
+  , abs (abs (abs _)) :: Int
+  , abs (abs (id 0)) :: Int
+  , abs (abs (id _)) :: Int
+  , abs (abs (id x)) :: Int
+  , abs (abs (id (id _))) :: Int
+  , abs (abs (negate _)) :: Int
+  , abs (abs (head _)) :: Int
+  , abs (abs (_ + _)) :: Int
+  , abs (id (-1)) :: Int
+  , abs (id 0) :: Int
+  , abs (id 1) :: Int
+  , abs (id _) :: Int
+  , abs (id x) :: Int
+  , abs (id y) :: Int
+  , abs (id z) :: Int
+  , abs (id (ord 'a')) :: Int
+  , abs (id (ord _)) :: Int
+  , abs (id (ord c)) :: Int
+  , abs (id (f _)) :: Int
+  , abs (id (abs 0)) :: Int
+  , abs (id (abs _)) :: Int
+  , abs (id (abs x)) :: Int
+  , abs (id (abs (id _))) :: Int
+  , abs (id (id 0)) :: Int
+  , abs (id (id 1)) :: Int
+  , abs (id (id _)) :: Int
+  , abs (id (id x)) :: Int
+  , abs (id (id y)) :: Int
+  , abs (id (id (ord _))) :: Int
+  , abs (id (id (abs _))) :: Int
+  , abs (id (id (id 0))) :: Int
+  , abs (id (id (id _))) :: Int
+  , abs (id (id (id x))) :: Int
+  , abs (id (id (id (id _)))) :: Int
+  , abs (id (id (negate _))) :: Int
+  , abs (id (id (head _))) :: Int
+  , abs (id (id (_ + _))) :: Int
+  , abs (id (negate 0)) :: Int
+  , abs (id (negate _)) :: Int
+  , abs (id (negate x)) :: Int
+  , abs (id (negate (id _))) :: Int
+  , abs (id (head [])) :: Int
+  , abs (id (head _)) :: Int
+  , abs (id (head xs)) :: Int
+  , abs (id (head (_:_))) :: Int
+  , abs (id (_ * _)) :: Int
+  , abs (id (0 + _)) :: Int
+  , abs (id (_ + 0)) :: Int
+  , abs (id (_ + _)) :: Int
+  , abs (id (_ + x)) :: Int
+  , abs (id (_ + id _)) :: Int
+  , abs (id (x + _)) :: Int
+  , abs (id (id _ + _)) :: Int
+  , abs (negate 0) :: Int
+  , abs (negate 1) :: Int
+  , abs (negate _) :: Int
+  , abs (negate x) :: Int
+  , abs (negate y) :: Int
+  , abs (negate (ord _)) :: Int
+  , abs (negate (abs _)) :: Int
+  , abs (negate (id 0)) :: Int
+  , abs (negate (id _)) :: Int
+  , abs (negate (id x)) :: Int
+  , abs (negate (id (id _))) :: Int
+  , abs (negate (negate _)) :: Int
+  , abs (negate (head _)) :: Int
+  , abs (negate (_ + _)) :: Int
+  , abs (head [0]) :: Int
+  , abs (head []) :: Int
+  , abs (head _) :: Int
+  , abs (head xs) :: Int
+  , abs (head ys) :: Int
+  , abs (head (tail _)) :: Int
+  , abs (head (0:_)) :: Int
+  , abs (head [_]) :: Int
+  , abs (head (_:_)) :: Int
+  , abs (head (_:xs)) :: Int
+  , abs (head (_:_:_)) :: Int
+  , abs (head (x:_)) :: Int
+  , abs (head (id _:_)) :: Int
+  , abs (head (_ ++ _)) :: Int
+  , abs (0 * _) :: Int
+  , abs (_ * 0) :: Int
+  , abs (_ * _) :: Int
+  , abs (_ * x) :: Int
+  , abs (_ * id _) :: Int
+  , abs (x * _) :: Int
+  , abs (id _ * _) :: Int
+  , abs (0 + 0) :: Int
+  , abs (0 + _) :: Int
+  , abs (0 + x) :: Int
+  , abs (0 + id _) :: Int
+  , abs (1 + _) :: Int
+  , abs (_ + 0) :: Int
+  , abs (_ + 1) :: Int
+  , abs (_ + _) :: Int
+  , abs (_ + x) :: Int
+  , abs (_ + y) :: Int
+  , abs (_ + ord _) :: Int
+  , abs (_ + abs _) :: Int
+  , abs (_ + id 0) :: Int
+  , abs (_ + id _) :: Int
+  , abs (_ + id x) :: Int
+  , abs (_ + id (id _)) :: Int
+  , abs (_ + negate _) :: Int
+  , abs (_ + head _) :: Int
+  , abs (_ + (_ + _)) :: Int
+  , abs (x + 0) :: Int
+  , abs (x + _) :: Int
+  , abs (x + x) :: Int
+  , abs (x + id _) :: Int
+  , abs (y + _) :: Int
+  , abs (ord _ + _) :: Int
+  , abs (abs _ + _) :: Int
+  , abs (id 0 + _) :: Int
+  , abs (id _ + 0) :: Int
+  , abs (id _ + _) :: Int
+  , abs (id _ + x) :: Int
+  , abs (id _ + id _) :: Int
+  , abs (id x + _) :: Int
+  , abs (id (id _) + _) :: Int
+  , abs (negate _ + _) :: Int
+  , abs (head _ + _) :: Int
+  , abs ((_ + _) + _) :: Int
+  , id (-1) :: Int
+  , id (-2) :: Int
+  , id 0 :: Int
+  , id 1 :: Int
+  , id 2 :: Int
+  , id 3 :: Int
+  , id _ :: Int
+  , id x :: Int
+  , id x' :: Int
+  , id y :: Int
+  , id y' :: Int
+  , id z :: Int
+  , id z' :: Int
+  , id (ord ' ') :: Int
+  , id (ord 'a') :: Int
+  , id (ord 'b') :: Int
+  , id (ord _) :: Int
+  , id (ord c) :: Int
+  , id (ord d) :: Int
+  , id (ord e) :: Int
+  , id (f (-1)) :: Int
+  , id (f 0) :: Int
+  , id (f 1) :: Int
+  , id (f _) :: Int
+  , id (f x) :: Int
+  , id (f y) :: Int
+  , id (f z) :: Int
+  , id (f (ord 'a')) :: Int
+  , id (f (ord _)) :: Int
+  , id (f (ord c)) :: Int
+  , id (f (f _)) :: Int
+  , id (f (abs 0)) :: Int
+  , id (f (abs _)) :: Int
+  , id (f (abs x)) :: Int
+  , id (f (abs (id _))) :: Int
+  , id (f (id 0)) :: Int
+  , id (f (id 1)) :: Int
+  , id (f (id _)) :: Int
+  , id (f (id x)) :: Int
+  , id (f (id y)) :: Int
+  , id (f (id (ord _))) :: Int
+  , id (f (id (abs _))) :: Int
+  , id (f (id (id 0))) :: Int
+  , id (f (id (id _))) :: Int
+  , id (f (id (id x))) :: Int
+  , id (f (id (id (id _)))) :: Int
+  , id (f (id (negate _))) :: Int
+  , id (f (id (head _))) :: Int
+  , id (f (id (_ + _))) :: Int
+  , id (f (negate 0)) :: Int
+  , id (f (negate _)) :: Int
+  , id (f (negate x)) :: Int
+  , id (f (negate (id _))) :: Int
+  , id (f (head [])) :: Int
+  , id (f (head _)) :: Int
+  , id (f (head xs)) :: Int
+  , id (f (head (_:_))) :: Int
+  , id (f (_ * _)) :: Int
+  , id (f (0 + _)) :: Int
+  , id (f (_ + 0)) :: Int
+  , id (f (_ + _)) :: Int
+  , id (f (_ + x)) :: Int
+  , id (f (_ + id _)) :: Int
+  , id (f (x + _)) :: Int
+  , id (f (id _ + _)) :: Int
+  , id (f' _) :: Int
+  , id (g 0) :: Int
+  , id (g 1) :: Int
+  , id (g _) :: Int
+  , id (g x) :: Int
+  , id (g y) :: Int
+  , id (g (ord _)) :: Int
+  , id (g (abs _)) :: Int
+  , id (g (id 0)) :: Int
+  , id (g (id _)) :: Int
+  , id (g (id x)) :: Int
+  , id (g (id (id _))) :: Int
+  , id (g (negate _)) :: Int
+  , id (g (head _)) :: Int
+  , id (g (_ + _)) :: Int
+  , id (h 0) :: Int
+  , id (h _) :: Int
+  , id (h x) :: Int
+  , id (h (id _)) :: Int
+  , id (abs (-1)) :: Int
+  , id (abs 0) :: Int
+  , id (abs 1) :: Int
+  , id (abs 2) :: Int
+  , id (abs _) :: Int
+  , id (abs x) :: Int
+  , id (abs x') :: Int
+  , id (abs y) :: Int
+  , id (abs z) :: Int
+  , id (abs (ord ' ')) :: Int
+  , id (abs (ord 'a')) :: Int
+  , id (abs (ord _)) :: Int
+  , id (abs (ord c)) :: Int
+  , id (abs (ord d)) :: Int
+  , id (abs (f 0)) :: Int
+  , id (abs (f _)) :: Int
+  , id (abs (f x)) :: Int
+  , id (abs (f (id _))) :: Int
+  , id (abs (g _)) :: Int
+  , id (abs (abs 0)) :: Int
+  , id (abs (abs 1)) :: Int
+  , id (abs (abs _)) :: Int
+  , id (abs (abs x)) :: Int
+  , id (abs (abs y)) :: Int
+  , id (abs (abs (ord _))) :: Int
+  , id (abs (abs (abs _))) :: Int
+  , id (abs (abs (id 0))) :: Int
+  , id (abs (abs (id _))) :: Int
+  , id (abs (abs (id x))) :: Int
+  , id (abs (abs (id (id _)))) :: Int
+  , id (abs (abs (negate _))) :: Int
+  , id (abs (abs (head _))) :: Int
+  , id (abs (abs (_ + _))) :: Int
+  , id (abs (id (-1))) :: Int
+  , id (abs (id 0)) :: Int
+  , id (abs (id 1)) :: Int
+  , id (abs (id _)) :: Int
+  , id (abs (id x)) :: Int
+  , id (abs (id y)) :: Int
+  , id (abs (id z)) :: Int
+  , id (abs (id (ord 'a'))) :: Int
+  , id (abs (id (ord _))) :: Int
+  , id (abs (id (ord c))) :: Int
+  , id (abs (id (f _))) :: Int
+  , id (abs (id (abs 0))) :: Int
+  , id (abs (id (abs _))) :: Int
+  , id (abs (id (abs x))) :: Int
+  , id (abs (id (abs (id _)))) :: Int
+  , id (abs (id (id 0))) :: Int
+  , id (abs (id (id 1))) :: Int
+  , id (abs (id (id _))) :: Int
+  , id (abs (id (id x))) :: Int
+  , id (abs (id (id y))) :: Int
+  , id (abs (id (id (ord _)))) :: Int
+  , id (abs (id (id (abs _)))) :: Int
+  , id (abs (id (id (id 0)))) :: Int
+  , id (abs (id (id (id _)))) :: Int
+  , id (abs (id (id (id x)))) :: Int
+  , id (abs (id (id (id (id _))))) :: Int
+  , id (abs (id (id (negate _)))) :: Int
+  , id (abs (id (id (head _)))) :: Int
+  , id (abs (id (id (_ + _)))) :: Int
+  , id (abs (id (negate 0))) :: Int
+  , id (abs (id (negate _))) :: Int
+  , id (abs (id (negate x))) :: Int
+  , id (abs (id (negate (id _)))) :: Int
+  , id (abs (id (head []))) :: Int
+  , id (abs (id (head _))) :: Int
+  , id (abs (id (head xs))) :: Int
+  , id (abs (id (head (_:_)))) :: Int
+  , id (abs (id (_ * _))) :: Int
+  , id (abs (id (0 + _))) :: Int
+  , id (abs (id (_ + 0))) :: Int
+  , id (abs (id (_ + _))) :: Int
+  , id (abs (id (_ + x))) :: Int
+  , id (abs (id (_ + id _))) :: Int
+  , id (abs (id (x + _))) :: Int
+  , id (abs (id (id _ + _))) :: Int
+  , id (abs (negate 0)) :: Int
+  , id (abs (negate 1)) :: Int
+  , id (abs (negate _)) :: Int
+  , id (abs (negate x)) :: Int
+  , id (abs (negate y)) :: Int
+  , id (abs (negate (ord _))) :: Int
+  , id (abs (negate (abs _))) :: Int
+  , id (abs (negate (id 0))) :: Int
+  , id (abs (negate (id _))) :: Int
+  , id (abs (negate (id x))) :: Int
+  , id (abs (negate (id (id _)))) :: Int
+  , id (abs (negate (negate _))) :: Int
+  , id (abs (negate (head _))) :: Int
+  , id (abs (negate (_ + _))) :: Int
+  , id (abs (head [0])) :: Int
+  , id (abs (head [])) :: Int
+  , id (abs (head _)) :: Int
+  , id (abs (head xs)) :: Int
+  , id (abs (head ys)) :: Int
+  , id (abs (head (tail _))) :: Int
+  , id (abs (head (0:_))) :: Int
+  , id (abs (head [_])) :: Int
+  , id (abs (head (_:_))) :: Int
+  , id (abs (head (_:xs))) :: Int
+  , id (abs (head (_:_:_))) :: Int
+  , id (abs (head (x:_))) :: Int
+  , id (abs (head (id _:_))) :: Int
+  , id (abs (head (_ ++ _))) :: Int
+  , id (abs (0 * _)) :: Int
+  , id (abs (_ * 0)) :: Int
+  , id (abs (_ * _)) :: Int
+  , id (abs (_ * x)) :: Int
+  , id (abs (_ * id _)) :: Int
+  , id (abs (x * _)) :: Int
+  , id (abs (id _ * _)) :: Int
+  , id (abs (0 + 0)) :: Int
+  , id (abs (0 + _)) :: Int
+  , id (abs (0 + x)) :: Int
+  , id (abs (0 + id _)) :: Int
+  , id (abs (1 + _)) :: Int
+  , id (abs (_ + 0)) :: Int
+  , id (abs (_ + 1)) :: Int
+  , id (abs (_ + _)) :: Int
+  , id (abs (_ + x)) :: Int
+  , id (abs (_ + y)) :: Int
+  , id (abs (_ + ord _)) :: Int
+  , id (abs (_ + abs _)) :: Int
+  , id (abs (_ + id 0)) :: Int
+  , id (abs (_ + id _)) :: Int
+  , id (abs (_ + id x)) :: Int
+  , id (abs (_ + id (id _))) :: Int
+  , id (abs (_ + negate _)) :: Int
+  , id (abs (_ + head _)) :: Int
+  , id (abs (_ + (_ + _))) :: Int
+  , id (abs (x + 0)) :: Int
+  , id (abs (x + _)) :: Int
+  , id (abs (x + x)) :: Int
+  , id (abs (x + id _)) :: Int
+  , id (abs (y + _)) :: Int
+  , id (abs (ord _ + _)) :: Int
+  , id (abs (abs _ + _)) :: Int
+  , id (abs (id 0 + _)) :: Int
+  , id (abs (id _ + 0)) :: Int
+  , id (abs (id _ + _)) :: Int
+  , id (abs (id _ + x)) :: Int
+  , id (abs (id _ + id _)) :: Int
+  , id (abs (id x + _)) :: Int
+  , id (abs (id (id _) + _)) :: Int
+  , id (abs (negate _ + _)) :: Int
+  , id (abs (head _ + _)) :: Int
+  , id (abs ((_ + _) + _)) :: Int
+  , id (id (-1)) :: Int
+  , id (id (-2)) :: Int
+  , id (id 0) :: Int
+  , id (id 1) :: Int
+  , id (id 2) :: Int
+  , id (id _) :: Int
+  , id (id x) :: Int
+  , id (id x') :: Int
+  , id (id y) :: Int
+  , id (id y') :: Int
+  , id (id z) :: Int
+  , id (id (ord ' ')) :: Int
+  , id (id (ord 'a')) :: Int
+  , id (id (ord 'b')) :: Int
+  , id (id (ord _)) :: Int
+  , id (id (ord c)) :: Int
+  , id (id (ord d)) :: Int
+  , id (id (ord e)) :: Int
+  , id (id (f 0)) :: Int
+  , id (id (f 1)) :: Int
+  , id (id (f _)) :: Int
+  , id (id (f x)) :: Int
+  , id (id (f y)) :: Int
+  , id (id (f (ord _))) :: Int
+  , id (id (f (abs _))) :: Int
+  , id (id (f (id 0))) :: Int
+  , id (id (f (id _))) :: Int
+  , id (id (f (id x))) :: Int
+  , id (id (f (id (id _)))) :: Int
+  , id (id (f (negate _))) :: Int
+  , id (id (f (head _))) :: Int
+  , id (id (f (_ + _))) :: Int
+  , id (id (g 0)) :: Int
+  , id (id (g _)) :: Int
+  , id (id (g x)) :: Int
+  , id (id (g (id _))) :: Int
+  , id (id (h _)) :: Int
+  , id (id (abs (-1))) :: Int
+  , id (id (abs 0)) :: Int
+  , id (id (abs 1)) :: Int
+  , id (id (abs _)) :: Int
+  , id (id (abs x)) :: Int
+  , id (id (abs y)) :: Int
+  , id (id (abs z)) :: Int
+  , id (id (abs (ord 'a'))) :: Int
+  , id (id (abs (ord _))) :: Int
+  , id (id (abs (ord c))) :: Int
+  , id (id (abs (f _))) :: Int
+  , id (id (abs (abs 0))) :: Int
+  , id (id (abs (abs _))) :: Int
+  , id (id (abs (abs x))) :: Int
+  , id (id (abs (abs (id _)))) :: Int
+  , id (id (abs (id 0))) :: Int
+  , id (id (abs (id 1))) :: Int
+  , id (id (abs (id _))) :: Int
+  , id (id (abs (id x))) :: Int
+  , id (id (abs (id y))) :: Int
+  , id (id (abs (id (ord _)))) :: Int
+  , id (id (abs (id (abs _)))) :: Int
+  , id (id (abs (id (id 0)))) :: Int
+  , id (id (abs (id (id _)))) :: Int
+  , id (id (abs (id (id x)))) :: Int
+  , id (id (abs (id (id (id _))))) :: Int
+  , id (id (abs (id (negate _)))) :: Int
+  , id (id (abs (id (head _)))) :: Int
+  , id (id (abs (id (_ + _)))) :: Int
+  , id (id (abs (negate 0))) :: Int
+  , id (id (abs (negate _))) :: Int
+  , id (id (abs (negate x))) :: Int
+  , id (id (abs (negate (id _)))) :: Int
+  , id (id (abs (head []))) :: Int
+  , id (id (abs (head _))) :: Int
+  , id (id (abs (head xs))) :: Int
+  , id (id (abs (head (_:_)))) :: Int
+  , id (id (abs (_ * _))) :: Int
+  , id (id (abs (0 + _))) :: Int
+  , id (id (abs (_ + 0))) :: Int
+  , id (id (abs (_ + _))) :: Int
+  , id (id (abs (_ + x))) :: Int
+  , id (id (abs (_ + id _))) :: Int
+  , id (id (abs (x + _))) :: Int
+  , id (id (abs (id _ + _))) :: Int
+  , id (id (id (-1))) :: Int
+  , id (id (id 0)) :: Int
+  , id (id (id 1)) :: Int
+  , id (id (id 2)) :: Int
+  , id (id (id _)) :: Int
+  , id (id (id x)) :: Int
+  , id (id (id x')) :: Int
+  , id (id (id y)) :: Int
+  , id (id (id z)) :: Int
+  , id (id (id (ord ' '))) :: Int
+  , id (id (id (ord 'a'))) :: Int
+  , id (id (id (ord _))) :: Int
+  , id (id (id (ord c))) :: Int
+  , id (id (id (ord d))) :: Int
+  , id (id (id (f 0))) :: Int
+  , id (id (id (f _))) :: Int
+  , id (id (id (f x))) :: Int
+  , id (id (id (f (id _)))) :: Int
+  , id (id (id (g _))) :: Int
+  , id (id (id (abs 0))) :: Int
+  , id (id (id (abs 1))) :: Int
+  , id (id (id (abs _))) :: Int
+  , id (id (id (abs x))) :: Int
+  , id (id (id (abs y))) :: Int
+  , id (id (id (abs (ord _)))) :: Int
+  , id (id (id (abs (abs _)))) :: Int
+  , id (id (id (abs (id 0)))) :: Int
+  , id (id (id (abs (id _)))) :: Int
+  , id (id (id (abs (id x)))) :: Int
+  , id (id (id (abs (id (id _))))) :: Int
+  , id (id (id (abs (negate _)))) :: Int
+  , id (id (id (abs (head _)))) :: Int
+  , id (id (id (abs (_ + _)))) :: Int
+  , id (id (id (id (-1)))) :: Int
+  , id (id (id (id 0))) :: Int
+  , id (id (id (id 1))) :: Int
+  , id (id (id (id _))) :: Int
+  , id (id (id (id x))) :: Int
+  , id (id (id (id y))) :: Int
+  , id (id (id (id z))) :: Int
+  , id (id (id (id (ord 'a')))) :: Int
+  , id (id (id (id (ord _)))) :: Int
+  , id (id (id (id (ord c)))) :: Int
+  , id (id (id (id (f _)))) :: Int
+  , id (id (id (id (abs 0)))) :: Int
+  , id (id (id (id (abs _)))) :: Int
+  , id (id (id (id (abs x)))) :: Int
+  , id (id (id (id (abs (id _))))) :: Int
+  , id (id (id (id (id 0)))) :: Int
+  , id (id (id (id (id 1)))) :: Int
+  , id (id (id (id (id _)))) :: Int
+  , id (id (id (id (id x)))) :: Int
+  , id (id (id (id (id y)))) :: Int
+  , id (id (id (id (id (ord _))))) :: Int
+  , id (id (id (id (id (abs _))))) :: Int
+  , id (id (id (id (id (id 0))))) :: Int
+  , id (id (id (id (id (id _))))) :: Int
+  , id (id (id (id (id (id x))))) :: Int
+  , id (id (id (id (id (id (id _)))))) :: Int
+  , id (id (id (id (id (negate _))))) :: Int
+  , id (id (id (id (id (head _))))) :: Int
+  , id (id (id (id (id (_ + _))))) :: Int
+  , id (id (id (id (negate 0)))) :: Int
+  , id (id (id (id (negate _)))) :: Int
+  , id (id (id (id (negate x)))) :: Int
+  , id (id (id (id (negate (id _))))) :: Int
+  , id (id (id (id (head [])))) :: Int
+  , id (id (id (id (head _)))) :: Int
+  , id (id (id (id (head xs)))) :: Int
+  , id (id (id (id (head (_:_))))) :: Int
+  , id (id (id (id (_ * _)))) :: Int
+  , id (id (id (id (0 + _)))) :: Int
+  , id (id (id (id (_ + 0)))) :: Int
+  , id (id (id (id (_ + _)))) :: Int
+  , id (id (id (id (_ + x)))) :: Int
+  , id (id (id (id (_ + id _)))) :: Int
+  , id (id (id (id (x + _)))) :: Int
+  , id (id (id (id (id _ + _)))) :: Int
+  , id (id (id (negate 0))) :: Int
+  , id (id (id (negate 1))) :: Int
+  , id (id (id (negate _))) :: Int
+  , id (id (id (negate x))) :: Int
+  , id (id (id (negate y))) :: Int
+  , id (id (id (negate (ord _)))) :: Int
+  , id (id (id (negate (abs _)))) :: Int
+  , id (id (id (negate (id 0)))) :: Int
+  , id (id (id (negate (id _)))) :: Int
+  , id (id (id (negate (id x)))) :: Int
+  , id (id (id (negate (id (id _))))) :: Int
+  , id (id (id (negate (negate _)))) :: Int
+  , id (id (id (negate (head _)))) :: Int
+  , id (id (id (negate (_ + _)))) :: Int
+  , id (id (id (head [0]))) :: Int
+  , id (id (id (head []))) :: Int
+  , id (id (id (head _))) :: Int
+  , id (id (id (head xs))) :: Int
+  , id (id (id (head ys))) :: Int
+  , id (id (id (head (tail _)))) :: Int
+  , id (id (id (head (0:_)))) :: Int
+  , id (id (id (head [_]))) :: Int
+  , id (id (id (head (_:_)))) :: Int
+  , id (id (id (head (_:xs)))) :: Int
+  , id (id (id (head (_:_:_)))) :: Int
+  , id (id (id (head (x:_)))) :: Int
+  , id (id (id (head (id _:_)))) :: Int
+  , id (id (id (head (_ ++ _)))) :: Int
+  , id (id (id (0 * _))) :: Int
+  , id (id (id (_ * 0))) :: Int
+  , id (id (id (_ * _))) :: Int
+  , id (id (id (_ * x))) :: Int
+  , id (id (id (_ * id _))) :: Int
+  , id (id (id (x * _))) :: Int
+  , id (id (id (id _ * _))) :: Int
+  , id (id (id (0 + 0))) :: Int
+  , id (id (id (0 + _))) :: Int
+  , id (id (id (0 + x))) :: Int
+  , id (id (id (0 + id _))) :: Int
+  , id (id (id (1 + _))) :: Int
+  , id (id (id (_ + 0))) :: Int
+  , id (id (id (_ + 1))) :: Int
+  , id (id (id (_ + _))) :: Int
+  , id (id (id (_ + x))) :: Int
+  , id (id (id (_ + y))) :: Int
+  , id (id (id (_ + ord _))) :: Int
+  , id (id (id (_ + abs _))) :: Int
+  , id (id (id (_ + id 0))) :: Int
+  , id (id (id (_ + id _))) :: Int
+  , id (id (id (_ + id x))) :: Int
+  , id (id (id (_ + id (id _)))) :: Int
+  , id (id (id (_ + negate _))) :: Int
+  , id (id (id (_ + head _))) :: Int
+  , id (id (id (_ + (_ + _)))) :: Int
+  , id (id (id (x + 0))) :: Int
+  , id (id (id (x + _))) :: Int
+  , id (id (id (x + x))) :: Int
+  , id (id (id (x + id _))) :: Int
+  , id (id (id (y + _))) :: Int
+  , id (id (id (ord _ + _))) :: Int
+  , id (id (id (abs _ + _))) :: Int
+  , id (id (id (id 0 + _))) :: Int
+  , id (id (id (id _ + 0))) :: Int
+  , id (id (id (id _ + _))) :: Int
+  , id (id (id (id _ + x))) :: Int
+  , id (id (id (id _ + id _))) :: Int
+  , id (id (id (id x + _))) :: Int
+  , id (id (id (id (id _) + _))) :: Int
+  , id (id (id (negate _ + _))) :: Int
+  , id (id (id (head _ + _))) :: Int
+  , id (id (id ((_ + _) + _))) :: Int
+  , id (id (negate (-1))) :: Int
+  , id (id (negate 0)) :: Int
+  , id (id (negate 1)) :: Int
+  , id (id (negate _)) :: Int
+  , id (id (negate x)) :: Int
+  , id (id (negate y)) :: Int
+  , id (id (negate z)) :: Int
+  , id (id (negate (ord 'a'))) :: Int
+  , id (id (negate (ord _))) :: Int
+  , id (id (negate (ord c))) :: Int
+  , id (id (negate (f _))) :: Int
+  , id (id (negate (abs 0))) :: Int
+  , id (id (negate (abs _))) :: Int
+  , id (id (negate (abs x))) :: Int
+  , id (id (negate (abs (id _)))) :: Int
+  , id (id (negate (id 0))) :: Int
+  , id (id (negate (id 1))) :: Int
+  , id (id (negate (id _))) :: Int
+  , id (id (negate (id x))) :: Int
+  , id (id (negate (id y))) :: Int
+  , id (id (negate (id (ord _)))) :: Int
+  , id (id (negate (id (abs _)))) :: Int
+  , id (id (negate (id (id 0)))) :: Int
+  , id (id (negate (id (id _)))) :: Int
+  , id (id (negate (id (id x)))) :: Int
+  , id (id (negate (id (id (id _))))) :: Int
+  , id (id (negate (id (negate _)))) :: Int
+  , id (id (negate (id (head _)))) :: Int
+  , id (id (negate (id (_ + _)))) :: Int
+  , id (id (negate (negate 0))) :: Int
+  , id (id (negate (negate _))) :: Int
+  , id (id (negate (negate x))) :: Int
+  , id (id (negate (negate (id _)))) :: Int
+  , id (id (negate (head []))) :: Int
+  , id (id (negate (head _))) :: Int
+  , id (id (negate (head xs))) :: Int
+  , id (id (negate (head (_:_)))) :: Int
+  , id (id (negate (_ * _))) :: Int
+  , id (id (negate (0 + _))) :: Int
+  , id (id (negate (_ + 0))) :: Int
+  , id (id (negate (_ + _))) :: Int
+  , id (id (negate (_ + x))) :: Int
+  , id (id (negate (_ + id _))) :: Int
+  , id (id (negate (x + _))) :: Int
+  , id (id (negate (id _ + _))) :: Int
+  , id (id (head [0,0])) :: Int
+  , id (id (head [0])) :: Int
+  , id (id (head [1])) :: Int
+  , id (id (head [])) :: Int
+  , id (id (head _)) :: Int
+  , id (id (head xs)) :: Int
+  , id (id (head ys)) :: Int
+  , id (id (head zs)) :: Int
+  , id (id (head (sort _))) :: Int
+  , id (id (head (tail []))) :: Int
+  , id (id (head (tail _))) :: Int
+  , id (id (head (tail xs))) :: Int
+  , id (id (head (tail (_:_)))) :: Int
+  , id (id (head [0])) :: Int
+  , id (id (head (0:_))) :: Int
+  , id (id (head (0:xs))) :: Int
+  , id (id (head (0:_:_))) :: Int
+  , id (id (head (1:_))) :: Int
+  , id (id (head (_:[0]))) :: Int
+  , id (id (head [_])) :: Int
+  , id (id (head (_:_))) :: Int
+  , id (id (head (_:xs))) :: Int
+  , id (id (head (_:ys))) :: Int
+  , id (id (head (_:tail _))) :: Int
+  , id (id (head (_:0:_))) :: Int
+  , id (id (head [_,_])) :: Int
+  , id (id (head (_:_:_))) :: Int
+  , id (id (head (_:_:xs))) :: Int
+  , id (id (head (_:_:_:_))) :: Int
+  , id (id (head (_:x:_))) :: Int
+  , id (id (head (_:id _:_))) :: Int
+  , id (id (head (_:(_ ++ _)))) :: Int
+  , id (id (head [x])) :: Int
+  , id (id (head (x:_))) :: Int
+  , id (id (head (x:xs))) :: Int
+  , id (id (head (x:_:_))) :: Int
+  , id (id (head (y:_))) :: Int
+  , id (id (head (ord _:_))) :: Int
+  , id (id (head (abs _:_))) :: Int
+  , id (id (head (id 0:_))) :: Int
+  , id (id (head [id _])) :: Int
+  , id (id (head (id _:_))) :: Int
+  , id (id (head (id _:xs))) :: Int
+  , id (id (head (id _:_:_))) :: Int
+  , id (id (head (id x:_))) :: Int
+  , id (id (head (id (id _):_))) :: Int
+  , id (id (head (negate _:_))) :: Int
+  , id (id (head (head _:_))) :: Int
+  , id (id (head (_ + _:_))) :: Int
+  , id (id (head (insert _ _))) :: Int
+  , id (id (head ([] ++ _))) :: Int
+  , id (id (head (_ ++ []))) :: Int
+  , id (id (head (_ ++ _))) :: Int
+  , id (id (head (_ ++ xs))) :: Int
+  , id (id (head (_ ++ (_:_)))) :: Int
+  , id (id (head (xs ++ _))) :: Int
+  , id (id (head ((_:_) ++ _))) :: Int
+  , id (id (0 * 0)) :: Int
+  , id (id (0 * _)) :: Int
+  , id (id (0 * x)) :: Int
+  , id (id (0 * id _)) :: Int
+  , id (id (1 * _)) :: Int
+  , id (id (_ * 0)) :: Int
+  , id (id (_ * 1)) :: Int
+  , id (id (_ * _)) :: Int
+  , id (id (_ * x)) :: Int
+  , id (id (_ * y)) :: Int
+  , id (id (_ * ord _)) :: Int
+  , id (id (_ * abs _)) :: Int
+  , id (id (_ * id 0)) :: Int
+  , id (id (_ * id _)) :: Int
+  , id (id (_ * id x)) :: Int
+  , id (id (_ * id (id _))) :: Int
+  , id (id (_ * negate _)) :: Int
+  , id (id (_ * head _)) :: Int
+  , id (id (_ * (_ + _))) :: Int
+  , id (id (x * 0)) :: Int
+  , id (id (x * _)) :: Int
+  , id (id (x * x)) :: Int
+  , id (id (x * id _)) :: Int
+  , id (id (y * _)) :: Int
+  , id (id (ord _ * _)) :: Int
+  , id (id (abs _ * _)) :: Int
+  , id (id (id 0 * _)) :: Int
+  , id (id (id _ * 0)) :: Int
+  , id (id (id _ * _)) :: Int
+  , id (id (id _ * x)) :: Int
+  , id (id (id _ * id _)) :: Int
+  , id (id (id x * _)) :: Int
+  , id (id (id (id _) * _)) :: Int
+  , id (id (negate _ * _)) :: Int
+  , id (id (head _ * _)) :: Int
+  , id (id ((_ + _) * _)) :: Int
+  , id (id ((-1) + _)) :: Int
+  , id (id (0 + 0)) :: Int
+  , id (id (0 + 1)) :: Int
+  , id (id (0 + _)) :: Int
+  , id (id (0 + x)) :: Int
+  , id (id (0 + y)) :: Int
+  , id (id (0 + ord _)) :: Int
+  , id (id (0 + abs _)) :: Int
+  , id (id (0 + id 0)) :: Int
+  , id (id (0 + id _)) :: Int
+  , id (id (0 + id x)) :: Int
+  , id (id (0 + id (id _))) :: Int
+  , id (id (0 + negate _)) :: Int
+  , id (id (0 + head _)) :: Int
+  , id (id (0 + (_ + _))) :: Int
+  , id (id (1 + 0)) :: Int
+  , id (id (1 + _)) :: Int
+  , id (id (1 + x)) :: Int
+  , id (id (1 + id _)) :: Int
+  , id (id (_ + (-1))) :: Int
+  , id (id (_ + 0)) :: Int
+  , id (id (_ + 1)) :: Int
+  , id (id (_ + _)) :: Int
+  , id (id (_ + x)) :: Int
+  , id (id (_ + y)) :: Int
+  , id (id (_ + z)) :: Int
+  , id (id (_ + ord 'a')) :: Int
+  , id (id (_ + ord _)) :: Int
+  , id (id (_ + ord c)) :: Int
+  , id (id (_ + f _)) :: Int
+  , id (id (_ + abs 0)) :: Int
+  , id (id (_ + abs _)) :: Int
+  , id (id (_ + abs x)) :: Int
+  , id (id (_ + abs (id _))) :: Int
+  , id (id (_ + id 0)) :: Int
+  , id (id (_ + id 1)) :: Int
+  , id (id (_ + id _)) :: Int
+  , id (id (_ + id x)) :: Int
+  , id (id (_ + id y)) :: Int
+  , id (id (_ + id (ord _))) :: Int
+  , id (id (_ + id (abs _))) :: Int
+  , id (id (_ + id (id 0))) :: Int
+  , id (id (_ + id (id _))) :: Int
+  , id (id (_ + id (id x))) :: Int
+  , id (id (_ + id (id (id _)))) :: Int
+  , id (id (_ + id (negate _))) :: Int
+  , id (id (_ + id (head _))) :: Int
+  , id (id (_ + id (_ + _))) :: Int
+  , id (id (_ + negate 0)) :: Int
+  , id (id (_ + negate _)) :: Int
+  , id (id (_ + negate x)) :: Int
+  , id (id (_ + negate (id _))) :: Int
+  , id (id (_ + head [])) :: Int
+  , id (id (_ + head _)) :: Int
+  , id (id (_ + head xs)) :: Int
+  , id (id (_ + head (_:_))) :: Int
+  , id (id (_ + _ * _)) :: Int
+  , id (id (_ + (0 + _))) :: Int
+  , id (id (_ + (_ + 0))) :: Int
+  , id (id (_ + (_ + _))) :: Int
+  , id (id (_ + (_ + x))) :: Int
+  , id (id (_ + (_ + id _))) :: Int
+  , id (id (_ + (x + _))) :: Int
+  , id (id (_ + (id _ + _))) :: Int
+  , id (id (x + 0)) :: Int
+  , id (id (x + 1)) :: Int
+  , id (id (x + _)) :: Int
+  , id (id (x + x)) :: Int
+  , id (id (x + y)) :: Int
+  , id (id (x + ord _)) :: Int
+  , id (id (x + abs _)) :: Int
+  , id (id (x + id 0)) :: Int
+  , id (id (x + id _)) :: Int
+  , id (id (x + id x)) :: Int
+  , id (id (x + id (id _))) :: Int
+  , id (id (x + negate _)) :: Int
+  , id (id (x + head _)) :: Int
+  , id (id (x + (_ + _))) :: Int
+  , id (id (y + 0)) :: Int
+  , id (id (y + _)) :: Int
+  , id (id (y + x)) :: Int
+  , id (id (y + id _)) :: Int
+  , id (id (z + _)) :: Int
+  , id (id (ord 'a' + _)) :: Int
+  , id (id (ord _ + 0)) :: Int
+  , id (id (ord _ + _)) :: Int
+  , id (id (ord _ + x)) :: Int
+  , id (id (ord _ + id _)) :: Int
+  , id (id (ord c + _)) :: Int
+  , id (id (f _ + _)) :: Int
+  , id (id (abs 0 + _)) :: Int
+  , id (id (abs _ + 0)) :: Int
+  , id (id (abs _ + _)) :: Int
+  , id (id (abs _ + x)) :: Int
+  , id (id (abs _ + id _)) :: Int
+  , id (id (abs x + _)) :: Int
+  , id (id (abs (id _) + _)) :: Int
+  , id (id (id 0 + 0)) :: Int
+  , id (id (id 0 + _)) :: Int
+  , id (id (id 0 + x)) :: Int
+  , id (id (id 0 + id _)) :: Int
+  , id (id (id 1 + _)) :: Int
+  , id (id (id _ + 0)) :: Int
+  , id (id (id _ + 1)) :: Int
+  , id (id (id _ + _)) :: Int
+  , id (id (id _ + x)) :: Int
+  , id (id (id _ + y)) :: Int
+  , id (id (id _ + ord _)) :: Int
+  , id (id (id _ + abs _)) :: Int
+  , id (id (id _ + id 0)) :: Int
+  , id (id (id _ + id _)) :: Int
+  , id (id (id _ + id x)) :: Int
+  , id (id (id _ + id (id _))) :: Int
+  , id (id (id _ + negate _)) :: Int
+  , id (id (id _ + head _)) :: Int
+  , id (id (id _ + (_ + _))) :: Int
+  , id (id (id x + 0)) :: Int
+  , id (id (id x + _)) :: Int
+  , id (id (id x + x)) :: Int
+  , id (id (id x + id _)) :: Int
+  , id (id (id y + _)) :: Int
+  , id (id (id (ord _) + _)) :: Int
+  , id (id (id (abs _) + _)) :: Int
+  , id (id (id (id 0) + _)) :: Int
+  , id (id (id (id _) + 0)) :: Int
+  , id (id (id (id _) + _)) :: Int
+  , id (id (id (id _) + x)) :: Int
+  , id (id (id (id _) + id _)) :: Int
+  , id (id (id (id x) + _)) :: Int
+  , id (id (id (id (id _)) + _)) :: Int
+  , id (id (id (negate _) + _)) :: Int
+  , id (id (id (head _) + _)) :: Int
+  , id (id (id (_ + _) + _)) :: Int
+  , id (id (negate 0 + _)) :: Int
+  , id (id (negate _ + 0)) :: Int
+  , id (id (negate _ + _)) :: Int
+  , id (id (negate _ + x)) :: Int
+  , id (id (negate _ + id _)) :: Int
+  , id (id (negate x + _)) :: Int
+  , id (id (negate (id _) + _)) :: Int
+  , id (id (head [] + _)) :: Int
+  , id (id (head _ + 0)) :: Int
+  , id (id (head _ + _)) :: Int
+  , id (id (head _ + x)) :: Int
+  , id (id (head _ + id _)) :: Int
+  , id (id (head xs + _)) :: Int
+  , id (id (head (_:_) + _)) :: Int
+  , id (id (_ * _ + _)) :: Int
+  , id (id ((0 + _) + _)) :: Int
+  , id (id ((_ + 0) + _)) :: Int
+  , id (id ((_ + _) + 0)) :: Int
+  , id (id ((_ + _) + _)) :: Int
+  , id (id ((_ + _) + x)) :: Int
+  , id (id ((_ + _) + id _)) :: Int
+  , id (id ((_ + x) + _)) :: Int
+  , id (id ((_ + id _) + _)) :: Int
+  , id (id ((x + _) + _)) :: Int
+  , id (id ((id _ + _) + _)) :: Int
+  , id (negate (-1)) :: Int
+  , id (negate 0) :: Int
+  , id (negate 1) :: Int
+  , id (negate 2) :: Int
+  , id (negate _) :: Int
+  , id (negate x) :: Int
+  , id (negate x') :: Int
+  , id (negate y) :: Int
+  , id (negate z) :: Int
+  , id (negate (ord ' ')) :: Int
+  , id (negate (ord 'a')) :: Int
+  , id (negate (ord _)) :: Int
+  , id (negate (ord c)) :: Int
+  , id (negate (ord d)) :: Int
+  , id (negate (f 0)) :: Int
+  , id (negate (f _)) :: Int
+  , id (negate (f x)) :: Int
+  , id (negate (f (id _))) :: Int
+  , id (negate (g _)) :: Int
+  , id (negate (abs 0)) :: Int
+  , id (negate (abs 1)) :: Int
+  , id (negate (abs _)) :: Int
+  , id (negate (abs x)) :: Int
+  , id (negate (abs y)) :: Int
+  , id (negate (abs (ord _))) :: Int
+  , id (negate (abs (abs _))) :: Int
+  , id (negate (abs (id 0))) :: Int
+  , id (negate (abs (id _))) :: Int
+  , id (negate (abs (id x))) :: Int
+  , id (negate (abs (id (id _)))) :: Int
+  , id (negate (abs (negate _))) :: Int
+  , id (negate (abs (head _))) :: Int
+  , id (negate (abs (_ + _))) :: Int
+  , id (negate (id (-1))) :: Int
+  , id (negate (id 0)) :: Int
+  , id (negate (id 1)) :: Int
+  , id (negate (id _)) :: Int
+  , id (negate (id x)) :: Int
+  , id (negate (id y)) :: Int
+  , id (negate (id z)) :: Int
+  , id (negate (id (ord 'a'))) :: Int
+  , id (negate (id (ord _))) :: Int
+  , id (negate (id (ord c))) :: Int
+  , id (negate (id (f _))) :: Int
+  , id (negate (id (abs 0))) :: Int
+  , id (negate (id (abs _))) :: Int
+  , id (negate (id (abs x))) :: Int
+  , id (negate (id (abs (id _)))) :: Int
+  , id (negate (id (id 0))) :: Int
+  , id (negate (id (id 1))) :: Int
+  , id (negate (id (id _))) :: Int
+  , id (negate (id (id x))) :: Int
+  , id (negate (id (id y))) :: Int
+  , id (negate (id (id (ord _)))) :: Int
+  , id (negate (id (id (abs _)))) :: Int
+  , id (negate (id (id (id 0)))) :: Int
+  , id (negate (id (id (id _)))) :: Int
+  , id (negate (id (id (id x)))) :: Int
+  , id (negate (id (id (id (id _))))) :: Int
+  , id (negate (id (id (negate _)))) :: Int
+  , id (negate (id (id (head _)))) :: Int
+  , id (negate (id (id (_ + _)))) :: Int
+  , id (negate (id (negate 0))) :: Int
+  , id (negate (id (negate _))) :: Int
+  , id (negate (id (negate x))) :: Int
+  , id (negate (id (negate (id _)))) :: Int
+  , id (negate (id (head []))) :: Int
+  , id (negate (id (head _))) :: Int
+  , id (negate (id (head xs))) :: Int
+  , id (negate (id (head (_:_)))) :: Int
+  , id (negate (id (_ * _))) :: Int
+  , id (negate (id (0 + _))) :: Int
+  , id (negate (id (_ + 0))) :: Int
+  , id (negate (id (_ + _))) :: Int
+  , id (negate (id (_ + x))) :: Int
+  , id (negate (id (_ + id _))) :: Int
+  , id (negate (id (x + _))) :: Int
+  , id (negate (id (id _ + _))) :: Int
+  , id (negate (negate 0)) :: Int
+  , id (negate (negate 1)) :: Int
+  , id (negate (negate _)) :: Int
+  , id (negate (negate x)) :: Int
+  , id (negate (negate y)) :: Int
+  , id (negate (negate (ord _))) :: Int
+  , id (negate (negate (abs _))) :: Int
+  , id (negate (negate (id 0))) :: Int
+  , id (negate (negate (id _))) :: Int
+  , id (negate (negate (id x))) :: Int
+  , id (negate (negate (id (id _)))) :: Int
+  , id (negate (negate (negate _))) :: Int
+  , id (negate (negate (head _))) :: Int
+  , id (negate (negate (_ + _))) :: Int
+  , id (negate (head [0])) :: Int
+  , id (negate (head [])) :: Int
+  , id (negate (head _)) :: Int
+  , id (negate (head xs)) :: Int
+  , id (negate (head ys)) :: Int
+  , id (negate (head (tail _))) :: Int
+  , id (negate (head (0:_))) :: Int
+  , id (negate (head [_])) :: Int
+  , id (negate (head (_:_))) :: Int
+  , id (negate (head (_:xs))) :: Int
+  , id (negate (head (_:_:_))) :: Int
+  , id (negate (head (x:_))) :: Int
+  , id (negate (head (id _:_))) :: Int
+  , id (negate (head (_ ++ _))) :: Int
+  , id (negate (0 * _)) :: Int
+  , id (negate (_ * 0)) :: Int
+  , id (negate (_ * _)) :: Int
+  , id (negate (_ * x)) :: Int
+  , id (negate (_ * id _)) :: Int
+  , id (negate (x * _)) :: Int
+  , id (negate (id _ * _)) :: Int
+  , id (negate (0 + 0)) :: Int
+  , id (negate (0 + _)) :: Int
+  , id (negate (0 + x)) :: Int
+  , id (negate (0 + id _)) :: Int
+  , id (negate (1 + _)) :: Int
+  , id (negate (_ + 0)) :: Int
+  , id (negate (_ + 1)) :: Int
+  , id (negate (_ + _)) :: Int
+  , id (negate (_ + x)) :: Int
+  , id (negate (_ + y)) :: Int
+  , id (negate (_ + ord _)) :: Int
+  , id (negate (_ + abs _)) :: Int
+  , id (negate (_ + id 0)) :: Int
+  , id (negate (_ + id _)) :: Int
+  , id (negate (_ + id x)) :: Int
+  , id (negate (_ + id (id _))) :: Int
+  , id (negate (_ + negate _)) :: Int
+  , id (negate (_ + head _)) :: Int
+  , id (negate (_ + (_ + _))) :: Int
+  , id (negate (x + 0)) :: Int
+  , id (negate (x + _)) :: Int
+  , id (negate (x + x)) :: Int
+  , id (negate (x + id _)) :: Int
+  , id (negate (y + _)) :: Int
+  , id (negate (ord _ + _)) :: Int
+  , id (negate (abs _ + _)) :: Int
+  , id (negate (id 0 + _)) :: Int
+  , id (negate (id _ + 0)) :: Int
+  , id (negate (id _ + _)) :: Int
+  , id (negate (id _ + x)) :: Int
+  , id (negate (id _ + id _)) :: Int
+  , id (negate (id x + _)) :: Int
+  , id (negate (id (id _) + _)) :: Int
+  , id (negate (negate _ + _)) :: Int
+  , id (negate (head _ + _)) :: Int
+  , id (negate ((_ + _) + _)) :: Int
+  , id (head [-1]) :: Int
+  , id (head [0,0,0]) :: Int
+  , id (head [0,0]) :: Int
+  , id (head [0,1]) :: Int
+  , id (head [0]) :: Int
+  , id (head [1,0]) :: Int
+  , id (head [1]) :: Int
+  , id (head []) :: Int
+  , id (head _) :: Int
+  , id (head xs) :: Int
+  , id (head xs') :: Int
+  , id (head ys) :: Int
+  , id (head zs) :: Int
+  , id (head (sort _)) :: Int
+  , id (head (tail [0])) :: Int
+  , id (head (tail [])) :: Int
+  , id (head (tail _)) :: Int
+  , id (head (tail xs)) :: Int
+  , id (head (tail ys)) :: Int
+  , id (head (tail (tail _))) :: Int
+  , id (head (tail (0:_))) :: Int
+  , id (head (tail [_])) :: Int
+  , id (head (tail (_:_))) :: Int
+  , id (head (tail (_:xs))) :: Int
+  , id (head (tail (_:_:_))) :: Int
+  , id (head (tail (x:_))) :: Int
+  , id (head (tail (id _:_))) :: Int
+  , id (head (tail (_ ++ _))) :: Int
+  , id (head ((-1):_)) :: Int
+  , id (head (0:[0])) :: Int
+  , id (head [0]) :: Int
+  , id (head (0:_)) :: Int
+  , id (head (0:xs)) :: Int
+  , id (head (0:ys)) :: Int
+  , id (head (0:tail _)) :: Int
+  , id (head (0:0:_)) :: Int
+  , id (head [0,_]) :: Int
+  , id (head (0:_:_)) :: Int
+  , id (head (0:_:xs)) :: Int
+  , id (head (0:_:_:_)) :: Int
+  , id (head (0:x:_)) :: Int
+  , id (head (0:id _:_)) :: Int
+  , id (head (0:(_ ++ _))) :: Int
+  , id (head [1]) :: Int
+  , id (head (1:_)) :: Int
+  , id (head (1:xs)) :: Int
+  , id (head (1:_:_)) :: Int
+  , id (head (_:[0,0])) :: Int
+  , id (head (_:[0])) :: Int
+  , id (head (_:[1])) :: Int
+  , id (head [_]) :: Int
+  , id (head (_:_)) :: Int
+  , id (head (_:xs)) :: Int
+  , id (head (_:ys)) :: Int
+  , id (head (_:zs)) :: Int
+  , id (head (_:sort _)) :: Int
+  , id (head (_:tail [])) :: Int
+  , id (head (_:tail _)) :: Int
+  , id (head (_:tail xs)) :: Int
+  , id (head (_:tail (_:_))) :: Int
+  , id (head [_,0]) :: Int
+  , id (head (_:0:_)) :: Int
+  , id (head (_:0:xs)) :: Int
+  , id (head (_:0:_:_)) :: Int
+  , id (head (_:1:_)) :: Int
+  , id (head (_:_:[0])) :: Int
+  , id (head [_,_]) :: Int
+  , id (head (_:_:_)) :: Int
+  , id (head (_:_:xs)) :: Int
+  , id (head (_:_:ys)) :: Int
+  , id (head (_:_:tail _)) :: Int
+  , id (head (_:_:0:_)) :: Int
+  , id (head [_,_,_]) :: Int
+  , id (head (_:_:_:_)) :: Int
+  , id (head (_:_:_:xs)) :: Int
+  , id (head (_:_:_:_:_)) :: Int
+  , id (head (_:_:x:_)) :: Int
+  , id (head (_:_:id _:_)) :: Int
+  , id (head (_:_:(_ ++ _))) :: Int
+  , id (head [_,x]) :: Int
+  , id (head (_:x:_)) :: Int
+  , id (head (_:x:xs)) :: Int
+  , id (head (_:x:_:_)) :: Int
+  , id (head (_:y:_)) :: Int
+  , id (head (_:ord _:_)) :: Int
+  , id (head (_:abs _:_)) :: Int
+  , id (head (_:id 0:_)) :: Int
+  , id (head [_,id _]) :: Int
+  , id (head (_:id _:_)) :: Int
+  , id (head (_:id _:xs)) :: Int
+  , id (head (_:id _:_:_)) :: Int
+  , id (head (_:id x:_)) :: Int
+  , id (head (_:id (id _):_)) :: Int
+  , id (head (_:negate _:_)) :: Int
+  , id (head (_:head _:_)) :: Int
+  , id (head (_:_ + _:_)) :: Int
+  , id (head (_:insert _ _)) :: Int
+  , id (head (_:([] ++ _))) :: Int
+  , id (head (_:(_ ++ []))) :: Int
+  , id (head (_:(_ ++ _))) :: Int
+  , id (head (_:(_ ++ xs))) :: Int
+  , id (head (_:(_ ++ (_:_)))) :: Int
+  , id (head (_:(xs ++ _))) :: Int
+  , id (head (_:((_:_) ++ _))) :: Int
+  , id (head (x:[0])) :: Int
+  , id (head [x]) :: Int
+  , id (head (x:_)) :: Int
+  , id (head (x:xs)) :: Int
+  , id (head (x:ys)) :: Int
+  , id (head (x:tail _)) :: Int
+  , id (head (x:0:_)) :: Int
+  , id (head [x,_]) :: Int
+  , id (head (x:_:_)) :: Int
+  , id (head (x:_:xs)) :: Int
+  , id (head (x:_:_:_)) :: Int
+  , id (head (x:x:_)) :: Int
+  , id (head (x:id _:_)) :: Int
+  , id (head (x:(_ ++ _))) :: Int
+  , id (head [y]) :: Int
+  , id (head (y:_)) :: Int
+  , id (head (y:xs)) :: Int
+  , id (head (y:_:_)) :: Int
+  , id (head (z:_)) :: Int
+  , id (head (ord 'a':_)) :: Int
+  , id (head [ord _]) :: Int
+  , id (head (ord _:_)) :: Int
+  , id (head (ord _:xs)) :: Int
+  , id (head (ord _:_:_)) :: Int
+  , id (head (ord c:_)) :: Int
+  , id (head (f _:_)) :: Int
+  , id (head (abs 0:_)) :: Int
+  , id (head [abs _]) :: Int
+  , id (head (abs _:_)) :: Int
+  , id (head (abs _:xs)) :: Int
+  , id (head (abs _:_:_)) :: Int
+  , id (head (abs x:_)) :: Int
+  , id (head (abs (id _):_)) :: Int
+  , id (head [id 0]) :: Int
+  , id (head (id 0:_)) :: Int
+  , id (head (id 0:xs)) :: Int
+  , id (head (id 0:_:_)) :: Int
+  , id (head (id 1:_)) :: Int
+  , id (head (id _:[0])) :: Int
+  , id (head [id _]) :: Int
+  , id (head (id _:_)) :: Int
+  , id (head (id _:xs)) :: Int
+  , id (head (id _:ys)) :: Int
+  , id (head (id _:tail _)) :: Int
+  , id (head (id _:0:_)) :: Int
+  , id (head [id _,_]) :: Int
+  , id (head (id _:_:_)) :: Int
+  , id (head (id _:_:xs)) :: Int
+  , id (head (id _:_:_:_)) :: Int
+  , id (head (id _:x:_)) :: Int
+  , id (head (id _:id _:_)) :: Int
+  , id (head (id _:(_ ++ _))) :: Int
+  , id (head [id x]) :: Int
+  , id (head (id x:_)) :: Int
+  , id (head (id x:xs)) :: Int
+  , id (head (id x:_:_)) :: Int
+  , id (head (id y:_)) :: Int
+  , id (head (id (ord _):_)) :: Int
+  , id (head (id (abs _):_)) :: Int
+  , id (head (id (id 0):_)) :: Int
+  , id (head [id (id _)]) :: Int
+  , id (head (id (id _):_)) :: Int
+  , id (head (id (id _):xs)) :: Int
+  , id (head (id (id _):_:_)) :: Int
+  , id (head (id (id x):_)) :: Int
+  , id (head (id (id (id _)):_)) :: Int
+  , id (head (id (negate _):_)) :: Int
+  , id (head (id (head _):_)) :: Int
+  , id (head (id (_ + _):_)) :: Int
+  , id (head (negate 0:_)) :: Int
+  , id (head [negate _]) :: Int
+  , id (head (negate _:_)) :: Int
+  , id (head (negate _:xs)) :: Int
+  , id (head (negate _:_:_)) :: Int
+  , id (head (negate x:_)) :: Int
+  , id (head (negate (id _):_)) :: Int
+  , id (head (head []:_)) :: Int
+  , id (head [head _]) :: Int
+  , id (head (head _:_)) :: Int
+  , id (head (head _:xs)) :: Int
+  , id (head (head _:_:_)) :: Int
+  , id (head (head xs:_)) :: Int
+  , id (head (head (_:_):_)) :: Int
+  , id (head (_ * _:_)) :: Int
+  , id (head (0 + _:_)) :: Int
+  , id (head (_ + 0:_)) :: Int
+  , id (head [_ + _]) :: Int
+  , id (head (_ + _:_)) :: Int
+  , id (head (_ + _:xs)) :: Int
+  , id (head (_ + _:_:_)) :: Int
+  , id (head (_ + x:_)) :: Int
+  , id (head (_ + id _:_)) :: Int
+  , id (head (x + _:_)) :: Int
+  , id (head (id _ + _:_)) :: Int
+  , id (head (insert _ _)) :: Int
+  , id (head ([0] ++ _)) :: Int
+  , id (head ([] ++ [])) :: Int
+  , id (head ([] ++ _)) :: Int
+  , id (head ([] ++ xs)) :: Int
+  , id (head ([] ++ (_:_))) :: Int
+  , id (head (_ ++ [0])) :: Int
+  , id (head (_ ++ [])) :: Int
+  , id (head (_ ++ _)) :: Int
+  , id (head (_ ++ xs)) :: Int
+  , id (head (_ ++ ys)) :: Int
+  , id (head (_ ++ tail _)) :: Int
+  , id (head (_ ++ (0:_))) :: Int
+  , id (head (_ ++ [_])) :: Int
+  , id (head (_ ++ (_:_))) :: Int
+  , id (head (_ ++ (_:xs))) :: Int
+  , id (head (_ ++ (_:_:_))) :: Int
+  , id (head (_ ++ (x:_))) :: Int
+  , id (head (_ ++ (id _:_))) :: Int
+  , id (head (_ ++ (_ ++ _))) :: Int
+  , id (head (xs ++ [])) :: Int
+  , id (head (xs ++ _)) :: Int
+  , id (head (xs ++ xs)) :: Int
+  , id (head (xs ++ (_:_))) :: Int
+  , id (head (ys ++ _)) :: Int
+  , id (head ((0:_) ++ _)) :: Int
+  , id (head ([_] ++ _)) :: Int
+  , id (head ((_:_) ++ [])) :: Int
+  , id (head ((_:_) ++ _)) :: Int
+  , id (head ((_:_) ++ xs)) :: Int
+  , id (head ((_:_) ++ (_:_))) :: Int
+  , id (head ((_:xs) ++ _)) :: Int
+  , id (head ((_:_:_) ++ _)) :: Int
+  , id (head ((x:_) ++ _)) :: Int
+  , id (head ((id _:_) ++ _)) :: Int
+  , id ((-1) * _) :: Int
+  , id (0 * 0) :: Int
+  , id (0 * 1) :: Int
+  , id (0 * _) :: Int
+  , id (0 * x) :: Int
+  , id (0 * y) :: Int
+  , id (0 * ord _) :: Int
+  , id (0 * abs _) :: Int
+  , id (0 * id 0) :: Int
+  , id (0 * id _) :: Int
+  , id (0 * id x) :: Int
+  , id (0 * id (id _)) :: Int
+  , id (0 * negate _) :: Int
+  , id (0 * head _) :: Int
+  , id (0 * (_ + _)) :: Int
+  , id (1 * 0) :: Int
+  , id (1 * _) :: Int
+  , id (1 * x) :: Int
+  , id (1 * id _) :: Int
+  , id (_ * (-1)) :: Int
+  , id (_ * 0) :: Int
+  , id (_ * 1) :: Int
+  , id (_ * _) :: Int
+  , id (_ * x) :: Int
+  , id (_ * y) :: Int
+  , id (_ * z) :: Int
+  , id (_ * ord 'a') :: Int
+  , id (_ * ord _) :: Int
+  , id (_ * ord c) :: Int
+  , id (_ * f _) :: Int
+  , id (_ * abs 0) :: Int
+  , id (_ * abs _) :: Int
+  , id (_ * abs x) :: Int
+  , id (_ * abs (id _)) :: Int
+  , id (_ * id 0) :: Int
+  , id (_ * id 1) :: Int
+  , id (_ * id _) :: Int
+  , id (_ * id x) :: Int
+  , id (_ * id y) :: Int
+  , id (_ * id (ord _)) :: Int
+  , id (_ * id (abs _)) :: Int
+  , id (_ * id (id 0)) :: Int
+  , id (_ * id (id _)) :: Int
+  , id (_ * id (id x)) :: Int
+  , id (_ * id (id (id _))) :: Int
+  , id (_ * id (negate _)) :: Int
+  , id (_ * id (head _)) :: Int
+  , id (_ * id (_ + _)) :: Int
+  , id (_ * negate 0) :: Int
+  , id (_ * negate _) :: Int
+  , id (_ * negate x) :: Int
+  , id (_ * negate (id _)) :: Int
+  , id (_ * head []) :: Int
+  , id (_ * head _) :: Int
+  , id (_ * head xs) :: Int
+  , id (_ * head (_:_)) :: Int
+  , id (_ * (_ * _)) :: Int
+  , id (_ * (0 + _)) :: Int
+  , id (_ * (_ + 0)) :: Int
+  , id (_ * (_ + _)) :: Int
+  , id (_ * (_ + x)) :: Int
+  , id (_ * (_ + id _)) :: Int
+  , id (_ * (x + _)) :: Int
+  , id (_ * (id _ + _)) :: Int
+  , id (x * 0) :: Int
+  , id (x * 1) :: Int
+  , id (x * _) :: Int
+  , id (x * x) :: Int
+  , id (x * y) :: Int
+  , id (x * ord _) :: Int
+  , id (x * abs _) :: Int
+  , id (x * id 0) :: Int
+  , id (x * id _) :: Int
+  , id (x * id x) :: Int
+  , id (x * id (id _)) :: Int
+  , id (x * negate _) :: Int
+  , id (x * head _) :: Int
+  , id (x * (_ + _)) :: Int
+  , id (y * 0) :: Int
+  , id (y * _) :: Int
+  , id (y * x) :: Int
+  , id (y * id _) :: Int
+  , id (z * _) :: Int
+  , id (ord 'a' * _) :: Int
+  , id (ord _ * 0) :: Int
+  , id (ord _ * _) :: Int
+  , id (ord _ * x) :: Int
+  , id (ord _ * id _) :: Int
+  , id (ord c * _) :: Int
+  , id (f _ * _) :: Int
+  , id (abs 0 * _) :: Int
+  , id (abs _ * 0) :: Int
+  , id (abs _ * _) :: Int
+  , id (abs _ * x) :: Int
+  , id (abs _ * id _) :: Int
+  , id (abs x * _) :: Int
+  , id (abs (id _) * _) :: Int
+  , id (id 0 * 0) :: Int
+  , id (id 0 * _) :: Int
+  , id (id 0 * x) :: Int
+  , id (id 0 * id _) :: Int
+  , id (id 1 * _) :: Int
+  , id (id _ * 0) :: Int
+  , id (id _ * 1) :: Int
+  , id (id _ * _) :: Int
+  , id (id _ * x) :: Int
+  , id (id _ * y) :: Int
+  , id (id _ * ord _) :: Int
+  , id (id _ * abs _) :: Int
+  , id (id _ * id 0) :: Int
+  , id (id _ * id _) :: Int
+  , id (id _ * id x) :: Int
+  , id (id _ * id (id _)) :: Int
+  , id (id _ * negate _) :: Int
+  , id (id _ * head _) :: Int
+  , id (id _ * (_ + _)) :: Int
+  , id (id x * 0) :: Int
+  , id (id x * _) :: Int
+  , id (id x * x) :: Int
+  , id (id x * id _) :: Int
+  , id (id y * _) :: Int
+  , id (id (ord _) * _) :: Int
+  , id (id (abs _) * _) :: Int
+  , id (id (id 0) * _) :: Int
+  , id (id (id _) * 0) :: Int
+  , id (id (id _) * _) :: Int
+  , id (id (id _) * x) :: Int
+  , id (id (id _) * id _) :: Int
+  , id (id (id x) * _) :: Int
+  , id (id (id (id _)) * _) :: Int
+  , id (id (negate _) * _) :: Int
+  , id (id (head _) * _) :: Int
+  , id (id (_ + _) * _) :: Int
+  , id (negate 0 * _) :: Int
+  , id (negate _ * 0) :: Int
+  , id (negate _ * _) :: Int
+  , id (negate _ * x) :: Int
+  , id (negate _ * id _) :: Int
+  , id (negate x * _) :: Int
+  , id (negate (id _) * _) :: Int
+  , id (head [] * _) :: Int
+  , id (head _ * 0) :: Int
+  , id (head _ * _) :: Int
+  , id (head _ * x) :: Int
+  , id (head _ * id _) :: Int
+  , id (head xs * _) :: Int
+  , id (head (_:_) * _) :: Int
+  , id ((_ * _) * _) :: Int
+  , id ((0 + _) * _) :: Int
+  , id ((_ + 0) * _) :: Int
+  , id ((_ + _) * 0) :: Int
+  , id ((_ + _) * _) :: Int
+  , id ((_ + _) * x) :: Int
+  , id ((_ + _) * id _) :: Int
+  , id ((_ + x) * _) :: Int
+  , id ((_ + id _) * _) :: Int
+  , id ((x + _) * _) :: Int
+  , id ((id _ + _) * _) :: Int
+  , id ((-1) + 0) :: Int
+  , id ((-1) + _) :: Int
+  , id ((-1) + x) :: Int
+  , id ((-1) + id _) :: Int
+  , id (0 + (-1)) :: Int
+  , id (0 + 0) :: Int
+  , id (0 + 1) :: Int
+  , id (0 + _) :: Int
+  , id (0 + x) :: Int
+  , id (0 + y) :: Int
+  , id (0 + z) :: Int
+  , id (0 + ord 'a') :: Int
+  , id (0 + ord _) :: Int
+  , id (0 + ord c) :: Int
+  , id (0 + f _) :: Int
+  , id (0 + abs 0) :: Int
+  , id (0 + abs _) :: Int
+  , id (0 + abs x) :: Int
+  , id (0 + abs (id _)) :: Int
+  , id (0 + id 0) :: Int
+  , id (0 + id 1) :: Int
+  , id (0 + id _) :: Int
+  , id (0 + id x) :: Int
+  , id (0 + id y) :: Int
+  , id (0 + id (ord _)) :: Int
+  , id (0 + id (abs _)) :: Int
+  , id (0 + id (id 0)) :: Int
+  , id (0 + id (id _)) :: Int
+  , id (0 + id (id x)) :: Int
+  , id (0 + id (id (id _))) :: Int
+  , id (0 + id (negate _)) :: Int
+  , id (0 + id (head _)) :: Int
+  , id (0 + id (_ + _)) :: Int
+  , id (0 + negate 0) :: Int
+  , id (0 + negate _) :: Int
+  , id (0 + negate x) :: Int
+  , id (0 + negate (id _)) :: Int
+  , id (0 + head []) :: Int
+  , id (0 + head _) :: Int
+  , id (0 + head xs) :: Int
+  , id (0 + head (_:_)) :: Int
+  , id (0 + _ * _) :: Int
+  , id (0 + (0 + _)) :: Int
+  , id (0 + (_ + 0)) :: Int
+  , id (0 + (_ + _)) :: Int
+  , id (0 + (_ + x)) :: Int
+  , id (0 + (_ + id _)) :: Int
+  , id (0 + (x + _)) :: Int
+  , id (0 + (id _ + _)) :: Int
+  , id (1 + 0) :: Int
+  , id (1 + 1) :: Int
+  , id (1 + _) :: Int
+  , id (1 + x) :: Int
+  , id (1 + y) :: Int
+  , id (1 + ord _) :: Int
+  , id (1 + abs _) :: Int
+  , id (1 + id 0) :: Int
+  , id (1 + id _) :: Int
+  , id (1 + id x) :: Int
+  , id (1 + id (id _)) :: Int
+  , id (1 + negate _) :: Int
+  , id (1 + head _) :: Int
+  , id (1 + (_ + _)) :: Int
+  , id (2 + _) :: Int
+  , id (_ + (-1)) :: Int
+  , id (_ + 0) :: Int
+  , id (_ + 1) :: Int
+  , id (_ + 2) :: Int
+  , id (_ + _) :: Int
+  , id (_ + x) :: Int
+  , id (_ + x') :: Int
+  , id (_ + y) :: Int
+  , id (_ + z) :: Int
+  , id (_ + ord ' ') :: Int
+  , id (_ + ord 'a') :: Int
+  , id (_ + ord _) :: Int
+  , id (_ + ord c) :: Int
+  , id (_ + ord d) :: Int
+  , id (_ + f 0) :: Int
+  , id (_ + f _) :: Int
+  , id (_ + f x) :: Int
+  , id (_ + f (id _)) :: Int
+  , id (_ + g _) :: Int
+  , id (_ + abs 0) :: Int
+  , id (_ + abs 1) :: Int
+  , id (_ + abs _) :: Int
+  , id (_ + abs x) :: Int
+  , id (_ + abs y) :: Int
+  , id (_ + abs (ord _)) :: Int
+  , id (_ + abs (abs _)) :: Int
+  , id (_ + abs (id 0)) :: Int
+  , id (_ + abs (id _)) :: Int
+  , id (_ + abs (id x)) :: Int
+  , id (_ + abs (id (id _))) :: Int
+  , id (_ + abs (negate _)) :: Int
+  , id (_ + abs (head _)) :: Int
+  , id (_ + abs (_ + _)) :: Int
+  , id (_ + id (-1)) :: Int
+  , id (_ + id 0) :: Int
+  , id (_ + id 1) :: Int
+  , id (_ + id _) :: Int
+  , id (_ + id x) :: Int
+  , id (_ + id y) :: Int
+  , id (_ + id z) :: Int
+  , id (_ + id (ord 'a')) :: Int
+  , id (_ + id (ord _)) :: Int
+  , id (_ + id (ord c)) :: Int
+  , id (_ + id (f _)) :: Int
+  , id (_ + id (abs 0)) :: Int
+  , id (_ + id (abs _)) :: Int
+  , id (_ + id (abs x)) :: Int
+  , id (_ + id (abs (id _))) :: Int
+  , id (_ + id (id 0)) :: Int
+  , id (_ + id (id 1)) :: Int
+  , id (_ + id (id _)) :: Int
+  , id (_ + id (id x)) :: Int
+  , id (_ + id (id y)) :: Int
+  , id (_ + id (id (ord _))) :: Int
+  , id (_ + id (id (abs _))) :: Int
+  , id (_ + id (id (id 0))) :: Int
+  , id (_ + id (id (id _))) :: Int
+  , id (_ + id (id (id x))) :: Int
+  , id (_ + id (id (id (id _)))) :: Int
+  , id (_ + id (id (negate _))) :: Int
+  , id (_ + id (id (head _))) :: Int
+  , id (_ + id (id (_ + _))) :: Int
+  , id (_ + id (negate 0)) :: Int
+  , id (_ + id (negate _)) :: Int
+  , id (_ + id (negate x)) :: Int
+  , id (_ + id (negate (id _))) :: Int
+  , id (_ + id (head [])) :: Int
+  , id (_ + id (head _)) :: Int
+  , id (_ + id (head xs)) :: Int
+  , id (_ + id (head (_:_))) :: Int
+  , id (_ + id (_ * _)) :: Int
+  , id (_ + id (0 + _)) :: Int
+  , id (_ + id (_ + 0)) :: Int
+  , id (_ + id (_ + _)) :: Int
+  , id (_ + id (_ + x)) :: Int
+  , id (_ + id (_ + id _)) :: Int
+  , id (_ + id (x + _)) :: Int
+  , id (_ + id (id _ + _)) :: Int
+  , id (_ + negate 0) :: Int
+  , id (_ + negate 1) :: Int
+  , id (_ + negate _) :: Int
+  , id (_ + negate x) :: Int
+  , id (_ + negate y) :: Int
+  , id (_ + negate (ord _)) :: Int
+  , id (_ + negate (abs _)) :: Int
+  , id (_ + negate (id 0)) :: Int
+  , id (_ + negate (id _)) :: Int
+  , id (_ + negate (id x)) :: Int
+  , id (_ + negate (id (id _))) :: Int
+  , id (_ + negate (negate _)) :: Int
+  , id (_ + negate (head _)) :: Int
+  , id (_ + negate (_ + _)) :: Int
+  , id (_ + head [0]) :: Int
+  , id (_ + head []) :: Int
+  , id (_ + head _) :: Int
+  , id (_ + head xs) :: Int
+  , id (_ + head ys) :: Int
+  , id (_ + head (tail _)) :: Int
+  , id (_ + head (0:_)) :: Int
+  , id (_ + head [_]) :: Int
+  , id (_ + head (_:_)) :: Int
+  , id (_ + head (_:xs)) :: Int
+  , id (_ + head (_:_:_)) :: Int
+  , id (_ + head (x:_)) :: Int
+  , id (_ + head (id _:_)) :: Int
+  , id (_ + head (_ ++ _)) :: Int
+  , id (_ + 0 * _) :: Int
+  , id (_ + _ * 0) :: Int
+  , id (_ + _ * _) :: Int
+  , id (_ + _ * x) :: Int
+  , id (_ + _ * id _) :: Int
+  , id (_ + x * _) :: Int
+  , id (_ + id _ * _) :: Int
+  , id (_ + (0 + 0)) :: Int
+  , id (_ + (0 + _)) :: Int
+  , id (_ + (0 + x)) :: Int
+  , id (_ + (0 + id _)) :: Int
+  , id (_ + (1 + _)) :: Int
+  , id (_ + (_ + 0)) :: Int
+  , id (_ + (_ + 1)) :: Int
+  , id (_ + (_ + _)) :: Int
+  , id (_ + (_ + x)) :: Int
+  , id (_ + (_ + y)) :: Int
+  , id (_ + (_ + ord _)) :: Int
+  , id (_ + (_ + abs _)) :: Int
+  , id (_ + (_ + id 0)) :: Int
+  , id (_ + (_ + id _)) :: Int
+  , id (_ + (_ + id x)) :: Int
+  , id (_ + (_ + id (id _))) :: Int
+  , id (_ + (_ + negate _)) :: Int
+  , id (_ + (_ + head _)) :: Int
+  , id (_ + (_ + (_ + _))) :: Int
+  , id (_ + (x + 0)) :: Int
+  , id (_ + (x + _)) :: Int
+  , id (_ + (x + x)) :: Int
+  , id (_ + (x + id _)) :: Int
+  , id (_ + (y + _)) :: Int
+  , id (_ + (ord _ + _)) :: Int
+  , id (_ + (abs _ + _)) :: Int
+  , id (_ + (id 0 + _)) :: Int
+  , id (_ + (id _ + 0)) :: Int
+  , id (_ + (id _ + _)) :: Int
+  , id (_ + (id _ + x)) :: Int
+  , id (_ + (id _ + id _)) :: Int
+  , id (_ + (id x + _)) :: Int
+  , id (_ + (id (id _) + _)) :: Int
+  , id (_ + (negate _ + _)) :: Int
+  , id (_ + (head _ + _)) :: Int
+  , id (_ + ((_ + _) + _)) :: Int
+  , id (x + (-1)) :: Int
+  , id (x + 0) :: Int
+  , id (x + 1) :: Int
+  , id (x + _) :: Int
+  , id (x + x) :: Int
+  , id (x + y) :: Int
+  , id (x + z) :: Int
+  , id (x + ord 'a') :: Int
+  , id (x + ord _) :: Int
+  , id (x + ord c) :: Int
+  , id (x + f _) :: Int
+  , id (x + abs 0) :: Int
+  , id (x + abs _) :: Int
+  , id (x + abs x) :: Int
+  , id (x + abs (id _)) :: Int
+  , id (x + id 0) :: Int
+  , id (x + id 1) :: Int
+  , id (x + id _) :: Int
+  , id (x + id x) :: Int
+  , id (x + id y) :: Int
+  , id (x + id (ord _)) :: Int
+  , id (x + id (abs _)) :: Int
+  , id (x + id (id 0)) :: Int
+  , id (x + id (id _)) :: Int
+  , id (x + id (id x)) :: Int
+  , id (x + id (id (id _))) :: Int
+  , id (x + id (negate _)) :: Int
+  , id (x + id (head _)) :: Int
+  , id (x + id (_ + _)) :: Int
+  , id (x + negate 0) :: Int
+  , id (x + negate _) :: Int
+  , id (x + negate x) :: Int
+  , id (x + negate (id _)) :: Int
+  , id (x + head []) :: Int
+  , id (x + head _) :: Int
+  , id (x + head xs) :: Int
+  , id (x + head (_:_)) :: Int
+  , id (x + _ * _) :: Int
+  , id (x + (0 + _)) :: Int
+  , id (x + (_ + 0)) :: Int
+  , id (x + (_ + _)) :: Int
+  , id (x + (_ + x)) :: Int
+  , id (x + (_ + id _)) :: Int
+  , id (x + (x + _)) :: Int
+  , id (x + (id _ + _)) :: Int
+  , id (x' + _) :: Int
+  , id (y + 0) :: Int
+  , id (y + 1) :: Int
+  , id (y + _) :: Int
+  , id (y + x) :: Int
+  , id (y + y) :: Int
+  , id (y + ord _) :: Int
+  , id (y + abs _) :: Int
+  , id (y + id 0) :: Int
+  , id (y + id _) :: Int
+  , id (y + id x) :: Int
+  , id (y + id (id _)) :: Int
+  , id (y + negate _) :: Int
+  , id (y + head _) :: Int
+  , id (y + (_ + _)) :: Int
+  , id (z + 0) :: Int
+  , id (z + _) :: Int
+  , id (z + x) :: Int
+  , id (z + id _) :: Int
+  , id (ord ' ' + _) :: Int
+  , id (ord 'a' + 0) :: Int
+  , id (ord 'a' + _) :: Int
+  , id (ord 'a' + x) :: Int
+  , id (ord 'a' + id _) :: Int
+  , id (ord _ + 0) :: Int
+  , id (ord _ + 1) :: Int
+  , id (ord _ + _) :: Int
+  , id (ord _ + x) :: Int
+  , id (ord _ + y) :: Int
+  , id (ord _ + ord _) :: Int
+  , id (ord _ + abs _) :: Int
+  , id (ord _ + id 0) :: Int
+  , id (ord _ + id _) :: Int
+  , id (ord _ + id x) :: Int
+  , id (ord _ + id (id _)) :: Int
+  , id (ord _ + negate _) :: Int
+  , id (ord _ + head _) :: Int
+  , id (ord _ + (_ + _)) :: Int
+  , id (ord c + 0) :: Int
+  , id (ord c + _) :: Int
+  , id (ord c + x) :: Int
+  , id (ord c + id _) :: Int
+  , id (ord d + _) :: Int
+  , id (f 0 + _) :: Int
+  , id (f _ + 0) :: Int
+  , id (f _ + _) :: Int
+  , id (f _ + x) :: Int
+  , id (f _ + id _) :: Int
+  , id (f x + _) :: Int
+  , id (f (id _) + _) :: Int
+  , id (g _ + _) :: Int
+  , id (abs 0 + 0) :: Int
+  , id (abs 0 + _) :: Int
+  , id (abs 0 + x) :: Int
+  , id (abs 0 + id _) :: Int
+  , id (abs 1 + _) :: Int
+  , id (abs _ + 0) :: Int
+  , id (abs _ + 1) :: Int
+  , id (abs _ + _) :: Int
+  , id (abs _ + x) :: Int
+  , id (abs _ + y) :: Int
+  , id (abs _ + ord _) :: Int
+  , id (abs _ + abs _) :: Int
+  , id (abs _ + id 0) :: Int
+  , id (abs _ + id _) :: Int
+  , id (abs _ + id x) :: Int
+  , id (abs _ + id (id _)) :: Int
+  , id (abs _ + negate _) :: Int
+  , id (abs _ + head _) :: Int
+  , id (abs _ + (_ + _)) :: Int
+  , id (abs x + 0) :: Int
+  , id (abs x + _) :: Int
+  , id (abs x + x) :: Int
+  , id (abs x + id _) :: Int
+  , id (abs y + _) :: Int
+  , id (abs (ord _) + _) :: Int
+  , id (abs (abs _) + _) :: Int
+  , id (abs (id 0) + _) :: Int
+  , id (abs (id _) + 0) :: Int
+  , id (abs (id _) + _) :: Int
+  , id (abs (id _) + x) :: Int
+  , id (abs (id _) + id _) :: Int
+  , id (abs (id x) + _) :: Int
+  , id (abs (id (id _)) + _) :: Int
+  , id (abs (negate _) + _) :: Int
+  , id (abs (head _) + _) :: Int
+  , id (abs (_ + _) + _) :: Int
+  , id (id (-1) + _) :: Int
+  , id (id 0 + 0) :: Int
+  , id (id 0 + 1) :: Int
+  , id (id 0 + _) :: Int
+  , id (id 0 + x) :: Int
+  , id (id 0 + y) :: Int
+  , id (id 0 + ord _) :: Int
+  , id (id 0 + abs _) :: Int
+  , id (id 0 + id 0) :: Int
+  , id (id 0 + id _) :: Int
+  , id (id 0 + id x) :: Int
+  , id (id 0 + id (id _)) :: Int
+  , id (id 0 + negate _) :: Int
+  , id (id 0 + head _) :: Int
+  , id (id 0 + (_ + _)) :: Int
+  , id (id 1 + 0) :: Int
+  , id (id 1 + _) :: Int
+  , id (id 1 + x) :: Int
+  , id (id 1 + id _) :: Int
+  , id (id _ + (-1)) :: Int
+  , id (id _ + 0) :: Int
+  , id (id _ + 1) :: Int
+  , id (id _ + _) :: Int
+  , id (id _ + x) :: Int
+  , id (id _ + y) :: Int
+  , id (id _ + z) :: Int
+  , id (id _ + ord 'a') :: Int
+  , id (id _ + ord _) :: Int
+  , id (id _ + ord c) :: Int
+  , id (id _ + f _) :: Int
+  , id (id _ + abs 0) :: Int
+  , id (id _ + abs _) :: Int
+  , id (id _ + abs x) :: Int
+  , id (id _ + abs (id _)) :: Int
+  , id (id _ + id 0) :: Int
+  , id (id _ + id 1) :: Int
+  , id (id _ + id _) :: Int
+  , id (id _ + id x) :: Int
+  , id (id _ + id y) :: Int
+  , id (id _ + id (ord _)) :: Int
+  , id (id _ + id (abs _)) :: Int
+  , id (id _ + id (id 0)) :: Int
+  , id (id _ + id (id _)) :: Int
+  , id (id _ + id (id x)) :: Int
+  , id (id _ + id (id (id _))) :: Int
+  , id (id _ + id (negate _)) :: Int
+  , id (id _ + id (head _)) :: Int
+  , id (id _ + id (_ + _)) :: Int
+  , id (id _ + negate 0) :: Int
+  , id (id _ + negate _) :: Int
+  , id (id _ + negate x) :: Int
+  , id (id _ + negate (id _)) :: Int
+  , id (id _ + head []) :: Int
+  , id (id _ + head _) :: Int
+  , id (id _ + head xs) :: Int
+  , id (id _ + head (_:_)) :: Int
+  , id (id _ + _ * _) :: Int
+  , id (id _ + (0 + _)) :: Int
+  , id (id _ + (_ + 0)) :: Int
+  , id (id _ + (_ + _)) :: Int
+  , id (id _ + (_ + x)) :: Int
+  , id (id _ + (_ + id _)) :: Int
+  , id (id _ + (x + _)) :: Int
+  , id (id _ + (id _ + _)) :: Int
+  , id (id x + 0) :: Int
+  , id (id x + 1) :: Int
+  , id (id x + _) :: Int
+  , id (id x + x) :: Int
+  , id (id x + y) :: Int
+  , id (id x + ord _) :: Int
+  , id (id x + abs _) :: Int
+  , id (id x + id 0) :: Int
+  , id (id x + id _) :: Int
+  , id (id x + id x) :: Int
+  , id (id x + id (id _)) :: Int
+  , id (id x + negate _) :: Int
+  , id (id x + head _) :: Int
+  , id (id x + (_ + _)) :: Int
+  , id (id y + 0) :: Int
+  , id (id y + _) :: Int
+  , id (id y + x) :: Int
+  , id (id y + id _) :: Int
+  , id (id z + _) :: Int
+  , id (id (ord 'a') + _) :: Int
+  , id (id (ord _) + 0) :: Int
+  , id (id (ord _) + _) :: Int
+  , id (id (ord _) + x) :: Int
+  , id (id (ord _) + id _) :: Int
+  , id (id (ord c) + _) :: Int
+  , id (id (f _) + _) :: Int
+  , id (id (abs 0) + _) :: Int
+  , id (id (abs _) + 0) :: Int
+  , id (id (abs _) + _) :: Int
+  , id (id (abs _) + x) :: Int
+  , id (id (abs _) + id _) :: Int
+  , id (id (abs x) + _) :: Int
+  , id (id (abs (id _)) + _) :: Int
+  , id (id (id 0) + 0) :: Int
+  , id (id (id 0) + _) :: Int
+  , id (id (id 0) + x) :: Int
+  , id (id (id 0) + id _) :: Int
+  , id (id (id 1) + _) :: Int
+  , id (id (id _) + 0) :: Int
+  , id (id (id _) + 1) :: Int
+  , id (id (id _) + _) :: Int
+  , id (id (id _) + x) :: Int
+  , id (id (id _) + y) :: Int
+  , id (id (id _) + ord _) :: Int
+  , id (id (id _) + abs _) :: Int
+  , id (id (id _) + id 0) :: Int
+  , id (id (id _) + id _) :: Int
+  , id (id (id _) + id x) :: Int
+  , id (id (id _) + id (id _)) :: Int
+  , id (id (id _) + negate _) :: Int
+  , id (id (id _) + head _) :: Int
+  , id (id (id _) + (_ + _)) :: Int
+  , id (id (id x) + 0) :: Int
+  , id (id (id x) + _) :: Int
+  , id (id (id x) + x) :: Int
+  , id (id (id x) + id _) :: Int
+  , id (id (id y) + _) :: Int
+  , id (id (id (ord _)) + _) :: Int
+  , id (id (id (abs _)) + _) :: Int
+  , id (id (id (id 0)) + _) :: Int
+  , id (id (id (id _)) + 0) :: Int
+  , id (id (id (id _)) + _) :: Int
+  , id (id (id (id _)) + x) :: Int
+  , id (id (id (id _)) + id _) :: Int
+  , id (id (id (id x)) + _) :: Int
+  , id (id (id (id (id _))) + _) :: Int
+  , id (id (id (negate _)) + _) :: Int
+  , id (id (id (head _)) + _) :: Int
+  , id (id (id (_ + _)) + _) :: Int
+  , id (id (negate 0) + _) :: Int
+  , id (id (negate _) + 0) :: Int
+  , id (id (negate _) + _) :: Int
+  , id (id (negate _) + x) :: Int
+  , id (id (negate _) + id _) :: Int
+  , id (id (negate x) + _) :: Int
+  , id (id (negate (id _)) + _) :: Int
+  , id (id (head []) + _) :: Int
+  , id (id (head _) + 0) :: Int
+  , id (id (head _) + _) :: Int
+  , id (id (head _) + x) :: Int
+  , id (id (head _) + id _) :: Int
+  , id (id (head xs) + _) :: Int
+  , id (id (head (_:_)) + _) :: Int
+  , id (id (_ * _) + _) :: Int
+  , id (id (0 + _) + _) :: Int
+  , id (id (_ + 0) + _) :: Int
+  , id (id (_ + _) + 0) :: Int
+  , id (id (_ + _) + _) :: Int
+  , id (id (_ + _) + x) :: Int
+  , id (id (_ + _) + id _) :: Int
+  , id (id (_ + x) + _) :: Int
+  , id (id (_ + id _) + _) :: Int
+  , id (id (x + _) + _) :: Int
+  , id (id (id _ + _) + _) :: Int
+  , id (negate 0 + 0) :: Int
+  , id (negate 0 + _) :: Int
+  , id (negate 0 + x) :: Int
+  , id (negate 0 + id _) :: Int
+  , id (negate 1 + _) :: Int
+  , id (negate _ + 0) :: Int
+  , id (negate _ + 1) :: Int
+  , id (negate _ + _) :: Int
+  , id (negate _ + x) :: Int
+  , id (negate _ + y) :: Int
+  , id (negate _ + ord _) :: Int
+  , id (negate _ + abs _) :: Int
+  , id (negate _ + id 0) :: Int
+  , id (negate _ + id _) :: Int
+  , id (negate _ + id x) :: Int
+  , id (negate _ + id (id _)) :: Int
+  , id (negate _ + negate _) :: Int
+  , id (negate _ + head _) :: Int
+  , id (negate _ + (_ + _)) :: Int
+  , id (negate x + 0) :: Int
+  , id (negate x + _) :: Int
+  , id (negate x + x) :: Int
+  , id (negate x + id _) :: Int
+  , id (negate y + _) :: Int
+  , id (negate (ord _) + _) :: Int
+  , id (negate (abs _) + _) :: Int
+  , id (negate (id 0) + _) :: Int
+  , id (negate (id _) + 0) :: Int
+  , id (negate (id _) + _) :: Int
+  , id (negate (id _) + x) :: Int
+  , id (negate (id _) + id _) :: Int
+  , id (negate (id x) + _) :: Int
+  , id (negate (id (id _)) + _) :: Int
+  , id (negate (negate _) + _) :: Int
+  , id (negate (head _) + _) :: Int
+  , id (negate (_ + _) + _) :: Int
+  , id (head [0] + _) :: Int
+  , id (head [] + 0) :: Int
+  , id (head [] + _) :: Int
+  , id (head [] + x) :: Int
+  , id (head [] + id _) :: Int
+  , id (head _ + 0) :: Int
+  , id (head _ + 1) :: Int
+  , id (head _ + _) :: Int
+  , id (head _ + x) :: Int
+  , id (head _ + y) :: Int
+  , id (head _ + ord _) :: Int
+  , id (head _ + abs _) :: Int
+  , id (head _ + id 0) :: Int
+  , id (head _ + id _) :: Int
+  , id (head _ + id x) :: Int
+  , id (head _ + id (id _)) :: Int
+  , id (head _ + negate _) :: Int
+  , id (head _ + head _) :: Int
+  , id (head _ + (_ + _)) :: Int
+  , id (head xs + 0) :: Int
+  , id (head xs + _) :: Int
+  , id (head xs + x) :: Int
+  , id (head xs + id _) :: Int
+  , id (head ys + _) :: Int
+  , id (head (tail _) + _) :: Int
+  , id (head (0:_) + _) :: Int
+  , id (head [_] + _) :: Int
+  , id (head (_:_) + 0) :: Int
+  , id (head (_:_) + _) :: Int
+  , id (head (_:_) + x) :: Int
+  , id (head (_:_) + id _) :: Int
+  , id (head (_:xs) + _) :: Int
+  , id (head (_:_:_) + _) :: Int
+  , id (head (x:_) + _) :: Int
+  , id (head (id _:_) + _) :: Int
+  , id (head (_ ++ _) + _) :: Int
+  , id (0 * _ + _) :: Int
+  , id (_ * 0 + _) :: Int
+  , id (_ * _ + 0) :: Int
+  , id (_ * _ + _) :: Int
+  , id (_ * _ + x) :: Int
+  , id (_ * _ + id _) :: Int
+  , id (_ * x + _) :: Int
+  , id (_ * id _ + _) :: Int
+  , id (x * _ + _) :: Int
+  , id (id _ * _ + _) :: Int
+  , id ((0 + 0) + _) :: Int
+  , id ((0 + _) + 0) :: Int
+  , id ((0 + _) + _) :: Int
+  , id ((0 + _) + x) :: Int
+  , id ((0 + _) + id _) :: Int
+  , id ((0 + x) + _) :: Int
+  , id ((0 + id _) + _) :: Int
+  , id ((1 + _) + _) :: Int
+  , id ((_ + 0) + 0) :: Int
+  , id ((_ + 0) + _) :: Int
+  , id ((_ + 0) + x) :: Int
+  , id ((_ + 0) + id _) :: Int
+  , id ((_ + 1) + _) :: Int
+  , id ((_ + _) + 0) :: Int
+  , id ((_ + _) + 1) :: Int
+  , id ((_ + _) + _) :: Int
+  , id ((_ + _) + x) :: Int
+  , id ((_ + _) + y) :: Int
+  , id ((_ + _) + ord _) :: Int
+  , id ((_ + _) + abs _) :: Int
+  , id ((_ + _) + id 0) :: Int
+  , id ((_ + _) + id _) :: Int
+  , id ((_ + _) + id x) :: Int
+  , id ((_ + _) + id (id _)) :: Int
+  , id ((_ + _) + negate _) :: Int
+  , id ((_ + _) + head _) :: Int
+  , id ((_ + _) + (_ + _)) :: Int
+  , id ((_ + x) + 0) :: Int
+  , id ((_ + x) + _) :: Int
+  , id ((_ + x) + x) :: Int
+  , id ((_ + x) + id _) :: Int
+  , id ((_ + y) + _) :: Int
+  , id ((_ + ord _) + _) :: Int
+  , id ((_ + abs _) + _) :: Int
+  , id ((_ + id 0) + _) :: Int
+  , id ((_ + id _) + 0) :: Int
+  , id ((_ + id _) + _) :: Int
+  , id ((_ + id _) + x) :: Int
+  , id ((_ + id _) + id _) :: Int
+  , id ((_ + id x) + _) :: Int
+  , id ((_ + id (id _)) + _) :: Int
+  , id ((_ + negate _) + _) :: Int
+  , id ((_ + head _) + _) :: Int
+  , id ((_ + (_ + _)) + _) :: Int
+  , id ((x + 0) + _) :: Int
+  , id ((x + _) + 0) :: Int
+  , id ((x + _) + _) :: Int
+  , id ((x + _) + x) :: Int
+  , id ((x + _) + id _) :: Int
+  , id ((x + x) + _) :: Int
+  , id ((x + id _) + _) :: Int
+  , id ((y + _) + _) :: Int
+  , id ((ord _ + _) + _) :: Int
+  , id ((abs _ + _) + _) :: Int
+  , id ((id 0 + _) + _) :: Int
+  , id ((id _ + 0) + _) :: Int
+  , id ((id _ + _) + 0) :: Int
+  , id ((id _ + _) + _) :: Int
+  , id ((id _ + _) + x) :: Int
+  , id ((id _ + _) + id _) :: Int
+  , id ((id _ + x) + _) :: Int
+  , id ((id _ + id _) + _) :: Int
+  , id ((id x + _) + _) :: Int
+  , id ((id (id _) + _) + _) :: Int
+  , id ((negate _ + _) + _) :: Int
+  , id ((head _ + _) + _) :: Int
+  , id (((_ + _) + _) + _) :: Int
+  , negate (-1) :: Int
+  , negate 0 :: Int
+  , negate 1 :: Int
+  , negate 2 :: Int
+  , negate _ :: Int
+  , negate x :: Int
+  , negate x' :: Int
+  , negate y :: Int
+  , negate z :: Int
+  , negate (ord ' ') :: Int
+  , negate (ord 'a') :: Int
+  , negate (ord _) :: Int
+  , negate (ord c) :: Int
+  , negate (ord d) :: Int
+  , negate (f 0) :: Int
+  , negate (f _) :: Int
+  , negate (f x) :: Int
+  , negate (f (id _)) :: Int
+  , negate (g _) :: Int
+  , negate (abs 0) :: Int
+  , negate (abs 1) :: Int
+  , negate (abs _) :: Int
+  , negate (abs x) :: Int
+  , negate (abs y) :: Int
+  , negate (abs (ord _)) :: Int
+  , negate (abs (abs _)) :: Int
+  , negate (abs (id 0)) :: Int
+  , negate (abs (id _)) :: Int
+  , negate (abs (id x)) :: Int
+  , negate (abs (id (id _))) :: Int
+  , negate (abs (negate _)) :: Int
+  , negate (abs (head _)) :: Int
+  , negate (abs (_ + _)) :: Int
+  , negate (id (-1)) :: Int
+  , negate (id 0) :: Int
+  , negate (id 1) :: Int
+  , negate (id _) :: Int
+  , negate (id x) :: Int
+  , negate (id y) :: Int
+  , negate (id z) :: Int
+  , negate (id (ord 'a')) :: Int
+  , negate (id (ord _)) :: Int
+  , negate (id (ord c)) :: Int
+  , negate (id (f _)) :: Int
+  , negate (id (abs 0)) :: Int
+  , negate (id (abs _)) :: Int
+  , negate (id (abs x)) :: Int
+  , negate (id (abs (id _))) :: Int
+  , negate (id (id 0)) :: Int
+  , negate (id (id 1)) :: Int
+  , negate (id (id _)) :: Int
+  , negate (id (id x)) :: Int
+  , negate (id (id y)) :: Int
+  , negate (id (id (ord _))) :: Int
+  , negate (id (id (abs _))) :: Int
+  , negate (id (id (id 0))) :: Int
+  , negate (id (id (id _))) :: Int
+  , negate (id (id (id x))) :: Int
+  , negate (id (id (id (id _)))) :: Int
+  , negate (id (id (negate _))) :: Int
+  , negate (id (id (head _))) :: Int
+  , negate (id (id (_ + _))) :: Int
+  , negate (id (negate 0)) :: Int
+  , negate (id (negate _)) :: Int
+  , negate (id (negate x)) :: Int
+  , negate (id (negate (id _))) :: Int
+  , negate (id (head [])) :: Int
+  , negate (id (head _)) :: Int
+  , negate (id (head xs)) :: Int
+  , negate (id (head (_:_))) :: Int
+  , negate (id (_ * _)) :: Int
+  , negate (id (0 + _)) :: Int
+  , negate (id (_ + 0)) :: Int
+  , negate (id (_ + _)) :: Int
+  , negate (id (_ + x)) :: Int
+  , negate (id (_ + id _)) :: Int
+  , negate (id (x + _)) :: Int
+  , negate (id (id _ + _)) :: Int
+  , negate (negate 0) :: Int
+  , negate (negate 1) :: Int
+  , negate (negate _) :: Int
+  , negate (negate x) :: Int
+  , negate (negate y) :: Int
+  , negate (negate (ord _)) :: Int
+  , negate (negate (abs _)) :: Int
+  , negate (negate (id 0)) :: Int
+  , negate (negate (id _)) :: Int
+  , negate (negate (id x)) :: Int
+  , negate (negate (id (id _))) :: Int
+  , negate (negate (negate _)) :: Int
+  , negate (negate (head _)) :: Int
+  , negate (negate (_ + _)) :: Int
+  , negate (head [0]) :: Int
+  , negate (head []) :: Int
+  , negate (head _) :: Int
+  , negate (head xs) :: Int
+  , negate (head ys) :: Int
+  , negate (head (tail _)) :: Int
+  , negate (head (0:_)) :: Int
+  , negate (head [_]) :: Int
+  , negate (head (_:_)) :: Int
+  , negate (head (_:xs)) :: Int
+  , negate (head (_:_:_)) :: Int
+  , negate (head (x:_)) :: Int
+  , negate (head (id _:_)) :: Int
+  , negate (head (_ ++ _)) :: Int
+  , negate (0 * _) :: Int
+  , negate (_ * 0) :: Int
+  , negate (_ * _) :: Int
+  , negate (_ * x) :: Int
+  , negate (_ * id _) :: Int
+  , negate (x * _) :: Int
+  , negate (id _ * _) :: Int
+  , negate (0 + 0) :: Int
+  , negate (0 + _) :: Int
+  , negate (0 + x) :: Int
+  , negate (0 + id _) :: Int
+  , negate (1 + _) :: Int
+  , negate (_ + 0) :: Int
+  , negate (_ + 1) :: Int
+  , negate (_ + _) :: Int
+  , negate (_ + x) :: Int
+  , negate (_ + y) :: Int
+  , negate (_ + ord _) :: Int
+  , negate (_ + abs _) :: Int
+  , negate (_ + id 0) :: Int
+  , negate (_ + id _) :: Int
+  , negate (_ + id x) :: Int
+  , negate (_ + id (id _)) :: Int
+  , negate (_ + negate _) :: Int
+  , negate (_ + head _) :: Int
+  , negate (_ + (_ + _)) :: Int
+  , negate (x + 0) :: Int
+  , negate (x + _) :: Int
+  , negate (x + x) :: Int
+  , negate (x + id _) :: Int
+  , negate (y + _) :: Int
+  , negate (ord _ + _) :: Int
+  , negate (abs _ + _) :: Int
+  , negate (id 0 + _) :: Int
+  , negate (id _ + 0) :: Int
+  , negate (id _ + _) :: Int
+  , negate (id _ + x) :: Int
+  , negate (id _ + id _) :: Int
+  , negate (id x + _) :: Int
+  , negate (id (id _) + _) :: Int
+  , negate (negate _ + _) :: Int
+  , negate (head _ + _) :: Int
+  , negate ((_ + _) + _) :: Int
+  , head [-1] :: Int
+  , head [0,0,0] :: Int
+  , head [0,0] :: Int
+  , head [0,1] :: Int
+  , head [0] :: Int
+  , head [1,0] :: Int
+  , head [1] :: Int
+  , head [] :: Int
+  , head _ :: Int
+  , head xs :: Int
+  , head xs' :: Int
+  , head ys :: Int
+  , head zs :: Int
+  , head (sort []) :: Int
+  , head (sort _) :: Int
+  , head (sort xs) :: Int
+  , head (sort (_:_)) :: Int
+  , head (tail [0]) :: Int
+  , head (tail []) :: Int
+  , head (tail _) :: Int
+  , head (tail xs) :: Int
+  , head (tail ys) :: Int
+  , head (tail (tail _)) :: Int
+  , head (tail (0:_)) :: Int
+  , head (tail [_]) :: Int
+  , head (tail (_:_)) :: Int
+  , head (tail (_:xs)) :: Int
+  , head (tail (_:_:_)) :: Int
+  , head (tail (x:_)) :: Int
+  , head (tail (id _:_)) :: Int
+  , head (tail (_ ++ _)) :: Int
+  , head ((-1):_) :: Int
+  , head (0:[0]) :: Int
+  , head [0] :: Int
+  , head (0:_) :: Int
+  , head (0:xs) :: Int
+  , head (0:ys) :: Int
+  , head (0:tail _) :: Int
+  , head (0:0:_) :: Int
+  , head [0,_] :: Int
+  , head (0:_:_) :: Int
+  , head (0:_:xs) :: Int
+  , head (0:_:_:_) :: Int
+  , head (0:x:_) :: Int
+  , head (0:id _:_) :: Int
+  , head (0:(_ ++ _)) :: Int
+  , head [1] :: Int
+  , head (1:_) :: Int
+  , head (1:xs) :: Int
+  , head (1:_:_) :: Int
+  , head (_:[0,0]) :: Int
+  , head (_:[0]) :: Int
+  , head (_:[1]) :: Int
+  , head [_] :: Int
+  , head (_:_) :: Int
+  , head (_:xs) :: Int
+  , head (_:ys) :: Int
+  , head (_:zs) :: Int
+  , head (_:sort _) :: Int
+  , head (_:tail []) :: Int
+  , head (_:tail _) :: Int
+  , head (_:tail xs) :: Int
+  , head (_:tail (_:_)) :: Int
+  , head [_,0] :: Int
+  , head (_:0:_) :: Int
+  , head (_:0:xs) :: Int
+  , head (_:0:_:_) :: Int
+  , head (_:1:_) :: Int
+  , head (_:_:[0]) :: Int
+  , head [_,_] :: Int
+  , head (_:_:_) :: Int
+  , head (_:_:xs) :: Int
+  , head (_:_:ys) :: Int
+  , head (_:_:tail _) :: Int
+  , head (_:_:0:_) :: Int
+  , head [_,_,_] :: Int
+  , head (_:_:_:_) :: Int
+  , head (_:_:_:xs) :: Int
+  , head (_:_:_:_:_) :: Int
+  , head (_:_:x:_) :: Int
+  , head (_:_:id _:_) :: Int
+  , head (_:_:(_ ++ _)) :: Int
+  , head [_,x] :: Int
+  , head (_:x:_) :: Int
+  , head (_:x:xs) :: Int
+  , head (_:x:_:_) :: Int
+  , head (_:y:_) :: Int
+  , head (_:ord _:_) :: Int
+  , head (_:abs _:_) :: Int
+  , head (_:id 0:_) :: Int
+  , head [_,id _] :: Int
+  , head (_:id _:_) :: Int
+  , head (_:id _:xs) :: Int
+  , head (_:id _:_:_) :: Int
+  , head (_:id x:_) :: Int
+  , head (_:id (id _):_) :: Int
+  , head (_:negate _:_) :: Int
+  , head (_:head _:_) :: Int
+  , head (_:_ + _:_) :: Int
+  , head (_:insert _ _) :: Int
+  , head (_:([] ++ _)) :: Int
+  , head (_:(_ ++ [])) :: Int
+  , head (_:(_ ++ _)) :: Int
+  , head (_:(_ ++ xs)) :: Int
+  , head (_:(_ ++ (_:_))) :: Int
+  , head (_:(xs ++ _)) :: Int
+  , head (_:((_:_) ++ _)) :: Int
+  , head (x:[0]) :: Int
+  , head [x] :: Int
+  , head (x:_) :: Int
+  , head (x:xs) :: Int
+  , head (x:ys) :: Int
+  , head (x:tail _) :: Int
+  , head (x:0:_) :: Int
+  , head [x,_] :: Int
+  , head (x:_:_) :: Int
+  , head (x:_:xs) :: Int
+  , head (x:_:_:_) :: Int
+  , head (x:x:_) :: Int
+  , head (x:id _:_) :: Int
+  , head (x:(_ ++ _)) :: Int
+  , head [y] :: Int
+  , head (y:_) :: Int
+  , head (y:xs) :: Int
+  , head (y:_:_) :: Int
+  , head (z:_) :: Int
+  , head (ord 'a':_) :: Int
+  , head [ord _] :: Int
+  , head (ord _:_) :: Int
+  , head (ord _:xs) :: Int
+  , head (ord _:_:_) :: Int
+  , head (ord c:_) :: Int
+  , head (f _:_) :: Int
+  , head (abs 0:_) :: Int
+  , head [abs _] :: Int
+  , head (abs _:_) :: Int
+  , head (abs _:xs) :: Int
+  , head (abs _:_:_) :: Int
+  , head (abs x:_) :: Int
+  , head (abs (id _):_) :: Int
+  , head [id 0] :: Int
+  , head (id 0:_) :: Int
+  , head (id 0:xs) :: Int
+  , head (id 0:_:_) :: Int
+  , head (id 1:_) :: Int
+  , head (id _:[0]) :: Int
+  , head [id _] :: Int
+  , head (id _:_) :: Int
+  , head (id _:xs) :: Int
+  , head (id _:ys) :: Int
+  , head (id _:tail _) :: Int
+  , head (id _:0:_) :: Int
+  , head [id _,_] :: Int
+  , head (id _:_:_) :: Int
+  , head (id _:_:xs) :: Int
+  , head (id _:_:_:_) :: Int
+  , head (id _:x:_) :: Int
+  , head (id _:id _:_) :: Int
+  , head (id _:(_ ++ _)) :: Int
+  , head [id x] :: Int
+  , head (id x:_) :: Int
+  , head (id x:xs) :: Int
+  , head (id x:_:_) :: Int
+  , head (id y:_) :: Int
+  , head (id (ord _):_) :: Int
+  , head (id (abs _):_) :: Int
+  , head (id (id 0):_) :: Int
+  , head [id (id _)] :: Int
+  , head (id (id _):_) :: Int
+  , head (id (id _):xs) :: Int
+  , head (id (id _):_:_) :: Int
+  , head (id (id x):_) :: Int
+  , head (id (id (id _)):_) :: Int
+  , head (id (negate _):_) :: Int
+  , head (id (head _):_) :: Int
+  , head (id (_ + _):_) :: Int
+  , head (negate 0:_) :: Int
+  , head [negate _] :: Int
+  , head (negate _:_) :: Int
+  , head (negate _:xs) :: Int
+  , head (negate _:_:_) :: Int
+  , head (negate x:_) :: Int
+  , head (negate (id _):_) :: Int
+  , head (head []:_) :: Int
+  , head [head _] :: Int
+  , head (head _:_) :: Int
+  , head (head _:xs) :: Int
+  , head (head _:_:_) :: Int
+  , head (head xs:_) :: Int
+  , head (head (_:_):_) :: Int
+  , head (_ * _:_) :: Int
+  , head (0 + _:_) :: Int
+  , head (_ + 0:_) :: Int
+  , head [_ + _] :: Int
+  , head (_ + _:_) :: Int
+  , head (_ + _:xs) :: Int
+  , head (_ + _:_:_) :: Int
+  , head (_ + x:_) :: Int
+  , head (_ + id _:_) :: Int
+  , head (x + _:_) :: Int
+  , head (id _ + _:_) :: Int
+  , head (insert 0 _) :: Int
+  , head (insert _ []) :: Int
+  , head (insert _ _) :: Int
+  , head (insert _ xs) :: Int
+  , head (insert _ (_:_)) :: Int
+  , head (insert x _) :: Int
+  , head (insert (id _) _) :: Int
+  , head ([0] ++ _) :: Int
+  , head ([] ++ []) :: Int
+  , head ([] ++ _) :: Int
+  , head ([] ++ xs) :: Int
+  , head ([] ++ (_:_)) :: Int
+  , head (_ ++ [0]) :: Int
+  , head (_ ++ []) :: Int
+  , head (_ ++ _) :: Int
+  , head (_ ++ xs) :: Int
+  , head (_ ++ ys) :: Int
+  , head (_ ++ tail _) :: Int
+  , head (_ ++ (0:_)) :: Int
+  , head (_ ++ [_]) :: Int
+  , head (_ ++ (_:_)) :: Int
+  , head (_ ++ (_:xs)) :: Int
+  , head (_ ++ (_:_:_)) :: Int
+  , head (_ ++ (x:_)) :: Int
+  , head (_ ++ (id _:_)) :: Int
+  , head (_ ++ (_ ++ _)) :: Int
+  , head (xs ++ []) :: Int
+  , head (xs ++ _) :: Int
+  , head (xs ++ xs) :: Int
+  , head (xs ++ (_:_)) :: Int
+  , head (ys ++ _) :: Int
+  , head (tail _ ++ _) :: Int
+  , head ((0:_) ++ _) :: Int
+  , head ([_] ++ _) :: Int
+  , head ((_:_) ++ []) :: Int
+  , head ((_:_) ++ _) :: Int
+  , head ((_:_) ++ xs) :: Int
+  , head ((_:_) ++ (_:_)) :: Int
+  , head ((_:xs) ++ _) :: Int
+  , head ((_:_:_) ++ _) :: Int
+  , head ((x:_) ++ _) :: Int
+  , head ((id _:_) ++ _) :: Int
+  , head ((_ ++ _) ++ _) :: Int
+  , sort [0] :: [Int]
+  , sort [] :: [Int]
+  , sort _ :: [Int]
+  , sort xs :: [Int]
+  , sort ys :: [Int]
+  , sort (tail _) :: [Int]
+  , sort (0:_) :: [Int]
+  , sort [_] :: [Int]
+  , sort (_:_) :: [Int]
+  , sort (_:xs) :: [Int]
+  , sort (_:_:_) :: [Int]
+  , sort (x:_) :: [Int]
+  , sort (id _:_) :: [Int]
+  , sort (_ ++ _) :: [Int]
+  , tail [0,0] :: [Int]
+  , tail [0] :: [Int]
+  , tail [1] :: [Int]
+  , tail [] :: [Int]
+  , tail _ :: [Int]
+  , tail xs :: [Int]
+  , tail ys :: [Int]
+  , tail zs :: [Int]
+  , tail (sort _) :: [Int]
+  , tail (tail []) :: [Int]
+  , tail (tail _) :: [Int]
+  , tail (tail xs) :: [Int]
+  , tail (tail (_:_)) :: [Int]
+  , tail [0] :: [Int]
+  , tail (0:_) :: [Int]
+  , tail (0:xs) :: [Int]
+  , tail (0:_:_) :: [Int]
+  , tail (1:_) :: [Int]
+  , tail (_:[0]) :: [Int]
+  , tail [_] :: [Int]
+  , tail (_:_) :: [Int]
+  , tail (_:xs) :: [Int]
+  , tail (_:ys) :: [Int]
+  , tail (_:tail _) :: [Int]
+  , tail (_:0:_) :: [Int]
+  , tail [_,_] :: [Int]
+  , tail (_:_:_) :: [Int]
+  , tail (_:_:xs) :: [Int]
+  , tail (_:_:_:_) :: [Int]
+  , tail (_:x:_) :: [Int]
+  , tail (_:id _:_) :: [Int]
+  , tail (_:(_ ++ _)) :: [Int]
+  , tail [x] :: [Int]
+  , tail (x:_) :: [Int]
+  , tail (x:xs) :: [Int]
+  , tail (x:_:_) :: [Int]
+  , tail (y:_) :: [Int]
+  , tail (ord _:_) :: [Int]
+  , tail (abs _:_) :: [Int]
+  , tail (id 0:_) :: [Int]
+  , tail [id _] :: [Int]
+  , tail (id _:_) :: [Int]
+  , tail (id _:xs) :: [Int]
+  , tail (id _:_:_) :: [Int]
+  , tail (id x:_) :: [Int]
+  , tail (id (id _):_) :: [Int]
+  , tail (negate _:_) :: [Int]
+  , tail (head _:_) :: [Int]
+  , tail (_ + _:_) :: [Int]
+  , tail (insert _ _) :: [Int]
+  , tail ([] ++ _) :: [Int]
+  , tail (_ ++ []) :: [Int]
+  , tail (_ ++ _) :: [Int]
+  , tail (_ ++ xs) :: [Int]
+  , tail (_ ++ (_:_)) :: [Int]
+  , tail (xs ++ _) :: [Int]
+  , tail ((_:_) ++ _) :: [Int]
+  , (False &&) :: Bool -> Bool
+  , (True &&) :: Bool -> Bool
+  , (_ &&) :: Bool -> Bool
+  , (p &&) :: Bool -> Bool
+  , (not _ &&) :: Bool -> Bool
+  , (_ ==>) :: Bool -> Bool
+  , (False ||) :: Bool -> Bool
+  , (True ||) :: Bool -> Bool
+  , (_ ||) :: Bool -> Bool
+  , (p ||) :: Bool -> Bool
+  , (q ||) :: Bool -> Bool
+  , (not False ||) :: Bool -> Bool
+  , (not True ||) :: Bool -> Bool
+  , (not _ ||) :: Bool -> Bool
+  , (not p ||) :: Bool -> Bool
+  , (not (not _) ||) :: Bool -> Bool
+  , ((_ || _) ||) :: Bool -> Bool
+  , (0 *) :: Int -> Int
+  , (1 *) :: Int -> Int
+  , (_ *) :: Int -> Int
+  , (x *) :: Int -> Int
+  , (y *) :: Int -> Int
+  , (ord _ *) :: Int -> Int
+  , (abs _ *) :: Int -> Int
+  , (id 0 *) :: Int -> Int
+  , (id _ *) :: Int -> Int
+  , (id x *) :: Int -> Int
+  , (id (id _) *) :: Int -> Int
+  , (negate _ *) :: Int -> Int
+  , (head _ *) :: Int -> Int
+  , ((_ + _) *) :: Int -> Int
+  , ((-1) +) :: Int -> Int
+  , (0 +) :: Int -> Int
+  , (1 +) :: Int -> Int
+  , (_ +) :: Int -> Int
+  , (x +) :: Int -> Int
+  , (y +) :: Int -> Int
+  , (z +) :: Int -> Int
+  , (ord 'a' +) :: Int -> Int
+  , (ord _ +) :: Int -> Int
+  , (ord c +) :: Int -> Int
+  , (f _ +) :: Int -> Int
+  , (abs 0 +) :: Int -> Int
+  , (abs _ +) :: Int -> Int
+  , (abs x +) :: Int -> Int
+  , (abs (id _) +) :: Int -> Int
+  , (id 0 +) :: Int -> Int
+  , (id 1 +) :: Int -> Int
+  , (id _ +) :: Int -> Int
+  , (id x +) :: Int -> Int
+  , (id y +) :: Int -> Int
+  , (id (ord _) +) :: Int -> Int
+  , (id (abs _) +) :: Int -> Int
+  , (id (id 0) +) :: Int -> Int
+  , (id (id _) +) :: Int -> Int
+  , (id (id x) +) :: Int -> Int
+  , (id (id (id _)) +) :: Int -> Int
+  , (id (negate _) +) :: Int -> Int
+  , (id (head _) +) :: Int -> Int
+  , (id (_ + _) +) :: Int -> Int
+  , (negate 0 +) :: Int -> Int
+  , (negate _ +) :: Int -> Int
+  , (negate x +) :: Int -> Int
+  , (negate (id _) +) :: Int -> Int
+  , (head [] +) :: Int -> Int
+  , (head _ +) :: Int -> Int
+  , (head xs +) :: Int -> Int
+  , (head (_:_) +) :: Int -> Int
+  , (_ * _ +) :: Int -> Int
+  , ((0 + _) +) :: Int -> Int
+  , ((_ + 0) +) :: Int -> Int
+  , ((_ + _) +) :: Int -> Int
+  , ((_ + x) +) :: Int -> Int
+  , ((_ + id _) +) :: Int -> Int
+  , ((x + _) +) :: Int -> Int
+  , ((id _ + _) +) :: Int -> Int
+  , False && False :: Bool
+  , False && True :: Bool
+  , False && _ :: Bool
+  , False && p :: Bool
+  , False && not _ :: Bool
+  , True && False :: Bool
+  , True && True :: Bool
+  , True && _ :: Bool
+  , True && p :: Bool
+  , True && not _ :: Bool
+  , _ && False :: Bool
+  , _ && True :: Bool
+  , _ && _ :: Bool
+  , _ && p :: Bool
+  , _ && q :: Bool
+  , _ && not False :: Bool
+  , _ && not True :: Bool
+  , _ && not _ :: Bool
+  , _ && not p :: Bool
+  , _ && not (not _) :: Bool
+  , _ && (_ || _) :: Bool
+  , p && False :: Bool
+  , p && True :: Bool
+  , p && _ :: Bool
+  , p && p :: Bool
+  , p && not _ :: Bool
+  , q && _ :: Bool
+  , not False && _ :: Bool
+  , not True && _ :: Bool
+  , not _ && False :: Bool
+  , not _ && True :: Bool
+  , not _ && _ :: Bool
+  , not _ && p :: Bool
+  , not _ && not _ :: Bool
+  , not p && _ :: Bool
+  , not (not _) && _ :: Bool
+  , (_ || _) && _ :: Bool
+  , _ < _ :: Bool
+  , False <= _ :: Bool
+  , True <= _ :: Bool
+  , _ <= False :: Bool
+  , _ <= True :: Bool
+  , _ <= _ :: Bool
+  , _ <= p :: Bool
+  , _ <= not _ :: Bool
+  , p <= _ :: Bool
+  , not _ <= _ :: Bool
+  , False == False :: Bool
+  , False == True :: Bool
+  , False == _ :: Bool
+  , False == p :: Bool
+  , False == not _ :: Bool
+  , True == False :: Bool
+  , True == True :: Bool
+  , True == _ :: Bool
+  , True == p :: Bool
+  , True == not _ :: Bool
+  , _ == False :: Bool
+  , _ == True :: Bool
+  , _ == _ :: Bool
+  , _ == p :: Bool
+  , _ == q :: Bool
+  , _ == not False :: Bool
+  , _ == not True :: Bool
+  , _ == not _ :: Bool
+  , _ == not p :: Bool
+  , _ == not (not _) :: Bool
+  , _ == (_ || _) :: Bool
+  , p == False :: Bool
+  , p == True :: Bool
+  , p == _ :: Bool
+  , p == p :: Bool
+  , p == not _ :: Bool
+  , q == _ :: Bool
+  , not False == _ :: Bool
+  , not True == _ :: Bool
+  , not _ == False :: Bool
+  , not _ == True :: Bool
+  , not _ == _ :: Bool
+  , not _ == p :: Bool
+  , not _ == not _ :: Bool
+  , not p == _ :: Bool
+  , not (not _) == _ :: Bool
+  , (_ || _) == _ :: Bool
+  , False ==> _ :: Bool
+  , True ==> _ :: Bool
+  , _ ==> False :: Bool
+  , _ ==> True :: Bool
+  , _ ==> _ :: Bool
+  , _ ==> p :: Bool
+  , _ ==> not _ :: Bool
+  , p ==> _ :: Bool
+  , not _ ==> _ :: Bool
+  , False || False :: Bool
+  , False || True :: Bool
+  , False || _ :: Bool
+  , False || p :: Bool
+  , False || q :: Bool
+  , False || not False :: Bool
+  , False || not True :: Bool
+  , False || not _ :: Bool
+  , False || not p :: Bool
+  , False || not (not _) :: Bool
+  , False || (_ || _) :: Bool
+  , True || False :: Bool
+  , True || True :: Bool
+  , True || _ :: Bool
+  , True || p :: Bool
+  , True || q :: Bool
+  , True || not False :: Bool
+  , True || not True :: Bool
+  , True || not _ :: Bool
+  , True || not p :: Bool
+  , True || not (not _) :: Bool
+  , True || (_ || _) :: Bool
+  , _ || False :: Bool
+  , _ || True :: Bool
+  , _ || _ :: Bool
+  , _ || p :: Bool
+  , _ || q :: Bool
+  , _ || r :: Bool
+  , _ || not False :: Bool
+  , _ || not True :: Bool
+  , _ || not _ :: Bool
+  , _ || not p :: Bool
+  , _ || not q :: Bool
+  , _ || not (not False) :: Bool
+  , _ || not (not True) :: Bool
+  , _ || not (not _) :: Bool
+  , _ || not (not p) :: Bool
+  , _ || not (not (not _)) :: Bool
+  , _ || not (_ || _) :: Bool
+  , _ || even _ :: Bool
+  , _ || odd _ :: Bool
+  , _ || _ && _ :: Bool
+  , _ || _ == _ :: Bool
+  , _ || (False || _) :: Bool
+  , _ || (True || _) :: Bool
+  , _ || (_ || False) :: Bool
+  , _ || (_ || True) :: Bool
+  , _ || (_ || _) :: Bool
+  , _ || (_ || p) :: Bool
+  , _ || (_ || not _) :: Bool
+  , _ || (p || _) :: Bool
+  , _ || (not _ || _) :: Bool
+  , _ || _ == _ :: Bool
+  , _ || elem _ _ :: Bool
+  , p || False :: Bool
+  , p || True :: Bool
+  , p || _ :: Bool
+  , p || p :: Bool
+  , p || q :: Bool
+  , p || not False :: Bool
+  , p || not True :: Bool
+  , p || not _ :: Bool
+  , p || not p :: Bool
+  , p || not (not _) :: Bool
+  , p || (_ || _) :: Bool
+  , q || False :: Bool
+  , q || True :: Bool
+  , q || _ :: Bool
+  , q || p :: Bool
+  , q || not _ :: Bool
+  , r || _ :: Bool
+  , not False || False :: Bool
+  , not False || True :: Bool
+  , not False || _ :: Bool
+  , not False || p :: Bool
+  , not False || not _ :: Bool
+  , not True || False :: Bool
+  , not True || True :: Bool
+  , not True || _ :: Bool
+  , not True || p :: Bool
+  , not True || not _ :: Bool
+  , not _ || False :: Bool
+  , not _ || True :: Bool
+  , not _ || _ :: Bool
+  , not _ || p :: Bool
+  , not _ || q :: Bool
+  , not _ || not False :: Bool
+  , not _ || not True :: Bool
+  , not _ || not _ :: Bool
+  , not _ || not p :: Bool
+  , not _ || not (not _) :: Bool
+  , not _ || (_ || _) :: Bool
+  , not p || False :: Bool
+  , not p || True :: Bool
+  , not p || _ :: Bool
+  , not p || p :: Bool
+  , not p || not _ :: Bool
+  , not q || _ :: Bool
+  , not (not False) || _ :: Bool
+  , not (not True) || _ :: Bool
+  , not (not _) || False :: Bool
+  , not (not _) || True :: Bool
+  , not (not _) || _ :: Bool
+  , not (not _) || p :: Bool
+  , not (not _) || not _ :: Bool
+  , not (not p) || _ :: Bool
+  , not (not (not _)) || _ :: Bool
+  , not (_ || _) || _ :: Bool
+  , even _ || _ :: Bool
+  , odd _ || _ :: Bool
+  , _ && _ || _ :: Bool
+  , _ == _ || _ :: Bool
+  , (False || _) || _ :: Bool
+  , (True || _) || _ :: Bool
+  , (_ || False) || _ :: Bool
+  , (_ || True) || _ :: Bool
+  , (_ || _) || False :: Bool
+  , (_ || _) || True :: Bool
+  , (_ || _) || _ :: Bool
+  , (_ || _) || p :: Bool
+  , (_ || _) || not _ :: Bool
+  , (_ || p) || _ :: Bool
+  , (_ || not _) || _ :: Bool
+  , (p || _) || _ :: Bool
+  , (not _ || _) || _ :: Bool
+  , _ == _ || _ :: Bool
+  , elem _ _ || _ :: Bool
+  , _ < _ :: Bool
+  , 0 <= _ :: Bool
+  , _ <= 0 :: Bool
+  , _ <= _ :: Bool
+  , _ <= x :: Bool
+  , _ <= id _ :: Bool
+  , x <= _ :: Bool
+  , id _ <= _ :: Bool
+  , 0 == 0 :: Bool
+  , 0 == _ :: Bool
+  , 0 == x :: Bool
+  , 0 == id _ :: Bool
+  , 1 == _ :: Bool
+  , _ == 0 :: Bool
+  , _ == 1 :: Bool
+  , _ == _ :: Bool
+  , _ == x :: Bool
+  , _ == y :: Bool
+  , _ == ord _ :: Bool
+  , _ == abs _ :: Bool
+  , _ == id 0 :: Bool
+  , _ == id _ :: Bool
+  , _ == id x :: Bool
+  , _ == id (id _) :: Bool
+  , _ == negate _ :: Bool
+  , _ == head _ :: Bool
+  , _ == _ + _ :: Bool
+  , x == 0 :: Bool
+  , x == _ :: Bool
+  , x == x :: Bool
+  , x == id _ :: Bool
+  , y == _ :: Bool
+  , ord _ == _ :: Bool
+  , abs _ == _ :: Bool
+  , id 0 == _ :: Bool
+  , id _ == 0 :: Bool
+  , id _ == _ :: Bool
+  , id _ == x :: Bool
+  , id _ == id _ :: Bool
+  , id x == _ :: Bool
+  , id (id _) == _ :: Bool
+  , negate _ == _ :: Bool
+  , head _ == _ :: Bool
+  , _ + _ == _ :: Bool
+  , (-1) * _ :: Int
+  , 0 * 0 :: Int
+  , 0 * 1 :: Int
+  , 0 * _ :: Int
+  , 0 * x :: Int
+  , 0 * y :: Int
+  , 0 * ord _ :: Int
+  , 0 * abs _ :: Int
+  , 0 * id 0 :: Int
+  , 0 * id _ :: Int
+  , 0 * id x :: Int
+  , 0 * id (id _) :: Int
+  , 0 * negate _ :: Int
+  , 0 * head _ :: Int
+  , 0 * (_ + _) :: Int
+  , 1 * 0 :: Int
+  , 1 * _ :: Int
+  , 1 * x :: Int
+  , 1 * id _ :: Int
+  , _ * (-1) :: Int
+  , _ * 0 :: Int
+  , _ * 1 :: Int
+  , _ * _ :: Int
+  , _ * x :: Int
+  , _ * y :: Int
+  , _ * z :: Int
+  , _ * ord 'a' :: Int
+  , _ * ord _ :: Int
+  , _ * ord c :: Int
+  , _ * f _ :: Int
+  , _ * abs 0 :: Int
+  , _ * abs _ :: Int
+  , _ * abs x :: Int
+  , _ * abs (id _) :: Int
+  , _ * id 0 :: Int
+  , _ * id 1 :: Int
+  , _ * id _ :: Int
+  , _ * id x :: Int
+  , _ * id y :: Int
+  , _ * id (ord _) :: Int
+  , _ * id (abs _) :: Int
+  , _ * id (id 0) :: Int
+  , _ * id (id _) :: Int
+  , _ * id (id x) :: Int
+  , _ * id (id (id _)) :: Int
+  , _ * id (negate _) :: Int
+  , _ * id (head _) :: Int
+  , _ * id (_ + _) :: Int
+  , _ * negate 0 :: Int
+  , _ * negate _ :: Int
+  , _ * negate x :: Int
+  , _ * negate (id _) :: Int
+  , _ * head [] :: Int
+  , _ * head _ :: Int
+  , _ * head xs :: Int
+  , _ * head (_:_) :: Int
+  , _ * (_ * _) :: Int
+  , _ * (0 + _) :: Int
+  , _ * (_ + 0) :: Int
+  , _ * (_ + _) :: Int
+  , _ * (_ + x) :: Int
+  , _ * (_ + id _) :: Int
+  , _ * (x + _) :: Int
+  , _ * (id _ + _) :: Int
+  , x * 0 :: Int
+  , x * 1 :: Int
+  , x * _ :: Int
+  , x * x :: Int
+  , x * y :: Int
+  , x * ord _ :: Int
+  , x * abs _ :: Int
+  , x * id 0 :: Int
+  , x * id _ :: Int
+  , x * id x :: Int
+  , x * id (id _) :: Int
+  , x * negate _ :: Int
+  , x * head _ :: Int
+  , x * (_ + _) :: Int
+  , y * 0 :: Int
+  , y * _ :: Int
+  , y * x :: Int
+  , y * id _ :: Int
+  , z * _ :: Int
+  , ord 'a' * _ :: Int
+  , ord _ * 0 :: Int
+  , ord _ * _ :: Int
+  , ord _ * x :: Int
+  , ord _ * id _ :: Int
+  , ord c * _ :: Int
+  , f _ * _ :: Int
+  , abs 0 * _ :: Int
+  , abs _ * 0 :: Int
+  , abs _ * _ :: Int
+  , abs _ * x :: Int
+  , abs _ * id _ :: Int
+  , abs x * _ :: Int
+  , abs (id _) * _ :: Int
+  , id 0 * 0 :: Int
+  , id 0 * _ :: Int
+  , id 0 * x :: Int
+  , id 0 * id _ :: Int
+  , id 1 * _ :: Int
+  , id _ * 0 :: Int
+  , id _ * 1 :: Int
+  , id _ * _ :: Int
+  , id _ * x :: Int
+  , id _ * y :: Int
+  , id _ * ord _ :: Int
+  , id _ * abs _ :: Int
+  , id _ * id 0 :: Int
+  , id _ * id _ :: Int
+  , id _ * id x :: Int
+  , id _ * id (id _) :: Int
+  , id _ * negate _ :: Int
+  , id _ * head _ :: Int
+  , id _ * (_ + _) :: Int
+  , id x * 0 :: Int
+  , id x * _ :: Int
+  , id x * x :: Int
+  , id x * id _ :: Int
+  , id y * _ :: Int
+  , id (ord _) * _ :: Int
+  , id (abs _) * _ :: Int
+  , id (id 0) * _ :: Int
+  , id (id _) * 0 :: Int
+  , id (id _) * _ :: Int
+  , id (id _) * x :: Int
+  , id (id _) * id _ :: Int
+  , id (id x) * _ :: Int
+  , id (id (id _)) * _ :: Int
+  , id (negate _) * _ :: Int
+  , id (head _) * _ :: Int
+  , id (_ + _) * _ :: Int
+  , negate 0 * _ :: Int
+  , negate _ * 0 :: Int
+  , negate _ * _ :: Int
+  , negate _ * x :: Int
+  , negate _ * id _ :: Int
+  , negate x * _ :: Int
+  , negate (id _) * _ :: Int
+  , head [] * _ :: Int
+  , head _ * 0 :: Int
+  , head _ * _ :: Int
+  , head _ * x :: Int
+  , head _ * id _ :: Int
+  , head xs * _ :: Int
+  , head (_:_) * _ :: Int
+  , (_ * _) * _ :: Int
+  , (0 + _) * _ :: Int
+  , (_ + 0) * _ :: Int
+  , (_ + _) * 0 :: Int
+  , (_ + _) * _ :: Int
+  , (_ + _) * x :: Int
+  , (_ + _) * id _ :: Int
+  , (_ + x) * _ :: Int
+  , (_ + id _) * _ :: Int
+  , (x + _) * _ :: Int
+  , (id _ + _) * _ :: Int
+  , (-1) + 0 :: Int
+  , (-1) + _ :: Int
+  , (-1) + x :: Int
+  , (-1) + id _ :: Int
+  , 0 + (-1) :: Int
+  , 0 + 0 :: Int
+  , 0 + 1 :: Int
+  , 0 + _ :: Int
+  , 0 + x :: Int
+  , 0 + y :: Int
+  , 0 + z :: Int
+  , 0 + ord 'a' :: Int
+  , 0 + ord _ :: Int
+  , 0 + ord c :: Int
+  , 0 + f _ :: Int
+  , 0 + abs 0 :: Int
+  , 0 + abs _ :: Int
+  , 0 + abs x :: Int
+  , 0 + abs (id _) :: Int
+  , 0 + id 0 :: Int
+  , 0 + id 1 :: Int
+  , 0 + id _ :: Int
+  , 0 + id x :: Int
+  , 0 + id y :: Int
+  , 0 + id (ord _) :: Int
+  , 0 + id (abs _) :: Int
+  , 0 + id (id 0) :: Int
+  , 0 + id (id _) :: Int
+  , 0 + id (id x) :: Int
+  , 0 + id (id (id _)) :: Int
+  , 0 + id (negate _) :: Int
+  , 0 + id (head _) :: Int
+  , 0 + id (_ + _) :: Int
+  , 0 + negate 0 :: Int
+  , 0 + negate _ :: Int
+  , 0 + negate x :: Int
+  , 0 + negate (id _) :: Int
+  , 0 + head [] :: Int
+  , 0 + head _ :: Int
+  , 0 + head xs :: Int
+  , 0 + head (_:_) :: Int
+  , 0 + _ * _ :: Int
+  , 0 + (0 + _) :: Int
+  , 0 + (_ + 0) :: Int
+  , 0 + (_ + _) :: Int
+  , 0 + (_ + x) :: Int
+  , 0 + (_ + id _) :: Int
+  , 0 + (x + _) :: Int
+  , 0 + (id _ + _) :: Int
+  , 1 + 0 :: Int
+  , 1 + 1 :: Int
+  , 1 + _ :: Int
+  , 1 + x :: Int
+  , 1 + y :: Int
+  , 1 + ord _ :: Int
+  , 1 + abs _ :: Int
+  , 1 + id 0 :: Int
+  , 1 + id _ :: Int
+  , 1 + id x :: Int
+  , 1 + id (id _) :: Int
+  , 1 + negate _ :: Int
+  , 1 + head _ :: Int
+  , 1 + (_ + _) :: Int
+  , 2 + _ :: Int
+  , _ + (-1) :: Int
+  , _ + 0 :: Int
+  , _ + 1 :: Int
+  , _ + 2 :: Int
+  , _ + _ :: Int
+  , _ + x :: Int
+  , _ + x' :: Int
+  , _ + y :: Int
+  , _ + z :: Int
+  , _ + ord ' ' :: Int
+  , _ + ord 'a' :: Int
+  , _ + ord _ :: Int
+  , _ + ord c :: Int
+  , _ + ord d :: Int
+  , _ + f 0 :: Int
+  , _ + f _ :: Int
+  , _ + f x :: Int
+  , _ + f (id _) :: Int
+  , _ + g _ :: Int
+  , _ + abs 0 :: Int
+  , _ + abs 1 :: Int
+  , _ + abs _ :: Int
+  , _ + abs x :: Int
+  , _ + abs y :: Int
+  , _ + abs (ord _) :: Int
+  , _ + abs (abs _) :: Int
+  , _ + abs (id 0) :: Int
+  , _ + abs (id _) :: Int
+  , _ + abs (id x) :: Int
+  , _ + abs (id (id _)) :: Int
+  , _ + abs (negate _) :: Int
+  , _ + abs (head _) :: Int
+  , _ + abs (_ + _) :: Int
+  , _ + id (-1) :: Int
+  , _ + id 0 :: Int
+  , _ + id 1 :: Int
+  , _ + id _ :: Int
+  , _ + id x :: Int
+  , _ + id y :: Int
+  , _ + id z :: Int
+  , _ + id (ord 'a') :: Int
+  , _ + id (ord _) :: Int
+  , _ + id (ord c) :: Int
+  , _ + id (f _) :: Int
+  , _ + id (abs 0) :: Int
+  , _ + id (abs _) :: Int
+  , _ + id (abs x) :: Int
+  , _ + id (abs (id _)) :: Int
+  , _ + id (id 0) :: Int
+  , _ + id (id 1) :: Int
+  , _ + id (id _) :: Int
+  , _ + id (id x) :: Int
+  , _ + id (id y) :: Int
+  , _ + id (id (ord _)) :: Int
+  , _ + id (id (abs _)) :: Int
+  , _ + id (id (id 0)) :: Int
+  , _ + id (id (id _)) :: Int
+  , _ + id (id (id x)) :: Int
+  , _ + id (id (id (id _))) :: Int
+  , _ + id (id (negate _)) :: Int
+  , _ + id (id (head _)) :: Int
+  , _ + id (id (_ + _)) :: Int
+  , _ + id (negate 0) :: Int
+  , _ + id (negate _) :: Int
+  , _ + id (negate x) :: Int
+  , _ + id (negate (id _)) :: Int
+  , _ + id (head []) :: Int
+  , _ + id (head _) :: Int
+  , _ + id (head xs) :: Int
+  , _ + id (head (_:_)) :: Int
+  , _ + id (_ * _) :: Int
+  , _ + id (0 + _) :: Int
+  , _ + id (_ + 0) :: Int
+  , _ + id (_ + _) :: Int
+  , _ + id (_ + x) :: Int
+  , _ + id (_ + id _) :: Int
+  , _ + id (x + _) :: Int
+  , _ + id (id _ + _) :: Int
+  , _ + negate 0 :: Int
+  , _ + negate 1 :: Int
+  , _ + negate _ :: Int
+  , _ + negate x :: Int
+  , _ + negate y :: Int
+  , _ + negate (ord _) :: Int
+  , _ + negate (abs _) :: Int
+  , _ + negate (id 0) :: Int
+  , _ + negate (id _) :: Int
+  , _ + negate (id x) :: Int
+  , _ + negate (id (id _)) :: Int
+  , _ + negate (negate _) :: Int
+  , _ + negate (head _) :: Int
+  , _ + negate (_ + _) :: Int
+  , _ + head [0] :: Int
+  , _ + head [] :: Int
+  , _ + head _ :: Int
+  , _ + head xs :: Int
+  , _ + head ys :: Int
+  , _ + head (tail _) :: Int
+  , _ + head (0:_) :: Int
+  , _ + head [_] :: Int
+  , _ + head (_:_) :: Int
+  , _ + head (_:xs) :: Int
+  , _ + head (_:_:_) :: Int
+  , _ + head (x:_) :: Int
+  , _ + head (id _:_) :: Int
+  , _ + head (_ ++ _) :: Int
+  , _ + 0 * _ :: Int
+  , _ + _ * 0 :: Int
+  , _ + _ * _ :: Int
+  , _ + _ * x :: Int
+  , _ + _ * id _ :: Int
+  , _ + x * _ :: Int
+  , _ + id _ * _ :: Int
+  , _ + (0 + 0) :: Int
+  , _ + (0 + _) :: Int
+  , _ + (0 + x) :: Int
+  , _ + (0 + id _) :: Int
+  , _ + (1 + _) :: Int
+  , _ + (_ + 0) :: Int
+  , _ + (_ + 1) :: Int
+  , _ + (_ + _) :: Int
+  , _ + (_ + x) :: Int
+  , _ + (_ + y) :: Int
+  , _ + (_ + ord _) :: Int
+  , _ + (_ + abs _) :: Int
+  , _ + (_ + id 0) :: Int
+  , _ + (_ + id _) :: Int
+  , _ + (_ + id x) :: Int
+  , _ + (_ + id (id _)) :: Int
+  , _ + (_ + negate _) :: Int
+  , _ + (_ + head _) :: Int
+  , _ + (_ + (_ + _)) :: Int
+  , _ + (x + 0) :: Int
+  , _ + (x + _) :: Int
+  , _ + (x + x) :: Int
+  , _ + (x + id _) :: Int
+  , _ + (y + _) :: Int
+  , _ + (ord _ + _) :: Int
+  , _ + (abs _ + _) :: Int
+  , _ + (id 0 + _) :: Int
+  , _ + (id _ + 0) :: Int
+  , _ + (id _ + _) :: Int
+  , _ + (id _ + x) :: Int
+  , _ + (id _ + id _) :: Int
+  , _ + (id x + _) :: Int
+  , _ + (id (id _) + _) :: Int
+  , _ + (negate _ + _) :: Int
+  , _ + (head _ + _) :: Int
+  , _ + ((_ + _) + _) :: Int
+  , x + (-1) :: Int
+  , x + 0 :: Int
+  , x + 1 :: Int
+  , x + _ :: Int
+  , x + x :: Int
+  , x + y :: Int
+  , x + z :: Int
+  , x + ord 'a' :: Int
+  , x + ord _ :: Int
+  , x + ord c :: Int
+  , x + f _ :: Int
+  , x + abs 0 :: Int
+  , x + abs _ :: Int
+  , x + abs x :: Int
+  , x + abs (id _) :: Int
+  , x + id 0 :: Int
+  , x + id 1 :: Int
+  , x + id _ :: Int
+  , x + id x :: Int
+  , x + id y :: Int
+  , x + id (ord _) :: Int
+  , x + id (abs _) :: Int
+  , x + id (id 0) :: Int
+  , x + id (id _) :: Int
+  , x + id (id x) :: Int
+  , x + id (id (id _)) :: Int
+  , x + id (negate _) :: Int
+  , x + id (head _) :: Int
+  , x + id (_ + _) :: Int
+  , x + negate 0 :: Int
+  , x + negate _ :: Int
+  , x + negate x :: Int
+  , x + negate (id _) :: Int
+  , x + head [] :: Int
+  , x + head _ :: Int
+  , x + head xs :: Int
+  , x + head (_:_) :: Int
+  , x + _ * _ :: Int
+  , x + (0 + _) :: Int
+  , x + (_ + 0) :: Int
+  , x + (_ + _) :: Int
+  , x + (_ + x) :: Int
+  , x + (_ + id _) :: Int
+  , x + (x + _) :: Int
+  , x + (id _ + _) :: Int
+  , x' + _ :: Int
+  , y + 0 :: Int
+  , y + 1 :: Int
+  , y + _ :: Int
+  , y + x :: Int
+  , y + y :: Int
+  , y + ord _ :: Int
+  , y + abs _ :: Int
+  , y + id 0 :: Int
+  , y + id _ :: Int
+  , y + id x :: Int
+  , y + id (id _) :: Int
+  , y + negate _ :: Int
+  , y + head _ :: Int
+  , y + (_ + _) :: Int
+  , z + 0 :: Int
+  , z + _ :: Int
+  , z + x :: Int
+  , z + id _ :: Int
+  , ord ' ' + _ :: Int
+  , ord 'a' + 0 :: Int
+  , ord 'a' + _ :: Int
+  , ord 'a' + x :: Int
+  , ord 'a' + id _ :: Int
+  , ord _ + 0 :: Int
+  , ord _ + 1 :: Int
+  , ord _ + _ :: Int
+  , ord _ + x :: Int
+  , ord _ + y :: Int
+  , ord _ + ord _ :: Int
+  , ord _ + abs _ :: Int
+  , ord _ + id 0 :: Int
+  , ord _ + id _ :: Int
+  , ord _ + id x :: Int
+  , ord _ + id (id _) :: Int
+  , ord _ + negate _ :: Int
+  , ord _ + head _ :: Int
+  , ord _ + (_ + _) :: Int
+  , ord c + 0 :: Int
+  , ord c + _ :: Int
+  , ord c + x :: Int
+  , ord c + id _ :: Int
+  , ord d + _ :: Int
+  , f 0 + _ :: Int
+  , f _ + 0 :: Int
+  , f _ + _ :: Int
+  , f _ + x :: Int
+  , f _ + id _ :: Int
+  , f x + _ :: Int
+  , f (id _) + _ :: Int
+  , g _ + _ :: Int
+  , abs 0 + 0 :: Int
+  , abs 0 + _ :: Int
+  , abs 0 + x :: Int
+  , abs 0 + id _ :: Int
+  , abs 1 + _ :: Int
+  , abs _ + 0 :: Int
+  , abs _ + 1 :: Int
+  , abs _ + _ :: Int
+  , abs _ + x :: Int
+  , abs _ + y :: Int
+  , abs _ + ord _ :: Int
+  , abs _ + abs _ :: Int
+  , abs _ + id 0 :: Int
+  , abs _ + id _ :: Int
+  , abs _ + id x :: Int
+  , abs _ + id (id _) :: Int
+  , abs _ + negate _ :: Int
+  , abs _ + head _ :: Int
+  , abs _ + (_ + _) :: Int
+  , abs x + 0 :: Int
+  , abs x + _ :: Int
+  , abs x + x :: Int
+  , abs x + id _ :: Int
+  , abs y + _ :: Int
+  , abs (ord _) + _ :: Int
+  , abs (abs _) + _ :: Int
+  , abs (id 0) + _ :: Int
+  , abs (id _) + 0 :: Int
+  , abs (id _) + _ :: Int
+  , abs (id _) + x :: Int
+  , abs (id _) + id _ :: Int
+  , abs (id x) + _ :: Int
+  , abs (id (id _)) + _ :: Int
+  , abs (negate _) + _ :: Int
+  , abs (head _) + _ :: Int
+  , abs (_ + _) + _ :: Int
+  , id (-1) + _ :: Int
+  , id 0 + 0 :: Int
+  , id 0 + 1 :: Int
+  , id 0 + _ :: Int
+  , id 0 + x :: Int
+  , id 0 + y :: Int
+  , id 0 + ord _ :: Int
+  , id 0 + abs _ :: Int
+  , id 0 + id 0 :: Int
+  , id 0 + id _ :: Int
+  , id 0 + id x :: Int
+  , id 0 + id (id _) :: Int
+  , id 0 + negate _ :: Int
+  , id 0 + head _ :: Int
+  , id 0 + (_ + _) :: Int
+  , id 1 + 0 :: Int
+  , id 1 + _ :: Int
+  , id 1 + x :: Int
+  , id 1 + id _ :: Int
+  , id _ + (-1) :: Int
+  , id _ + 0 :: Int
+  , id _ + 1 :: Int
+  , id _ + _ :: Int
+  , id _ + x :: Int
+  , id _ + y :: Int
+  , id _ + z :: Int
+  , id _ + ord 'a' :: Int
+  , id _ + ord _ :: Int
+  , id _ + ord c :: Int
+  , id _ + f _ :: Int
+  , id _ + abs 0 :: Int
+  , id _ + abs _ :: Int
+  , id _ + abs x :: Int
+  , id _ + abs (id _) :: Int
+  , id _ + id 0 :: Int
+  , id _ + id 1 :: Int
+  , id _ + id _ :: Int
+  , id _ + id x :: Int
+  , id _ + id y :: Int
+  , id _ + id (ord _) :: Int
+  , id _ + id (abs _) :: Int
+  , id _ + id (id 0) :: Int
+  , id _ + id (id _) :: Int
+  , id _ + id (id x) :: Int
+  , id _ + id (id (id _)) :: Int
+  , id _ + id (negate _) :: Int
+  , id _ + id (head _) :: Int
+  , id _ + id (_ + _) :: Int
+  , id _ + negate 0 :: Int
+  , id _ + negate _ :: Int
+  , id _ + negate x :: Int
+  , id _ + negate (id _) :: Int
+  , id _ + head [] :: Int
+  , id _ + head _ :: Int
+  , id _ + head xs :: Int
+  , id _ + head (_:_) :: Int
+  , id _ + _ * _ :: Int
+  , id _ + (0 + _) :: Int
+  , id _ + (_ + 0) :: Int
+  , id _ + (_ + _) :: Int
+  , id _ + (_ + x) :: Int
+  , id _ + (_ + id _) :: Int
+  , id _ + (x + _) :: Int
+  , id _ + (id _ + _) :: Int
+  , id x + 0 :: Int
+  , id x + 1 :: Int
+  , id x + _ :: Int
+  , id x + x :: Int
+  , id x + y :: Int
+  , id x + ord _ :: Int
+  , id x + abs _ :: Int
+  , id x + id 0 :: Int
+  , id x + id _ :: Int
+  , id x + id x :: Int
+  , id x + id (id _) :: Int
+  , id x + negate _ :: Int
+  , id x + head _ :: Int
+  , id x + (_ + _) :: Int
+  , id y + 0 :: Int
+  , id y + _ :: Int
+  , id y + x :: Int
+  , id y + id _ :: Int
+  , id z + _ :: Int
+  , id (ord 'a') + _ :: Int
+  , id (ord _) + 0 :: Int
+  , id (ord _) + _ :: Int
+  , id (ord _) + x :: Int
+  , id (ord _) + id _ :: Int
+  , id (ord c) + _ :: Int
+  , id (f _) + _ :: Int
+  , id (abs 0) + _ :: Int
+  , id (abs _) + 0 :: Int
+  , id (abs _) + _ :: Int
+  , id (abs _) + x :: Int
+  , id (abs _) + id _ :: Int
+  , id (abs x) + _ :: Int
+  , id (abs (id _)) + _ :: Int
+  , id (id 0) + 0 :: Int
+  , id (id 0) + _ :: Int
+  , id (id 0) + x :: Int
+  , id (id 0) + id _ :: Int
+  , id (id 1) + _ :: Int
+  , id (id _) + 0 :: Int
+  , id (id _) + 1 :: Int
+  , id (id _) + _ :: Int
+  , id (id _) + x :: Int
+  , id (id _) + y :: Int
+  , id (id _) + ord _ :: Int
+  , id (id _) + abs _ :: Int
+  , id (id _) + id 0 :: Int
+  , id (id _) + id _ :: Int
+  , id (id _) + id x :: Int
+  , id (id _) + id (id _) :: Int
+  , id (id _) + negate _ :: Int
+  , id (id _) + head _ :: Int
+  , id (id _) + (_ + _) :: Int
+  , id (id x) + 0 :: Int
+  , id (id x) + _ :: Int
+  , id (id x) + x :: Int
+  , id (id x) + id _ :: Int
+  , id (id y) + _ :: Int
+  , id (id (ord _)) + _ :: Int
+  , id (id (abs _)) + _ :: Int
+  , id (id (id 0)) + _ :: Int
+  , id (id (id _)) + 0 :: Int
+  , id (id (id _)) + _ :: Int
+  , id (id (id _)) + x :: Int
+  , id (id (id _)) + id _ :: Int
+  , id (id (id x)) + _ :: Int
+  , id (id (id (id _))) + _ :: Int
+  , id (id (negate _)) + _ :: Int
+  , id (id (head _)) + _ :: Int
+  , id (id (_ + _)) + _ :: Int
+  , id (negate 0) + _ :: Int
+  , id (negate _) + 0 :: Int
+  , id (negate _) + _ :: Int
+  , id (negate _) + x :: Int
+  , id (negate _) + id _ :: Int
+  , id (negate x) + _ :: Int
+  , id (negate (id _)) + _ :: Int
+  , id (head []) + _ :: Int
+  , id (head _) + 0 :: Int
+  , id (head _) + _ :: Int
+  , id (head _) + x :: Int
+  , id (head _) + id _ :: Int
+  , id (head xs) + _ :: Int
+  , id (head (_:_)) + _ :: Int
+  , id (_ * _) + _ :: Int
+  , id (0 + _) + _ :: Int
+  , id (_ + 0) + _ :: Int
+  , id (_ + _) + 0 :: Int
+  , id (_ + _) + _ :: Int
+  , id (_ + _) + x :: Int
+  , id (_ + _) + id _ :: Int
+  , id (_ + x) + _ :: Int
+  , id (_ + id _) + _ :: Int
+  , id (x + _) + _ :: Int
+  , id (id _ + _) + _ :: Int
+  , negate 0 + 0 :: Int
+  , negate 0 + _ :: Int
+  , negate 0 + x :: Int
+  , negate 0 + id _ :: Int
+  , negate 1 + _ :: Int
+  , negate _ + 0 :: Int
+  , negate _ + 1 :: Int
+  , negate _ + _ :: Int
+  , negate _ + x :: Int
+  , negate _ + y :: Int
+  , negate _ + ord _ :: Int
+  , negate _ + abs _ :: Int
+  , negate _ + id 0 :: Int
+  , negate _ + id _ :: Int
+  , negate _ + id x :: Int
+  , negate _ + id (id _) :: Int
+  , negate _ + negate _ :: Int
+  , negate _ + head _ :: Int
+  , negate _ + (_ + _) :: Int
+  , negate x + 0 :: Int
+  , negate x + _ :: Int
+  , negate x + x :: Int
+  , negate x + id _ :: Int
+  , negate y + _ :: Int
+  , negate (ord _) + _ :: Int
+  , negate (abs _) + _ :: Int
+  , negate (id 0) + _ :: Int
+  , negate (id _) + 0 :: Int
+  , negate (id _) + _ :: Int
+  , negate (id _) + x :: Int
+  , negate (id _) + id _ :: Int
+  , negate (id x) + _ :: Int
+  , negate (id (id _)) + _ :: Int
+  , negate (negate _) + _ :: Int
+  , negate (head _) + _ :: Int
+  , negate (_ + _) + _ :: Int
+  , head [0] + _ :: Int
+  , head [] + 0 :: Int
+  , head [] + _ :: Int
+  , head [] + x :: Int
+  , head [] + id _ :: Int
+  , head _ + 0 :: Int
+  , head _ + 1 :: Int
+  , head _ + _ :: Int
+  , head _ + x :: Int
+  , head _ + y :: Int
+  , head _ + ord _ :: Int
+  , head _ + abs _ :: Int
+  , head _ + id 0 :: Int
+  , head _ + id _ :: Int
+  , head _ + id x :: Int
+  , head _ + id (id _) :: Int
+  , head _ + negate _ :: Int
+  , head _ + head _ :: Int
+  , head _ + (_ + _) :: Int
+  , head xs + 0 :: Int
+  , head xs + _ :: Int
+  , head xs + x :: Int
+  , head xs + id _ :: Int
+  , head ys + _ :: Int
+  , head (tail _) + _ :: Int
+  , head (0:_) + _ :: Int
+  , head [_] + _ :: Int
+  , head (_:_) + 0 :: Int
+  , head (_:_) + _ :: Int
+  , head (_:_) + x :: Int
+  , head (_:_) + id _ :: Int
+  , head (_:xs) + _ :: Int
+  , head (_:_:_) + _ :: Int
+  , head (x:_) + _ :: Int
+  , head (id _:_) + _ :: Int
+  , head (_ ++ _) + _ :: Int
+  , 0 * _ + _ :: Int
+  , _ * 0 + _ :: Int
+  , _ * _ + 0 :: Int
+  , _ * _ + _ :: Int
+  , _ * _ + x :: Int
+  , _ * _ + id _ :: Int
+  , _ * x + _ :: Int
+  , _ * id _ + _ :: Int
+  , x * _ + _ :: Int
+  , id _ * _ + _ :: Int
+  , (0 + 0) + _ :: Int
+  , (0 + _) + 0 :: Int
+  , (0 + _) + _ :: Int
+  , (0 + _) + x :: Int
+  , (0 + _) + id _ :: Int
+  , (0 + x) + _ :: Int
+  , (0 + id _) + _ :: Int
+  , (1 + _) + _ :: Int
+  , (_ + 0) + 0 :: Int
+  , (_ + 0) + _ :: Int
+  , (_ + 0) + x :: Int
+  , (_ + 0) + id _ :: Int
+  , (_ + 1) + _ :: Int
+  , (_ + _) + 0 :: Int
+  , (_ + _) + 1 :: Int
+  , (_ + _) + _ :: Int
+  , (_ + _) + x :: Int
+  , (_ + _) + y :: Int
+  , (_ + _) + ord _ :: Int
+  , (_ + _) + abs _ :: Int
+  , (_ + _) + id 0 :: Int
+  , (_ + _) + id _ :: Int
+  , (_ + _) + id x :: Int
+  , (_ + _) + id (id _) :: Int
+  , (_ + _) + negate _ :: Int
+  , (_ + _) + head _ :: Int
+  , (_ + _) + (_ + _) :: Int
+  , (_ + x) + 0 :: Int
+  , (_ + x) + _ :: Int
+  , (_ + x) + x :: Int
+  , (_ + x) + id _ :: Int
+  , (_ + y) + _ :: Int
+  , (_ + ord _) + _ :: Int
+  , (_ + abs _) + _ :: Int
+  , (_ + id 0) + _ :: Int
+  , (_ + id _) + 0 :: Int
+  , (_ + id _) + _ :: Int
+  , (_ + id _) + x :: Int
+  , (_ + id _) + id _ :: Int
+  , (_ + id x) + _ :: Int
+  , (_ + id (id _)) + _ :: Int
+  , (_ + negate _) + _ :: Int
+  , (_ + head _) + _ :: Int
+  , (_ + (_ + _)) + _ :: Int
+  , (x + 0) + _ :: Int
+  , (x + _) + 0 :: Int
+  , (x + _) + _ :: Int
+  , (x + _) + x :: Int
+  , (x + _) + id _ :: Int
+  , (x + x) + _ :: Int
+  , (x + id _) + _ :: Int
+  , (y + _) + _ :: Int
+  , (ord _ + _) + _ :: Int
+  , (abs _ + _) + _ :: Int
+  , (id 0 + _) + _ :: Int
+  , (id _ + 0) + _ :: Int
+  , (id _ + _) + 0 :: Int
+  , (id _ + _) + _ :: Int
+  , (id _ + _) + x :: Int
+  , (id _ + _) + id _ :: Int
+  , (id _ + x) + _ :: Int
+  , (id _ + id _) + _ :: Int
+  , (id x + _) + _ :: Int
+  , (id (id _) + _) + _ :: Int
+  , (negate _ + _) + _ :: Int
+  , (head _ + _) + _ :: Int
+  , ((_ + _) + _) + _ :: Int
+  , elem 0 [] :: Bool
+  , elem 0 _ :: Bool
+  , elem 0 xs :: Bool
+  , elem 0 (_:_) :: Bool
+  , elem 1 _ :: Bool
+  , elem _ [0] :: Bool
+  , elem _ [] :: Bool
+  , elem _ _ :: Bool
+  , elem _ xs :: Bool
+  , elem _ ys :: Bool
+  , elem _ (tail _) :: Bool
+  , elem _ (0:_) :: Bool
+  , elem _ [_] :: Bool
+  , elem _ (_:_) :: Bool
+  , elem _ (_:xs) :: Bool
+  , elem _ (_:_:_) :: Bool
+  , elem _ (x:_) :: Bool
+  , elem _ (id _:_) :: Bool
+  , elem _ (_ ++ _) :: Bool
+  , elem x [] :: Bool
+  , elem x _ :: Bool
+  , elem x xs :: Bool
+  , elem x (_:_) :: Bool
+  , elem y _ :: Bool
+  , elem (ord _) _ :: Bool
+  , elem (abs _) _ :: Bool
+  , elem (id 0) _ :: Bool
+  , elem (id _) [] :: Bool
+  , elem (id _) _ :: Bool
+  , elem (id _) xs :: Bool
+  , elem (id _) (_:_) :: Bool
+  , elem (id x) _ :: Bool
+  , elem (id (id _)) _ :: Bool
+  , elem (negate _) _ :: Bool
+  , elem (head _) _ :: Bool
+  , elem (_ + _) _ :: Bool
+  , [-1] :: [Int]
+  , (-1):_ :: [Int]
+  , (-1):xs :: [Int]
+  , (-1):_:_ :: [Int]
+  , 0:[0,0] :: [Int]
+  , 0:[0] :: [Int]
+  , 0:[1] :: [Int]
+  , [0] :: [Int]
+  , 0:_ :: [Int]
+  , 0:xs :: [Int]
+  , 0:ys :: [Int]
+  , 0:zs :: [Int]
+  , 0:sort _ :: [Int]
+  , 0:tail [] :: [Int]
+  , 0:tail _ :: [Int]
+  , 0:tail xs :: [Int]
+  , 0:tail (_:_) :: [Int]
+  , [0,0] :: [Int]
+  , 0:0:_ :: [Int]
+  , 0:0:xs :: [Int]
+  , 0:0:_:_ :: [Int]
+  , 0:1:_ :: [Int]
+  , 0:_:[0] :: [Int]
+  , [0,_] :: [Int]
+  , 0:_:_ :: [Int]
+  , 0:_:xs :: [Int]
+  , 0:_:ys :: [Int]
+  , 0:_:tail _ :: [Int]
+  , 0:_:0:_ :: [Int]
+  , [0,_,_] :: [Int]
+  , 0:_:_:_ :: [Int]
+  , 0:_:_:xs :: [Int]
+  , 0:_:_:_:_ :: [Int]
+  , 0:_:x:_ :: [Int]
+  , 0:_:id _:_ :: [Int]
+  , 0:_:(_ ++ _) :: [Int]
+  , [0,x] :: [Int]
+  , 0:x:_ :: [Int]
+  , 0:x:xs :: [Int]
+  , 0:x:_:_ :: [Int]
+  , 0:y:_ :: [Int]
+  , 0:ord _:_ :: [Int]
+  , 0:abs _:_ :: [Int]
+  , 0:id 0:_ :: [Int]
+  , [0,id _] :: [Int]
+  , 0:id _:_ :: [Int]
+  , 0:id _:xs :: [Int]
+  , 0:id _:_:_ :: [Int]
+  , 0:id x:_ :: [Int]
+  , 0:id (id _):_ :: [Int]
+  , 0:negate _:_ :: [Int]
+  , 0:head _:_ :: [Int]
+  , 0:_ + _:_ :: [Int]
+  , 0:insert _ _ :: [Int]
+  , 0:([] ++ _) :: [Int]
+  , 0:(_ ++ []) :: [Int]
+  , 0:(_ ++ _) :: [Int]
+  , 0:(_ ++ xs) :: [Int]
+  , 0:(_ ++ (_:_)) :: [Int]
+  , 0:(xs ++ _) :: [Int]
+  , 0:((_:_) ++ _) :: [Int]
+  , 1:[0] :: [Int]
+  , [1] :: [Int]
+  , 1:_ :: [Int]
+  , 1:xs :: [Int]
+  , 1:ys :: [Int]
+  , 1:tail _ :: [Int]
+  , 1:0:_ :: [Int]
+  , [1,_] :: [Int]
+  , 1:_:_ :: [Int]
+  , 1:_:xs :: [Int]
+  , 1:_:_:_ :: [Int]
+  , 1:x:_ :: [Int]
+  , 1:id _:_ :: [Int]
+  , 1:(_ ++ _) :: [Int]
+  , 2:_ :: [Int]
+  , _:[-1] :: [Int]
+  , _:[0,0,0] :: [Int]
+  , _:[0,0] :: [Int]
+  , _:[0,1] :: [Int]
+  , _:[0] :: [Int]
+  , _:[1,0] :: [Int]
+  , _:[1] :: [Int]
+  , [_] :: [Int]
+  , _:_ :: [Int]
+  , _:xs :: [Int]
+  , _:xs' :: [Int]
+  , _:ys :: [Int]
+  , _:zs :: [Int]
+  , _:sort [] :: [Int]
+  , _:sort _ :: [Int]
+  , _:sort xs :: [Int]
+  , _:sort (_:_) :: [Int]
+  , _:tail [0] :: [Int]
+  , _:tail [] :: [Int]
+  , _:tail _ :: [Int]
+  , _:tail xs :: [Int]
+  , _:tail ys :: [Int]
+  , _:tail (tail _) :: [Int]
+  , _:tail (0:_) :: [Int]
+  , _:tail [_] :: [Int]
+  , _:tail (_:_) :: [Int]
+  , _:tail (_:xs) :: [Int]
+  , _:tail (_:_:_) :: [Int]
+  , _:tail (x:_) :: [Int]
+  , _:tail (id _:_) :: [Int]
+  , _:tail (_ ++ _) :: [Int]
+  , _:(-1):_ :: [Int]
+  , _:0:[0] :: [Int]
+  , [_,0] :: [Int]
+  , _:0:_ :: [Int]
+  , _:0:xs :: [Int]
+  , _:0:ys :: [Int]
+  , _:0:tail _ :: [Int]
+  , _:0:0:_ :: [Int]
+  , [_,0,_] :: [Int]
+  , _:0:_:_ :: [Int]
+  , _:0:_:xs :: [Int]
+  , _:0:_:_:_ :: [Int]
+  , _:0:x:_ :: [Int]
+  , _:0:id _:_ :: [Int]
+  , _:0:(_ ++ _) :: [Int]
+  , [_,1] :: [Int]
+  , _:1:_ :: [Int]
+  , _:1:xs :: [Int]
+  , _:1:_:_ :: [Int]
+  , _:_:[0,0] :: [Int]
+  , _:_:[0] :: [Int]
+  , _:_:[1] :: [Int]
+  , [_,_] :: [Int]
+  , _:_:_ :: [Int]
+  , _:_:xs :: [Int]
+  , _:_:ys :: [Int]
+  , _:_:zs :: [Int]
+  , _:_:sort _ :: [Int]
+  , _:_:tail [] :: [Int]
+  , _:_:tail _ :: [Int]
+  , _:_:tail xs :: [Int]
+  , _:_:tail (_:_) :: [Int]
+  , [_,_,0] :: [Int]
+  , _:_:0:_ :: [Int]
+  , _:_:0:xs :: [Int]
+  , _:_:0:_:_ :: [Int]
+  , _:_:1:_ :: [Int]
+  , _:_:_:[0] :: [Int]
+  , [_,_,_] :: [Int]
+  , _:_:_:_ :: [Int]
+  , _:_:_:xs :: [Int]
+  , _:_:_:ys :: [Int]
+  , _:_:_:tail _ :: [Int]
+  , _:_:_:0:_ :: [Int]
+  , [_,_,_,_] :: [Int]
+  , _:_:_:_:_ :: [Int]
+  , _:_:_:_:xs :: [Int]
+  , _:_:_:_:_:_ :: [Int]
+  , _:_:_:x:_ :: [Int]
+  , _:_:_:id _:_ :: [Int]
+  , _:_:_:(_ ++ _) :: [Int]
+  , [_,_,x] :: [Int]
+  , _:_:x:_ :: [Int]
+  , _:_:x:xs :: [Int]
+  , _:_:x:_:_ :: [Int]
+  , _:_:y:_ :: [Int]
+  , _:_:ord _:_ :: [Int]
+  , _:_:abs _:_ :: [Int]
+  , _:_:id 0:_ :: [Int]
+  , [_,_,id _] :: [Int]
+  , _:_:id _:_ :: [Int]
+  , _:_:id _:xs :: [Int]
+  , _:_:id _:_:_ :: [Int]
+  , _:_:id x:_ :: [Int]
+  , _:_:id (id _):_ :: [Int]
+  , _:_:negate _:_ :: [Int]
+  , _:_:head _:_ :: [Int]
+  , _:_:_ + _:_ :: [Int]
+  , _:_:insert _ _ :: [Int]
+  , _:_:([] ++ _) :: [Int]
+  , _:_:(_ ++ []) :: [Int]
+  , _:_:(_ ++ _) :: [Int]
+  , _:_:(_ ++ xs) :: [Int]
+  , _:_:(_ ++ (_:_)) :: [Int]
+  , _:_:(xs ++ _) :: [Int]
+  , _:_:((_:_) ++ _) :: [Int]
+  , _:x:[0] :: [Int]
+  , [_,x] :: [Int]
+  , _:x:_ :: [Int]
+  , _:x:xs :: [Int]
+  , _:x:ys :: [Int]
+  , _:x:tail _ :: [Int]
+  , _:x:0:_ :: [Int]
+  , [_,x,_] :: [Int]
+  , _:x:_:_ :: [Int]
+  , _:x:_:xs :: [Int]
+  , _:x:_:_:_ :: [Int]
+  , _:x:x:_ :: [Int]
+  , _:x:id _:_ :: [Int]
+  , _:x:(_ ++ _) :: [Int]
+  , [_,y] :: [Int]
+  , _:y:_ :: [Int]
+  , _:y:xs :: [Int]
+  , _:y:_:_ :: [Int]
+  , _:z:_ :: [Int]
+  , _:ord 'a':_ :: [Int]
+  , [_,ord _] :: [Int]
+  , _:ord _:_ :: [Int]
+  , _:ord _:xs :: [Int]
+  , _:ord _:_:_ :: [Int]
+  , _:ord c:_ :: [Int]
+  , _:f _:_ :: [Int]
+  , _:abs 0:_ :: [Int]
+  , [_,abs _] :: [Int]
+  , _:abs _:_ :: [Int]
+  , _:abs _:xs :: [Int]
+  , _:abs _:_:_ :: [Int]
+  , _:abs x:_ :: [Int]
+  , _:abs (id _):_ :: [Int]
+  , [_,id 0] :: [Int]
+  , _:id 0:_ :: [Int]
+  , _:id 0:xs :: [Int]
+  , _:id 0:_:_ :: [Int]
+  , _:id 1:_ :: [Int]
+  , _:id _:[0] :: [Int]
+  , [_,id _] :: [Int]
+  , _:id _:_ :: [Int]
+  , _:id _:xs :: [Int]
+  , _:id _:ys :: [Int]
+  , _:id _:tail _ :: [Int]
+  , _:id _:0:_ :: [Int]
+  , [_,id _,_] :: [Int]
+  , _:id _:_:_ :: [Int]
+  , _:id _:_:xs :: [Int]
+  , _:id _:_:_:_ :: [Int]
+  , _:id _:x:_ :: [Int]
+  , _:id _:id _:_ :: [Int]
+  , _:id _:(_ ++ _) :: [Int]
+  , [_,id x] :: [Int]
+  , _:id x:_ :: [Int]
+  , _:id x:xs :: [Int]
+  , _:id x:_:_ :: [Int]
+  , _:id y:_ :: [Int]
+  , _:id (ord _):_ :: [Int]
+  , _:id (abs _):_ :: [Int]
+  , _:id (id 0):_ :: [Int]
+  , [_,id (id _)] :: [Int]
+  , _:id (id _):_ :: [Int]
+  , _:id (id _):xs :: [Int]
+  , _:id (id _):_:_ :: [Int]
+  , _:id (id x):_ :: [Int]
+  , _:id (id (id _)):_ :: [Int]
+  , _:id (negate _):_ :: [Int]
+  , _:id (head _):_ :: [Int]
+  , _:id (_ + _):_ :: [Int]
+  , _:negate 0:_ :: [Int]
+  , [_,negate _] :: [Int]
+  , _:negate _:_ :: [Int]
+  , _:negate _:xs :: [Int]
+  , _:negate _:_:_ :: [Int]
+  , _:negate x:_ :: [Int]
+  , _:negate (id _):_ :: [Int]
+  , _:head []:_ :: [Int]
+  , [_,head _] :: [Int]
+  , _:head _:_ :: [Int]
+  , _:head _:xs :: [Int]
+  , _:head _:_:_ :: [Int]
+  , _:head xs:_ :: [Int]
+  , _:head (_:_):_ :: [Int]
+  , _:_ * _:_ :: [Int]
+  , _:0 + _:_ :: [Int]
+  , _:_ + 0:_ :: [Int]
+  , [_,_ + _] :: [Int]
+  , _:_ + _:_ :: [Int]
+  , _:_ + _:xs :: [Int]
+  , _:_ + _:_:_ :: [Int]
+  , _:_ + x:_ :: [Int]
+  , _:_ + id _:_ :: [Int]
+  , _:x + _:_ :: [Int]
+  , _:id _ + _:_ :: [Int]
+  , _:insert 0 _ :: [Int]
+  , _:insert _ [] :: [Int]
+  , _:insert _ _ :: [Int]
+  , _:insert _ xs :: [Int]
+  , _:insert _ (_:_) :: [Int]
+  , _:insert x _ :: [Int]
+  , _:insert (id _) _ :: [Int]
+  , _:([0] ++ _) :: [Int]
+  , _:([] ++ []) :: [Int]
+  , _:([] ++ _) :: [Int]
+  , _:([] ++ xs) :: [Int]
+  , _:([] ++ (_:_)) :: [Int]
+  , _:(_ ++ [0]) :: [Int]
+  , _:(_ ++ []) :: [Int]
+  , _:(_ ++ _) :: [Int]
+  , _:(_ ++ xs) :: [Int]
+  , _:(_ ++ ys) :: [Int]
+  , _:(_ ++ tail _) :: [Int]
+  , _:(_ ++ (0:_)) :: [Int]
+  , _:(_ ++ [_]) :: [Int]
+  , _:(_ ++ (_:_)) :: [Int]
+  , _:(_ ++ (_:xs)) :: [Int]
+  , _:(_ ++ (_:_:_)) :: [Int]
+  , _:(_ ++ (x:_)) :: [Int]
+  , _:(_ ++ (id _:_)) :: [Int]
+  , _:(_ ++ (_ ++ _)) :: [Int]
+  , _:(xs ++ []) :: [Int]
+  , _:(xs ++ _) :: [Int]
+  , _:(xs ++ xs) :: [Int]
+  , _:(xs ++ (_:_)) :: [Int]
+  , _:(ys ++ _) :: [Int]
+  , _:(tail _ ++ _) :: [Int]
+  , _:((0:_) ++ _) :: [Int]
+  , _:([_] ++ _) :: [Int]
+  , _:((_:_) ++ []) :: [Int]
+  , _:((_:_) ++ _) :: [Int]
+  , _:((_:_) ++ xs) :: [Int]
+  , _:((_:_) ++ (_:_)) :: [Int]
+  , _:((_:xs) ++ _) :: [Int]
+  , _:((_:_:_) ++ _) :: [Int]
+  , _:((x:_) ++ _) :: [Int]
+  , _:((id _:_) ++ _) :: [Int]
+  , _:((_ ++ _) ++ _) :: [Int]
+  , x:[0,0] :: [Int]
+  , x:[0] :: [Int]
+  , x:[1] :: [Int]
+  , [x] :: [Int]
+  , x:_ :: [Int]
+  , x:xs :: [Int]
+  , x:ys :: [Int]
+  , x:zs :: [Int]
+  , x:sort _ :: [Int]
+  , x:tail [] :: [Int]
+  , x:tail _ :: [Int]
+  , x:tail xs :: [Int]
+  , x:tail (_:_) :: [Int]
+  , [x,0] :: [Int]
+  , x:0:_ :: [Int]
+  , x:0:xs :: [Int]
+  , x:0:_:_ :: [Int]
+  , x:1:_ :: [Int]
+  , x:_:[0] :: [Int]
+  , [x,_] :: [Int]
+  , x:_:_ :: [Int]
+  , x:_:xs :: [Int]
+  , x:_:ys :: [Int]
+  , x:_:tail _ :: [Int]
+  , x:_:0:_ :: [Int]
+  , [x,_,_] :: [Int]
+  , x:_:_:_ :: [Int]
+  , x:_:_:xs :: [Int]
+  , x:_:_:_:_ :: [Int]
+  , x:_:x:_ :: [Int]
+  , x:_:id _:_ :: [Int]
+  , x:_:(_ ++ _) :: [Int]
+  , [x,x] :: [Int]
+  , x:x:_ :: [Int]
+  , x:x:xs :: [Int]
+  , x:x:_:_ :: [Int]
+  , x:y:_ :: [Int]
+  , x:ord _:_ :: [Int]
+  , x:abs _:_ :: [Int]
+  , x:id 0:_ :: [Int]
+  , [x,id _] :: [Int]
+  , x:id _:_ :: [Int]
+  , x:id _:xs :: [Int]
+  , x:id _:_:_ :: [Int]
+  , x:id x:_ :: [Int]
+  , x:id (id _):_ :: [Int]
+  , x:negate _:_ :: [Int]
+  , x:head _:_ :: [Int]
+  , x:_ + _:_ :: [Int]
+  , x:insert _ _ :: [Int]
+  , x:([] ++ _) :: [Int]
+  , x:(_ ++ []) :: [Int]
+  , x:(_ ++ _) :: [Int]
+  , x:(_ ++ xs) :: [Int]
+  , x:(_ ++ (_:_)) :: [Int]
+  , x:(xs ++ _) :: [Int]
+  , x:((_:_) ++ _) :: [Int]
+  , x':_ :: [Int]
+  , y:[0] :: [Int]
+  , [y] :: [Int]
+  , y:_ :: [Int]
+  , y:xs :: [Int]
+  , y:ys :: [Int]
+  , y:tail _ :: [Int]
+  , y:0:_ :: [Int]
+  , [y,_] :: [Int]
+  , y:_:_ :: [Int]
+  , y:_:xs :: [Int]
+  , y:_:_:_ :: [Int]
+  , y:x:_ :: [Int]
+  , y:id _:_ :: [Int]
+  , y:(_ ++ _) :: [Int]
+  , [z] :: [Int]
+  , z:_ :: [Int]
+  , z:xs :: [Int]
+  , z:_:_ :: [Int]
+  , ord ' ':_ :: [Int]
+  , [ord 'a'] :: [Int]
+  , ord 'a':_ :: [Int]
+  , ord 'a':xs :: [Int]
+  , ord 'a':_:_ :: [Int]
+  , ord _:[0] :: [Int]
+  , [ord _] :: [Int]
+  , ord _:_ :: [Int]
+  , ord _:xs :: [Int]
+  , ord _:ys :: [Int]
+  , ord _:tail _ :: [Int]
+  , ord _:0:_ :: [Int]
+  , [ord _,_] :: [Int]
+  , ord _:_:_ :: [Int]
+  , ord _:_:xs :: [Int]
+  , ord _:_:_:_ :: [Int]
+  , ord _:x:_ :: [Int]
+  , ord _:id _:_ :: [Int]
+  , ord _:(_ ++ _) :: [Int]
+  , [ord c] :: [Int]
+  , ord c:_ :: [Int]
+  , ord c:xs :: [Int]
+  , ord c:_:_ :: [Int]
+  , ord d:_ :: [Int]
+  , f 0:_ :: [Int]
+  , [f _] :: [Int]
+  , f _:_ :: [Int]
+  , f _:xs :: [Int]
+  , f _:_:_ :: [Int]
+  , f x:_ :: [Int]
+  , f (id _):_ :: [Int]
+  , g _:_ :: [Int]
+  , [abs 0] :: [Int]
+  , abs 0:_ :: [Int]
+  , abs 0:xs :: [Int]
+  , abs 0:_:_ :: [Int]
+  , abs 1:_ :: [Int]
+  , abs _:[0] :: [Int]
+  , [abs _] :: [Int]
+  , abs _:_ :: [Int]
+  , abs _:xs :: [Int]
+  , abs _:ys :: [Int]
+  , abs _:tail _ :: [Int]
+  , abs _:0:_ :: [Int]
+  , [abs _,_] :: [Int]
+  , abs _:_:_ :: [Int]
+  , abs _:_:xs :: [Int]
+  , abs _:_:_:_ :: [Int]
+  , abs _:x:_ :: [Int]
+  , abs _:id _:_ :: [Int]
+  , abs _:(_ ++ _) :: [Int]
+  , [abs x] :: [Int]
+  , abs x:_ :: [Int]
+  , abs x:xs :: [Int]
+  , abs x:_:_ :: [Int]
+  , abs y:_ :: [Int]
+  , abs (ord _):_ :: [Int]
+  , abs (abs _):_ :: [Int]
+  , abs (id 0):_ :: [Int]
+  , [abs (id _)] :: [Int]
+  , abs (id _):_ :: [Int]
+  , abs (id _):xs :: [Int]
+  , abs (id _):_:_ :: [Int]
+  , abs (id x):_ :: [Int]
+  , abs (id (id _)):_ :: [Int]
+  , abs (negate _):_ :: [Int]
+  , abs (head _):_ :: [Int]
+  , abs (_ + _):_ :: [Int]
+  , id (-1):_ :: [Int]
+  , id 0:[0] :: [Int]
+  , [id 0] :: [Int]
+  , id 0:_ :: [Int]
+  , id 0:xs :: [Int]
+  , id 0:ys :: [Int]
+  , id 0:tail _ :: [Int]
+  , id 0:0:_ :: [Int]
+  , [id 0,_] :: [Int]
+  , id 0:_:_ :: [Int]
+  , id 0:_:xs :: [Int]
+  , id 0:_:_:_ :: [Int]
+  , id 0:x:_ :: [Int]
+  , id 0:id _:_ :: [Int]
+  , id 0:(_ ++ _) :: [Int]
+  , [id 1] :: [Int]
+  , id 1:_ :: [Int]
+  , id 1:xs :: [Int]
+  , id 1:_:_ :: [Int]
+  , id _:[0,0] :: [Int]
+  , id _:[0] :: [Int]
+  , id _:[1] :: [Int]
+  , [id _] :: [Int]
+  , id _:_ :: [Int]
+  , id _:xs :: [Int]
+  , id _:ys :: [Int]
+  , id _:zs :: [Int]
+  , id _:sort _ :: [Int]
+  , id _:tail [] :: [Int]
+  , id _:tail _ :: [Int]
+  , id _:tail xs :: [Int]
+  , id _:tail (_:_) :: [Int]
+  , [id _,0] :: [Int]
+  , id _:0:_ :: [Int]
+  , id _:0:xs :: [Int]
+  , id _:0:_:_ :: [Int]
+  , id _:1:_ :: [Int]
+  , id _:_:[0] :: [Int]
+  , [id _,_] :: [Int]
+  , id _:_:_ :: [Int]
+  , id _:_:xs :: [Int]
+  , id _:_:ys :: [Int]
+  , id _:_:tail _ :: [Int]
+  , id _:_:0:_ :: [Int]
+  , [id _,_,_] :: [Int]
+  , id _:_:_:_ :: [Int]
+  , id _:_:_:xs :: [Int]
+  , id _:_:_:_:_ :: [Int]
+  , id _:_:x:_ :: [Int]
+  , id _:_:id _:_ :: [Int]
+  , id _:_:(_ ++ _) :: [Int]
+  , [id _,x] :: [Int]
+  , id _:x:_ :: [Int]
+  , id _:x:xs :: [Int]
+  , id _:x:_:_ :: [Int]
+  , id _:y:_ :: [Int]
+  , id _:ord _:_ :: [Int]
+  , id _:abs _:_ :: [Int]
+  , id _:id 0:_ :: [Int]
+  , [id _,id _] :: [Int]
+  , id _:id _:_ :: [Int]
+  , id _:id _:xs :: [Int]
+  , id _:id _:_:_ :: [Int]
+  , id _:id x:_ :: [Int]
+  , id _:id (id _):_ :: [Int]
+  , id _:negate _:_ :: [Int]
+  , id _:head _:_ :: [Int]
+  , id _:_ + _:_ :: [Int]
+  , id _:insert _ _ :: [Int]
+  , id _:([] ++ _) :: [Int]
+  , id _:(_ ++ []) :: [Int]
+  , id _:(_ ++ _) :: [Int]
+  , id _:(_ ++ xs) :: [Int]
+  , id _:(_ ++ (_:_)) :: [Int]
+  , id _:(xs ++ _) :: [Int]
+  , id _:((_:_) ++ _) :: [Int]
+  , id x:[0] :: [Int]
+  , [id x] :: [Int]
+  , id x:_ :: [Int]
+  , id x:xs :: [Int]
+  , id x:ys :: [Int]
+  , id x:tail _ :: [Int]
+  , id x:0:_ :: [Int]
+  , [id x,_] :: [Int]
+  , id x:_:_ :: [Int]
+  , id x:_:xs :: [Int]
+  , id x:_:_:_ :: [Int]
+  , id x:x:_ :: [Int]
+  , id x:id _:_ :: [Int]
+  , id x:(_ ++ _) :: [Int]
+  , [id y] :: [Int]
+  , id y:_ :: [Int]
+  , id y:xs :: [Int]
+  , id y:_:_ :: [Int]
+  , id z:_ :: [Int]
+  , id (ord 'a'):_ :: [Int]
+  , [id (ord _)] :: [Int]
+  , id (ord _):_ :: [Int]
+  , id (ord _):xs :: [Int]
+  , id (ord _):_:_ :: [Int]
+  , id (ord c):_ :: [Int]
+  , id (f _):_ :: [Int]
+  , id (abs 0):_ :: [Int]
+  , [id (abs _)] :: [Int]
+  , id (abs _):_ :: [Int]
+  , id (abs _):xs :: [Int]
+  , id (abs _):_:_ :: [Int]
+  , id (abs x):_ :: [Int]
+  , id (abs (id _)):_ :: [Int]
+  , [id (id 0)] :: [Int]
+  , id (id 0):_ :: [Int]
+  , id (id 0):xs :: [Int]
+  , id (id 0):_:_ :: [Int]
+  , id (id 1):_ :: [Int]
+  , id (id _):[0] :: [Int]
+  , [id (id _)] :: [Int]
+  , id (id _):_ :: [Int]
+  , id (id _):xs :: [Int]
+  , id (id _):ys :: [Int]
+  , id (id _):tail _ :: [Int]
+  , id (id _):0:_ :: [Int]
+  , [id (id _),_] :: [Int]
+  , id (id _):_:_ :: [Int]
+  , id (id _):_:xs :: [Int]
+  , id (id _):_:_:_ :: [Int]
+  , id (id _):x:_ :: [Int]
+  , id (id _):id _:_ :: [Int]
+  , id (id _):(_ ++ _) :: [Int]
+  , [id (id x)] :: [Int]
+  , id (id x):_ :: [Int]
+  , id (id x):xs :: [Int]
+  , id (id x):_:_ :: [Int]
+  , id (id y):_ :: [Int]
+  , id (id (ord _)):_ :: [Int]
+  , id (id (abs _)):_ :: [Int]
+  , id (id (id 0)):_ :: [Int]
+  , [id (id (id _))] :: [Int]
+  , id (id (id _)):_ :: [Int]
+  , id (id (id _)):xs :: [Int]
+  , id (id (id _)):_:_ :: [Int]
+  , id (id (id x)):_ :: [Int]
+  , id (id (id (id _))):_ :: [Int]
+  , id (id (negate _)):_ :: [Int]
+  , id (id (head _)):_ :: [Int]
+  , id (id (_ + _)):_ :: [Int]
+  , id (negate 0):_ :: [Int]
+  , [id (negate _)] :: [Int]
+  , id (negate _):_ :: [Int]
+  , id (negate _):xs :: [Int]
+  , id (negate _):_:_ :: [Int]
+  , id (negate x):_ :: [Int]
+  , id (negate (id _)):_ :: [Int]
+  , id (head []):_ :: [Int]
+  , [id (head _)] :: [Int]
+  , id (head _):_ :: [Int]
+  , id (head _):xs :: [Int]
+  , id (head _):_:_ :: [Int]
+  , id (head xs):_ :: [Int]
+  , id (head (_:_)):_ :: [Int]
+  , id (_ * _):_ :: [Int]
+  , id (0 + _):_ :: [Int]
+  , id (_ + 0):_ :: [Int]
+  , [id (_ + _)] :: [Int]
+  , id (_ + _):_ :: [Int]
+  , id (_ + _):xs :: [Int]
+  , id (_ + _):_:_ :: [Int]
+  , id (_ + x):_ :: [Int]
+  , id (_ + id _):_ :: [Int]
+  , id (x + _):_ :: [Int]
+  , id (id _ + _):_ :: [Int]
+  , [negate 0] :: [Int]
+  , negate 0:_ :: [Int]
+  , negate 0:xs :: [Int]
+  , negate 0:_:_ :: [Int]
+  , negate 1:_ :: [Int]
+  , negate _:[0] :: [Int]
+  , [negate _] :: [Int]
+  , negate _:_ :: [Int]
+  , negate _:xs :: [Int]
+  , negate _:ys :: [Int]
+  , negate _:tail _ :: [Int]
+  , negate _:0:_ :: [Int]
+  , [negate _,_] :: [Int]
+  , negate _:_:_ :: [Int]
+  , negate _:_:xs :: [Int]
+  , negate _:_:_:_ :: [Int]
+  , negate _:x:_ :: [Int]
+  , negate _:id _:_ :: [Int]
+  , negate _:(_ ++ _) :: [Int]
+  , [negate x] :: [Int]
+  , negate x:_ :: [Int]
+  , negate x:xs :: [Int]
+  , negate x:_:_ :: [Int]
+  , negate y:_ :: [Int]
+  , negate (ord _):_ :: [Int]
+  , negate (abs _):_ :: [Int]
+  , negate (id 0):_ :: [Int]
+  , [negate (id _)] :: [Int]
+  , negate (id _):_ :: [Int]
+  , negate (id _):xs :: [Int]
+  , negate (id _):_:_ :: [Int]
+  , negate (id x):_ :: [Int]
+  , negate (id (id _)):_ :: [Int]
+  , negate (negate _):_ :: [Int]
+  , negate (head _):_ :: [Int]
+  , negate (_ + _):_ :: [Int]
+  , head [0]:_ :: [Int]
+  , [head []] :: [Int]
+  , head []:_ :: [Int]
+  , head []:xs :: [Int]
+  , head []:_:_ :: [Int]
+  , head _:[0] :: [Int]
+  , [head _] :: [Int]
+  , head _:_ :: [Int]
+  , head _:xs :: [Int]
+  , head _:ys :: [Int]
+  , head _:tail _ :: [Int]
+  , head _:0:_ :: [Int]
+  , [head _,_] :: [Int]
+  , head _:_:_ :: [Int]
+  , head _:_:xs :: [Int]
+  , head _:_:_:_ :: [Int]
+  , head _:x:_ :: [Int]
+  , head _:id _:_ :: [Int]
+  , head _:(_ ++ _) :: [Int]
+  , [head xs] :: [Int]
+  , head xs:_ :: [Int]
+  , head xs:xs :: [Int]
+  , head xs:_:_ :: [Int]
+  , head ys:_ :: [Int]
+  , head (tail _):_ :: [Int]
+  , head (0:_):_ :: [Int]
+  , head [_]:_ :: [Int]
+  , [head (_:_)] :: [Int]
+  , head (_:_):_ :: [Int]
+  , head (_:_):xs :: [Int]
+  , head (_:_):_:_ :: [Int]
+  , head (_:xs):_ :: [Int]
+  , head (_:_:_):_ :: [Int]
+  , head (x:_):_ :: [Int]
+  , head (id _:_):_ :: [Int]
+  , head (_ ++ _):_ :: [Int]
+  , 0 * _:_ :: [Int]
+  , _ * 0:_ :: [Int]
+  , [_ * _] :: [Int]
+  , _ * _:_ :: [Int]
+  , _ * _:xs :: [Int]
+  , _ * _:_:_ :: [Int]
+  , _ * x:_ :: [Int]
+  , _ * id _:_ :: [Int]
+  , x * _:_ :: [Int]
+  , id _ * _:_ :: [Int]
+  , 0 + 0:_ :: [Int]
+  , [0 + _] :: [Int]
+  , 0 + _:_ :: [Int]
+  , 0 + _:xs :: [Int]
+  , 0 + _:_:_ :: [Int]
+  , 0 + x:_ :: [Int]
+  , 0 + id _:_ :: [Int]
+  , 1 + _:_ :: [Int]
+  , [_ + 0] :: [Int]
+  , _ + 0:_ :: [Int]
+  , _ + 0:xs :: [Int]
+  , _ + 0:_:_ :: [Int]
+  , _ + 1:_ :: [Int]
+  , _ + _:[0] :: [Int]
+  , [_ + _] :: [Int]
+  , _ + _:_ :: [Int]
+  , _ + _:xs :: [Int]
+  , _ + _:ys :: [Int]
+  , _ + _:tail _ :: [Int]
+  , _ + _:0:_ :: [Int]
+  , [_ + _,_] :: [Int]
+  , _ + _:_:_ :: [Int]
+  , _ + _:_:xs :: [Int]
+  , _ + _:_:_:_ :: [Int]
+  , _ + _:x:_ :: [Int]
+  , _ + _:id _:_ :: [Int]
+  , _ + _:(_ ++ _) :: [Int]
+  , [_ + x] :: [Int]
+  , _ + x:_ :: [Int]
+  , _ + x:xs :: [Int]
+  , _ + x:_:_ :: [Int]
+  , _ + y:_ :: [Int]
+  , _ + ord _:_ :: [Int]
+  , _ + abs _:_ :: [Int]
+  , _ + id 0:_ :: [Int]
+  , [_ + id _] :: [Int]
+  , _ + id _:_ :: [Int]
+  , _ + id _:xs :: [Int]
+  , _ + id _:_:_ :: [Int]
+  , _ + id x:_ :: [Int]
+  , _ + id (id _):_ :: [Int]
+  , _ + negate _:_ :: [Int]
+  , _ + head _:_ :: [Int]
+  , _ + (_ + _):_ :: [Int]
+  , x + 0:_ :: [Int]
+  , [x + _] :: [Int]
+  , x + _:_ :: [Int]
+  , x + _:xs :: [Int]
+  , x + _:_:_ :: [Int]
+  , x + x:_ :: [Int]
+  , x + id _:_ :: [Int]
+  , y + _:_ :: [Int]
+  , ord _ + _:_ :: [Int]
+  , abs _ + _:_ :: [Int]
+  , id 0 + _:_ :: [Int]
+  , id _ + 0:_ :: [Int]
+  , [id _ + _] :: [Int]
+  , id _ + _:_ :: [Int]
+  , id _ + _:xs :: [Int]
+  , id _ + _:_:_ :: [Int]
+  , id _ + x:_ :: [Int]
+  , id _ + id _:_ :: [Int]
+  , id x + _:_ :: [Int]
+  , id (id _) + _:_ :: [Int]
+  , negate _ + _:_ :: [Int]
+  , head _ + _:_ :: [Int]
+  , (_ + _) + _:_ :: [Int]
+  , insert 0 [] :: [Int]
+  , insert 0 _ :: [Int]
+  , insert 0 xs :: [Int]
+  , insert 0 (_:_) :: [Int]
+  , insert 1 _ :: [Int]
+  , insert _ [0] :: [Int]
+  , insert _ [] :: [Int]
+  , insert _ _ :: [Int]
+  , insert _ xs :: [Int]
+  , insert _ ys :: [Int]
+  , insert _ (tail _) :: [Int]
+  , insert _ (0:_) :: [Int]
+  , insert _ [_] :: [Int]
+  , insert _ (_:_) :: [Int]
+  , insert _ (_:xs) :: [Int]
+  , insert _ (_:_:_) :: [Int]
+  , insert _ (x:_) :: [Int]
+  , insert _ (id _:_) :: [Int]
+  , insert _ (_ ++ _) :: [Int]
+  , insert x [] :: [Int]
+  , insert x _ :: [Int]
+  , insert x xs :: [Int]
+  , insert x (_:_) :: [Int]
+  , insert y _ :: [Int]
+  , insert (ord _) _ :: [Int]
+  , insert (abs _) _ :: [Int]
+  , insert (id 0) _ :: [Int]
+  , insert (id _) [] :: [Int]
+  , insert (id _) _ :: [Int]
+  , insert (id _) xs :: [Int]
+  , insert (id _) (_:_) :: [Int]
+  , insert (id x) _ :: [Int]
+  , insert (id (id _)) _ :: [Int]
+  , insert (negate _) _ :: [Int]
+  , insert (head _) _ :: [Int]
+  , insert (_ + _) _ :: [Int]
+  , [0,0] ++ _ :: [Int]
+  , [0] ++ [] :: [Int]
+  , [0] ++ _ :: [Int]
+  , [0] ++ xs :: [Int]
+  , [0] ++ (_:_) :: [Int]
+  , [1] ++ _ :: [Int]
+  , [] ++ [0] :: [Int]
+  , [] ++ [] :: [Int]
+  , [] ++ _ :: [Int]
+  , [] ++ xs :: [Int]
+  , [] ++ ys :: [Int]
+  , [] ++ tail _ :: [Int]
+  , [] ++ (0:_) :: [Int]
+  , [] ++ [_] :: [Int]
+  , [] ++ (_:_) :: [Int]
+  , [] ++ (_:xs) :: [Int]
+  , [] ++ (_:_:_) :: [Int]
+  , [] ++ (x:_) :: [Int]
+  , [] ++ (id _:_) :: [Int]
+  , [] ++ (_ ++ _) :: [Int]
+  , _ ++ [0,0] :: [Int]
+  , _ ++ [0] :: [Int]
+  , _ ++ [1] :: [Int]
+  , _ ++ [] :: [Int]
+  , _ ++ _ :: [Int]
+  , _ ++ xs :: [Int]
+  , _ ++ ys :: [Int]
+  , _ ++ zs :: [Int]
+  , _ ++ sort _ :: [Int]
+  , _ ++ tail [] :: [Int]
+  , _ ++ tail _ :: [Int]
+  , _ ++ tail xs :: [Int]
+  , _ ++ tail (_:_) :: [Int]
+  , _ ++ [0] :: [Int]
+  , _ ++ (0:_) :: [Int]
+  , _ ++ (0:xs) :: [Int]
+  , _ ++ (0:_:_) :: [Int]
+  , _ ++ (1:_) :: [Int]
+  , _ ++ (_:[0]) :: [Int]
+  , _ ++ [_] :: [Int]
+  , _ ++ (_:_) :: [Int]
+  , _ ++ (_:xs) :: [Int]
+  , _ ++ (_:ys) :: [Int]
+  , _ ++ (_:tail _) :: [Int]
+  , _ ++ (_:0:_) :: [Int]
+  , _ ++ [_,_] :: [Int]
+  , _ ++ (_:_:_) :: [Int]
+  , _ ++ (_:_:xs) :: [Int]
+  , _ ++ (_:_:_:_) :: [Int]
+  , _ ++ (_:x:_) :: [Int]
+  , _ ++ (_:id _:_) :: [Int]
+  , _ ++ (_:(_ ++ _)) :: [Int]
+  , _ ++ [x] :: [Int]
+  , _ ++ (x:_) :: [Int]
+  , _ ++ (x:xs) :: [Int]
+  , _ ++ (x:_:_) :: [Int]
+  , _ ++ (y:_) :: [Int]
+  , _ ++ (ord _:_) :: [Int]
+  , _ ++ (abs _:_) :: [Int]
+  , _ ++ (id 0:_) :: [Int]
+  , _ ++ [id _] :: [Int]
+  , _ ++ (id _:_) :: [Int]
+  , _ ++ (id _:xs) :: [Int]
+  , _ ++ (id _:_:_) :: [Int]
+  , _ ++ (id x:_) :: [Int]
+  , _ ++ (id (id _):_) :: [Int]
+  , _ ++ (negate _:_) :: [Int]
+  , _ ++ (head _:_) :: [Int]
+  , _ ++ (_ + _:_) :: [Int]
+  , _ ++ insert _ _ :: [Int]
+  , _ ++ ([] ++ _) :: [Int]
+  , _ ++ (_ ++ []) :: [Int]
+  , _ ++ (_ ++ _) :: [Int]
+  , _ ++ (_ ++ xs) :: [Int]
+  , _ ++ (_ ++ (_:_)) :: [Int]
+  , _ ++ (xs ++ _) :: [Int]
+  , _ ++ ((_:_) ++ _) :: [Int]
+  , xs ++ [0] :: [Int]
+  , xs ++ [] :: [Int]
+  , xs ++ _ :: [Int]
+  , xs ++ xs :: [Int]
+  , xs ++ ys :: [Int]
+  , xs ++ tail _ :: [Int]
+  , xs ++ (0:_) :: [Int]
+  , xs ++ [_] :: [Int]
+  , xs ++ (_:_) :: [Int]
+  , xs ++ (_:xs) :: [Int]
+  , xs ++ (_:_:_) :: [Int]
+  , xs ++ (x:_) :: [Int]
+  , xs ++ (id _:_) :: [Int]
+  , xs ++ (_ ++ _) :: [Int]
+  , ys ++ [] :: [Int]
+  , ys ++ _ :: [Int]
+  , ys ++ xs :: [Int]
+  , ys ++ (_:_) :: [Int]
+  , zs ++ _ :: [Int]
+  , sort _ ++ _ :: [Int]
+  , tail [] ++ _ :: [Int]
+  , tail _ ++ [] :: [Int]
+  , tail _ ++ _ :: [Int]
+  , tail _ ++ xs :: [Int]
+  , tail _ ++ (_:_) :: [Int]
+  , tail xs ++ _ :: [Int]
+  , tail (_:_) ++ _ :: [Int]
+  , [0] ++ _ :: [Int]
+  , (0:_) ++ [] :: [Int]
+  , (0:_) ++ _ :: [Int]
+  , (0:_) ++ xs :: [Int]
+  , (0:_) ++ (_:_) :: [Int]
+  , (0:xs) ++ _ :: [Int]
+  , (0:_:_) ++ _ :: [Int]
+  , (1:_) ++ _ :: [Int]
+  , (_:[0]) ++ _ :: [Int]
+  , [_] ++ [] :: [Int]
+  , [_] ++ _ :: [Int]
+  , [_] ++ xs :: [Int]
+  , [_] ++ (_:_) :: [Int]
+  , (_:_) ++ [0] :: [Int]
+  , (_:_) ++ [] :: [Int]
+  , (_:_) ++ _ :: [Int]
+  , (_:_) ++ xs :: [Int]
+  , (_:_) ++ ys :: [Int]
+  , (_:_) ++ tail _ :: [Int]
+  , (_:_) ++ (0:_) :: [Int]
+  , (_:_) ++ [_] :: [Int]
+  , (_:_) ++ (_:_) :: [Int]
+  , (_:_) ++ (_:xs) :: [Int]
+  , (_:_) ++ (_:_:_) :: [Int]
+  , (_:_) ++ (x:_) :: [Int]
+  , (_:_) ++ (id _:_) :: [Int]
+  , (_:_) ++ (_ ++ _) :: [Int]
+  , (_:xs) ++ [] :: [Int]
+  , (_:xs) ++ _ :: [Int]
+  , (_:xs) ++ xs :: [Int]
+  , (_:xs) ++ (_:_) :: [Int]
+  , (_:ys) ++ _ :: [Int]
+  , (_:tail _) ++ _ :: [Int]
+  , (_:0:_) ++ _ :: [Int]
+  , [_,_] ++ _ :: [Int]
+  , (_:_:_) ++ [] :: [Int]
+  , (_:_:_) ++ _ :: [Int]
+  , (_:_:_) ++ xs :: [Int]
+  , (_:_:_) ++ (_:_) :: [Int]
+  , (_:_:xs) ++ _ :: [Int]
+  , (_:_:_:_) ++ _ :: [Int]
+  , (_:x:_) ++ _ :: [Int]
+  , (_:id _:_) ++ _ :: [Int]
+  , (_:(_ ++ _)) ++ _ :: [Int]
+  , [x] ++ _ :: [Int]
+  , (x:_) ++ [] :: [Int]
+  , (x:_) ++ _ :: [Int]
+  , (x:_) ++ xs :: [Int]
+  , (x:_) ++ (_:_) :: [Int]
+  , (x:xs) ++ _ :: [Int]
+  , (x:_:_) ++ _ :: [Int]
+  , (y:_) ++ _ :: [Int]
+  , (ord _:_) ++ _ :: [Int]
+  , (abs _:_) ++ _ :: [Int]
+  , (id 0:_) ++ _ :: [Int]
+  , [id _] ++ _ :: [Int]
+  , (id _:_) ++ [] :: [Int]
+  , (id _:_) ++ _ :: [Int]
+  , (id _:_) ++ xs :: [Int]
+  , (id _:_) ++ (_:_) :: [Int]
+  , (id _:xs) ++ _ :: [Int]
+  , (id _:_:_) ++ _ :: [Int]
+  , (id x:_) ++ _ :: [Int]
+  , (id (id _):_) ++ _ :: [Int]
+  , (negate _:_) ++ _ :: [Int]
+  , (head _:_) ++ _ :: [Int]
+  , (_ + _:_) ++ _ :: [Int]
+  , insert _ _ ++ _ :: [Int]
+  , ([] ++ _) ++ _ :: [Int]
+  , (_ ++ []) ++ _ :: [Int]
+  , (_ ++ _) ++ [] :: [Int]
+  , (_ ++ _) ++ _ :: [Int]
+  , (_ ++ _) ++ xs :: [Int]
+  , (_ ++ _) ++ (_:_) :: [Int]
+  , (_ ++ xs) ++ _ :: [Int]
+  , (_ ++ (_:_)) ++ _ :: [Int]
+  , (xs ++ _) ++ _ :: [Int]
+  , ((_:_) ++ _) ++ _ :: [Int]
+  ]
+
diff --git a/bench/tiers-complete.hs b/bench/tiers-complete.hs
new file mode 100644
--- /dev/null
+++ b/bench/tiers-complete.hs
@@ -0,0 +1,31 @@
+-- tiers-complete.hs -- prints tiers of complete expressions
+--
+-- Copyright (c) 2019-2024 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+--
+-- Complete expressions are those without any holes _.
+--
+-- This is closely related to tiers.hs
+import Test
+import Data.List (intercalate, nub)
+import Test.LeanCheck.Tiers (showTiers)
+import Data.Express.Utils.List
+
+showDotsLongerThan :: Show a => Int -> [a] -> String
+showDotsLongerThan n xs  =  "["
+                         ++ intercalate "," (dotsLongerThan n $ map show xs)
+                         ++ "]"
+  where
+  dotsLongerThan n xs   =   take n xs ++ ["..." | not . null $ drop n xs]
+
+printTiers :: Show a => Int -> [[a]] -> IO ()
+printTiers n  =  putStrLn . init . unlines . map ("  " ++) . lines . showTiers n
+
+main :: IO ()
+main  =  do
+  putStrLn $ "isNub (filter isComplete list :: [Expr])  =  "
+          ++ show (isNub (take 5040 $ filter isComplete list))
+  putStrLn $ "map length (filterT isComplete tiers :: [[ Expr ]])  =  "
+          ++ showDotsLongerThan 11 (map length (filterT isComplete tiers :: [[Expr]]))
+  putStrLn "filterT isComplete tiers :: [[ Expr ]]  ="
+  printTiers 8 (filterT isComplete tiers :: [[Expr]])
diff --git a/bench/tiers-complete.txt b/bench/tiers-complete.txt
new file mode 100644
--- /dev/null
+++ b/bench/tiers-complete.txt
@@ -0,0 +1,2336 @@
+isNub (filter isComplete list :: [Expr])  =  True
+map length (filterT isComplete tiers :: [[ Expr ]])  =  [0,2,13,27,54,158,498,1571,5085,17026,58338,...]
+filterT isComplete tiers :: [[ Expr ]]  =
+  [ []
+  , [ x :: Int
+    , 0 :: Int
+    ]
+  , [ y :: Int
+    , 1 :: Int
+    , id x :: Int
+    , id 0 :: Int
+    , p :: Bool
+    , False :: Bool
+    , True :: Bool
+    , c :: Char
+    , 'a' :: Char
+    , xs :: [Int]
+    , [] :: [Int]
+    , id :: Int -> Int
+    , (+) :: Int -> Int -> Int
+    ]
+  , [ z :: Int
+    , -1 :: Int
+    , id y :: Int
+    , id 1 :: Int
+    , id (id x) :: Int
+    , id (id 0) :: Int
+    , negate x :: Int
+    , negate 0 :: Int
+    , abs x :: Int
+    , abs 0 :: Int
+    , head xs :: Int
+    , head [] :: Int
+    , ord c :: Int
+    , ord 'a' :: Int
+    , q :: Bool
+    , not p :: Bool
+    , not False :: Bool
+    , not True :: Bool
+    , d :: Char
+    , ' ' :: Char
+    , ys :: [Int]
+    , [0] :: [Int]
+    , negate :: Int -> Int
+    , abs :: Int -> Int
+    , (*) :: Int -> Int -> Int
+    , not :: Bool -> Bool
+    , (||) :: Bool -> Bool -> Bool
+    ]
+  , [ x' :: Int
+    , 2 :: Int
+    , id z :: Int
+    , id (-1) :: Int
+    , id (id y) :: Int
+    , id (id 1) :: Int
+    , id (id (id x)) :: Int
+    , id (id (id 0)) :: Int
+    , id (negate x) :: Int
+    , id (negate 0) :: Int
+    , id (abs x) :: Int
+    , id (abs 0) :: Int
+    , id (head xs) :: Int
+    , id (head []) :: Int
+    , id (ord c) :: Int
+    , id (ord 'a') :: Int
+    , negate y :: Int
+    , negate 1 :: Int
+    , negate (id x) :: Int
+    , negate (id 0) :: Int
+    , abs y :: Int
+    , abs 1 :: Int
+    , abs (id x) :: Int
+    , abs (id 0) :: Int
+    , x + x :: Int
+    , x + 0 :: Int
+    , 0 + x :: Int
+    , 0 + 0 :: Int
+    , f x :: Int
+    , f 0 :: Int
+    , head ys :: Int
+    , head [0] :: Int
+    , ord d :: Int
+    , ord ' ' :: Int
+    , r :: Bool
+    , not q :: Bool
+    , not (not p) :: Bool
+    , not (not False) :: Bool
+    , not (not True) :: Bool
+    , e :: Char
+    , 'b' :: Char
+    , zs :: [Int]
+    , [0,0] :: [Int]
+    , [1] :: [Int]
+    , x:xs :: [Int]
+    , [x] :: [Int]
+    , 0:xs :: [Int]
+    , [0] :: [Int]
+    , tail xs :: [Int]
+    , tail [] :: [Int]
+    , (x +) :: Int -> Int
+    , (0 +) :: Int -> Int
+    , f :: Int -> Int
+    , (&&) :: Bool -> Bool -> Bool
+    ]
+  , [ y' :: Int
+    , -2 :: Int
+    , id x' :: Int
+    , id 2 :: Int
+    , id (id z) :: Int
+    , id (id (-1)) :: Int
+    , id (id (id y)) :: Int
+    , id (id (id 1)) :: Int
+    , id (id (id (id x))) :: Int
+    , id (id (id (id 0))) :: Int
+    , id (id (negate x)) :: Int
+    , id (id (negate 0)) :: Int
+    , id (id (abs x)) :: Int
+    , id (id (abs 0)) :: Int
+    , id (id (head xs)) :: Int
+    , id (id (head [])) :: Int
+    , id (id (ord c)) :: Int
+    , id (id (ord 'a')) :: Int
+    , id (negate y) :: Int
+    , id (negate 1) :: Int
+    , id (negate (id x)) :: Int
+    , id (negate (id 0)) :: Int
+    , id (abs y) :: Int
+    , id (abs 1) :: Int
+    , id (abs (id x)) :: Int
+    , id (abs (id 0)) :: Int
+    , id (x + x) :: Int
+    , id (x + 0) :: Int
+    , id (0 + x) :: Int
+    , id (0 + 0) :: Int
+    , id (f x) :: Int
+    , id (f 0) :: Int
+    , id (head ys) :: Int
+    , id (head [0]) :: Int
+    , id (ord d) :: Int
+    , id (ord ' ') :: Int
+    , negate z :: Int
+    , negate (-1) :: Int
+    , negate (id y) :: Int
+    , negate (id 1) :: Int
+    , negate (id (id x)) :: Int
+    , negate (id (id 0)) :: Int
+    , negate (negate x) :: Int
+    , negate (negate 0) :: Int
+    , negate (abs x) :: Int
+    , negate (abs 0) :: Int
+    , negate (head xs) :: Int
+    , negate (head []) :: Int
+    , negate (ord c) :: Int
+    , negate (ord 'a') :: Int
+    , abs z :: Int
+    , abs (-1) :: Int
+    , abs (id y) :: Int
+    , abs (id 1) :: Int
+    , abs (id (id x)) :: Int
+    , abs (id (id 0)) :: Int
+    , abs (negate x) :: Int
+    , abs (negate 0) :: Int
+    , abs (abs x) :: Int
+    , abs (abs 0) :: Int
+    , abs (head xs) :: Int
+    , abs (head []) :: Int
+    , abs (ord c) :: Int
+    , abs (ord 'a') :: Int
+    , x + y :: Int
+    , x + 1 :: Int
+    , x + id x :: Int
+    , x + id 0 :: Int
+    , 0 + y :: Int
+    , 0 + 1 :: Int
+    , 0 + id x :: Int
+    , 0 + id 0 :: Int
+    , f y :: Int
+    , f 1 :: Int
+    , f (id x) :: Int
+    , f (id 0) :: Int
+    , y + x :: Int
+    , y + 0 :: Int
+    , 1 + x :: Int
+    , 1 + 0 :: Int
+    , id x + x :: Int
+    , id x + 0 :: Int
+    , id 0 + x :: Int
+    , id 0 + 0 :: Int
+    , x * x :: Int
+    , x * 0 :: Int
+    , 0 * x :: Int
+    , 0 * 0 :: Int
+    , g x :: Int
+    , g 0 :: Int
+    , head zs :: Int
+    , head [0,0] :: Int
+    , head [1] :: Int
+    , head (x:xs) :: Int
+    , head [x] :: Int
+    , head (0:xs) :: Int
+    , head [0] :: Int
+    , head (tail xs) :: Int
+    , head (tail []) :: Int
+    , ord e :: Int
+    , ord 'b' :: Int
+    , p' :: Bool
+    , not r :: Bool
+    , not (not q) :: Bool
+    , not (not (not p)) :: Bool
+    , not (not (not False)) :: Bool
+    , not (not (not True)) :: Bool
+    , p || p :: Bool
+    , p || False :: Bool
+    , p || True :: Bool
+    , False || p :: Bool
+    , False || False :: Bool
+    , False || True :: Bool
+    , True || p :: Bool
+    , True || False :: Bool
+    , True || True :: Bool
+    , odd x :: Bool
+    , odd 0 :: Bool
+    , even x :: Bool
+    , even 0 :: Bool
+    , c' :: Char
+    , 'A' :: Char
+    , xs' :: [Int]
+    , [0,0,0] :: [Int]
+    , [0,1] :: [Int]
+    , [1,0] :: [Int]
+    , [-1] :: [Int]
+    , x:ys :: [Int]
+    , x:[0] :: [Int]
+    , 0:ys :: [Int]
+    , 0:[0] :: [Int]
+    , y:xs :: [Int]
+    , [y] :: [Int]
+    , 1:xs :: [Int]
+    , [1] :: [Int]
+    , id x:xs :: [Int]
+    , [id x] :: [Int]
+    , id 0:xs :: [Int]
+    , [id 0] :: [Int]
+    , tail ys :: [Int]
+    , tail [0] :: [Int]
+    , xs ++ xs :: [Int]
+    , xs ++ [] :: [Int]
+    , [] ++ xs :: [Int]
+    , [] ++ [] :: [Int]
+    , sort xs :: [Int]
+    , sort [] :: [Int]
+    , (y +) :: Int -> Int
+    , (1 +) :: Int -> Int
+    , (id x +) :: Int -> Int
+    , (id 0 +) :: Int -> Int
+    , (x *) :: Int -> Int
+    , (0 *) :: Int -> Int
+    , g :: Int -> Int
+    , (p ||) :: Bool -> Bool
+    , (False ||) :: Bool -> Bool
+    , (True ||) :: Bool -> Bool
+    , (==>) :: Bool -> Bool -> Bool
+    ]
+  , [ z' :: Int
+    , 3 :: Int
+    , id y' :: Int
+    , id (-2) :: Int
+    , id (id x') :: Int
+    , id (id 2) :: Int
+    , id (id (id z)) :: Int
+    , id (id (id (-1))) :: Int
+    , id (id (id (id y))) :: Int
+    , id (id (id (id 1))) :: Int
+    , id (id (id (id (id x)))) :: Int
+    , id (id (id (id (id 0)))) :: Int
+    , id (id (id (negate x))) :: Int
+    , id (id (id (negate 0))) :: Int
+    , id (id (id (abs x))) :: Int
+    , id (id (id (abs 0))) :: Int
+    , id (id (id (head xs))) :: Int
+    , id (id (id (head []))) :: Int
+    , id (id (id (ord c))) :: Int
+    , id (id (id (ord 'a'))) :: Int
+    , id (id (negate y)) :: Int
+    , id (id (negate 1)) :: Int
+    , id (id (negate (id x))) :: Int
+    , id (id (negate (id 0))) :: Int
+    , id (id (abs y)) :: Int
+    , id (id (abs 1)) :: Int
+    , id (id (abs (id x))) :: Int
+    , id (id (abs (id 0))) :: Int
+    , id (id (x + x)) :: Int
+    , id (id (x + 0)) :: Int
+    , id (id (0 + x)) :: Int
+    , id (id (0 + 0)) :: Int
+    , id (id (f x)) :: Int
+    , id (id (f 0)) :: Int
+    , id (id (head ys)) :: Int
+    , id (id (head [0])) :: Int
+    , id (id (ord d)) :: Int
+    , id (id (ord ' ')) :: Int
+    , id (negate z) :: Int
+    , id (negate (-1)) :: Int
+    , id (negate (id y)) :: Int
+    , id (negate (id 1)) :: Int
+    , id (negate (id (id x))) :: Int
+    , id (negate (id (id 0))) :: Int
+    , id (negate (negate x)) :: Int
+    , id (negate (negate 0)) :: Int
+    , id (negate (abs x)) :: Int
+    , id (negate (abs 0)) :: Int
+    , id (negate (head xs)) :: Int
+    , id (negate (head [])) :: Int
+    , id (negate (ord c)) :: Int
+    , id (negate (ord 'a')) :: Int
+    , id (abs z) :: Int
+    , id (abs (-1)) :: Int
+    , id (abs (id y)) :: Int
+    , id (abs (id 1)) :: Int
+    , id (abs (id (id x))) :: Int
+    , id (abs (id (id 0))) :: Int
+    , id (abs (negate x)) :: Int
+    , id (abs (negate 0)) :: Int
+    , id (abs (abs x)) :: Int
+    , id (abs (abs 0)) :: Int
+    , id (abs (head xs)) :: Int
+    , id (abs (head [])) :: Int
+    , id (abs (ord c)) :: Int
+    , id (abs (ord 'a')) :: Int
+    , id (x + y) :: Int
+    , id (x + 1) :: Int
+    , id (x + id x) :: Int
+    , id (x + id 0) :: Int
+    , id (0 + y) :: Int
+    , id (0 + 1) :: Int
+    , id (0 + id x) :: Int
+    , id (0 + id 0) :: Int
+    , id (f y) :: Int
+    , id (f 1) :: Int
+    , id (f (id x)) :: Int
+    , id (f (id 0)) :: Int
+    , id (y + x) :: Int
+    , id (y + 0) :: Int
+    , id (1 + x) :: Int
+    , id (1 + 0) :: Int
+    , id (id x + x) :: Int
+    , id (id x + 0) :: Int
+    , id (id 0 + x) :: Int
+    , id (id 0 + 0) :: Int
+    , id (x * x) :: Int
+    , id (x * 0) :: Int
+    , id (0 * x) :: Int
+    , id (0 * 0) :: Int
+    , id (g x) :: Int
+    , id (g 0) :: Int
+    , id (head zs) :: Int
+    , id (head [0,0]) :: Int
+    , id (head [1]) :: Int
+    , id (head (x:xs)) :: Int
+    , id (head [x]) :: Int
+    , id (head (0:xs)) :: Int
+    , id (head [0]) :: Int
+    , id (head (tail xs)) :: Int
+    , id (head (tail [])) :: Int
+    , id (ord e) :: Int
+    , id (ord 'b') :: Int
+    , negate x' :: Int
+    , negate 2 :: Int
+    , negate (id z) :: Int
+    , negate (id (-1)) :: Int
+    , negate (id (id y)) :: Int
+    , negate (id (id 1)) :: Int
+    , negate (id (id (id x))) :: Int
+    , negate (id (id (id 0))) :: Int
+    , negate (id (negate x)) :: Int
+    , negate (id (negate 0)) :: Int
+    , negate (id (abs x)) :: Int
+    , negate (id (abs 0)) :: Int
+    , negate (id (head xs)) :: Int
+    , negate (id (head [])) :: Int
+    , negate (id (ord c)) :: Int
+    , negate (id (ord 'a')) :: Int
+    , negate (negate y) :: Int
+    , negate (negate 1) :: Int
+    , negate (negate (id x)) :: Int
+    , negate (negate (id 0)) :: Int
+    , negate (abs y) :: Int
+    , negate (abs 1) :: Int
+    , negate (abs (id x)) :: Int
+    , negate (abs (id 0)) :: Int
+    , negate (x + x) :: Int
+    , negate (x + 0) :: Int
+    , negate (0 + x) :: Int
+    , negate (0 + 0) :: Int
+    , negate (f x) :: Int
+    , negate (f 0) :: Int
+    , negate (head ys) :: Int
+    , negate (head [0]) :: Int
+    , negate (ord d) :: Int
+    , negate (ord ' ') :: Int
+    , abs x' :: Int
+    , abs 2 :: Int
+    , abs (id z) :: Int
+    , abs (id (-1)) :: Int
+    , abs (id (id y)) :: Int
+    , abs (id (id 1)) :: Int
+    , abs (id (id (id x))) :: Int
+    , abs (id (id (id 0))) :: Int
+    , abs (id (negate x)) :: Int
+    , abs (id (negate 0)) :: Int
+    , abs (id (abs x)) :: Int
+    , abs (id (abs 0)) :: Int
+    , abs (id (head xs)) :: Int
+    , abs (id (head [])) :: Int
+    , abs (id (ord c)) :: Int
+    , abs (id (ord 'a')) :: Int
+    , abs (negate y) :: Int
+    , abs (negate 1) :: Int
+    , abs (negate (id x)) :: Int
+    , abs (negate (id 0)) :: Int
+    , abs (abs y) :: Int
+    , abs (abs 1) :: Int
+    , abs (abs (id x)) :: Int
+    , abs (abs (id 0)) :: Int
+    , abs (x + x) :: Int
+    , abs (x + 0) :: Int
+    , abs (0 + x) :: Int
+    , abs (0 + 0) :: Int
+    , abs (f x) :: Int
+    , abs (f 0) :: Int
+    , abs (head ys) :: Int
+    , abs (head [0]) :: Int
+    , abs (ord d) :: Int
+    , abs (ord ' ') :: Int
+    , x + z :: Int
+    , x + (-1) :: Int
+    , x + id y :: Int
+    , x + id 1 :: Int
+    , x + id (id x) :: Int
+    , x + id (id 0) :: Int
+    , x + negate x :: Int
+    , x + negate 0 :: Int
+    , x + abs x :: Int
+    , x + abs 0 :: Int
+    , x + head xs :: Int
+    , x + head [] :: Int
+    , x + ord c :: Int
+    , x + ord 'a' :: Int
+    , 0 + z :: Int
+    , 0 + (-1) :: Int
+    , 0 + id y :: Int
+    , 0 + id 1 :: Int
+    , 0 + id (id x) :: Int
+    , 0 + id (id 0) :: Int
+    , 0 + negate x :: Int
+    , 0 + negate 0 :: Int
+    , 0 + abs x :: Int
+    , 0 + abs 0 :: Int
+    , 0 + head xs :: Int
+    , 0 + head [] :: Int
+    , 0 + ord c :: Int
+    , 0 + ord 'a' :: Int
+    , f z :: Int
+    , f (-1) :: Int
+    , f (id y) :: Int
+    , f (id 1) :: Int
+    , f (id (id x)) :: Int
+    , f (id (id 0)) :: Int
+    , f (negate x) :: Int
+    , f (negate 0) :: Int
+    , f (abs x) :: Int
+    , f (abs 0) :: Int
+    , f (head xs) :: Int
+    , f (head []) :: Int
+    , f (ord c) :: Int
+    , f (ord 'a') :: Int
+    , y + y :: Int
+    , y + 1 :: Int
+    , y + id x :: Int
+    , y + id 0 :: Int
+    , 1 + y :: Int
+    , 1 + 1 :: Int
+    , 1 + id x :: Int
+    , 1 + id 0 :: Int
+    , id x + y :: Int
+    , id x + 1 :: Int
+    , id x + id x :: Int
+    , id x + id 0 :: Int
+    , id 0 + y :: Int
+    , id 0 + 1 :: Int
+    , id 0 + id x :: Int
+    , id 0 + id 0 :: Int
+    , x * y :: Int
+    , x * 1 :: Int
+    , x * id x :: Int
+    , x * id 0 :: Int
+    , 0 * y :: Int
+    , 0 * 1 :: Int
+    , 0 * id x :: Int
+    , 0 * id 0 :: Int
+    , g y :: Int
+    , g 1 :: Int
+    , g (id x) :: Int
+    , g (id 0) :: Int
+    , z + x :: Int
+    , z + 0 :: Int
+    , (-1) + x :: Int
+    , (-1) + 0 :: Int
+    , id y + x :: Int
+    , id y + 0 :: Int
+    , id 1 + x :: Int
+    , id 1 + 0 :: Int
+    , id (id x) + x :: Int
+    , id (id x) + 0 :: Int
+    , id (id 0) + x :: Int
+    , id (id 0) + 0 :: Int
+    , negate x + x :: Int
+    , negate x + 0 :: Int
+    , negate 0 + x :: Int
+    , negate 0 + 0 :: Int
+    , abs x + x :: Int
+    , abs x + 0 :: Int
+    , abs 0 + x :: Int
+    , abs 0 + 0 :: Int
+    , head xs + x :: Int
+    , head xs + 0 :: Int
+    , head [] + x :: Int
+    , head [] + 0 :: Int
+    , ord c + x :: Int
+    , ord c + 0 :: Int
+    , ord 'a' + x :: Int
+    , ord 'a' + 0 :: Int
+    , y * x :: Int
+    , y * 0 :: Int
+    , 1 * x :: Int
+    , 1 * 0 :: Int
+    , id x * x :: Int
+    , id x * 0 :: Int
+    , id 0 * x :: Int
+    , id 0 * 0 :: Int
+    , h x :: Int
+    , h 0 :: Int
+    , head xs' :: Int
+    , head [0,0,0] :: Int
+    , head [0,1] :: Int
+    , head [1,0] :: Int
+    , head [-1] :: Int
+    , head (x:ys) :: Int
+    , head (x:[0]) :: Int
+    , head (0:ys) :: Int
+    , head (0:[0]) :: Int
+    , head (y:xs) :: Int
+    , head [y] :: Int
+    , head (1:xs) :: Int
+    , head [1] :: Int
+    , head (id x:xs) :: Int
+    , head [id x] :: Int
+    , head (id 0:xs) :: Int
+    , head [id 0] :: Int
+    , head (tail ys) :: Int
+    , head (tail [0]) :: Int
+    , head (xs ++ xs) :: Int
+    , head (xs ++ []) :: Int
+    , head ([] ++ xs) :: Int
+    , head ([] ++ []) :: Int
+    , head (sort xs) :: Int
+    , head (sort []) :: Int
+    , ord c' :: Int
+    , ord 'A' :: Int
+    , q' :: Bool
+    , not p' :: Bool
+    , not (not r) :: Bool
+    , not (not (not q)) :: Bool
+    , not (not (not (not p))) :: Bool
+    , not (not (not (not False))) :: Bool
+    , not (not (not (not True))) :: Bool
+    , not (p || p) :: Bool
+    , not (p || False) :: Bool
+    , not (p || True) :: Bool
+    , not (False || p) :: Bool
+    , not (False || False) :: Bool
+    , not (False || True) :: Bool
+    , not (True || p) :: Bool
+    , not (True || False) :: Bool
+    , not (True || True) :: Bool
+    , not (odd x) :: Bool
+    , not (odd 0) :: Bool
+    , not (even x) :: Bool
+    , not (even 0) :: Bool
+    , p || q :: Bool
+    , p || not p :: Bool
+    , p || not False :: Bool
+    , p || not True :: Bool
+    , False || q :: Bool
+    , False || not p :: Bool
+    , False || not False :: Bool
+    , False || not True :: Bool
+    , True || q :: Bool
+    , True || not p :: Bool
+    , True || not False :: Bool
+    , True || not True :: Bool
+    , q || p :: Bool
+    , q || False :: Bool
+    , q || True :: Bool
+    , not p || p :: Bool
+    , not p || False :: Bool
+    , not p || True :: Bool
+    , not False || p :: Bool
+    , not False || False :: Bool
+    , not False || True :: Bool
+    , not True || p :: Bool
+    , not True || False :: Bool
+    , not True || True :: Bool
+    , p && p :: Bool
+    , p && False :: Bool
+    , p && True :: Bool
+    , False && p :: Bool
+    , False && False :: Bool
+    , False && True :: Bool
+    , True && p :: Bool
+    , True && False :: Bool
+    , True && True :: Bool
+    , x == x :: Bool
+    , x == 0 :: Bool
+    , 0 == x :: Bool
+    , 0 == 0 :: Bool
+    , p == p :: Bool
+    , p == False :: Bool
+    , p == True :: Bool
+    , False == p :: Bool
+    , False == False :: Bool
+    , False == True :: Bool
+    , True == p :: Bool
+    , True == False :: Bool
+    , True == True :: Bool
+    , odd y :: Bool
+    , odd 1 :: Bool
+    , odd (id x) :: Bool
+    , odd (id 0) :: Bool
+    , even y :: Bool
+    , even 1 :: Bool
+    , even (id x) :: Bool
+    , even (id 0) :: Bool
+    , elem x xs :: Bool
+    , elem x [] :: Bool
+    , elem 0 xs :: Bool
+    , elem 0 [] :: Bool
+    , d' :: Char
+    , 'c' :: Char
+    , ys' :: [Int]
+    , [0,0,0,0] :: [Int]
+    , [0,0,1] :: [Int]
+    , [0,1,0] :: [Int]
+    , [0,-1] :: [Int]
+    , [1,0,0] :: [Int]
+    , [1,1] :: [Int]
+    , [-1,0] :: [Int]
+    , [2] :: [Int]
+    , x:zs :: [Int]
+    , x:[0,0] :: [Int]
+    , x:[1] :: [Int]
+    , x:x:xs :: [Int]
+    , [x,x] :: [Int]
+    , x:0:xs :: [Int]
+    , [x,0] :: [Int]
+    , x:tail xs :: [Int]
+    , x:tail [] :: [Int]
+    , 0:zs :: [Int]
+    , 0:[0,0] :: [Int]
+    , 0:[1] :: [Int]
+    , 0:x:xs :: [Int]
+    , [0,x] :: [Int]
+    , 0:0:xs :: [Int]
+    , [0,0] :: [Int]
+    , 0:tail xs :: [Int]
+    , 0:tail [] :: [Int]
+    , y:ys :: [Int]
+    , y:[0] :: [Int]
+    , 1:ys :: [Int]
+    , 1:[0] :: [Int]
+    , id x:ys :: [Int]
+    , id x:[0] :: [Int]
+    , id 0:ys :: [Int]
+    , id 0:[0] :: [Int]
+    , z:xs :: [Int]
+    , [z] :: [Int]
+    , (-1):xs :: [Int]
+    , [-1] :: [Int]
+    , id y:xs :: [Int]
+    , [id y] :: [Int]
+    , id 1:xs :: [Int]
+    , [id 1] :: [Int]
+    , id (id x):xs :: [Int]
+    , [id (id x)] :: [Int]
+    , id (id 0):xs :: [Int]
+    , [id (id 0)] :: [Int]
+    , negate x:xs :: [Int]
+    , [negate x] :: [Int]
+    , negate 0:xs :: [Int]
+    , [negate 0] :: [Int]
+    , abs x:xs :: [Int]
+    , [abs x] :: [Int]
+    , abs 0:xs :: [Int]
+    , [abs 0] :: [Int]
+    , head xs:xs :: [Int]
+    , [head xs] :: [Int]
+    , head []:xs :: [Int]
+    , [head []] :: [Int]
+    , ord c:xs :: [Int]
+    , [ord c] :: [Int]
+    , ord 'a':xs :: [Int]
+    , [ord 'a'] :: [Int]
+    , tail zs :: [Int]
+    , tail [0,0] :: [Int]
+    , tail [1] :: [Int]
+    , tail (x:xs) :: [Int]
+    , tail [x] :: [Int]
+    , tail (0:xs) :: [Int]
+    , tail [0] :: [Int]
+    , tail (tail xs) :: [Int]
+    , tail (tail []) :: [Int]
+    , xs ++ ys :: [Int]
+    , xs ++ [0] :: [Int]
+    , [] ++ ys :: [Int]
+    , [] ++ [0] :: [Int]
+    , ys ++ xs :: [Int]
+    , ys ++ [] :: [Int]
+    , [0] ++ xs :: [Int]
+    , [0] ++ [] :: [Int]
+    , sort ys :: [Int]
+    , sort [0] :: [Int]
+    , insert x xs :: [Int]
+    , insert x [] :: [Int]
+    , insert 0 xs :: [Int]
+    , insert 0 [] :: [Int]
+    , (z +) :: Int -> Int
+    , ((-1) +) :: Int -> Int
+    , (id y +) :: Int -> Int
+    , (id 1 +) :: Int -> Int
+    , (id (id x) +) :: Int -> Int
+    , (id (id 0) +) :: Int -> Int
+    , (negate x +) :: Int -> Int
+    , (negate 0 +) :: Int -> Int
+    , (abs x +) :: Int -> Int
+    , (abs 0 +) :: Int -> Int
+    , (head xs +) :: Int -> Int
+    , (head [] +) :: Int -> Int
+    , (ord c +) :: Int -> Int
+    , (ord 'a' +) :: Int -> Int
+    , (y *) :: Int -> Int
+    , (1 *) :: Int -> Int
+    , (id x *) :: Int -> Int
+    , (id 0 *) :: Int -> Int
+    , h :: Int -> Int
+    , (q ||) :: Bool -> Bool
+    , (not p ||) :: Bool -> Bool
+    , (not False ||) :: Bool -> Bool
+    , (not True ||) :: Bool -> Bool
+    , (p &&) :: Bool -> Bool
+    , (False &&) :: Bool -> Bool
+    , (True &&) :: Bool -> Bool
+    ]
+  , [ x'' :: Int
+    , -3 :: Int
+    , id z' :: Int
+    , id 3 :: Int
+    , id (id y') :: Int
+    , id (id (-2)) :: Int
+    , id (id (id x')) :: Int
+    , id (id (id 2)) :: Int
+    , id (id (id (id z))) :: Int
+    , id (id (id (id (-1)))) :: Int
+    , id (id (id (id (id y)))) :: Int
+    , id (id (id (id (id 1)))) :: Int
+    , id (id (id (id (id (id x))))) :: Int
+    , id (id (id (id (id (id 0))))) :: Int
+    , id (id (id (id (negate x)))) :: Int
+    , id (id (id (id (negate 0)))) :: Int
+    , id (id (id (id (abs x)))) :: Int
+    , id (id (id (id (abs 0)))) :: Int
+    , id (id (id (id (head xs)))) :: Int
+    , id (id (id (id (head [])))) :: Int
+    , id (id (id (id (ord c)))) :: Int
+    , id (id (id (id (ord 'a')))) :: Int
+    , id (id (id (negate y))) :: Int
+    , id (id (id (negate 1))) :: Int
+    , id (id (id (negate (id x)))) :: Int
+    , id (id (id (negate (id 0)))) :: Int
+    , id (id (id (abs y))) :: Int
+    , id (id (id (abs 1))) :: Int
+    , id (id (id (abs (id x)))) :: Int
+    , id (id (id (abs (id 0)))) :: Int
+    , id (id (id (x + x))) :: Int
+    , id (id (id (x + 0))) :: Int
+    , id (id (id (0 + x))) :: Int
+    , id (id (id (0 + 0))) :: Int
+    , id (id (id (f x))) :: Int
+    , id (id (id (f 0))) :: Int
+    , id (id (id (head ys))) :: Int
+    , id (id (id (head [0]))) :: Int
+    , id (id (id (ord d))) :: Int
+    , id (id (id (ord ' '))) :: Int
+    , id (id (negate z)) :: Int
+    , id (id (negate (-1))) :: Int
+    , id (id (negate (id y))) :: Int
+    , id (id (negate (id 1))) :: Int
+    , id (id (negate (id (id x)))) :: Int
+    , id (id (negate (id (id 0)))) :: Int
+    , id (id (negate (negate x))) :: Int
+    , id (id (negate (negate 0))) :: Int
+    , id (id (negate (abs x))) :: Int
+    , id (id (negate (abs 0))) :: Int
+    , id (id (negate (head xs))) :: Int
+    , id (id (negate (head []))) :: Int
+    , id (id (negate (ord c))) :: Int
+    , id (id (negate (ord 'a'))) :: Int
+    , id (id (abs z)) :: Int
+    , id (id (abs (-1))) :: Int
+    , id (id (abs (id y))) :: Int
+    , id (id (abs (id 1))) :: Int
+    , id (id (abs (id (id x)))) :: Int
+    , id (id (abs (id (id 0)))) :: Int
+    , id (id (abs (negate x))) :: Int
+    , id (id (abs (negate 0))) :: Int
+    , id (id (abs (abs x))) :: Int
+    , id (id (abs (abs 0))) :: Int
+    , id (id (abs (head xs))) :: Int
+    , id (id (abs (head []))) :: Int
+    , id (id (abs (ord c))) :: Int
+    , id (id (abs (ord 'a'))) :: Int
+    , id (id (x + y)) :: Int
+    , id (id (x + 1)) :: Int
+    , id (id (x + id x)) :: Int
+    , id (id (x + id 0)) :: Int
+    , id (id (0 + y)) :: Int
+    , id (id (0 + 1)) :: Int
+    , id (id (0 + id x)) :: Int
+    , id (id (0 + id 0)) :: Int
+    , id (id (f y)) :: Int
+    , id (id (f 1)) :: Int
+    , id (id (f (id x))) :: Int
+    , id (id (f (id 0))) :: Int
+    , id (id (y + x)) :: Int
+    , id (id (y + 0)) :: Int
+    , id (id (1 + x)) :: Int
+    , id (id (1 + 0)) :: Int
+    , id (id (id x + x)) :: Int
+    , id (id (id x + 0)) :: Int
+    , id (id (id 0 + x)) :: Int
+    , id (id (id 0 + 0)) :: Int
+    , id (id (x * x)) :: Int
+    , id (id (x * 0)) :: Int
+    , id (id (0 * x)) :: Int
+    , id (id (0 * 0)) :: Int
+    , id (id (g x)) :: Int
+    , id (id (g 0)) :: Int
+    , id (id (head zs)) :: Int
+    , id (id (head [0,0])) :: Int
+    , id (id (head [1])) :: Int
+    , id (id (head (x:xs))) :: Int
+    , id (id (head [x])) :: Int
+    , id (id (head (0:xs))) :: Int
+    , id (id (head [0])) :: Int
+    , id (id (head (tail xs))) :: Int
+    , id (id (head (tail []))) :: Int
+    , id (id (ord e)) :: Int
+    , id (id (ord 'b')) :: Int
+    , id (negate x') :: Int
+    , id (negate 2) :: Int
+    , id (negate (id z)) :: Int
+    , id (negate (id (-1))) :: Int
+    , id (negate (id (id y))) :: Int
+    , id (negate (id (id 1))) :: Int
+    , id (negate (id (id (id x)))) :: Int
+    , id (negate (id (id (id 0)))) :: Int
+    , id (negate (id (negate x))) :: Int
+    , id (negate (id (negate 0))) :: Int
+    , id (negate (id (abs x))) :: Int
+    , id (negate (id (abs 0))) :: Int
+    , id (negate (id (head xs))) :: Int
+    , id (negate (id (head []))) :: Int
+    , id (negate (id (ord c))) :: Int
+    , id (negate (id (ord 'a'))) :: Int
+    , id (negate (negate y)) :: Int
+    , id (negate (negate 1)) :: Int
+    , id (negate (negate (id x))) :: Int
+    , id (negate (negate (id 0))) :: Int
+    , id (negate (abs y)) :: Int
+    , id (negate (abs 1)) :: Int
+    , id (negate (abs (id x))) :: Int
+    , id (negate (abs (id 0))) :: Int
+    , id (negate (x + x)) :: Int
+    , id (negate (x + 0)) :: Int
+    , id (negate (0 + x)) :: Int
+    , id (negate (0 + 0)) :: Int
+    , id (negate (f x)) :: Int
+    , id (negate (f 0)) :: Int
+    , id (negate (head ys)) :: Int
+    , id (negate (head [0])) :: Int
+    , id (negate (ord d)) :: Int
+    , id (negate (ord ' ')) :: Int
+    , id (abs x') :: Int
+    , id (abs 2) :: Int
+    , id (abs (id z)) :: Int
+    , id (abs (id (-1))) :: Int
+    , id (abs (id (id y))) :: Int
+    , id (abs (id (id 1))) :: Int
+    , id (abs (id (id (id x)))) :: Int
+    , id (abs (id (id (id 0)))) :: Int
+    , id (abs (id (negate x))) :: Int
+    , id (abs (id (negate 0))) :: Int
+    , id (abs (id (abs x))) :: Int
+    , id (abs (id (abs 0))) :: Int
+    , id (abs (id (head xs))) :: Int
+    , id (abs (id (head []))) :: Int
+    , id (abs (id (ord c))) :: Int
+    , id (abs (id (ord 'a'))) :: Int
+    , id (abs (negate y)) :: Int
+    , id (abs (negate 1)) :: Int
+    , id (abs (negate (id x))) :: Int
+    , id (abs (negate (id 0))) :: Int
+    , id (abs (abs y)) :: Int
+    , id (abs (abs 1)) :: Int
+    , id (abs (abs (id x))) :: Int
+    , id (abs (abs (id 0))) :: Int
+    , id (abs (x + x)) :: Int
+    , id (abs (x + 0)) :: Int
+    , id (abs (0 + x)) :: Int
+    , id (abs (0 + 0)) :: Int
+    , id (abs (f x)) :: Int
+    , id (abs (f 0)) :: Int
+    , id (abs (head ys)) :: Int
+    , id (abs (head [0])) :: Int
+    , id (abs (ord d)) :: Int
+    , id (abs (ord ' ')) :: Int
+    , id (x + z) :: Int
+    , id (x + (-1)) :: Int
+    , id (x + id y) :: Int
+    , id (x + id 1) :: Int
+    , id (x + id (id x)) :: Int
+    , id (x + id (id 0)) :: Int
+    , id (x + negate x) :: Int
+    , id (x + negate 0) :: Int
+    , id (x + abs x) :: Int
+    , id (x + abs 0) :: Int
+    , id (x + head xs) :: Int
+    , id (x + head []) :: Int
+    , id (x + ord c) :: Int
+    , id (x + ord 'a') :: Int
+    , id (0 + z) :: Int
+    , id (0 + (-1)) :: Int
+    , id (0 + id y) :: Int
+    , id (0 + id 1) :: Int
+    , id (0 + id (id x)) :: Int
+    , id (0 + id (id 0)) :: Int
+    , id (0 + negate x) :: Int
+    , id (0 + negate 0) :: Int
+    , id (0 + abs x) :: Int
+    , id (0 + abs 0) :: Int
+    , id (0 + head xs) :: Int
+    , id (0 + head []) :: Int
+    , id (0 + ord c) :: Int
+    , id (0 + ord 'a') :: Int
+    , id (f z) :: Int
+    , id (f (-1)) :: Int
+    , id (f (id y)) :: Int
+    , id (f (id 1)) :: Int
+    , id (f (id (id x))) :: Int
+    , id (f (id (id 0))) :: Int
+    , id (f (negate x)) :: Int
+    , id (f (negate 0)) :: Int
+    , id (f (abs x)) :: Int
+    , id (f (abs 0)) :: Int
+    , id (f (head xs)) :: Int
+    , id (f (head [])) :: Int
+    , id (f (ord c)) :: Int
+    , id (f (ord 'a')) :: Int
+    , id (y + y) :: Int
+    , id (y + 1) :: Int
+    , id (y + id x) :: Int
+    , id (y + id 0) :: Int
+    , id (1 + y) :: Int
+    , id (1 + 1) :: Int
+    , id (1 + id x) :: Int
+    , id (1 + id 0) :: Int
+    , id (id x + y) :: Int
+    , id (id x + 1) :: Int
+    , id (id x + id x) :: Int
+    , id (id x + id 0) :: Int
+    , id (id 0 + y) :: Int
+    , id (id 0 + 1) :: Int
+    , id (id 0 + id x) :: Int
+    , id (id 0 + id 0) :: Int
+    , id (x * y) :: Int
+    , id (x * 1) :: Int
+    , id (x * id x) :: Int
+    , id (x * id 0) :: Int
+    , id (0 * y) :: Int
+    , id (0 * 1) :: Int
+    , id (0 * id x) :: Int
+    , id (0 * id 0) :: Int
+    , id (g y) :: Int
+    , id (g 1) :: Int
+    , id (g (id x)) :: Int
+    , id (g (id 0)) :: Int
+    , id (z + x) :: Int
+    , id (z + 0) :: Int
+    , id ((-1) + x) :: Int
+    , id ((-1) + 0) :: Int
+    , id (id y + x) :: Int
+    , id (id y + 0) :: Int
+    , id (id 1 + x) :: Int
+    , id (id 1 + 0) :: Int
+    , id (id (id x) + x) :: Int
+    , id (id (id x) + 0) :: Int
+    , id (id (id 0) + x) :: Int
+    , id (id (id 0) + 0) :: Int
+    , id (negate x + x) :: Int
+    , id (negate x + 0) :: Int
+    , id (negate 0 + x) :: Int
+    , id (negate 0 + 0) :: Int
+    , id (abs x + x) :: Int
+    , id (abs x + 0) :: Int
+    , id (abs 0 + x) :: Int
+    , id (abs 0 + 0) :: Int
+    , id (head xs + x) :: Int
+    , id (head xs + 0) :: Int
+    , id (head [] + x) :: Int
+    , id (head [] + 0) :: Int
+    , id (ord c + x) :: Int
+    , id (ord c + 0) :: Int
+    , id (ord 'a' + x) :: Int
+    , id (ord 'a' + 0) :: Int
+    , id (y * x) :: Int
+    , id (y * 0) :: Int
+    , id (1 * x) :: Int
+    , id (1 * 0) :: Int
+    , id (id x * x) :: Int
+    , id (id x * 0) :: Int
+    , id (id 0 * x) :: Int
+    , id (id 0 * 0) :: Int
+    , id (h x) :: Int
+    , id (h 0) :: Int
+    , id (head xs') :: Int
+    , id (head [0,0,0]) :: Int
+    , id (head [0,1]) :: Int
+    , id (head [1,0]) :: Int
+    , id (head [-1]) :: Int
+    , id (head (x:ys)) :: Int
+    , id (head (x:[0])) :: Int
+    , id (head (0:ys)) :: Int
+    , id (head (0:[0])) :: Int
+    , id (head (y:xs)) :: Int
+    , id (head [y]) :: Int
+    , id (head (1:xs)) :: Int
+    , id (head [1]) :: Int
+    , id (head (id x:xs)) :: Int
+    , id (head [id x]) :: Int
+    , id (head (id 0:xs)) :: Int
+    , id (head [id 0]) :: Int
+    , id (head (tail ys)) :: Int
+    , id (head (tail [0])) :: Int
+    , id (head (xs ++ xs)) :: Int
+    , id (head (xs ++ [])) :: Int
+    , id (head ([] ++ xs)) :: Int
+    , id (head ([] ++ [])) :: Int
+    , id (head (sort xs)) :: Int
+    , id (head (sort [])) :: Int
+    , id (ord c') :: Int
+    , id (ord 'A') :: Int
+    , negate y' :: Int
+    , negate (-2) :: Int
+    , negate (id x') :: Int
+    , negate (id 2) :: Int
+    , negate (id (id z)) :: Int
+    , negate (id (id (-1))) :: Int
+    , negate (id (id (id y))) :: Int
+    , negate (id (id (id 1))) :: Int
+    , negate (id (id (id (id x)))) :: Int
+    , negate (id (id (id (id 0)))) :: Int
+    , negate (id (id (negate x))) :: Int
+    , negate (id (id (negate 0))) :: Int
+    , negate (id (id (abs x))) :: Int
+    , negate (id (id (abs 0))) :: Int
+    , negate (id (id (head xs))) :: Int
+    , negate (id (id (head []))) :: Int
+    , negate (id (id (ord c))) :: Int
+    , negate (id (id (ord 'a'))) :: Int
+    , negate (id (negate y)) :: Int
+    , negate (id (negate 1)) :: Int
+    , negate (id (negate (id x))) :: Int
+    , negate (id (negate (id 0))) :: Int
+    , negate (id (abs y)) :: Int
+    , negate (id (abs 1)) :: Int
+    , negate (id (abs (id x))) :: Int
+    , negate (id (abs (id 0))) :: Int
+    , negate (id (x + x)) :: Int
+    , negate (id (x + 0)) :: Int
+    , negate (id (0 + x)) :: Int
+    , negate (id (0 + 0)) :: Int
+    , negate (id (f x)) :: Int
+    , negate (id (f 0)) :: Int
+    , negate (id (head ys)) :: Int
+    , negate (id (head [0])) :: Int
+    , negate (id (ord d)) :: Int
+    , negate (id (ord ' ')) :: Int
+    , negate (negate z) :: Int
+    , negate (negate (-1)) :: Int
+    , negate (negate (id y)) :: Int
+    , negate (negate (id 1)) :: Int
+    , negate (negate (id (id x))) :: Int
+    , negate (negate (id (id 0))) :: Int
+    , negate (negate (negate x)) :: Int
+    , negate (negate (negate 0)) :: Int
+    , negate (negate (abs x)) :: Int
+    , negate (negate (abs 0)) :: Int
+    , negate (negate (head xs)) :: Int
+    , negate (negate (head [])) :: Int
+    , negate (negate (ord c)) :: Int
+    , negate (negate (ord 'a')) :: Int
+    , negate (abs z) :: Int
+    , negate (abs (-1)) :: Int
+    , negate (abs (id y)) :: Int
+    , negate (abs (id 1)) :: Int
+    , negate (abs (id (id x))) :: Int
+    , negate (abs (id (id 0))) :: Int
+    , negate (abs (negate x)) :: Int
+    , negate (abs (negate 0)) :: Int
+    , negate (abs (abs x)) :: Int
+    , negate (abs (abs 0)) :: Int
+    , negate (abs (head xs)) :: Int
+    , negate (abs (head [])) :: Int
+    , negate (abs (ord c)) :: Int
+    , negate (abs (ord 'a')) :: Int
+    , negate (x + y) :: Int
+    , negate (x + 1) :: Int
+    , negate (x + id x) :: Int
+    , negate (x + id 0) :: Int
+    , negate (0 + y) :: Int
+    , negate (0 + 1) :: Int
+    , negate (0 + id x) :: Int
+    , negate (0 + id 0) :: Int
+    , negate (f y) :: Int
+    , negate (f 1) :: Int
+    , negate (f (id x)) :: Int
+    , negate (f (id 0)) :: Int
+    , negate (y + x) :: Int
+    , negate (y + 0) :: Int
+    , negate (1 + x) :: Int
+    , negate (1 + 0) :: Int
+    , negate (id x + x) :: Int
+    , negate (id x + 0) :: Int
+    , negate (id 0 + x) :: Int
+    , negate (id 0 + 0) :: Int
+    , negate (x * x) :: Int
+    , negate (x * 0) :: Int
+    , negate (0 * x) :: Int
+    , negate (0 * 0) :: Int
+    , negate (g x) :: Int
+    , negate (g 0) :: Int
+    , negate (head zs) :: Int
+    , negate (head [0,0]) :: Int
+    , negate (head [1]) :: Int
+    , negate (head (x:xs)) :: Int
+    , negate (head [x]) :: Int
+    , negate (head (0:xs)) :: Int
+    , negate (head [0]) :: Int
+    , negate (head (tail xs)) :: Int
+    , negate (head (tail [])) :: Int
+    , negate (ord e) :: Int
+    , negate (ord 'b') :: Int
+    , abs y' :: Int
+    , abs (-2) :: Int
+    , abs (id x') :: Int
+    , abs (id 2) :: Int
+    , abs (id (id z)) :: Int
+    , abs (id (id (-1))) :: Int
+    , abs (id (id (id y))) :: Int
+    , abs (id (id (id 1))) :: Int
+    , abs (id (id (id (id x)))) :: Int
+    , abs (id (id (id (id 0)))) :: Int
+    , abs (id (id (negate x))) :: Int
+    , abs (id (id (negate 0))) :: Int
+    , abs (id (id (abs x))) :: Int
+    , abs (id (id (abs 0))) :: Int
+    , abs (id (id (head xs))) :: Int
+    , abs (id (id (head []))) :: Int
+    , abs (id (id (ord c))) :: Int
+    , abs (id (id (ord 'a'))) :: Int
+    , abs (id (negate y)) :: Int
+    , abs (id (negate 1)) :: Int
+    , abs (id (negate (id x))) :: Int
+    , abs (id (negate (id 0))) :: Int
+    , abs (id (abs y)) :: Int
+    , abs (id (abs 1)) :: Int
+    , abs (id (abs (id x))) :: Int
+    , abs (id (abs (id 0))) :: Int
+    , abs (id (x + x)) :: Int
+    , abs (id (x + 0)) :: Int
+    , abs (id (0 + x)) :: Int
+    , abs (id (0 + 0)) :: Int
+    , abs (id (f x)) :: Int
+    , abs (id (f 0)) :: Int
+    , abs (id (head ys)) :: Int
+    , abs (id (head [0])) :: Int
+    , abs (id (ord d)) :: Int
+    , abs (id (ord ' ')) :: Int
+    , abs (negate z) :: Int
+    , abs (negate (-1)) :: Int
+    , abs (negate (id y)) :: Int
+    , abs (negate (id 1)) :: Int
+    , abs (negate (id (id x))) :: Int
+    , abs (negate (id (id 0))) :: Int
+    , abs (negate (negate x)) :: Int
+    , abs (negate (negate 0)) :: Int
+    , abs (negate (abs x)) :: Int
+    , abs (negate (abs 0)) :: Int
+    , abs (negate (head xs)) :: Int
+    , abs (negate (head [])) :: Int
+    , abs (negate (ord c)) :: Int
+    , abs (negate (ord 'a')) :: Int
+    , abs (abs z) :: Int
+    , abs (abs (-1)) :: Int
+    , abs (abs (id y)) :: Int
+    , abs (abs (id 1)) :: Int
+    , abs (abs (id (id x))) :: Int
+    , abs (abs (id (id 0))) :: Int
+    , abs (abs (negate x)) :: Int
+    , abs (abs (negate 0)) :: Int
+    , abs (abs (abs x)) :: Int
+    , abs (abs (abs 0)) :: Int
+    , abs (abs (head xs)) :: Int
+    , abs (abs (head [])) :: Int
+    , abs (abs (ord c)) :: Int
+    , abs (abs (ord 'a')) :: Int
+    , abs (x + y) :: Int
+    , abs (x + 1) :: Int
+    , abs (x + id x) :: Int
+    , abs (x + id 0) :: Int
+    , abs (0 + y) :: Int
+    , abs (0 + 1) :: Int
+    , abs (0 + id x) :: Int
+    , abs (0 + id 0) :: Int
+    , abs (f y) :: Int
+    , abs (f 1) :: Int
+    , abs (f (id x)) :: Int
+    , abs (f (id 0)) :: Int
+    , abs (y + x) :: Int
+    , abs (y + 0) :: Int
+    , abs (1 + x) :: Int
+    , abs (1 + 0) :: Int
+    , abs (id x + x) :: Int
+    , abs (id x + 0) :: Int
+    , abs (id 0 + x) :: Int
+    , abs (id 0 + 0) :: Int
+    , abs (x * x) :: Int
+    , abs (x * 0) :: Int
+    , abs (0 * x) :: Int
+    , abs (0 * 0) :: Int
+    , abs (g x) :: Int
+    , abs (g 0) :: Int
+    , abs (head zs) :: Int
+    , abs (head [0,0]) :: Int
+    , abs (head [1]) :: Int
+    , abs (head (x:xs)) :: Int
+    , abs (head [x]) :: Int
+    , abs (head (0:xs)) :: Int
+    , abs (head [0]) :: Int
+    , abs (head (tail xs)) :: Int
+    , abs (head (tail [])) :: Int
+    , abs (ord e) :: Int
+    , abs (ord 'b') :: Int
+    , x + x' :: Int
+    , x + 2 :: Int
+    , x + id z :: Int
+    , x + id (-1) :: Int
+    , x + id (id y) :: Int
+    , x + id (id 1) :: Int
+    , x + id (id (id x)) :: Int
+    , x + id (id (id 0)) :: Int
+    , x + id (negate x) :: Int
+    , x + id (negate 0) :: Int
+    , x + id (abs x) :: Int
+    , x + id (abs 0) :: Int
+    , x + id (head xs) :: Int
+    , x + id (head []) :: Int
+    , x + id (ord c) :: Int
+    , x + id (ord 'a') :: Int
+    , x + negate y :: Int
+    , x + negate 1 :: Int
+    , x + negate (id x) :: Int
+    , x + negate (id 0) :: Int
+    , x + abs y :: Int
+    , x + abs 1 :: Int
+    , x + abs (id x) :: Int
+    , x + abs (id 0) :: Int
+    , x + (x + x) :: Int
+    , x + (x + 0) :: Int
+    , x + (0 + x) :: Int
+    , x + (0 + 0) :: Int
+    , x + f x :: Int
+    , x + f 0 :: Int
+    , x + head ys :: Int
+    , x + head [0] :: Int
+    , x + ord d :: Int
+    , x + ord ' ' :: Int
+    , 0 + x' :: Int
+    , 0 + 2 :: Int
+    , 0 + id z :: Int
+    , 0 + id (-1) :: Int
+    , 0 + id (id y) :: Int
+    , 0 + id (id 1) :: Int
+    , 0 + id (id (id x)) :: Int
+    , 0 + id (id (id 0)) :: Int
+    , 0 + id (negate x) :: Int
+    , 0 + id (negate 0) :: Int
+    , 0 + id (abs x) :: Int
+    , 0 + id (abs 0) :: Int
+    , 0 + id (head xs) :: Int
+    , 0 + id (head []) :: Int
+    , 0 + id (ord c) :: Int
+    , 0 + id (ord 'a') :: Int
+    , 0 + negate y :: Int
+    , 0 + negate 1 :: Int
+    , 0 + negate (id x) :: Int
+    , 0 + negate (id 0) :: Int
+    , 0 + abs y :: Int
+    , 0 + abs 1 :: Int
+    , 0 + abs (id x) :: Int
+    , 0 + abs (id 0) :: Int
+    , 0 + (x + x) :: Int
+    , 0 + (x + 0) :: Int
+    , 0 + (0 + x) :: Int
+    , 0 + (0 + 0) :: Int
+    , 0 + f x :: Int
+    , 0 + f 0 :: Int
+    , 0 + head ys :: Int
+    , 0 + head [0] :: Int
+    , 0 + ord d :: Int
+    , 0 + ord ' ' :: Int
+    , f x' :: Int
+    , f 2 :: Int
+    , f (id z) :: Int
+    , f (id (-1)) :: Int
+    , f (id (id y)) :: Int
+    , f (id (id 1)) :: Int
+    , f (id (id (id x))) :: Int
+    , f (id (id (id 0))) :: Int
+    , f (id (negate x)) :: Int
+    , f (id (negate 0)) :: Int
+    , f (id (abs x)) :: Int
+    , f (id (abs 0)) :: Int
+    , f (id (head xs)) :: Int
+    , f (id (head [])) :: Int
+    , f (id (ord c)) :: Int
+    , f (id (ord 'a')) :: Int
+    , f (negate y) :: Int
+    , f (negate 1) :: Int
+    , f (negate (id x)) :: Int
+    , f (negate (id 0)) :: Int
+    , f (abs y) :: Int
+    , f (abs 1) :: Int
+    , f (abs (id x)) :: Int
+    , f (abs (id 0)) :: Int
+    , f (x + x) :: Int
+    , f (x + 0) :: Int
+    , f (0 + x) :: Int
+    , f (0 + 0) :: Int
+    , f (f x) :: Int
+    , f (f 0) :: Int
+    , f (head ys) :: Int
+    , f (head [0]) :: Int
+    , f (ord d) :: Int
+    , f (ord ' ') :: Int
+    , y + z :: Int
+    , y + (-1) :: Int
+    , y + id y :: Int
+    , y + id 1 :: Int
+    , y + id (id x) :: Int
+    , y + id (id 0) :: Int
+    , y + negate x :: Int
+    , y + negate 0 :: Int
+    , y + abs x :: Int
+    , y + abs 0 :: Int
+    , y + head xs :: Int
+    , y + head [] :: Int
+    , y + ord c :: Int
+    , y + ord 'a' :: Int
+    , 1 + z :: Int
+    , 1 + (-1) :: Int
+    , 1 + id y :: Int
+    , 1 + id 1 :: Int
+    , 1 + id (id x) :: Int
+    , 1 + id (id 0) :: Int
+    , 1 + negate x :: Int
+    , 1 + negate 0 :: Int
+    , 1 + abs x :: Int
+    , 1 + abs 0 :: Int
+    , 1 + head xs :: Int
+    , 1 + head [] :: Int
+    , 1 + ord c :: Int
+    , 1 + ord 'a' :: Int
+    , id x + z :: Int
+    , id x + (-1) :: Int
+    , id x + id y :: Int
+    , id x + id 1 :: Int
+    , id x + id (id x) :: Int
+    , id x + id (id 0) :: Int
+    , id x + negate x :: Int
+    , id x + negate 0 :: Int
+    , id x + abs x :: Int
+    , id x + abs 0 :: Int
+    , id x + head xs :: Int
+    , id x + head [] :: Int
+    , id x + ord c :: Int
+    , id x + ord 'a' :: Int
+    , id 0 + z :: Int
+    , id 0 + (-1) :: Int
+    , id 0 + id y :: Int
+    , id 0 + id 1 :: Int
+    , id 0 + id (id x) :: Int
+    , id 0 + id (id 0) :: Int
+    , id 0 + negate x :: Int
+    , id 0 + negate 0 :: Int
+    , id 0 + abs x :: Int
+    , id 0 + abs 0 :: Int
+    , id 0 + head xs :: Int
+    , id 0 + head [] :: Int
+    , id 0 + ord c :: Int
+    , id 0 + ord 'a' :: Int
+    , x * z :: Int
+    , x * (-1) :: Int
+    , x * id y :: Int
+    , x * id 1 :: Int
+    , x * id (id x) :: Int
+    , x * id (id 0) :: Int
+    , x * negate x :: Int
+    , x * negate 0 :: Int
+    , x * abs x :: Int
+    , x * abs 0 :: Int
+    , x * head xs :: Int
+    , x * head [] :: Int
+    , x * ord c :: Int
+    , x * ord 'a' :: Int
+    , 0 * z :: Int
+    , 0 * (-1) :: Int
+    , 0 * id y :: Int
+    , 0 * id 1 :: Int
+    , 0 * id (id x) :: Int
+    , 0 * id (id 0) :: Int
+    , 0 * negate x :: Int
+    , 0 * negate 0 :: Int
+    , 0 * abs x :: Int
+    , 0 * abs 0 :: Int
+    , 0 * head xs :: Int
+    , 0 * head [] :: Int
+    , 0 * ord c :: Int
+    , 0 * ord 'a' :: Int
+    , g z :: Int
+    , g (-1) :: Int
+    , g (id y) :: Int
+    , g (id 1) :: Int
+    , g (id (id x)) :: Int
+    , g (id (id 0)) :: Int
+    , g (negate x) :: Int
+    , g (negate 0) :: Int
+    , g (abs x) :: Int
+    , g (abs 0) :: Int
+    , g (head xs) :: Int
+    , g (head []) :: Int
+    , g (ord c) :: Int
+    , g (ord 'a') :: Int
+    , z + y :: Int
+    , z + 1 :: Int
+    , z + id x :: Int
+    , z + id 0 :: Int
+    , (-1) + y :: Int
+    , (-1) + 1 :: Int
+    , (-1) + id x :: Int
+    , (-1) + id 0 :: Int
+    , id y + y :: Int
+    , id y + 1 :: Int
+    , id y + id x :: Int
+    , id y + id 0 :: Int
+    , id 1 + y :: Int
+    , id 1 + 1 :: Int
+    , id 1 + id x :: Int
+    , id 1 + id 0 :: Int
+    , id (id x) + y :: Int
+    , id (id x) + 1 :: Int
+    , id (id x) + id x :: Int
+    , id (id x) + id 0 :: Int
+    , id (id 0) + y :: Int
+    , id (id 0) + 1 :: Int
+    , id (id 0) + id x :: Int
+    , id (id 0) + id 0 :: Int
+    , negate x + y :: Int
+    , negate x + 1 :: Int
+    , negate x + id x :: Int
+    , negate x + id 0 :: Int
+    , negate 0 + y :: Int
+    , negate 0 + 1 :: Int
+    , negate 0 + id x :: Int
+    , negate 0 + id 0 :: Int
+    , abs x + y :: Int
+    , abs x + 1 :: Int
+    , abs x + id x :: Int
+    , abs x + id 0 :: Int
+    , abs 0 + y :: Int
+    , abs 0 + 1 :: Int
+    , abs 0 + id x :: Int
+    , abs 0 + id 0 :: Int
+    , head xs + y :: Int
+    , head xs + 1 :: Int
+    , head xs + id x :: Int
+    , head xs + id 0 :: Int
+    , head [] + y :: Int
+    , head [] + 1 :: Int
+    , head [] + id x :: Int
+    , head [] + id 0 :: Int
+    , ord c + y :: Int
+    , ord c + 1 :: Int
+    , ord c + id x :: Int
+    , ord c + id 0 :: Int
+    , ord 'a' + y :: Int
+    , ord 'a' + 1 :: Int
+    , ord 'a' + id x :: Int
+    , ord 'a' + id 0 :: Int
+    , y * y :: Int
+    , y * 1 :: Int
+    , y * id x :: Int
+    , y * id 0 :: Int
+    , 1 * y :: Int
+    , 1 * 1 :: Int
+    , 1 * id x :: Int
+    , 1 * id 0 :: Int
+    , id x * y :: Int
+    , id x * 1 :: Int
+    , id x * id x :: Int
+    , id x * id 0 :: Int
+    , id 0 * y :: Int
+    , id 0 * 1 :: Int
+    , id 0 * id x :: Int
+    , id 0 * id 0 :: Int
+    , h y :: Int
+    , h 1 :: Int
+    , h (id x) :: Int
+    , h (id 0) :: Int
+    , x' + x :: Int
+    , x' + 0 :: Int
+    , 2 + x :: Int
+    , 2 + 0 :: Int
+    , id z + x :: Int
+    , id z + 0 :: Int
+    , id (-1) + x :: Int
+    , id (-1) + 0 :: Int
+    , id (id y) + x :: Int
+    , id (id y) + 0 :: Int
+    , id (id 1) + x :: Int
+    , id (id 1) + 0 :: Int
+    , id (id (id x)) + x :: Int
+    , id (id (id x)) + 0 :: Int
+    , id (id (id 0)) + x :: Int
+    , id (id (id 0)) + 0 :: Int
+    , id (negate x) + x :: Int
+    , id (negate x) + 0 :: Int
+    , id (negate 0) + x :: Int
+    , id (negate 0) + 0 :: Int
+    , id (abs x) + x :: Int
+    , id (abs x) + 0 :: Int
+    , id (abs 0) + x :: Int
+    , id (abs 0) + 0 :: Int
+    , id (head xs) + x :: Int
+    , id (head xs) + 0 :: Int
+    , id (head []) + x :: Int
+    , id (head []) + 0 :: Int
+    , id (ord c) + x :: Int
+    , id (ord c) + 0 :: Int
+    , id (ord 'a') + x :: Int
+    , id (ord 'a') + 0 :: Int
+    , negate y + x :: Int
+    , negate y + 0 :: Int
+    , negate 1 + x :: Int
+    , negate 1 + 0 :: Int
+    , negate (id x) + x :: Int
+    , negate (id x) + 0 :: Int
+    , negate (id 0) + x :: Int
+    , negate (id 0) + 0 :: Int
+    , abs y + x :: Int
+    , abs y + 0 :: Int
+    , abs 1 + x :: Int
+    , abs 1 + 0 :: Int
+    , abs (id x) + x :: Int
+    , abs (id x) + 0 :: Int
+    , abs (id 0) + x :: Int
+    , abs (id 0) + 0 :: Int
+    , (x + x) + x :: Int
+    , (x + x) + 0 :: Int
+    , (x + 0) + x :: Int
+    , (x + 0) + 0 :: Int
+    , (0 + x) + x :: Int
+    , (0 + x) + 0 :: Int
+    , (0 + 0) + x :: Int
+    , (0 + 0) + 0 :: Int
+    , f x + x :: Int
+    , f x + 0 :: Int
+    , f 0 + x :: Int
+    , f 0 + 0 :: Int
+    , head ys + x :: Int
+    , head ys + 0 :: Int
+    , head [0] + x :: Int
+    , head [0] + 0 :: Int
+    , ord d + x :: Int
+    , ord d + 0 :: Int
+    , ord ' ' + x :: Int
+    , ord ' ' + 0 :: Int
+    , z * x :: Int
+    , z * 0 :: Int
+    , (-1) * x :: Int
+    , (-1) * 0 :: Int
+    , id y * x :: Int
+    , id y * 0 :: Int
+    , id 1 * x :: Int
+    , id 1 * 0 :: Int
+    , id (id x) * x :: Int
+    , id (id x) * 0 :: Int
+    , id (id 0) * x :: Int
+    , id (id 0) * 0 :: Int
+    , negate x * x :: Int
+    , negate x * 0 :: Int
+    , negate 0 * x :: Int
+    , negate 0 * 0 :: Int
+    , abs x * x :: Int
+    , abs x * 0 :: Int
+    , abs 0 * x :: Int
+    , abs 0 * 0 :: Int
+    , head xs * x :: Int
+    , head xs * 0 :: Int
+    , head [] * x :: Int
+    , head [] * 0 :: Int
+    , ord c * x :: Int
+    , ord c * 0 :: Int
+    , ord 'a' * x :: Int
+    , ord 'a' * 0 :: Int
+    , f' x :: Int
+    , f' 0 :: Int
+    , head ys' :: Int
+    , head [0,0,0,0] :: Int
+    , head [0,0,1] :: Int
+    , head [0,1,0] :: Int
+    , head [0,-1] :: Int
+    , head [1,0,0] :: Int
+    , head [1,1] :: Int
+    , head [-1,0] :: Int
+    , head [2] :: Int
+    , head (x:zs) :: Int
+    , head (x:[0,0]) :: Int
+    , head (x:[1]) :: Int
+    , head (x:x:xs) :: Int
+    , head [x,x] :: Int
+    , head (x:0:xs) :: Int
+    , head [x,0] :: Int
+    , head (x:tail xs) :: Int
+    , head (x:tail []) :: Int
+    , head (0:zs) :: Int
+    , head (0:[0,0]) :: Int
+    , head (0:[1]) :: Int
+    , head (0:x:xs) :: Int
+    , head [0,x] :: Int
+    , head (0:0:xs) :: Int
+    , head [0,0] :: Int
+    , head (0:tail xs) :: Int
+    , head (0:tail []) :: Int
+    , head (y:ys) :: Int
+    , head (y:[0]) :: Int
+    , head (1:ys) :: Int
+    , head (1:[0]) :: Int
+    , head (id x:ys) :: Int
+    , head (id x:[0]) :: Int
+    , head (id 0:ys) :: Int
+    , head (id 0:[0]) :: Int
+    , head (z:xs) :: Int
+    , head [z] :: Int
+    , head ((-1):xs) :: Int
+    , head [-1] :: Int
+    , head (id y:xs) :: Int
+    , head [id y] :: Int
+    , head (id 1:xs) :: Int
+    , head [id 1] :: Int
+    , head (id (id x):xs) :: Int
+    , head [id (id x)] :: Int
+    , head (id (id 0):xs) :: Int
+    , head [id (id 0)] :: Int
+    , head (negate x:xs) :: Int
+    , head [negate x] :: Int
+    , head (negate 0:xs) :: Int
+    , head [negate 0] :: Int
+    , head (abs x:xs) :: Int
+    , head [abs x] :: Int
+    , head (abs 0:xs) :: Int
+    , head [abs 0] :: Int
+    , head (head xs:xs) :: Int
+    , head [head xs] :: Int
+    , head (head []:xs) :: Int
+    , head [head []] :: Int
+    , head (ord c:xs) :: Int
+    , head [ord c] :: Int
+    , head (ord 'a':xs) :: Int
+    , head [ord 'a'] :: Int
+    , head (tail zs) :: Int
+    , head (tail [0,0]) :: Int
+    , head (tail [1]) :: Int
+    , head (tail (x:xs)) :: Int
+    , head (tail [x]) :: Int
+    , head (tail (0:xs)) :: Int
+    , head (tail [0]) :: Int
+    , head (tail (tail xs)) :: Int
+    , head (tail (tail [])) :: Int
+    , head (xs ++ ys) :: Int
+    , head (xs ++ [0]) :: Int
+    , head ([] ++ ys) :: Int
+    , head ([] ++ [0]) :: Int
+    , head (ys ++ xs) :: Int
+    , head (ys ++ []) :: Int
+    , head ([0] ++ xs) :: Int
+    , head ([0] ++ []) :: Int
+    , head (sort ys) :: Int
+    , head (sort [0]) :: Int
+    , head (insert x xs) :: Int
+    , head (insert x []) :: Int
+    , head (insert 0 xs) :: Int
+    , head (insert 0 []) :: Int
+    , ord d' :: Int
+    , ord 'c' :: Int
+    , r' :: Bool
+    , not q' :: Bool
+    , not (not p') :: Bool
+    , not (not (not r)) :: Bool
+    , not (not (not (not q))) :: Bool
+    , not (not (not (not (not p)))) :: Bool
+    , not (not (not (not (not False)))) :: Bool
+    , not (not (not (not (not True)))) :: Bool
+    , not (not (p || p)) :: Bool
+    , not (not (p || False)) :: Bool
+    , not (not (p || True)) :: Bool
+    , not (not (False || p)) :: Bool
+    , not (not (False || False)) :: Bool
+    , not (not (False || True)) :: Bool
+    , not (not (True || p)) :: Bool
+    , not (not (True || False)) :: Bool
+    , not (not (True || True)) :: Bool
+    , not (not (odd x)) :: Bool
+    , not (not (odd 0)) :: Bool
+    , not (not (even x)) :: Bool
+    , not (not (even 0)) :: Bool
+    , not (p || q) :: Bool
+    , not (p || not p) :: Bool
+    , not (p || not False) :: Bool
+    , not (p || not True) :: Bool
+    , not (False || q) :: Bool
+    , not (False || not p) :: Bool
+    , not (False || not False) :: Bool
+    , not (False || not True) :: Bool
+    , not (True || q) :: Bool
+    , not (True || not p) :: Bool
+    , not (True || not False) :: Bool
+    , not (True || not True) :: Bool
+    , not (q || p) :: Bool
+    , not (q || False) :: Bool
+    , not (q || True) :: Bool
+    , not (not p || p) :: Bool
+    , not (not p || False) :: Bool
+    , not (not p || True) :: Bool
+    , not (not False || p) :: Bool
+    , not (not False || False) :: Bool
+    , not (not False || True) :: Bool
+    , not (not True || p) :: Bool
+    , not (not True || False) :: Bool
+    , not (not True || True) :: Bool
+    , not (p && p) :: Bool
+    , not (p && False) :: Bool
+    , not (p && True) :: Bool
+    , not (False && p) :: Bool
+    , not (False && False) :: Bool
+    , not (False && True) :: Bool
+    , not (True && p) :: Bool
+    , not (True && False) :: Bool
+    , not (True && True) :: Bool
+    , not (x == x) :: Bool
+    , not (x == 0) :: Bool
+    , not (0 == x) :: Bool
+    , not (0 == 0) :: Bool
+    , not (p == p) :: Bool
+    , not (p == False) :: Bool
+    , not (p == True) :: Bool
+    , not (False == p) :: Bool
+    , not (False == False) :: Bool
+    , not (False == True) :: Bool
+    , not (True == p) :: Bool
+    , not (True == False) :: Bool
+    , not (True == True) :: Bool
+    , not (odd y) :: Bool
+    , not (odd 1) :: Bool
+    , not (odd (id x)) :: Bool
+    , not (odd (id 0)) :: Bool
+    , not (even y) :: Bool
+    , not (even 1) :: Bool
+    , not (even (id x)) :: Bool
+    , not (even (id 0)) :: Bool
+    , not (elem x xs) :: Bool
+    , not (elem x []) :: Bool
+    , not (elem 0 xs) :: Bool
+    , not (elem 0 []) :: Bool
+    , p || r :: Bool
+    , p || not q :: Bool
+    , p || not (not p) :: Bool
+    , p || not (not False) :: Bool
+    , p || not (not True) :: Bool
+    , False || r :: Bool
+    , False || not q :: Bool
+    , False || not (not p) :: Bool
+    , False || not (not False) :: Bool
+    , False || not (not True) :: Bool
+    , True || r :: Bool
+    , True || not q :: Bool
+    , True || not (not p) :: Bool
+    , True || not (not False) :: Bool
+    , True || not (not True) :: Bool
+    , q || q :: Bool
+    , q || not p :: Bool
+    , q || not False :: Bool
+    , q || not True :: Bool
+    , not p || q :: Bool
+    , not p || not p :: Bool
+    , not p || not False :: Bool
+    , not p || not True :: Bool
+    , not False || q :: Bool
+    , not False || not p :: Bool
+    , not False || not False :: Bool
+    , not False || not True :: Bool
+    , not True || q :: Bool
+    , not True || not p :: Bool
+    , not True || not False :: Bool
+    , not True || not True :: Bool
+    , p && q :: Bool
+    , p && not p :: Bool
+    , p && not False :: Bool
+    , p && not True :: Bool
+    , False && q :: Bool
+    , False && not p :: Bool
+    , False && not False :: Bool
+    , False && not True :: Bool
+    , True && q :: Bool
+    , True && not p :: Bool
+    , True && not False :: Bool
+    , True && not True :: Bool
+    , r || p :: Bool
+    , r || False :: Bool
+    , r || True :: Bool
+    , not q || p :: Bool
+    , not q || False :: Bool
+    , not q || True :: Bool
+    , not (not p) || p :: Bool
+    , not (not p) || False :: Bool
+    , not (not p) || True :: Bool
+    , not (not False) || p :: Bool
+    , not (not False) || False :: Bool
+    , not (not False) || True :: Bool
+    , not (not True) || p :: Bool
+    , not (not True) || False :: Bool
+    , not (not True) || True :: Bool
+    , q && p :: Bool
+    , q && False :: Bool
+    , q && True :: Bool
+    , not p && p :: Bool
+    , not p && False :: Bool
+    , not p && True :: Bool
+    , not False && p :: Bool
+    , not False && False :: Bool
+    , not False && True :: Bool
+    , not True && p :: Bool
+    , not True && False :: Bool
+    , not True && True :: Bool
+    , p ==> p :: Bool
+    , p ==> False :: Bool
+    , p ==> True :: Bool
+    , False ==> p :: Bool
+    , False ==> False :: Bool
+    , False ==> True :: Bool
+    , True ==> p :: Bool
+    , True ==> False :: Bool
+    , True ==> True :: Bool
+    , x == y :: Bool
+    , x == 1 :: Bool
+    , x == id x :: Bool
+    , x == id 0 :: Bool
+    , 0 == y :: Bool
+    , 0 == 1 :: Bool
+    , 0 == id x :: Bool
+    , 0 == id 0 :: Bool
+    , y == x :: Bool
+    , y == 0 :: Bool
+    , 1 == x :: Bool
+    , 1 == 0 :: Bool
+    , id x == x :: Bool
+    , id x == 0 :: Bool
+    , id 0 == x :: Bool
+    , id 0 == 0 :: Bool
+    , p == q :: Bool
+    , p == not p :: Bool
+    , p == not False :: Bool
+    , p == not True :: Bool
+    , False == q :: Bool
+    , False == not p :: Bool
+    , False == not False :: Bool
+    , False == not True :: Bool
+    , True == q :: Bool
+    , True == not p :: Bool
+    , True == not False :: Bool
+    , True == not True :: Bool
+    , q == p :: Bool
+    , q == False :: Bool
+    , q == True :: Bool
+    , not p == p :: Bool
+    , not p == False :: Bool
+    , not p == True :: Bool
+    , not False == p :: Bool
+    , not False == False :: Bool
+    , not False == True :: Bool
+    , not True == p :: Bool
+    , not True == False :: Bool
+    , not True == True :: Bool
+    , x <= x :: Bool
+    , x <= 0 :: Bool
+    , 0 <= x :: Bool
+    , 0 <= 0 :: Bool
+    , p <= p :: Bool
+    , p <= False :: Bool
+    , p <= True :: Bool
+    , False <= p :: Bool
+    , False <= False :: Bool
+    , False <= True :: Bool
+    , True <= p :: Bool
+    , True <= False :: Bool
+    , True <= True :: Bool
+    , odd z :: Bool
+    , odd (-1) :: Bool
+    , odd (id y) :: Bool
+    , odd (id 1) :: Bool
+    , odd (id (id x)) :: Bool
+    , odd (id (id 0)) :: Bool
+    , odd (negate x) :: Bool
+    , odd (negate 0) :: Bool
+    , odd (abs x) :: Bool
+    , odd (abs 0) :: Bool
+    , odd (head xs) :: Bool
+    , odd (head []) :: Bool
+    , odd (ord c) :: Bool
+    , odd (ord 'a') :: Bool
+    , even z :: Bool
+    , even (-1) :: Bool
+    , even (id y) :: Bool
+    , even (id 1) :: Bool
+    , even (id (id x)) :: Bool
+    , even (id (id 0)) :: Bool
+    , even (negate x) :: Bool
+    , even (negate 0) :: Bool
+    , even (abs x) :: Bool
+    , even (abs 0) :: Bool
+    , even (head xs) :: Bool
+    , even (head []) :: Bool
+    , even (ord c) :: Bool
+    , even (ord 'a') :: Bool
+    , elem x ys :: Bool
+    , elem x [0] :: Bool
+    , elem 0 ys :: Bool
+    , elem 0 [0] :: Bool
+    , elem y xs :: Bool
+    , elem y [] :: Bool
+    , elem 1 xs :: Bool
+    , elem 1 [] :: Bool
+    , elem (id x) xs :: Bool
+    , elem (id x) [] :: Bool
+    , elem (id 0) xs :: Bool
+    , elem (id 0) [] :: Bool
+    , e' :: Char
+    , '\n' :: Char
+    , zs' :: [Int]
+    , [0,0,0,0,0] :: [Int]
+    , [0,0,0,1] :: [Int]
+    , [0,0,1,0] :: [Int]
+    , [0,0,-1] :: [Int]
+    , [0,1,0,0] :: [Int]
+    , [0,1,1] :: [Int]
+    , [0,-1,0] :: [Int]
+    , [0,2] :: [Int]
+    , [1,0,0,0] :: [Int]
+    , [1,0,1] :: [Int]
+    , [1,1,0] :: [Int]
+    , [1,-1] :: [Int]
+    , [-1,0,0] :: [Int]
+    , [-1,1] :: [Int]
+    , [2,0] :: [Int]
+    , [-2] :: [Int]
+    , x:xs' :: [Int]
+    , x:[0,0,0] :: [Int]
+    , x:[0,1] :: [Int]
+    , x:[1,0] :: [Int]
+    , x:[-1] :: [Int]
+    , x:x:ys :: [Int]
+    , x:x:[0] :: [Int]
+    , x:0:ys :: [Int]
+    , x:0:[0] :: [Int]
+    , x:y:xs :: [Int]
+    , [x,y] :: [Int]
+    , x:1:xs :: [Int]
+    , [x,1] :: [Int]
+    , x:id x:xs :: [Int]
+    , [x,id x] :: [Int]
+    , x:id 0:xs :: [Int]
+    , [x,id 0] :: [Int]
+    , x:tail ys :: [Int]
+    , x:tail [0] :: [Int]
+    , x:(xs ++ xs) :: [Int]
+    , x:(xs ++ []) :: [Int]
+    , x:([] ++ xs) :: [Int]
+    , x:([] ++ []) :: [Int]
+    , x:sort xs :: [Int]
+    , x:sort [] :: [Int]
+    , 0:xs' :: [Int]
+    , 0:[0,0,0] :: [Int]
+    , 0:[0,1] :: [Int]
+    , 0:[1,0] :: [Int]
+    , 0:[-1] :: [Int]
+    , 0:x:ys :: [Int]
+    , 0:x:[0] :: [Int]
+    , 0:0:ys :: [Int]
+    , 0:0:[0] :: [Int]
+    , 0:y:xs :: [Int]
+    , [0,y] :: [Int]
+    , 0:1:xs :: [Int]
+    , [0,1] :: [Int]
+    , 0:id x:xs :: [Int]
+    , [0,id x] :: [Int]
+    , 0:id 0:xs :: [Int]
+    , [0,id 0] :: [Int]
+    , 0:tail ys :: [Int]
+    , 0:tail [0] :: [Int]
+    , 0:(xs ++ xs) :: [Int]
+    , 0:(xs ++ []) :: [Int]
+    , 0:([] ++ xs) :: [Int]
+    , 0:([] ++ []) :: [Int]
+    , 0:sort xs :: [Int]
+    , 0:sort [] :: [Int]
+    , y:zs :: [Int]
+    , y:[0,0] :: [Int]
+    , y:[1] :: [Int]
+    , y:x:xs :: [Int]
+    , [y,x] :: [Int]
+    , y:0:xs :: [Int]
+    , [y,0] :: [Int]
+    , y:tail xs :: [Int]
+    , y:tail [] :: [Int]
+    , 1:zs :: [Int]
+    , 1:[0,0] :: [Int]
+    , 1:[1] :: [Int]
+    , 1:x:xs :: [Int]
+    , [1,x] :: [Int]
+    , 1:0:xs :: [Int]
+    , [1,0] :: [Int]
+    , 1:tail xs :: [Int]
+    , 1:tail [] :: [Int]
+    , id x:zs :: [Int]
+    , id x:[0,0] :: [Int]
+    , id x:[1] :: [Int]
+    , id x:x:xs :: [Int]
+    , [id x,x] :: [Int]
+    , id x:0:xs :: [Int]
+    , [id x,0] :: [Int]
+    , id x:tail xs :: [Int]
+    , id x:tail [] :: [Int]
+    , id 0:zs :: [Int]
+    , id 0:[0,0] :: [Int]
+    , id 0:[1] :: [Int]
+    , id 0:x:xs :: [Int]
+    , [id 0,x] :: [Int]
+    , id 0:0:xs :: [Int]
+    , [id 0,0] :: [Int]
+    , id 0:tail xs :: [Int]
+    , id 0:tail [] :: [Int]
+    , z:ys :: [Int]
+    , z:[0] :: [Int]
+    , (-1):ys :: [Int]
+    , (-1):[0] :: [Int]
+    , id y:ys :: [Int]
+    , id y:[0] :: [Int]
+    , id 1:ys :: [Int]
+    , id 1:[0] :: [Int]
+    , id (id x):ys :: [Int]
+    , id (id x):[0] :: [Int]
+    , id (id 0):ys :: [Int]
+    , id (id 0):[0] :: [Int]
+    , negate x:ys :: [Int]
+    , negate x:[0] :: [Int]
+    , negate 0:ys :: [Int]
+    , negate 0:[0] :: [Int]
+    , abs x:ys :: [Int]
+    , abs x:[0] :: [Int]
+    , abs 0:ys :: [Int]
+    , abs 0:[0] :: [Int]
+    , head xs:ys :: [Int]
+    , head xs:[0] :: [Int]
+    , head []:ys :: [Int]
+    , head []:[0] :: [Int]
+    , ord c:ys :: [Int]
+    , ord c:[0] :: [Int]
+    , ord 'a':ys :: [Int]
+    , ord 'a':[0] :: [Int]
+    , x':xs :: [Int]
+    , [x'] :: [Int]
+    , 2:xs :: [Int]
+    , [2] :: [Int]
+    , id z:xs :: [Int]
+    , [id z] :: [Int]
+    , id (-1):xs :: [Int]
+    , [id (-1)] :: [Int]
+    , id (id y):xs :: [Int]
+    , [id (id y)] :: [Int]
+    , id (id 1):xs :: [Int]
+    , [id (id 1)] :: [Int]
+    , id (id (id x)):xs :: [Int]
+    , [id (id (id x))] :: [Int]
+    , id (id (id 0)):xs :: [Int]
+    , [id (id (id 0))] :: [Int]
+    , id (negate x):xs :: [Int]
+    , [id (negate x)] :: [Int]
+    , id (negate 0):xs :: [Int]
+    , [id (negate 0)] :: [Int]
+    , id (abs x):xs :: [Int]
+    , [id (abs x)] :: [Int]
+    , id (abs 0):xs :: [Int]
+    , [id (abs 0)] :: [Int]
+    , id (head xs):xs :: [Int]
+    , [id (head xs)] :: [Int]
+    , id (head []):xs :: [Int]
+    , [id (head [])] :: [Int]
+    , id (ord c):xs :: [Int]
+    , [id (ord c)] :: [Int]
+    , id (ord 'a'):xs :: [Int]
+    , [id (ord 'a')] :: [Int]
+    , negate y:xs :: [Int]
+    , [negate y] :: [Int]
+    , negate 1:xs :: [Int]
+    , [negate 1] :: [Int]
+    , negate (id x):xs :: [Int]
+    , [negate (id x)] :: [Int]
+    , negate (id 0):xs :: [Int]
+    , [negate (id 0)] :: [Int]
+    , abs y:xs :: [Int]
+    , [abs y] :: [Int]
+    , abs 1:xs :: [Int]
+    , [abs 1] :: [Int]
+    , abs (id x):xs :: [Int]
+    , [abs (id x)] :: [Int]
+    , abs (id 0):xs :: [Int]
+    , [abs (id 0)] :: [Int]
+    , x + x:xs :: [Int]
+    , [x + x] :: [Int]
+    , x + 0:xs :: [Int]
+    , [x + 0] :: [Int]
+    , 0 + x:xs :: [Int]
+    , [0 + x] :: [Int]
+    , 0 + 0:xs :: [Int]
+    , [0 + 0] :: [Int]
+    , f x:xs :: [Int]
+    , [f x] :: [Int]
+    , f 0:xs :: [Int]
+    , [f 0] :: [Int]
+    , head ys:xs :: [Int]
+    , [head ys] :: [Int]
+    , head [0]:xs :: [Int]
+    , [head [0]] :: [Int]
+    , ord d:xs :: [Int]
+    , [ord d] :: [Int]
+    , ord ' ':xs :: [Int]
+    , [ord ' '] :: [Int]
+    , tail xs' :: [Int]
+    , tail [0,0,0] :: [Int]
+    , tail [0,1] :: [Int]
+    , tail [1,0] :: [Int]
+    , tail [-1] :: [Int]
+    , tail (x:ys) :: [Int]
+    , tail (x:[0]) :: [Int]
+    , tail (0:ys) :: [Int]
+    , tail (0:[0]) :: [Int]
+    , tail (y:xs) :: [Int]
+    , tail [y] :: [Int]
+    , tail (1:xs) :: [Int]
+    , tail [1] :: [Int]
+    , tail (id x:xs) :: [Int]
+    , tail [id x] :: [Int]
+    , tail (id 0:xs) :: [Int]
+    , tail [id 0] :: [Int]
+    , tail (tail ys) :: [Int]
+    , tail (tail [0]) :: [Int]
+    , tail (xs ++ xs) :: [Int]
+    , tail (xs ++ []) :: [Int]
+    , tail ([] ++ xs) :: [Int]
+    , tail ([] ++ []) :: [Int]
+    , tail (sort xs) :: [Int]
+    , tail (sort []) :: [Int]
+    , xs ++ zs :: [Int]
+    , xs ++ [0,0] :: [Int]
+    , xs ++ [1] :: [Int]
+    , xs ++ (x:xs) :: [Int]
+    , xs ++ [x] :: [Int]
+    , xs ++ (0:xs) :: [Int]
+    , xs ++ [0] :: [Int]
+    , xs ++ tail xs :: [Int]
+    , xs ++ tail [] :: [Int]
+    , [] ++ zs :: [Int]
+    , [] ++ [0,0] :: [Int]
+    , [] ++ [1] :: [Int]
+    , [] ++ (x:xs) :: [Int]
+    , [] ++ [x] :: [Int]
+    , [] ++ (0:xs) :: [Int]
+    , [] ++ [0] :: [Int]
+    , [] ++ tail xs :: [Int]
+    , [] ++ tail [] :: [Int]
+    , ys ++ ys :: [Int]
+    , ys ++ [0] :: [Int]
+    , [0] ++ ys :: [Int]
+    , [0] ++ [0] :: [Int]
+    , zs ++ xs :: [Int]
+    , zs ++ [] :: [Int]
+    , [0,0] ++ xs :: [Int]
+    , [0,0] ++ [] :: [Int]
+    , [1] ++ xs :: [Int]
+    , [1] ++ [] :: [Int]
+    , (x:xs) ++ xs :: [Int]
+    , (x:xs) ++ [] :: [Int]
+    , [x] ++ xs :: [Int]
+    , [x] ++ [] :: [Int]
+    , (0:xs) ++ xs :: [Int]
+    , (0:xs) ++ [] :: [Int]
+    , [0] ++ xs :: [Int]
+    , [0] ++ [] :: [Int]
+    , tail xs ++ xs :: [Int]
+    , tail xs ++ [] :: [Int]
+    , tail [] ++ xs :: [Int]
+    , tail [] ++ [] :: [Int]
+    , sort zs :: [Int]
+    , sort [0,0] :: [Int]
+    , sort [1] :: [Int]
+    , sort (x:xs) :: [Int]
+    , sort [x] :: [Int]
+    , sort (0:xs) :: [Int]
+    , sort [0] :: [Int]
+    , sort (tail xs) :: [Int]
+    , sort (tail []) :: [Int]
+    , insert x ys :: [Int]
+    , insert x [0] :: [Int]
+    , insert 0 ys :: [Int]
+    , insert 0 [0] :: [Int]
+    , insert y xs :: [Int]
+    , insert y [] :: [Int]
+    , insert 1 xs :: [Int]
+    , insert 1 [] :: [Int]
+    , insert (id x) xs :: [Int]
+    , insert (id x) [] :: [Int]
+    , insert (id 0) xs :: [Int]
+    , insert (id 0) [] :: [Int]
+    , (x' +) :: Int -> Int
+    , (2 +) :: Int -> Int
+    , (id z +) :: Int -> Int
+    , (id (-1) +) :: Int -> Int
+    , (id (id y) +) :: Int -> Int
+    , (id (id 1) +) :: Int -> Int
+    , (id (id (id x)) +) :: Int -> Int
+    , (id (id (id 0)) +) :: Int -> Int
+    , (id (negate x) +) :: Int -> Int
+    , (id (negate 0) +) :: Int -> Int
+    , (id (abs x) +) :: Int -> Int
+    , (id (abs 0) +) :: Int -> Int
+    , (id (head xs) +) :: Int -> Int
+    , (id (head []) +) :: Int -> Int
+    , (id (ord c) +) :: Int -> Int
+    , (id (ord 'a') +) :: Int -> Int
+    , (negate y +) :: Int -> Int
+    , (negate 1 +) :: Int -> Int
+    , (negate (id x) +) :: Int -> Int
+    , (negate (id 0) +) :: Int -> Int
+    , (abs y +) :: Int -> Int
+    , (abs 1 +) :: Int -> Int
+    , (abs (id x) +) :: Int -> Int
+    , (abs (id 0) +) :: Int -> Int
+    , ((x + x) +) :: Int -> Int
+    , ((x + 0) +) :: Int -> Int
+    , ((0 + x) +) :: Int -> Int
+    , ((0 + 0) +) :: Int -> Int
+    , (f x +) :: Int -> Int
+    , (f 0 +) :: Int -> Int
+    , (head ys +) :: Int -> Int
+    , (head [0] +) :: Int -> Int
+    , (ord d +) :: Int -> Int
+    , (ord ' ' +) :: Int -> Int
+    , (z *) :: Int -> Int
+    , ((-1) *) :: Int -> Int
+    , (id y *) :: Int -> Int
+    , (id 1 *) :: Int -> Int
+    , (id (id x) *) :: Int -> Int
+    , (id (id 0) *) :: Int -> Int
+    , (negate x *) :: Int -> Int
+    , (negate 0 *) :: Int -> Int
+    , (abs x *) :: Int -> Int
+    , (abs 0 *) :: Int -> Int
+    , (head xs *) :: Int -> Int
+    , (head [] *) :: Int -> Int
+    , (ord c *) :: Int -> Int
+    , (ord 'a' *) :: Int -> Int
+    , f' :: Int -> Int
+    , (r ||) :: Bool -> Bool
+    , (not q ||) :: Bool -> Bool
+    , (not (not p) ||) :: Bool -> Bool
+    , (not (not False) ||) :: Bool -> Bool
+    , (not (not True) ||) :: Bool -> Bool
+    , (q &&) :: Bool -> Bool
+    , (not p &&) :: Bool -> Bool
+    , (not False &&) :: Bool -> Bool
+    , (not True &&) :: Bool -> Bool
+    , (p ==>) :: Bool -> Bool
+    , (False ==>) :: Bool -> Bool
+    , (True ==>) :: Bool -> Bool
+    ]
+  , ...
+  ]
diff --git a/bench/tiers.hs b/bench/tiers.hs
--- a/bench/tiers.hs
+++ b/bench/tiers.hs
@@ -1,21 +1,25 @@
 -- tiers.hs -- prints tiers of expressions
 --
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+
+
+
+
 import Test
 import Data.List (intercalate, nub)
 import Test.LeanCheck.Tiers (showTiers)
 import Data.Express.Utils.List
 
 showDotsLongerThan :: Show a => Int -> [a] -> String
-showDotsLongerThan n xs = "["
-                       ++ intercalate "," (dotsLongerThan n $ map show xs)
-                       ++ "]"
+showDotsLongerThan n xs  =  "["
+                         ++ intercalate "," (dotsLongerThan n $ map show xs)
+                         ++ "]"
   where
-  dotsLongerThan n xs = take n xs ++ ["..." | not . null $ drop n xs]
+  dotsLongerThan n xs  =  take n xs ++ ["..." | not . null $ drop n xs]
 
 printTiers :: Show a => Int -> [[a]] -> IO ()
-printTiers n = putStrLn . init . unlines . map ("  " ++) . lines . showTiers n
+printTiers n  =  putStrLn . init . unlines . map ("  " ++) . lines . showTiers n
 
 main :: IO ()
 main  =  do
@@ -23,5 +27,5 @@
           ++ show (isNub (take 5040 list :: [Expr]))
   putStrLn $ "map length (tiers :: [[ Expr ]])  =  "
           ++ showDotsLongerThan 9 (map length (tiers :: [[Expr]]))
-  putStrLn $ "tiers :: [[ Expr ]]  ="
+  putStrLn "tiers :: [[ Expr ]]  ="
   printTiers 7 (tiers :: [[Expr]])
diff --git a/bench/tiers.txt b/bench/tiers.txt
new file mode 100644
--- /dev/null
+++ b/bench/tiers.txt
@@ -0,0 +1,3624 @@
+isNub (list :: [Expr])  =  True
+map length (tiers :: [[ Expr ]])  =  [1,6,21,55,177,674,2679,11128,47899,...]
+tiers :: [[ Expr ]]  =
+  [ [_ :: Int]
+  , [ x :: Int
+    , 0 :: Int
+    , id _ :: Int
+    , _ :: Bool
+    , _ :: Char
+    , _ :: [Int]
+    ]
+  , [ y :: Int
+    , 1 :: Int
+    , id x :: Int
+    , id 0 :: Int
+    , id (id _) :: Int
+    , negate _ :: Int
+    , abs _ :: Int
+    , _ + _ :: Int
+    , head _ :: Int
+    , ord _ :: Int
+    , p :: Bool
+    , False :: Bool
+    , True :: Bool
+    , not _ :: Bool
+    , c :: Char
+    , 'a' :: Char
+    , xs :: [Int]
+    , [] :: [Int]
+    , _:_ :: [Int]
+    , id :: Int -> Int
+    , (+) :: Int -> Int -> Int
+    ]
+  , [ z :: Int
+    , -1 :: Int
+    , id y :: Int
+    , id 1 :: Int
+    , id (id x) :: Int
+    , id (id 0) :: Int
+    , id (id (id _)) :: Int
+    , id (negate _) :: Int
+    , id (abs _) :: Int
+    , id (_ + _) :: Int
+    , id (head _) :: Int
+    , id (ord _) :: Int
+    , negate x :: Int
+    , negate 0 :: Int
+    , negate (id _) :: Int
+    , abs x :: Int
+    , abs 0 :: Int
+    , abs (id _) :: Int
+    , _ + x :: Int
+    , _ + 0 :: Int
+    , _ + id _ :: Int
+    , x + _ :: Int
+    , 0 + _ :: Int
+    , id _ + _ :: Int
+    , _ * _ :: Int
+    , f _ :: Int
+    , head xs :: Int
+    , head [] :: Int
+    , head (_:_) :: Int
+    , ord c :: Int
+    , ord 'a' :: Int
+    , q :: Bool
+    , not p :: Bool
+    , not False :: Bool
+    , not True :: Bool
+    , not (not _) :: Bool
+    , _ || _ :: Bool
+    , d :: Char
+    , ' ' :: Char
+    , ys :: [Int]
+    , [0] :: [Int]
+    , _:xs :: [Int]
+    , [_] :: [Int]
+    , _:_:_ :: [Int]
+    , x:_ :: [Int]
+    , 0:_ :: [Int]
+    , id _:_ :: [Int]
+    , tail _ :: [Int]
+    , _ ++ _ :: [Int]
+    , negate :: Int -> Int
+    , abs :: Int -> Int
+    , (_ +) :: Int -> Int
+    , (*) :: Int -> Int -> Int
+    , not :: Bool -> Bool
+    , (||) :: Bool -> Bool -> Bool
+    ]
+  , [ x' :: Int
+    , 2 :: Int
+    , id z :: Int
+    , id (-1) :: Int
+    , id (id y) :: Int
+    , id (id 1) :: Int
+    , id (id (id x)) :: Int
+    , id (id (id 0)) :: Int
+    , id (id (id (id _))) :: Int
+    , id (id (negate _)) :: Int
+    , id (id (abs _)) :: Int
+    , id (id (_ + _)) :: Int
+    , id (id (head _)) :: Int
+    , id (id (ord _)) :: Int
+    , id (negate x) :: Int
+    , id (negate 0) :: Int
+    , id (negate (id _)) :: Int
+    , id (abs x) :: Int
+    , id (abs 0) :: Int
+    , id (abs (id _)) :: Int
+    , id (_ + x) :: Int
+    , id (_ + 0) :: Int
+    , id (_ + id _) :: Int
+    , id (x + _) :: Int
+    , id (0 + _) :: Int
+    , id (id _ + _) :: Int
+    , id (_ * _) :: Int
+    , id (f _) :: Int
+    , id (head xs) :: Int
+    , id (head []) :: Int
+    , id (head (_:_)) :: Int
+    , id (ord c) :: Int
+    , id (ord 'a') :: Int
+    , negate y :: Int
+    , negate 1 :: Int
+    , negate (id x) :: Int
+    , negate (id 0) :: Int
+    , negate (id (id _)) :: Int
+    , negate (negate _) :: Int
+    , negate (abs _) :: Int
+    , negate (_ + _) :: Int
+    , negate (head _) :: Int
+    , negate (ord _) :: Int
+    , abs y :: Int
+    , abs 1 :: Int
+    , abs (id x) :: Int
+    , abs (id 0) :: Int
+    , abs (id (id _)) :: Int
+    , abs (negate _) :: Int
+    , abs (abs _) :: Int
+    , abs (_ + _) :: Int
+    , abs (head _) :: Int
+    , abs (ord _) :: Int
+    , _ + y :: Int
+    , _ + 1 :: Int
+    , _ + id x :: Int
+    , _ + id 0 :: Int
+    , _ + id (id _) :: Int
+    , _ + negate _ :: Int
+    , _ + abs _ :: Int
+    , _ + (_ + _) :: Int
+    , _ + head _ :: Int
+    , _ + ord _ :: Int
+    , x + x :: Int
+    , x + 0 :: Int
+    , x + id _ :: Int
+    , 0 + x :: Int
+    , 0 + 0 :: Int
+    , 0 + id _ :: Int
+    , id _ + x :: Int
+    , id _ + 0 :: Int
+    , id _ + id _ :: Int
+    , _ * x :: Int
+    , _ * 0 :: Int
+    , _ * id _ :: Int
+    , f x :: Int
+    , f 0 :: Int
+    , f (id _) :: Int
+    , y + _ :: Int
+    , 1 + _ :: Int
+    , id x + _ :: Int
+    , id 0 + _ :: Int
+    , id (id _) + _ :: Int
+    , negate _ + _ :: Int
+    , abs _ + _ :: Int
+    , (_ + _) + _ :: Int
+    , head _ + _ :: Int
+    , ord _ + _ :: Int
+    , x * _ :: Int
+    , 0 * _ :: Int
+    , id _ * _ :: Int
+    , g _ :: Int
+    , head ys :: Int
+    , head [0] :: Int
+    , head (_:xs) :: Int
+    , head [_] :: Int
+    , head (_:_:_) :: Int
+    , head (x:_) :: Int
+    , head (0:_) :: Int
+    , head (id _:_) :: Int
+    , head (tail _) :: Int
+    , head (_ ++ _) :: Int
+    , ord d :: Int
+    , ord ' ' :: Int
+    , r :: Bool
+    , not q :: Bool
+    , not (not p) :: Bool
+    , not (not False) :: Bool
+    , not (not True) :: Bool
+    , not (not (not _)) :: Bool
+    , not (_ || _) :: Bool
+    , _ || p :: Bool
+    , _ || False :: Bool
+    , _ || True :: Bool
+    , _ || not _ :: Bool
+    , p || _ :: Bool
+    , False || _ :: Bool
+    , True || _ :: Bool
+    , not _ || _ :: Bool
+    , _ && _ :: Bool
+    , _ == _ :: Bool
+    , _ == _ :: Bool
+    , odd _ :: Bool
+    , even _ :: Bool
+    , elem _ _ :: Bool
+    , e :: Char
+    , 'b' :: Char
+    , zs :: [Int]
+    , [0,0] :: [Int]
+    , [1] :: [Int]
+    , _:ys :: [Int]
+    , _:[0] :: [Int]
+    , _:_:xs :: [Int]
+    , [_,_] :: [Int]
+    , _:_:_:_ :: [Int]
+    , _:x:_ :: [Int]
+    , _:0:_ :: [Int]
+    , _:id _:_ :: [Int]
+    , _:tail _ :: [Int]
+    , _:(_ ++ _) :: [Int]
+    , x:xs :: [Int]
+    , [x] :: [Int]
+    , x:_:_ :: [Int]
+    , 0:xs :: [Int]
+    , [0] :: [Int]
+    , 0:_:_ :: [Int]
+    , id _:xs :: [Int]
+    , [id _] :: [Int]
+    , id _:_:_ :: [Int]
+    , y:_ :: [Int]
+    , 1:_ :: [Int]
+    , id x:_ :: [Int]
+    , id 0:_ :: [Int]
+    , id (id _):_ :: [Int]
+    , negate _:_ :: [Int]
+    , abs _:_ :: [Int]
+    , _ + _:_ :: [Int]
+    , head _:_ :: [Int]
+    , ord _:_ :: [Int]
+    , tail xs :: [Int]
+    , tail [] :: [Int]
+    , tail (_:_) :: [Int]
+    , _ ++ xs :: [Int]
+    , _ ++ [] :: [Int]
+    , _ ++ (_:_) :: [Int]
+    , xs ++ _ :: [Int]
+    , [] ++ _ :: [Int]
+    , (_:_) ++ _ :: [Int]
+    , sort _ :: [Int]
+    , insert _ _ :: [Int]
+    , (x +) :: Int -> Int
+    , (0 +) :: Int -> Int
+    , (id _ +) :: Int -> Int
+    , (_ *) :: Int -> Int
+    , f :: Int -> Int
+    , (_ ||) :: Bool -> Bool
+    , (&&) :: Bool -> Bool -> Bool
+    ]
+  , [ y' :: Int
+    , -2 :: Int
+    , id x' :: Int
+    , id 2 :: Int
+    , id (id z) :: Int
+    , id (id (-1)) :: Int
+    , id (id (id y)) :: Int
+    , id (id (id 1)) :: Int
+    , id (id (id (id x))) :: Int
+    , id (id (id (id 0))) :: Int
+    , id (id (id (id (id _)))) :: Int
+    , id (id (id (negate _))) :: Int
+    , id (id (id (abs _))) :: Int
+    , id (id (id (_ + _))) :: Int
+    , id (id (id (head _))) :: Int
+    , id (id (id (ord _))) :: Int
+    , id (id (negate x)) :: Int
+    , id (id (negate 0)) :: Int
+    , id (id (negate (id _))) :: Int
+    , id (id (abs x)) :: Int
+    , id (id (abs 0)) :: Int
+    , id (id (abs (id _))) :: Int
+    , id (id (_ + x)) :: Int
+    , id (id (_ + 0)) :: Int
+    , id (id (_ + id _)) :: Int
+    , id (id (x + _)) :: Int
+    , id (id (0 + _)) :: Int
+    , id (id (id _ + _)) :: Int
+    , id (id (_ * _)) :: Int
+    , id (id (f _)) :: Int
+    , id (id (head xs)) :: Int
+    , id (id (head [])) :: Int
+    , id (id (head (_:_))) :: Int
+    , id (id (ord c)) :: Int
+    , id (id (ord 'a')) :: Int
+    , id (negate y) :: Int
+    , id (negate 1) :: Int
+    , id (negate (id x)) :: Int
+    , id (negate (id 0)) :: Int
+    , id (negate (id (id _))) :: Int
+    , id (negate (negate _)) :: Int
+    , id (negate (abs _)) :: Int
+    , id (negate (_ + _)) :: Int
+    , id (negate (head _)) :: Int
+    , id (negate (ord _)) :: Int
+    , id (abs y) :: Int
+    , id (abs 1) :: Int
+    , id (abs (id x)) :: Int
+    , id (abs (id 0)) :: Int
+    , id (abs (id (id _))) :: Int
+    , id (abs (negate _)) :: Int
+    , id (abs (abs _)) :: Int
+    , id (abs (_ + _)) :: Int
+    , id (abs (head _)) :: Int
+    , id (abs (ord _)) :: Int
+    , id (_ + y) :: Int
+    , id (_ + 1) :: Int
+    , id (_ + id x) :: Int
+    , id (_ + id 0) :: Int
+    , id (_ + id (id _)) :: Int
+    , id (_ + negate _) :: Int
+    , id (_ + abs _) :: Int
+    , id (_ + (_ + _)) :: Int
+    , id (_ + head _) :: Int
+    , id (_ + ord _) :: Int
+    , id (x + x) :: Int
+    , id (x + 0) :: Int
+    , id (x + id _) :: Int
+    , id (0 + x) :: Int
+    , id (0 + 0) :: Int
+    , id (0 + id _) :: Int
+    , id (id _ + x) :: Int
+    , id (id _ + 0) :: Int
+    , id (id _ + id _) :: Int
+    , id (_ * x) :: Int
+    , id (_ * 0) :: Int
+    , id (_ * id _) :: Int
+    , id (f x) :: Int
+    , id (f 0) :: Int
+    , id (f (id _)) :: Int
+    , id (y + _) :: Int
+    , id (1 + _) :: Int
+    , id (id x + _) :: Int
+    , id (id 0 + _) :: Int
+    , id (id (id _) + _) :: Int
+    , id (negate _ + _) :: Int
+    , id (abs _ + _) :: Int
+    , id ((_ + _) + _) :: Int
+    , id (head _ + _) :: Int
+    , id (ord _ + _) :: Int
+    , id (x * _) :: Int
+    , id (0 * _) :: Int
+    , id (id _ * _) :: Int
+    , id (g _) :: Int
+    , id (head ys) :: Int
+    , id (head [0]) :: Int
+    , id (head (_:xs)) :: Int
+    , id (head [_]) :: Int
+    , id (head (_:_:_)) :: Int
+    , id (head (x:_)) :: Int
+    , id (head (0:_)) :: Int
+    , id (head (id _:_)) :: Int
+    , id (head (tail _)) :: Int
+    , id (head (_ ++ _)) :: Int
+    , id (ord d) :: Int
+    , id (ord ' ') :: Int
+    , negate z :: Int
+    , negate (-1) :: Int
+    , negate (id y) :: Int
+    , negate (id 1) :: Int
+    , negate (id (id x)) :: Int
+    , negate (id (id 0)) :: Int
+    , negate (id (id (id _))) :: Int
+    , negate (id (negate _)) :: Int
+    , negate (id (abs _)) :: Int
+    , negate (id (_ + _)) :: Int
+    , negate (id (head _)) :: Int
+    , negate (id (ord _)) :: Int
+    , negate (negate x) :: Int
+    , negate (negate 0) :: Int
+    , negate (negate (id _)) :: Int
+    , negate (abs x) :: Int
+    , negate (abs 0) :: Int
+    , negate (abs (id _)) :: Int
+    , negate (_ + x) :: Int
+    , negate (_ + 0) :: Int
+    , negate (_ + id _) :: Int
+    , negate (x + _) :: Int
+    , negate (0 + _) :: Int
+    , negate (id _ + _) :: Int
+    , negate (_ * _) :: Int
+    , negate (f _) :: Int
+    , negate (head xs) :: Int
+    , negate (head []) :: Int
+    , negate (head (_:_)) :: Int
+    , negate (ord c) :: Int
+    , negate (ord 'a') :: Int
+    , abs z :: Int
+    , abs (-1) :: Int
+    , abs (id y) :: Int
+    , abs (id 1) :: Int
+    , abs (id (id x)) :: Int
+    , abs (id (id 0)) :: Int
+    , abs (id (id (id _))) :: Int
+    , abs (id (negate _)) :: Int
+    , abs (id (abs _)) :: Int
+    , abs (id (_ + _)) :: Int
+    , abs (id (head _)) :: Int
+    , abs (id (ord _)) :: Int
+    , abs (negate x) :: Int
+    , abs (negate 0) :: Int
+    , abs (negate (id _)) :: Int
+    , abs (abs x) :: Int
+    , abs (abs 0) :: Int
+    , abs (abs (id _)) :: Int
+    , abs (_ + x) :: Int
+    , abs (_ + 0) :: Int
+    , abs (_ + id _) :: Int
+    , abs (x + _) :: Int
+    , abs (0 + _) :: Int
+    , abs (id _ + _) :: Int
+    , abs (_ * _) :: Int
+    , abs (f _) :: Int
+    , abs (head xs) :: Int
+    , abs (head []) :: Int
+    , abs (head (_:_)) :: Int
+    , abs (ord c) :: Int
+    , abs (ord 'a') :: Int
+    , _ + z :: Int
+    , _ + (-1) :: Int
+    , _ + id y :: Int
+    , _ + id 1 :: Int
+    , _ + id (id x) :: Int
+    , _ + id (id 0) :: Int
+    , _ + id (id (id _)) :: Int
+    , _ + id (negate _) :: Int
+    , _ + id (abs _) :: Int
+    , _ + id (_ + _) :: Int
+    , _ + id (head _) :: Int
+    , _ + id (ord _) :: Int
+    , _ + negate x :: Int
+    , _ + negate 0 :: Int
+    , _ + negate (id _) :: Int
+    , _ + abs x :: Int
+    , _ + abs 0 :: Int
+    , _ + abs (id _) :: Int
+    , _ + (_ + x) :: Int
+    , _ + (_ + 0) :: Int
+    , _ + (_ + id _) :: Int
+    , _ + (x + _) :: Int
+    , _ + (0 + _) :: Int
+    , _ + (id _ + _) :: Int
+    , _ + _ * _ :: Int
+    , _ + f _ :: Int
+    , _ + head xs :: Int
+    , _ + head [] :: Int
+    , _ + head (_:_) :: Int
+    , _ + ord c :: Int
+    , _ + ord 'a' :: Int
+    , x + y :: Int
+    , x + 1 :: Int
+    , x + id x :: Int
+    , x + id 0 :: Int
+    , x + id (id _) :: Int
+    , x + negate _ :: Int
+    , x + abs _ :: Int
+    , x + (_ + _) :: Int
+    , x + head _ :: Int
+    , x + ord _ :: Int
+    , 0 + y :: Int
+    , 0 + 1 :: Int
+    , 0 + id x :: Int
+    , 0 + id 0 :: Int
+    , 0 + id (id _) :: Int
+    , 0 + negate _ :: Int
+    , 0 + abs _ :: Int
+    , 0 + (_ + _) :: Int
+    , 0 + head _ :: Int
+    , 0 + ord _ :: Int
+    , id _ + y :: Int
+    , id _ + 1 :: Int
+    , id _ + id x :: Int
+    , id _ + id 0 :: Int
+    , id _ + id (id _) :: Int
+    , id _ + negate _ :: Int
+    , id _ + abs _ :: Int
+    , id _ + (_ + _) :: Int
+    , id _ + head _ :: Int
+    , id _ + ord _ :: Int
+    , _ * y :: Int
+    , _ * 1 :: Int
+    , _ * id x :: Int
+    , _ * id 0 :: Int
+    , _ * id (id _) :: Int
+    , _ * negate _ :: Int
+    , _ * abs _ :: Int
+    , _ * (_ + _) :: Int
+    , _ * head _ :: Int
+    , _ * ord _ :: Int
+    , f y :: Int
+    , f 1 :: Int
+    , f (id x) :: Int
+    , f (id 0) :: Int
+    , f (id (id _)) :: Int
+    , f (negate _) :: Int
+    , f (abs _) :: Int
+    , f (_ + _) :: Int
+    , f (head _) :: Int
+    , f (ord _) :: Int
+    , y + x :: Int
+    , y + 0 :: Int
+    , y + id _ :: Int
+    , 1 + x :: Int
+    , 1 + 0 :: Int
+    , 1 + id _ :: Int
+    , id x + x :: Int
+    , id x + 0 :: Int
+    , id x + id _ :: Int
+    , id 0 + x :: Int
+    , id 0 + 0 :: Int
+    , id 0 + id _ :: Int
+    , id (id _) + x :: Int
+    , id (id _) + 0 :: Int
+    , id (id _) + id _ :: Int
+    , negate _ + x :: Int
+    , negate _ + 0 :: Int
+    , negate _ + id _ :: Int
+    , abs _ + x :: Int
+    , abs _ + 0 :: Int
+    , abs _ + id _ :: Int
+    , (_ + _) + x :: Int
+    , (_ + _) + 0 :: Int
+    , (_ + _) + id _ :: Int
+    , head _ + x :: Int
+    , head _ + 0 :: Int
+    , head _ + id _ :: Int
+    , ord _ + x :: Int
+    , ord _ + 0 :: Int
+    , ord _ + id _ :: Int
+    , x * x :: Int
+    , x * 0 :: Int
+    , x * id _ :: Int
+    , 0 * x :: Int
+    , 0 * 0 :: Int
+    , 0 * id _ :: Int
+    , id _ * x :: Int
+    , id _ * 0 :: Int
+    , id _ * id _ :: Int
+    , g x :: Int
+    , g 0 :: Int
+    , g (id _) :: Int
+    , z + _ :: Int
+    , (-1) + _ :: Int
+    , id y + _ :: Int
+    , id 1 + _ :: Int
+    , id (id x) + _ :: Int
+    , id (id 0) + _ :: Int
+    , id (id (id _)) + _ :: Int
+    , id (negate _) + _ :: Int
+    , id (abs _) + _ :: Int
+    , id (_ + _) + _ :: Int
+    , id (head _) + _ :: Int
+    , id (ord _) + _ :: Int
+    , negate x + _ :: Int
+    , negate 0 + _ :: Int
+    , negate (id _) + _ :: Int
+    , abs x + _ :: Int
+    , abs 0 + _ :: Int
+    , abs (id _) + _ :: Int
+    , (_ + x) + _ :: Int
+    , (_ + 0) + _ :: Int
+    , (_ + id _) + _ :: Int
+    , (x + _) + _ :: Int
+    , (0 + _) + _ :: Int
+    , (id _ + _) + _ :: Int
+    , _ * _ + _ :: Int
+    , f _ + _ :: Int
+    , head xs + _ :: Int
+    , head [] + _ :: Int
+    , head (_:_) + _ :: Int
+    , ord c + _ :: Int
+    , ord 'a' + _ :: Int
+    , y * _ :: Int
+    , 1 * _ :: Int
+    , id x * _ :: Int
+    , id 0 * _ :: Int
+    , id (id _) * _ :: Int
+    , negate _ * _ :: Int
+    , abs _ * _ :: Int
+    , (_ + _) * _ :: Int
+    , head _ * _ :: Int
+    , ord _ * _ :: Int
+    , h _ :: Int
+    , head zs :: Int
+    , head [0,0] :: Int
+    , head [1] :: Int
+    , head (_:ys) :: Int
+    , head (_:[0]) :: Int
+    , head (_:_:xs) :: Int
+    , head [_,_] :: Int
+    , head (_:_:_:_) :: Int
+    , head (_:x:_) :: Int
+    , head (_:0:_) :: Int
+    , head (_:id _:_) :: Int
+    , head (_:tail _) :: Int
+    , head (_:(_ ++ _)) :: Int
+    , head (x:xs) :: Int
+    , head [x] :: Int
+    , head (x:_:_) :: Int
+    , head (0:xs) :: Int
+    , head [0] :: Int
+    , head (0:_:_) :: Int
+    , head (id _:xs) :: Int
+    , head [id _] :: Int
+    , head (id _:_:_) :: Int
+    , head (y:_) :: Int
+    , head (1:_) :: Int
+    , head (id x:_) :: Int
+    , head (id 0:_) :: Int
+    , head (id (id _):_) :: Int
+    , head (negate _:_) :: Int
+    , head (abs _:_) :: Int
+    , head (_ + _:_) :: Int
+    , head (head _:_) :: Int
+    , head (ord _:_) :: Int
+    , head (tail xs) :: Int
+    , head (tail []) :: Int
+    , head (tail (_:_)) :: Int
+    , head (_ ++ xs) :: Int
+    , head (_ ++ []) :: Int
+    , head (_ ++ (_:_)) :: Int
+    , head (xs ++ _) :: Int
+    , head ([] ++ _) :: Int
+    , head ((_:_) ++ _) :: Int
+    , head (sort _) :: Int
+    , head (insert _ _) :: Int
+    , ord e :: Int
+    , ord 'b' :: Int
+    , p' :: Bool
+    , not r :: Bool
+    , not (not q) :: Bool
+    , not (not (not p)) :: Bool
+    , not (not (not False)) :: Bool
+    , not (not (not True)) :: Bool
+    , not (not (not (not _))) :: Bool
+    , not (not (_ || _)) :: Bool
+    , not (_ || p) :: Bool
+    , not (_ || False) :: Bool
+    , not (_ || True) :: Bool
+    , not (_ || not _) :: Bool
+    , not (p || _) :: Bool
+    , not (False || _) :: Bool
+    , not (True || _) :: Bool
+    , not (not _ || _) :: Bool
+    , not (_ && _) :: Bool
+    , not (_ == _) :: Bool
+    , not (_ == _) :: Bool
+    , not (odd _) :: Bool
+    , not (even _) :: Bool
+    , not (elem _ _) :: Bool
+    , _ || q :: Bool
+    , _ || not p :: Bool
+    , _ || not False :: Bool
+    , _ || not True :: Bool
+    , _ || not (not _) :: Bool
+    , _ || (_ || _) :: Bool
+    , p || p :: Bool
+    , p || False :: Bool
+    , p || True :: Bool
+    , p || not _ :: Bool
+    , False || p :: Bool
+    , False || False :: Bool
+    , False || True :: Bool
+    , False || not _ :: Bool
+    , True || p :: Bool
+    , True || False :: Bool
+    , True || True :: Bool
+    , True || not _ :: Bool
+    , not _ || p :: Bool
+    , not _ || False :: Bool
+    , not _ || True :: Bool
+    , not _ || not _ :: Bool
+    , _ && p :: Bool
+    , _ && False :: Bool
+    , _ && True :: Bool
+    , _ && not _ :: Bool
+    , q || _ :: Bool
+    , not p || _ :: Bool
+    , not False || _ :: Bool
+    , not True || _ :: Bool
+    , not (not _) || _ :: Bool
+    , (_ || _) || _ :: Bool
+    , p && _ :: Bool
+    , False && _ :: Bool
+    , True && _ :: Bool
+    , not _ && _ :: Bool
+    , _ ==> _ :: Bool
+    , _ == x :: Bool
+    , _ == 0 :: Bool
+    , _ == id _ :: Bool
+    , x == _ :: Bool
+    , 0 == _ :: Bool
+    , id _ == _ :: Bool
+    , _ == p :: Bool
+    , _ == False :: Bool
+    , _ == True :: Bool
+    , _ == not _ :: Bool
+    , p == _ :: Bool
+    , False == _ :: Bool
+    , True == _ :: Bool
+    , not _ == _ :: Bool
+    , _ <= _ :: Bool
+    , _ <= _ :: Bool
+    , odd x :: Bool
+    , odd 0 :: Bool
+    , odd (id _) :: Bool
+    , even x :: Bool
+    , even 0 :: Bool
+    , even (id _) :: Bool
+    , elem _ xs :: Bool
+    , elem _ [] :: Bool
+    , elem _ (_:_) :: Bool
+    , elem x _ :: Bool
+    , elem 0 _ :: Bool
+    , elem (id _) _ :: Bool
+    , c' :: Char
+    , 'A' :: Char
+    , xs' :: [Int]
+    , [0,0,0] :: [Int]
+    , [0,1] :: [Int]
+    , [1,0] :: [Int]
+    , [-1] :: [Int]
+    , _:zs :: [Int]
+    , _:[0,0] :: [Int]
+    , _:[1] :: [Int]
+    , _:_:ys :: [Int]
+    , _:_:[0] :: [Int]
+    , _:_:_:xs :: [Int]
+    , [_,_,_] :: [Int]
+    , _:_:_:_:_ :: [Int]
+    , _:_:x:_ :: [Int]
+    , _:_:0:_ :: [Int]
+    , _:_:id _:_ :: [Int]
+    , _:_:tail _ :: [Int]
+    , _:_:(_ ++ _) :: [Int]
+    , _:x:xs :: [Int]
+    , [_,x] :: [Int]
+    , _:x:_:_ :: [Int]
+    , _:0:xs :: [Int]
+    , [_,0] :: [Int]
+    , _:0:_:_ :: [Int]
+    , _:id _:xs :: [Int]
+    , [_,id _] :: [Int]
+    , _:id _:_:_ :: [Int]
+    , _:y:_ :: [Int]
+    , _:1:_ :: [Int]
+    , _:id x:_ :: [Int]
+    , _:id 0:_ :: [Int]
+    , _:id (id _):_ :: [Int]
+    , _:negate _:_ :: [Int]
+    , _:abs _:_ :: [Int]
+    , _:_ + _:_ :: [Int]
+    , _:head _:_ :: [Int]
+    , _:ord _:_ :: [Int]
+    , _:tail xs :: [Int]
+    , _:tail [] :: [Int]
+    , _:tail (_:_) :: [Int]
+    , _:(_ ++ xs) :: [Int]
+    , _:(_ ++ []) :: [Int]
+    , _:(_ ++ (_:_)) :: [Int]
+    , _:(xs ++ _) :: [Int]
+    , _:([] ++ _) :: [Int]
+    , _:((_:_) ++ _) :: [Int]
+    , _:sort _ :: [Int]
+    , _:insert _ _ :: [Int]
+    , x:ys :: [Int]
+    , x:[0] :: [Int]
+    , x:_:xs :: [Int]
+    , [x,_] :: [Int]
+    , x:_:_:_ :: [Int]
+    , x:x:_ :: [Int]
+    , x:0:_ :: [Int]
+    , x:id _:_ :: [Int]
+    , x:tail _ :: [Int]
+    , x:(_ ++ _) :: [Int]
+    , 0:ys :: [Int]
+    , 0:[0] :: [Int]
+    , 0:_:xs :: [Int]
+    , [0,_] :: [Int]
+    , 0:_:_:_ :: [Int]
+    , 0:x:_ :: [Int]
+    , 0:0:_ :: [Int]
+    , 0:id _:_ :: [Int]
+    , 0:tail _ :: [Int]
+    , 0:(_ ++ _) :: [Int]
+    , id _:ys :: [Int]
+    , id _:[0] :: [Int]
+    , id _:_:xs :: [Int]
+    , [id _,_] :: [Int]
+    , id _:_:_:_ :: [Int]
+    , id _:x:_ :: [Int]
+    , id _:0:_ :: [Int]
+    , id _:id _:_ :: [Int]
+    , id _:tail _ :: [Int]
+    , id _:(_ ++ _) :: [Int]
+    , y:xs :: [Int]
+    , [y] :: [Int]
+    , y:_:_ :: [Int]
+    , 1:xs :: [Int]
+    , [1] :: [Int]
+    , 1:_:_ :: [Int]
+    , id x:xs :: [Int]
+    , [id x] :: [Int]
+    , id x:_:_ :: [Int]
+    , id 0:xs :: [Int]
+    , [id 0] :: [Int]
+    , id 0:_:_ :: [Int]
+    , id (id _):xs :: [Int]
+    , [id (id _)] :: [Int]
+    , id (id _):_:_ :: [Int]
+    , negate _:xs :: [Int]
+    , [negate _] :: [Int]
+    , negate _:_:_ :: [Int]
+    , abs _:xs :: [Int]
+    , [abs _] :: [Int]
+    , abs _:_:_ :: [Int]
+    , _ + _:xs :: [Int]
+    , [_ + _] :: [Int]
+    , _ + _:_:_ :: [Int]
+    , head _:xs :: [Int]
+    , [head _] :: [Int]
+    , head _:_:_ :: [Int]
+    , ord _:xs :: [Int]
+    , [ord _] :: [Int]
+    , ord _:_:_ :: [Int]
+    , z:_ :: [Int]
+    , (-1):_ :: [Int]
+    , id y:_ :: [Int]
+    , id 1:_ :: [Int]
+    , id (id x):_ :: [Int]
+    , id (id 0):_ :: [Int]
+    , id (id (id _)):_ :: [Int]
+    , id (negate _):_ :: [Int]
+    , id (abs _):_ :: [Int]
+    , id (_ + _):_ :: [Int]
+    , id (head _):_ :: [Int]
+    , id (ord _):_ :: [Int]
+    , negate x:_ :: [Int]
+    , negate 0:_ :: [Int]
+    , negate (id _):_ :: [Int]
+    , abs x:_ :: [Int]
+    , abs 0:_ :: [Int]
+    , abs (id _):_ :: [Int]
+    , _ + x:_ :: [Int]
+    , _ + 0:_ :: [Int]
+    , _ + id _:_ :: [Int]
+    , x + _:_ :: [Int]
+    , 0 + _:_ :: [Int]
+    , id _ + _:_ :: [Int]
+    , _ * _:_ :: [Int]
+    , f _:_ :: [Int]
+    , head xs:_ :: [Int]
+    , head []:_ :: [Int]
+    , head (_:_):_ :: [Int]
+    , ord c:_ :: [Int]
+    , ord 'a':_ :: [Int]
+    , tail ys :: [Int]
+    , tail [0] :: [Int]
+    , tail (_:xs) :: [Int]
+    , tail [_] :: [Int]
+    , tail (_:_:_) :: [Int]
+    , tail (x:_) :: [Int]
+    , tail (0:_) :: [Int]
+    , tail (id _:_) :: [Int]
+    , tail (tail _) :: [Int]
+    , tail (_ ++ _) :: [Int]
+    , _ ++ ys :: [Int]
+    , _ ++ [0] :: [Int]
+    , _ ++ (_:xs) :: [Int]
+    , _ ++ [_] :: [Int]
+    , _ ++ (_:_:_) :: [Int]
+    , _ ++ (x:_) :: [Int]
+    , _ ++ (0:_) :: [Int]
+    , _ ++ (id _:_) :: [Int]
+    , _ ++ tail _ :: [Int]
+    , _ ++ (_ ++ _) :: [Int]
+    , xs ++ xs :: [Int]
+    , xs ++ [] :: [Int]
+    , xs ++ (_:_) :: [Int]
+    , [] ++ xs :: [Int]
+    , [] ++ [] :: [Int]
+    , [] ++ (_:_) :: [Int]
+    , (_:_) ++ xs :: [Int]
+    , (_:_) ++ [] :: [Int]
+    , (_:_) ++ (_:_) :: [Int]
+    , ys ++ _ :: [Int]
+    , [0] ++ _ :: [Int]
+    , (_:xs) ++ _ :: [Int]
+    , [_] ++ _ :: [Int]
+    , (_:_:_) ++ _ :: [Int]
+    , (x:_) ++ _ :: [Int]
+    , (0:_) ++ _ :: [Int]
+    , (id _:_) ++ _ :: [Int]
+    , tail _ ++ _ :: [Int]
+    , (_ ++ _) ++ _ :: [Int]
+    , sort xs :: [Int]
+    , sort [] :: [Int]
+    , sort (_:_) :: [Int]
+    , insert _ xs :: [Int]
+    , insert _ [] :: [Int]
+    , insert _ (_:_) :: [Int]
+    , insert x _ :: [Int]
+    , insert 0 _ :: [Int]
+    , insert (id _) _ :: [Int]
+    , (y +) :: Int -> Int
+    , (1 +) :: Int -> Int
+    , (id x +) :: Int -> Int
+    , (id 0 +) :: Int -> Int
+    , (id (id _) +) :: Int -> Int
+    , (negate _ +) :: Int -> Int
+    , (abs _ +) :: Int -> Int
+    , ((_ + _) +) :: Int -> Int
+    , (head _ +) :: Int -> Int
+    , (ord _ +) :: Int -> Int
+    , (x *) :: Int -> Int
+    , (0 *) :: Int -> Int
+    , (id _ *) :: Int -> Int
+    , g :: Int -> Int
+    , (p ||) :: Bool -> Bool
+    , (False ||) :: Bool -> Bool
+    , (True ||) :: Bool -> Bool
+    , (not _ ||) :: Bool -> Bool
+    , (_ &&) :: Bool -> Bool
+    , (==>) :: Bool -> Bool -> Bool
+    ]
+  , [ z' :: Int
+    , 3 :: Int
+    , id y' :: Int
+    , id (-2) :: Int
+    , id (id x') :: Int
+    , id (id 2) :: Int
+    , id (id (id z)) :: Int
+    , id (id (id (-1))) :: Int
+    , id (id (id (id y))) :: Int
+    , id (id (id (id 1))) :: Int
+    , id (id (id (id (id x)))) :: Int
+    , id (id (id (id (id 0)))) :: Int
+    , id (id (id (id (id (id _))))) :: Int
+    , id (id (id (id (negate _)))) :: Int
+    , id (id (id (id (abs _)))) :: Int
+    , id (id (id (id (_ + _)))) :: Int
+    , id (id (id (id (head _)))) :: Int
+    , id (id (id (id (ord _)))) :: Int
+    , id (id (id (negate x))) :: Int
+    , id (id (id (negate 0))) :: Int
+    , id (id (id (negate (id _)))) :: Int
+    , id (id (id (abs x))) :: Int
+    , id (id (id (abs 0))) :: Int
+    , id (id (id (abs (id _)))) :: Int
+    , id (id (id (_ + x))) :: Int
+    , id (id (id (_ + 0))) :: Int
+    , id (id (id (_ + id _))) :: Int
+    , id (id (id (x + _))) :: Int
+    , id (id (id (0 + _))) :: Int
+    , id (id (id (id _ + _))) :: Int
+    , id (id (id (_ * _))) :: Int
+    , id (id (id (f _))) :: Int
+    , id (id (id (head xs))) :: Int
+    , id (id (id (head []))) :: Int
+    , id (id (id (head (_:_)))) :: Int
+    , id (id (id (ord c))) :: Int
+    , id (id (id (ord 'a'))) :: Int
+    , id (id (negate y)) :: Int
+    , id (id (negate 1)) :: Int
+    , id (id (negate (id x))) :: Int
+    , id (id (negate (id 0))) :: Int
+    , id (id (negate (id (id _)))) :: Int
+    , id (id (negate (negate _))) :: Int
+    , id (id (negate (abs _))) :: Int
+    , id (id (negate (_ + _))) :: Int
+    , id (id (negate (head _))) :: Int
+    , id (id (negate (ord _))) :: Int
+    , id (id (abs y)) :: Int
+    , id (id (abs 1)) :: Int
+    , id (id (abs (id x))) :: Int
+    , id (id (abs (id 0))) :: Int
+    , id (id (abs (id (id _)))) :: Int
+    , id (id (abs (negate _))) :: Int
+    , id (id (abs (abs _))) :: Int
+    , id (id (abs (_ + _))) :: Int
+    , id (id (abs (head _))) :: Int
+    , id (id (abs (ord _))) :: Int
+    , id (id (_ + y)) :: Int
+    , id (id (_ + 1)) :: Int
+    , id (id (_ + id x)) :: Int
+    , id (id (_ + id 0)) :: Int
+    , id (id (_ + id (id _))) :: Int
+    , id (id (_ + negate _)) :: Int
+    , id (id (_ + abs _)) :: Int
+    , id (id (_ + (_ + _))) :: Int
+    , id (id (_ + head _)) :: Int
+    , id (id (_ + ord _)) :: Int
+    , id (id (x + x)) :: Int
+    , id (id (x + 0)) :: Int
+    , id (id (x + id _)) :: Int
+    , id (id (0 + x)) :: Int
+    , id (id (0 + 0)) :: Int
+    , id (id (0 + id _)) :: Int
+    , id (id (id _ + x)) :: Int
+    , id (id (id _ + 0)) :: Int
+    , id (id (id _ + id _)) :: Int
+    , id (id (_ * x)) :: Int
+    , id (id (_ * 0)) :: Int
+    , id (id (_ * id _)) :: Int
+    , id (id (f x)) :: Int
+    , id (id (f 0)) :: Int
+    , id (id (f (id _))) :: Int
+    , id (id (y + _)) :: Int
+    , id (id (1 + _)) :: Int
+    , id (id (id x + _)) :: Int
+    , id (id (id 0 + _)) :: Int
+    , id (id (id (id _) + _)) :: Int
+    , id (id (negate _ + _)) :: Int
+    , id (id (abs _ + _)) :: Int
+    , id (id ((_ + _) + _)) :: Int
+    , id (id (head _ + _)) :: Int
+    , id (id (ord _ + _)) :: Int
+    , id (id (x * _)) :: Int
+    , id (id (0 * _)) :: Int
+    , id (id (id _ * _)) :: Int
+    , id (id (g _)) :: Int
+    , id (id (head ys)) :: Int
+    , id (id (head [0])) :: Int
+    , id (id (head (_:xs))) :: Int
+    , id (id (head [_])) :: Int
+    , id (id (head (_:_:_))) :: Int
+    , id (id (head (x:_))) :: Int
+    , id (id (head (0:_))) :: Int
+    , id (id (head (id _:_))) :: Int
+    , id (id (head (tail _))) :: Int
+    , id (id (head (_ ++ _))) :: Int
+    , id (id (ord d)) :: Int
+    , id (id (ord ' ')) :: Int
+    , id (negate z) :: Int
+    , id (negate (-1)) :: Int
+    , id (negate (id y)) :: Int
+    , id (negate (id 1)) :: Int
+    , id (negate (id (id x))) :: Int
+    , id (negate (id (id 0))) :: Int
+    , id (negate (id (id (id _)))) :: Int
+    , id (negate (id (negate _))) :: Int
+    , id (negate (id (abs _))) :: Int
+    , id (negate (id (_ + _))) :: Int
+    , id (negate (id (head _))) :: Int
+    , id (negate (id (ord _))) :: Int
+    , id (negate (negate x)) :: Int
+    , id (negate (negate 0)) :: Int
+    , id (negate (negate (id _))) :: Int
+    , id (negate (abs x)) :: Int
+    , id (negate (abs 0)) :: Int
+    , id (negate (abs (id _))) :: Int
+    , id (negate (_ + x)) :: Int
+    , id (negate (_ + 0)) :: Int
+    , id (negate (_ + id _)) :: Int
+    , id (negate (x + _)) :: Int
+    , id (negate (0 + _)) :: Int
+    , id (negate (id _ + _)) :: Int
+    , id (negate (_ * _)) :: Int
+    , id (negate (f _)) :: Int
+    , id (negate (head xs)) :: Int
+    , id (negate (head [])) :: Int
+    , id (negate (head (_:_))) :: Int
+    , id (negate (ord c)) :: Int
+    , id (negate (ord 'a')) :: Int
+    , id (abs z) :: Int
+    , id (abs (-1)) :: Int
+    , id (abs (id y)) :: Int
+    , id (abs (id 1)) :: Int
+    , id (abs (id (id x))) :: Int
+    , id (abs (id (id 0))) :: Int
+    , id (abs (id (id (id _)))) :: Int
+    , id (abs (id (negate _))) :: Int
+    , id (abs (id (abs _))) :: Int
+    , id (abs (id (_ + _))) :: Int
+    , id (abs (id (head _))) :: Int
+    , id (abs (id (ord _))) :: Int
+    , id (abs (negate x)) :: Int
+    , id (abs (negate 0)) :: Int
+    , id (abs (negate (id _))) :: Int
+    , id (abs (abs x)) :: Int
+    , id (abs (abs 0)) :: Int
+    , id (abs (abs (id _))) :: Int
+    , id (abs (_ + x)) :: Int
+    , id (abs (_ + 0)) :: Int
+    , id (abs (_ + id _)) :: Int
+    , id (abs (x + _)) :: Int
+    , id (abs (0 + _)) :: Int
+    , id (abs (id _ + _)) :: Int
+    , id (abs (_ * _)) :: Int
+    , id (abs (f _)) :: Int
+    , id (abs (head xs)) :: Int
+    , id (abs (head [])) :: Int
+    , id (abs (head (_:_))) :: Int
+    , id (abs (ord c)) :: Int
+    , id (abs (ord 'a')) :: Int
+    , id (_ + z) :: Int
+    , id (_ + (-1)) :: Int
+    , id (_ + id y) :: Int
+    , id (_ + id 1) :: Int
+    , id (_ + id (id x)) :: Int
+    , id (_ + id (id 0)) :: Int
+    , id (_ + id (id (id _))) :: Int
+    , id (_ + id (negate _)) :: Int
+    , id (_ + id (abs _)) :: Int
+    , id (_ + id (_ + _)) :: Int
+    , id (_ + id (head _)) :: Int
+    , id (_ + id (ord _)) :: Int
+    , id (_ + negate x) :: Int
+    , id (_ + negate 0) :: Int
+    , id (_ + negate (id _)) :: Int
+    , id (_ + abs x) :: Int
+    , id (_ + abs 0) :: Int
+    , id (_ + abs (id _)) :: Int
+    , id (_ + (_ + x)) :: Int
+    , id (_ + (_ + 0)) :: Int
+    , id (_ + (_ + id _)) :: Int
+    , id (_ + (x + _)) :: Int
+    , id (_ + (0 + _)) :: Int
+    , id (_ + (id _ + _)) :: Int
+    , id (_ + _ * _) :: Int
+    , id (_ + f _) :: Int
+    , id (_ + head xs) :: Int
+    , id (_ + head []) :: Int
+    , id (_ + head (_:_)) :: Int
+    , id (_ + ord c) :: Int
+    , id (_ + ord 'a') :: Int
+    , id (x + y) :: Int
+    , id (x + 1) :: Int
+    , id (x + id x) :: Int
+    , id (x + id 0) :: Int
+    , id (x + id (id _)) :: Int
+    , id (x + negate _) :: Int
+    , id (x + abs _) :: Int
+    , id (x + (_ + _)) :: Int
+    , id (x + head _) :: Int
+    , id (x + ord _) :: Int
+    , id (0 + y) :: Int
+    , id (0 + 1) :: Int
+    , id (0 + id x) :: Int
+    , id (0 + id 0) :: Int
+    , id (0 + id (id _)) :: Int
+    , id (0 + negate _) :: Int
+    , id (0 + abs _) :: Int
+    , id (0 + (_ + _)) :: Int
+    , id (0 + head _) :: Int
+    , id (0 + ord _) :: Int
+    , id (id _ + y) :: Int
+    , id (id _ + 1) :: Int
+    , id (id _ + id x) :: Int
+    , id (id _ + id 0) :: Int
+    , id (id _ + id (id _)) :: Int
+    , id (id _ + negate _) :: Int
+    , id (id _ + abs _) :: Int
+    , id (id _ + (_ + _)) :: Int
+    , id (id _ + head _) :: Int
+    , id (id _ + ord _) :: Int
+    , id (_ * y) :: Int
+    , id (_ * 1) :: Int
+    , id (_ * id x) :: Int
+    , id (_ * id 0) :: Int
+    , id (_ * id (id _)) :: Int
+    , id (_ * negate _) :: Int
+    , id (_ * abs _) :: Int
+    , id (_ * (_ + _)) :: Int
+    , id (_ * head _) :: Int
+    , id (_ * ord _) :: Int
+    , id (f y) :: Int
+    , id (f 1) :: Int
+    , id (f (id x)) :: Int
+    , id (f (id 0)) :: Int
+    , id (f (id (id _))) :: Int
+    , id (f (negate _)) :: Int
+    , id (f (abs _)) :: Int
+    , id (f (_ + _)) :: Int
+    , id (f (head _)) :: Int
+    , id (f (ord _)) :: Int
+    , id (y + x) :: Int
+    , id (y + 0) :: Int
+    , id (y + id _) :: Int
+    , id (1 + x) :: Int
+    , id (1 + 0) :: Int
+    , id (1 + id _) :: Int
+    , id (id x + x) :: Int
+    , id (id x + 0) :: Int
+    , id (id x + id _) :: Int
+    , id (id 0 + x) :: Int
+    , id (id 0 + 0) :: Int
+    , id (id 0 + id _) :: Int
+    , id (id (id _) + x) :: Int
+    , id (id (id _) + 0) :: Int
+    , id (id (id _) + id _) :: Int
+    , id (negate _ + x) :: Int
+    , id (negate _ + 0) :: Int
+    , id (negate _ + id _) :: Int
+    , id (abs _ + x) :: Int
+    , id (abs _ + 0) :: Int
+    , id (abs _ + id _) :: Int
+    , id ((_ + _) + x) :: Int
+    , id ((_ + _) + 0) :: Int
+    , id ((_ + _) + id _) :: Int
+    , id (head _ + x) :: Int
+    , id (head _ + 0) :: Int
+    , id (head _ + id _) :: Int
+    , id (ord _ + x) :: Int
+    , id (ord _ + 0) :: Int
+    , id (ord _ + id _) :: Int
+    , id (x * x) :: Int
+    , id (x * 0) :: Int
+    , id (x * id _) :: Int
+    , id (0 * x) :: Int
+    , id (0 * 0) :: Int
+    , id (0 * id _) :: Int
+    , id (id _ * x) :: Int
+    , id (id _ * 0) :: Int
+    , id (id _ * id _) :: Int
+    , id (g x) :: Int
+    , id (g 0) :: Int
+    , id (g (id _)) :: Int
+    , id (z + _) :: Int
+    , id ((-1) + _) :: Int
+    , id (id y + _) :: Int
+    , id (id 1 + _) :: Int
+    , id (id (id x) + _) :: Int
+    , id (id (id 0) + _) :: Int
+    , id (id (id (id _)) + _) :: Int
+    , id (id (negate _) + _) :: Int
+    , id (id (abs _) + _) :: Int
+    , id (id (_ + _) + _) :: Int
+    , id (id (head _) + _) :: Int
+    , id (id (ord _) + _) :: Int
+    , id (negate x + _) :: Int
+    , id (negate 0 + _) :: Int
+    , id (negate (id _) + _) :: Int
+    , id (abs x + _) :: Int
+    , id (abs 0 + _) :: Int
+    , id (abs (id _) + _) :: Int
+    , id ((_ + x) + _) :: Int
+    , id ((_ + 0) + _) :: Int
+    , id ((_ + id _) + _) :: Int
+    , id ((x + _) + _) :: Int
+    , id ((0 + _) + _) :: Int
+    , id ((id _ + _) + _) :: Int
+    , id (_ * _ + _) :: Int
+    , id (f _ + _) :: Int
+    , id (head xs + _) :: Int
+    , id (head [] + _) :: Int
+    , id (head (_:_) + _) :: Int
+    , id (ord c + _) :: Int
+    , id (ord 'a' + _) :: Int
+    , id (y * _) :: Int
+    , id (1 * _) :: Int
+    , id (id x * _) :: Int
+    , id (id 0 * _) :: Int
+    , id (id (id _) * _) :: Int
+    , id (negate _ * _) :: Int
+    , id (abs _ * _) :: Int
+    , id ((_ + _) * _) :: Int
+    , id (head _ * _) :: Int
+    , id (ord _ * _) :: Int
+    , id (h _) :: Int
+    , id (head zs) :: Int
+    , id (head [0,0]) :: Int
+    , id (head [1]) :: Int
+    , id (head (_:ys)) :: Int
+    , id (head (_:[0])) :: Int
+    , id (head (_:_:xs)) :: Int
+    , id (head [_,_]) :: Int
+    , id (head (_:_:_:_)) :: Int
+    , id (head (_:x:_)) :: Int
+    , id (head (_:0:_)) :: Int
+    , id (head (_:id _:_)) :: Int
+    , id (head (_:tail _)) :: Int
+    , id (head (_:(_ ++ _))) :: Int
+    , id (head (x:xs)) :: Int
+    , id (head [x]) :: Int
+    , id (head (x:_:_)) :: Int
+    , id (head (0:xs)) :: Int
+    , id (head [0]) :: Int
+    , id (head (0:_:_)) :: Int
+    , id (head (id _:xs)) :: Int
+    , id (head [id _]) :: Int
+    , id (head (id _:_:_)) :: Int
+    , id (head (y:_)) :: Int
+    , id (head (1:_)) :: Int
+    , id (head (id x:_)) :: Int
+    , id (head (id 0:_)) :: Int
+    , id (head (id (id _):_)) :: Int
+    , id (head (negate _:_)) :: Int
+    , id (head (abs _:_)) :: Int
+    , id (head (_ + _:_)) :: Int
+    , id (head (head _:_)) :: Int
+    , id (head (ord _:_)) :: Int
+    , id (head (tail xs)) :: Int
+    , id (head (tail [])) :: Int
+    , id (head (tail (_:_))) :: Int
+    , id (head (_ ++ xs)) :: Int
+    , id (head (_ ++ [])) :: Int
+    , id (head (_ ++ (_:_))) :: Int
+    , id (head (xs ++ _)) :: Int
+    , id (head ([] ++ _)) :: Int
+    , id (head ((_:_) ++ _)) :: Int
+    , id (head (sort _)) :: Int
+    , id (head (insert _ _)) :: Int
+    , id (ord e) :: Int
+    , id (ord 'b') :: Int
+    , negate x' :: Int
+    , negate 2 :: Int
+    , negate (id z) :: Int
+    , negate (id (-1)) :: Int
+    , negate (id (id y)) :: Int
+    , negate (id (id 1)) :: Int
+    , negate (id (id (id x))) :: Int
+    , negate (id (id (id 0))) :: Int
+    , negate (id (id (id (id _)))) :: Int
+    , negate (id (id (negate _))) :: Int
+    , negate (id (id (abs _))) :: Int
+    , negate (id (id (_ + _))) :: Int
+    , negate (id (id (head _))) :: Int
+    , negate (id (id (ord _))) :: Int
+    , negate (id (negate x)) :: Int
+    , negate (id (negate 0)) :: Int
+    , negate (id (negate (id _))) :: Int
+    , negate (id (abs x)) :: Int
+    , negate (id (abs 0)) :: Int
+    , negate (id (abs (id _))) :: Int
+    , negate (id (_ + x)) :: Int
+    , negate (id (_ + 0)) :: Int
+    , negate (id (_ + id _)) :: Int
+    , negate (id (x + _)) :: Int
+    , negate (id (0 + _)) :: Int
+    , negate (id (id _ + _)) :: Int
+    , negate (id (_ * _)) :: Int
+    , negate (id (f _)) :: Int
+    , negate (id (head xs)) :: Int
+    , negate (id (head [])) :: Int
+    , negate (id (head (_:_))) :: Int
+    , negate (id (ord c)) :: Int
+    , negate (id (ord 'a')) :: Int
+    , negate (negate y) :: Int
+    , negate (negate 1) :: Int
+    , negate (negate (id x)) :: Int
+    , negate (negate (id 0)) :: Int
+    , negate (negate (id (id _))) :: Int
+    , negate (negate (negate _)) :: Int
+    , negate (negate (abs _)) :: Int
+    , negate (negate (_ + _)) :: Int
+    , negate (negate (head _)) :: Int
+    , negate (negate (ord _)) :: Int
+    , negate (abs y) :: Int
+    , negate (abs 1) :: Int
+    , negate (abs (id x)) :: Int
+    , negate (abs (id 0)) :: Int
+    , negate (abs (id (id _))) :: Int
+    , negate (abs (negate _)) :: Int
+    , negate (abs (abs _)) :: Int
+    , negate (abs (_ + _)) :: Int
+    , negate (abs (head _)) :: Int
+    , negate (abs (ord _)) :: Int
+    , negate (_ + y) :: Int
+    , negate (_ + 1) :: Int
+    , negate (_ + id x) :: Int
+    , negate (_ + id 0) :: Int
+    , negate (_ + id (id _)) :: Int
+    , negate (_ + negate _) :: Int
+    , negate (_ + abs _) :: Int
+    , negate (_ + (_ + _)) :: Int
+    , negate (_ + head _) :: Int
+    , negate (_ + ord _) :: Int
+    , negate (x + x) :: Int
+    , negate (x + 0) :: Int
+    , negate (x + id _) :: Int
+    , negate (0 + x) :: Int
+    , negate (0 + 0) :: Int
+    , negate (0 + id _) :: Int
+    , negate (id _ + x) :: Int
+    , negate (id _ + 0) :: Int
+    , negate (id _ + id _) :: Int
+    , negate (_ * x) :: Int
+    , negate (_ * 0) :: Int
+    , negate (_ * id _) :: Int
+    , negate (f x) :: Int
+    , negate (f 0) :: Int
+    , negate (f (id _)) :: Int
+    , negate (y + _) :: Int
+    , negate (1 + _) :: Int
+    , negate (id x + _) :: Int
+    , negate (id 0 + _) :: Int
+    , negate (id (id _) + _) :: Int
+    , negate (negate _ + _) :: Int
+    , negate (abs _ + _) :: Int
+    , negate ((_ + _) + _) :: Int
+    , negate (head _ + _) :: Int
+    , negate (ord _ + _) :: Int
+    , negate (x * _) :: Int
+    , negate (0 * _) :: Int
+    , negate (id _ * _) :: Int
+    , negate (g _) :: Int
+    , negate (head ys) :: Int
+    , negate (head [0]) :: Int
+    , negate (head (_:xs)) :: Int
+    , negate (head [_]) :: Int
+    , negate (head (_:_:_)) :: Int
+    , negate (head (x:_)) :: Int
+    , negate (head (0:_)) :: Int
+    , negate (head (id _:_)) :: Int
+    , negate (head (tail _)) :: Int
+    , negate (head (_ ++ _)) :: Int
+    , negate (ord d) :: Int
+    , negate (ord ' ') :: Int
+    , abs x' :: Int
+    , abs 2 :: Int
+    , abs (id z) :: Int
+    , abs (id (-1)) :: Int
+    , abs (id (id y)) :: Int
+    , abs (id (id 1)) :: Int
+    , abs (id (id (id x))) :: Int
+    , abs (id (id (id 0))) :: Int
+    , abs (id (id (id (id _)))) :: Int
+    , abs (id (id (negate _))) :: Int
+    , abs (id (id (abs _))) :: Int
+    , abs (id (id (_ + _))) :: Int
+    , abs (id (id (head _))) :: Int
+    , abs (id (id (ord _))) :: Int
+    , abs (id (negate x)) :: Int
+    , abs (id (negate 0)) :: Int
+    , abs (id (negate (id _))) :: Int
+    , abs (id (abs x)) :: Int
+    , abs (id (abs 0)) :: Int
+    , abs (id (abs (id _))) :: Int
+    , abs (id (_ + x)) :: Int
+    , abs (id (_ + 0)) :: Int
+    , abs (id (_ + id _)) :: Int
+    , abs (id (x + _)) :: Int
+    , abs (id (0 + _)) :: Int
+    , abs (id (id _ + _)) :: Int
+    , abs (id (_ * _)) :: Int
+    , abs (id (f _)) :: Int
+    , abs (id (head xs)) :: Int
+    , abs (id (head [])) :: Int
+    , abs (id (head (_:_))) :: Int
+    , abs (id (ord c)) :: Int
+    , abs (id (ord 'a')) :: Int
+    , abs (negate y) :: Int
+    , abs (negate 1) :: Int
+    , abs (negate (id x)) :: Int
+    , abs (negate (id 0)) :: Int
+    , abs (negate (id (id _))) :: Int
+    , abs (negate (negate _)) :: Int
+    , abs (negate (abs _)) :: Int
+    , abs (negate (_ + _)) :: Int
+    , abs (negate (head _)) :: Int
+    , abs (negate (ord _)) :: Int
+    , abs (abs y) :: Int
+    , abs (abs 1) :: Int
+    , abs (abs (id x)) :: Int
+    , abs (abs (id 0)) :: Int
+    , abs (abs (id (id _))) :: Int
+    , abs (abs (negate _)) :: Int
+    , abs (abs (abs _)) :: Int
+    , abs (abs (_ + _)) :: Int
+    , abs (abs (head _)) :: Int
+    , abs (abs (ord _)) :: Int
+    , abs (_ + y) :: Int
+    , abs (_ + 1) :: Int
+    , abs (_ + id x) :: Int
+    , abs (_ + id 0) :: Int
+    , abs (_ + id (id _)) :: Int
+    , abs (_ + negate _) :: Int
+    , abs (_ + abs _) :: Int
+    , abs (_ + (_ + _)) :: Int
+    , abs (_ + head _) :: Int
+    , abs (_ + ord _) :: Int
+    , abs (x + x) :: Int
+    , abs (x + 0) :: Int
+    , abs (x + id _) :: Int
+    , abs (0 + x) :: Int
+    , abs (0 + 0) :: Int
+    , abs (0 + id _) :: Int
+    , abs (id _ + x) :: Int
+    , abs (id _ + 0) :: Int
+    , abs (id _ + id _) :: Int
+    , abs (_ * x) :: Int
+    , abs (_ * 0) :: Int
+    , abs (_ * id _) :: Int
+    , abs (f x) :: Int
+    , abs (f 0) :: Int
+    , abs (f (id _)) :: Int
+    , abs (y + _) :: Int
+    , abs (1 + _) :: Int
+    , abs (id x + _) :: Int
+    , abs (id 0 + _) :: Int
+    , abs (id (id _) + _) :: Int
+    , abs (negate _ + _) :: Int
+    , abs (abs _ + _) :: Int
+    , abs ((_ + _) + _) :: Int
+    , abs (head _ + _) :: Int
+    , abs (ord _ + _) :: Int
+    , abs (x * _) :: Int
+    , abs (0 * _) :: Int
+    , abs (id _ * _) :: Int
+    , abs (g _) :: Int
+    , abs (head ys) :: Int
+    , abs (head [0]) :: Int
+    , abs (head (_:xs)) :: Int
+    , abs (head [_]) :: Int
+    , abs (head (_:_:_)) :: Int
+    , abs (head (x:_)) :: Int
+    , abs (head (0:_)) :: Int
+    , abs (head (id _:_)) :: Int
+    , abs (head (tail _)) :: Int
+    , abs (head (_ ++ _)) :: Int
+    , abs (ord d) :: Int
+    , abs (ord ' ') :: Int
+    , _ + x' :: Int
+    , _ + 2 :: Int
+    , _ + id z :: Int
+    , _ + id (-1) :: Int
+    , _ + id (id y) :: Int
+    , _ + id (id 1) :: Int
+    , _ + id (id (id x)) :: Int
+    , _ + id (id (id 0)) :: Int
+    , _ + id (id (id (id _))) :: Int
+    , _ + id (id (negate _)) :: Int
+    , _ + id (id (abs _)) :: Int
+    , _ + id (id (_ + _)) :: Int
+    , _ + id (id (head _)) :: Int
+    , _ + id (id (ord _)) :: Int
+    , _ + id (negate x) :: Int
+    , _ + id (negate 0) :: Int
+    , _ + id (negate (id _)) :: Int
+    , _ + id (abs x) :: Int
+    , _ + id (abs 0) :: Int
+    , _ + id (abs (id _)) :: Int
+    , _ + id (_ + x) :: Int
+    , _ + id (_ + 0) :: Int
+    , _ + id (_ + id _) :: Int
+    , _ + id (x + _) :: Int
+    , _ + id (0 + _) :: Int
+    , _ + id (id _ + _) :: Int
+    , _ + id (_ * _) :: Int
+    , _ + id (f _) :: Int
+    , _ + id (head xs) :: Int
+    , _ + id (head []) :: Int
+    , _ + id (head (_:_)) :: Int
+    , _ + id (ord c) :: Int
+    , _ + id (ord 'a') :: Int
+    , _ + negate y :: Int
+    , _ + negate 1 :: Int
+    , _ + negate (id x) :: Int
+    , _ + negate (id 0) :: Int
+    , _ + negate (id (id _)) :: Int
+    , _ + negate (negate _) :: Int
+    , _ + negate (abs _) :: Int
+    , _ + negate (_ + _) :: Int
+    , _ + negate (head _) :: Int
+    , _ + negate (ord _) :: Int
+    , _ + abs y :: Int
+    , _ + abs 1 :: Int
+    , _ + abs (id x) :: Int
+    , _ + abs (id 0) :: Int
+    , _ + abs (id (id _)) :: Int
+    , _ + abs (negate _) :: Int
+    , _ + abs (abs _) :: Int
+    , _ + abs (_ + _) :: Int
+    , _ + abs (head _) :: Int
+    , _ + abs (ord _) :: Int
+    , _ + (_ + y) :: Int
+    , _ + (_ + 1) :: Int
+    , _ + (_ + id x) :: Int
+    , _ + (_ + id 0) :: Int
+    , _ + (_ + id (id _)) :: Int
+    , _ + (_ + negate _) :: Int
+    , _ + (_ + abs _) :: Int
+    , _ + (_ + (_ + _)) :: Int
+    , _ + (_ + head _) :: Int
+    , _ + (_ + ord _) :: Int
+    , _ + (x + x) :: Int
+    , _ + (x + 0) :: Int
+    , _ + (x + id _) :: Int
+    , _ + (0 + x) :: Int
+    , _ + (0 + 0) :: Int
+    , _ + (0 + id _) :: Int
+    , _ + (id _ + x) :: Int
+    , _ + (id _ + 0) :: Int
+    , _ + (id _ + id _) :: Int
+    , _ + _ * x :: Int
+    , _ + _ * 0 :: Int
+    , _ + _ * id _ :: Int
+    , _ + f x :: Int
+    , _ + f 0 :: Int
+    , _ + f (id _) :: Int
+    , _ + (y + _) :: Int
+    , _ + (1 + _) :: Int
+    , _ + (id x + _) :: Int
+    , _ + (id 0 + _) :: Int
+    , _ + (id (id _) + _) :: Int
+    , _ + (negate _ + _) :: Int
+    , _ + (abs _ + _) :: Int
+    , _ + ((_ + _) + _) :: Int
+    , _ + (head _ + _) :: Int
+    , _ + (ord _ + _) :: Int
+    , _ + x * _ :: Int
+    , _ + 0 * _ :: Int
+    , _ + id _ * _ :: Int
+    , _ + g _ :: Int
+    , _ + head ys :: Int
+    , _ + head [0] :: Int
+    , _ + head (_:xs) :: Int
+    , _ + head [_] :: Int
+    , _ + head (_:_:_) :: Int
+    , _ + head (x:_) :: Int
+    , _ + head (0:_) :: Int
+    , _ + head (id _:_) :: Int
+    , _ + head (tail _) :: Int
+    , _ + head (_ ++ _) :: Int
+    , _ + ord d :: Int
+    , _ + ord ' ' :: Int
+    , x + z :: Int
+    , x + (-1) :: Int
+    , x + id y :: Int
+    , x + id 1 :: Int
+    , x + id (id x) :: Int
+    , x + id (id 0) :: Int
+    , x + id (id (id _)) :: Int
+    , x + id (negate _) :: Int
+    , x + id (abs _) :: Int
+    , x + id (_ + _) :: Int
+    , x + id (head _) :: Int
+    , x + id (ord _) :: Int
+    , x + negate x :: Int
+    , x + negate 0 :: Int
+    , x + negate (id _) :: Int
+    , x + abs x :: Int
+    , x + abs 0 :: Int
+    , x + abs (id _) :: Int
+    , x + (_ + x) :: Int
+    , x + (_ + 0) :: Int
+    , x + (_ + id _) :: Int
+    , x + (x + _) :: Int
+    , x + (0 + _) :: Int
+    , x + (id _ + _) :: Int
+    , x + _ * _ :: Int
+    , x + f _ :: Int
+    , x + head xs :: Int
+    , x + head [] :: Int
+    , x + head (_:_) :: Int
+    , x + ord c :: Int
+    , x + ord 'a' :: Int
+    , 0 + z :: Int
+    , 0 + (-1) :: Int
+    , 0 + id y :: Int
+    , 0 + id 1 :: Int
+    , 0 + id (id x) :: Int
+    , 0 + id (id 0) :: Int
+    , 0 + id (id (id _)) :: Int
+    , 0 + id (negate _) :: Int
+    , 0 + id (abs _) :: Int
+    , 0 + id (_ + _) :: Int
+    , 0 + id (head _) :: Int
+    , 0 + id (ord _) :: Int
+    , 0 + negate x :: Int
+    , 0 + negate 0 :: Int
+    , 0 + negate (id _) :: Int
+    , 0 + abs x :: Int
+    , 0 + abs 0 :: Int
+    , 0 + abs (id _) :: Int
+    , 0 + (_ + x) :: Int
+    , 0 + (_ + 0) :: Int
+    , 0 + (_ + id _) :: Int
+    , 0 + (x + _) :: Int
+    , 0 + (0 + _) :: Int
+    , 0 + (id _ + _) :: Int
+    , 0 + _ * _ :: Int
+    , 0 + f _ :: Int
+    , 0 + head xs :: Int
+    , 0 + head [] :: Int
+    , 0 + head (_:_) :: Int
+    , 0 + ord c :: Int
+    , 0 + ord 'a' :: Int
+    , id _ + z :: Int
+    , id _ + (-1) :: Int
+    , id _ + id y :: Int
+    , id _ + id 1 :: Int
+    , id _ + id (id x) :: Int
+    , id _ + id (id 0) :: Int
+    , id _ + id (id (id _)) :: Int
+    , id _ + id (negate _) :: Int
+    , id _ + id (abs _) :: Int
+    , id _ + id (_ + _) :: Int
+    , id _ + id (head _) :: Int
+    , id _ + id (ord _) :: Int
+    , id _ + negate x :: Int
+    , id _ + negate 0 :: Int
+    , id _ + negate (id _) :: Int
+    , id _ + abs x :: Int
+    , id _ + abs 0 :: Int
+    , id _ + abs (id _) :: Int
+    , id _ + (_ + x) :: Int
+    , id _ + (_ + 0) :: Int
+    , id _ + (_ + id _) :: Int
+    , id _ + (x + _) :: Int
+    , id _ + (0 + _) :: Int
+    , id _ + (id _ + _) :: Int
+    , id _ + _ * _ :: Int
+    , id _ + f _ :: Int
+    , id _ + head xs :: Int
+    , id _ + head [] :: Int
+    , id _ + head (_:_) :: Int
+    , id _ + ord c :: Int
+    , id _ + ord 'a' :: Int
+    , _ * z :: Int
+    , _ * (-1) :: Int
+    , _ * id y :: Int
+    , _ * id 1 :: Int
+    , _ * id (id x) :: Int
+    , _ * id (id 0) :: Int
+    , _ * id (id (id _)) :: Int
+    , _ * id (negate _) :: Int
+    , _ * id (abs _) :: Int
+    , _ * id (_ + _) :: Int
+    , _ * id (head _) :: Int
+    , _ * id (ord _) :: Int
+    , _ * negate x :: Int
+    , _ * negate 0 :: Int
+    , _ * negate (id _) :: Int
+    , _ * abs x :: Int
+    , _ * abs 0 :: Int
+    , _ * abs (id _) :: Int
+    , _ * (_ + x) :: Int
+    , _ * (_ + 0) :: Int
+    , _ * (_ + id _) :: Int
+    , _ * (x + _) :: Int
+    , _ * (0 + _) :: Int
+    , _ * (id _ + _) :: Int
+    , _ * (_ * _) :: Int
+    , _ * f _ :: Int
+    , _ * head xs :: Int
+    , _ * head [] :: Int
+    , _ * head (_:_) :: Int
+    , _ * ord c :: Int
+    , _ * ord 'a' :: Int
+    , f z :: Int
+    , f (-1) :: Int
+    , f (id y) :: Int
+    , f (id 1) :: Int
+    , f (id (id x)) :: Int
+    , f (id (id 0)) :: Int
+    , f (id (id (id _))) :: Int
+    , f (id (negate _)) :: Int
+    , f (id (abs _)) :: Int
+    , f (id (_ + _)) :: Int
+    , f (id (head _)) :: Int
+    , f (id (ord _)) :: Int
+    , f (negate x) :: Int
+    , f (negate 0) :: Int
+    , f (negate (id _)) :: Int
+    , f (abs x) :: Int
+    , f (abs 0) :: Int
+    , f (abs (id _)) :: Int
+    , f (_ + x) :: Int
+    , f (_ + 0) :: Int
+    , f (_ + id _) :: Int
+    , f (x + _) :: Int
+    , f (0 + _) :: Int
+    , f (id _ + _) :: Int
+    , f (_ * _) :: Int
+    , f (f _) :: Int
+    , f (head xs) :: Int
+    , f (head []) :: Int
+    , f (head (_:_)) :: Int
+    , f (ord c) :: Int
+    , f (ord 'a') :: Int
+    , y + y :: Int
+    , y + 1 :: Int
+    , y + id x :: Int
+    , y + id 0 :: Int
+    , y + id (id _) :: Int
+    , y + negate _ :: Int
+    , y + abs _ :: Int
+    , y + (_ + _) :: Int
+    , y + head _ :: Int
+    , y + ord _ :: Int
+    , 1 + y :: Int
+    , 1 + 1 :: Int
+    , 1 + id x :: Int
+    , 1 + id 0 :: Int
+    , 1 + id (id _) :: Int
+    , 1 + negate _ :: Int
+    , 1 + abs _ :: Int
+    , 1 + (_ + _) :: Int
+    , 1 + head _ :: Int
+    , 1 + ord _ :: Int
+    , id x + y :: Int
+    , id x + 1 :: Int
+    , id x + id x :: Int
+    , id x + id 0 :: Int
+    , id x + id (id _) :: Int
+    , id x + negate _ :: Int
+    , id x + abs _ :: Int
+    , id x + (_ + _) :: Int
+    , id x + head _ :: Int
+    , id x + ord _ :: Int
+    , id 0 + y :: Int
+    , id 0 + 1 :: Int
+    , id 0 + id x :: Int
+    , id 0 + id 0 :: Int
+    , id 0 + id (id _) :: Int
+    , id 0 + negate _ :: Int
+    , id 0 + abs _ :: Int
+    , id 0 + (_ + _) :: Int
+    , id 0 + head _ :: Int
+    , id 0 + ord _ :: Int
+    , id (id _) + y :: Int
+    , id (id _) + 1 :: Int
+    , id (id _) + id x :: Int
+    , id (id _) + id 0 :: Int
+    , id (id _) + id (id _) :: Int
+    , id (id _) + negate _ :: Int
+    , id (id _) + abs _ :: Int
+    , id (id _) + (_ + _) :: Int
+    , id (id _) + head _ :: Int
+    , id (id _) + ord _ :: Int
+    , negate _ + y :: Int
+    , negate _ + 1 :: Int
+    , negate _ + id x :: Int
+    , negate _ + id 0 :: Int
+    , negate _ + id (id _) :: Int
+    , negate _ + negate _ :: Int
+    , negate _ + abs _ :: Int
+    , negate _ + (_ + _) :: Int
+    , negate _ + head _ :: Int
+    , negate _ + ord _ :: Int
+    , abs _ + y :: Int
+    , abs _ + 1 :: Int
+    , abs _ + id x :: Int
+    , abs _ + id 0 :: Int
+    , abs _ + id (id _) :: Int
+    , abs _ + negate _ :: Int
+    , abs _ + abs _ :: Int
+    , abs _ + (_ + _) :: Int
+    , abs _ + head _ :: Int
+    , abs _ + ord _ :: Int
+    , (_ + _) + y :: Int
+    , (_ + _) + 1 :: Int
+    , (_ + _) + id x :: Int
+    , (_ + _) + id 0 :: Int
+    , (_ + _) + id (id _) :: Int
+    , (_ + _) + negate _ :: Int
+    , (_ + _) + abs _ :: Int
+    , (_ + _) + (_ + _) :: Int
+    , (_ + _) + head _ :: Int
+    , (_ + _) + ord _ :: Int
+    , head _ + y :: Int
+    , head _ + 1 :: Int
+    , head _ + id x :: Int
+    , head _ + id 0 :: Int
+    , head _ + id (id _) :: Int
+    , head _ + negate _ :: Int
+    , head _ + abs _ :: Int
+    , head _ + (_ + _) :: Int
+    , head _ + head _ :: Int
+    , head _ + ord _ :: Int
+    , ord _ + y :: Int
+    , ord _ + 1 :: Int
+    , ord _ + id x :: Int
+    , ord _ + id 0 :: Int
+    , ord _ + id (id _) :: Int
+    , ord _ + negate _ :: Int
+    , ord _ + abs _ :: Int
+    , ord _ + (_ + _) :: Int
+    , ord _ + head _ :: Int
+    , ord _ + ord _ :: Int
+    , x * y :: Int
+    , x * 1 :: Int
+    , x * id x :: Int
+    , x * id 0 :: Int
+    , x * id (id _) :: Int
+    , x * negate _ :: Int
+    , x * abs _ :: Int
+    , x * (_ + _) :: Int
+    , x * head _ :: Int
+    , x * ord _ :: Int
+    , 0 * y :: Int
+    , 0 * 1 :: Int
+    , 0 * id x :: Int
+    , 0 * id 0 :: Int
+    , 0 * id (id _) :: Int
+    , 0 * negate _ :: Int
+    , 0 * abs _ :: Int
+    , 0 * (_ + _) :: Int
+    , 0 * head _ :: Int
+    , 0 * ord _ :: Int
+    , id _ * y :: Int
+    , id _ * 1 :: Int
+    , id _ * id x :: Int
+    , id _ * id 0 :: Int
+    , id _ * id (id _) :: Int
+    , id _ * negate _ :: Int
+    , id _ * abs _ :: Int
+    , id _ * (_ + _) :: Int
+    , id _ * head _ :: Int
+    , id _ * ord _ :: Int
+    , g y :: Int
+    , g 1 :: Int
+    , g (id x) :: Int
+    , g (id 0) :: Int
+    , g (id (id _)) :: Int
+    , g (negate _) :: Int
+    , g (abs _) :: Int
+    , g (_ + _) :: Int
+    , g (head _) :: Int
+    , g (ord _) :: Int
+    , z + x :: Int
+    , z + 0 :: Int
+    , z + id _ :: Int
+    , (-1) + x :: Int
+    , (-1) + 0 :: Int
+    , (-1) + id _ :: Int
+    , id y + x :: Int
+    , id y + 0 :: Int
+    , id y + id _ :: Int
+    , id 1 + x :: Int
+    , id 1 + 0 :: Int
+    , id 1 + id _ :: Int
+    , id (id x) + x :: Int
+    , id (id x) + 0 :: Int
+    , id (id x) + id _ :: Int
+    , id (id 0) + x :: Int
+    , id (id 0) + 0 :: Int
+    , id (id 0) + id _ :: Int
+    , id (id (id _)) + x :: Int
+    , id (id (id _)) + 0 :: Int
+    , id (id (id _)) + id _ :: Int
+    , id (negate _) + x :: Int
+    , id (negate _) + 0 :: Int
+    , id (negate _) + id _ :: Int
+    , id (abs _) + x :: Int
+    , id (abs _) + 0 :: Int
+    , id (abs _) + id _ :: Int
+    , id (_ + _) + x :: Int
+    , id (_ + _) + 0 :: Int
+    , id (_ + _) + id _ :: Int
+    , id (head _) + x :: Int
+    , id (head _) + 0 :: Int
+    , id (head _) + id _ :: Int
+    , id (ord _) + x :: Int
+    , id (ord _) + 0 :: Int
+    , id (ord _) + id _ :: Int
+    , negate x + x :: Int
+    , negate x + 0 :: Int
+    , negate x + id _ :: Int
+    , negate 0 + x :: Int
+    , negate 0 + 0 :: Int
+    , negate 0 + id _ :: Int
+    , negate (id _) + x :: Int
+    , negate (id _) + 0 :: Int
+    , negate (id _) + id _ :: Int
+    , abs x + x :: Int
+    , abs x + 0 :: Int
+    , abs x + id _ :: Int
+    , abs 0 + x :: Int
+    , abs 0 + 0 :: Int
+    , abs 0 + id _ :: Int
+    , abs (id _) + x :: Int
+    , abs (id _) + 0 :: Int
+    , abs (id _) + id _ :: Int
+    , (_ + x) + x :: Int
+    , (_ + x) + 0 :: Int
+    , (_ + x) + id _ :: Int
+    , (_ + 0) + x :: Int
+    , (_ + 0) + 0 :: Int
+    , (_ + 0) + id _ :: Int
+    , (_ + id _) + x :: Int
+    , (_ + id _) + 0 :: Int
+    , (_ + id _) + id _ :: Int
+    , (x + _) + x :: Int
+    , (x + _) + 0 :: Int
+    , (x + _) + id _ :: Int
+    , (0 + _) + x :: Int
+    , (0 + _) + 0 :: Int
+    , (0 + _) + id _ :: Int
+    , (id _ + _) + x :: Int
+    , (id _ + _) + 0 :: Int
+    , (id _ + _) + id _ :: Int
+    , _ * _ + x :: Int
+    , _ * _ + 0 :: Int
+    , _ * _ + id _ :: Int
+    , f _ + x :: Int
+    , f _ + 0 :: Int
+    , f _ + id _ :: Int
+    , head xs + x :: Int
+    , head xs + 0 :: Int
+    , head xs + id _ :: Int
+    , head [] + x :: Int
+    , head [] + 0 :: Int
+    , head [] + id _ :: Int
+    , head (_:_) + x :: Int
+    , head (_:_) + 0 :: Int
+    , head (_:_) + id _ :: Int
+    , ord c + x :: Int
+    , ord c + 0 :: Int
+    , ord c + id _ :: Int
+    , ord 'a' + x :: Int
+    , ord 'a' + 0 :: Int
+    , ord 'a' + id _ :: Int
+    , y * x :: Int
+    , y * 0 :: Int
+    , y * id _ :: Int
+    , 1 * x :: Int
+    , 1 * 0 :: Int
+    , 1 * id _ :: Int
+    , id x * x :: Int
+    , id x * 0 :: Int
+    , id x * id _ :: Int
+    , id 0 * x :: Int
+    , id 0 * 0 :: Int
+    , id 0 * id _ :: Int
+    , id (id _) * x :: Int
+    , id (id _) * 0 :: Int
+    , id (id _) * id _ :: Int
+    , negate _ * x :: Int
+    , negate _ * 0 :: Int
+    , negate _ * id _ :: Int
+    , abs _ * x :: Int
+    , abs _ * 0 :: Int
+    , abs _ * id _ :: Int
+    , (_ + _) * x :: Int
+    , (_ + _) * 0 :: Int
+    , (_ + _) * id _ :: Int
+    , head _ * x :: Int
+    , head _ * 0 :: Int
+    , head _ * id _ :: Int
+    , ord _ * x :: Int
+    , ord _ * 0 :: Int
+    , ord _ * id _ :: Int
+    , h x :: Int
+    , h 0 :: Int
+    , h (id _) :: Int
+    , x' + _ :: Int
+    , 2 + _ :: Int
+    , id z + _ :: Int
+    , id (-1) + _ :: Int
+    , id (id y) + _ :: Int
+    , id (id 1) + _ :: Int
+    , id (id (id x)) + _ :: Int
+    , id (id (id 0)) + _ :: Int
+    , id (id (id (id _))) + _ :: Int
+    , id (id (negate _)) + _ :: Int
+    , id (id (abs _)) + _ :: Int
+    , id (id (_ + _)) + _ :: Int
+    , id (id (head _)) + _ :: Int
+    , id (id (ord _)) + _ :: Int
+    , id (negate x) + _ :: Int
+    , id (negate 0) + _ :: Int
+    , id (negate (id _)) + _ :: Int
+    , id (abs x) + _ :: Int
+    , id (abs 0) + _ :: Int
+    , id (abs (id _)) + _ :: Int
+    , id (_ + x) + _ :: Int
+    , id (_ + 0) + _ :: Int
+    , id (_ + id _) + _ :: Int
+    , id (x + _) + _ :: Int
+    , id (0 + _) + _ :: Int
+    , id (id _ + _) + _ :: Int
+    , id (_ * _) + _ :: Int
+    , id (f _) + _ :: Int
+    , id (head xs) + _ :: Int
+    , id (head []) + _ :: Int
+    , id (head (_:_)) + _ :: Int
+    , id (ord c) + _ :: Int
+    , id (ord 'a') + _ :: Int
+    , negate y + _ :: Int
+    , negate 1 + _ :: Int
+    , negate (id x) + _ :: Int
+    , negate (id 0) + _ :: Int
+    , negate (id (id _)) + _ :: Int
+    , negate (negate _) + _ :: Int
+    , negate (abs _) + _ :: Int
+    , negate (_ + _) + _ :: Int
+    , negate (head _) + _ :: Int
+    , negate (ord _) + _ :: Int
+    , abs y + _ :: Int
+    , abs 1 + _ :: Int
+    , abs (id x) + _ :: Int
+    , abs (id 0) + _ :: Int
+    , abs (id (id _)) + _ :: Int
+    , abs (negate _) + _ :: Int
+    , abs (abs _) + _ :: Int
+    , abs (_ + _) + _ :: Int
+    , abs (head _) + _ :: Int
+    , abs (ord _) + _ :: Int
+    , (_ + y) + _ :: Int
+    , (_ + 1) + _ :: Int
+    , (_ + id x) + _ :: Int
+    , (_ + id 0) + _ :: Int
+    , (_ + id (id _)) + _ :: Int
+    , (_ + negate _) + _ :: Int
+    , (_ + abs _) + _ :: Int
+    , (_ + (_ + _)) + _ :: Int
+    , (_ + head _) + _ :: Int
+    , (_ + ord _) + _ :: Int
+    , (x + x) + _ :: Int
+    , (x + 0) + _ :: Int
+    , (x + id _) + _ :: Int
+    , (0 + x) + _ :: Int
+    , (0 + 0) + _ :: Int
+    , (0 + id _) + _ :: Int
+    , (id _ + x) + _ :: Int
+    , (id _ + 0) + _ :: Int
+    , (id _ + id _) + _ :: Int
+    , _ * x + _ :: Int
+    , _ * 0 + _ :: Int
+    , _ * id _ + _ :: Int
+    , f x + _ :: Int
+    , f 0 + _ :: Int
+    , f (id _) + _ :: Int
+    , (y + _) + _ :: Int
+    , (1 + _) + _ :: Int
+    , (id x + _) + _ :: Int
+    , (id 0 + _) + _ :: Int
+    , (id (id _) + _) + _ :: Int
+    , (negate _ + _) + _ :: Int
+    , (abs _ + _) + _ :: Int
+    , ((_ + _) + _) + _ :: Int
+    , (head _ + _) + _ :: Int
+    , (ord _ + _) + _ :: Int
+    , x * _ + _ :: Int
+    , 0 * _ + _ :: Int
+    , id _ * _ + _ :: Int
+    , g _ + _ :: Int
+    , head ys + _ :: Int
+    , head [0] + _ :: Int
+    , head (_:xs) + _ :: Int
+    , head [_] + _ :: Int
+    , head (_:_:_) + _ :: Int
+    , head (x:_) + _ :: Int
+    , head (0:_) + _ :: Int
+    , head (id _:_) + _ :: Int
+    , head (tail _) + _ :: Int
+    , head (_ ++ _) + _ :: Int
+    , ord d + _ :: Int
+    , ord ' ' + _ :: Int
+    , z * _ :: Int
+    , (-1) * _ :: Int
+    , id y * _ :: Int
+    , id 1 * _ :: Int
+    , id (id x) * _ :: Int
+    , id (id 0) * _ :: Int
+    , id (id (id _)) * _ :: Int
+    , id (negate _) * _ :: Int
+    , id (abs _) * _ :: Int
+    , id (_ + _) * _ :: Int
+    , id (head _) * _ :: Int
+    , id (ord _) * _ :: Int
+    , negate x * _ :: Int
+    , negate 0 * _ :: Int
+    , negate (id _) * _ :: Int
+    , abs x * _ :: Int
+    , abs 0 * _ :: Int
+    , abs (id _) * _ :: Int
+    , (_ + x) * _ :: Int
+    , (_ + 0) * _ :: Int
+    , (_ + id _) * _ :: Int
+    , (x + _) * _ :: Int
+    , (0 + _) * _ :: Int
+    , (id _ + _) * _ :: Int
+    , (_ * _) * _ :: Int
+    , f _ * _ :: Int
+    , head xs * _ :: Int
+    , head [] * _ :: Int
+    , head (_:_) * _ :: Int
+    , ord c * _ :: Int
+    , ord 'a' * _ :: Int
+    , f' _ :: Int
+    , head xs' :: Int
+    , head [0,0,0] :: Int
+    , head [0,1] :: Int
+    , head [1,0] :: Int
+    , head [-1] :: Int
+    , head (_:zs) :: Int
+    , head (_:[0,0]) :: Int
+    , head (_:[1]) :: Int
+    , head (_:_:ys) :: Int
+    , head (_:_:[0]) :: Int
+    , head (_:_:_:xs) :: Int
+    , head [_,_,_] :: Int
+    , head (_:_:_:_:_) :: Int
+    , head (_:_:x:_) :: Int
+    , head (_:_:0:_) :: Int
+    , head (_:_:id _:_) :: Int
+    , head (_:_:tail _) :: Int
+    , head (_:_:(_ ++ _)) :: Int
+    , head (_:x:xs) :: Int
+    , head [_,x] :: Int
+    , head (_:x:_:_) :: Int
+    , head (_:0:xs) :: Int
+    , head [_,0] :: Int
+    , head (_:0:_:_) :: Int
+    , head (_:id _:xs) :: Int
+    , head [_,id _] :: Int
+    , head (_:id _:_:_) :: Int
+    , head (_:y:_) :: Int
+    , head (_:1:_) :: Int
+    , head (_:id x:_) :: Int
+    , head (_:id 0:_) :: Int
+    , head (_:id (id _):_) :: Int
+    , head (_:negate _:_) :: Int
+    , head (_:abs _:_) :: Int
+    , head (_:_ + _:_) :: Int
+    , head (_:head _:_) :: Int
+    , head (_:ord _:_) :: Int
+    , head (_:tail xs) :: Int
+    , head (_:tail []) :: Int
+    , head (_:tail (_:_)) :: Int
+    , head (_:(_ ++ xs)) :: Int
+    , head (_:(_ ++ [])) :: Int
+    , head (_:(_ ++ (_:_))) :: Int
+    , head (_:(xs ++ _)) :: Int
+    , head (_:([] ++ _)) :: Int
+    , head (_:((_:_) ++ _)) :: Int
+    , head (_:sort _) :: Int
+    , head (_:insert _ _) :: Int
+    , head (x:ys) :: Int
+    , head (x:[0]) :: Int
+    , head (x:_:xs) :: Int
+    , head [x,_] :: Int
+    , head (x:_:_:_) :: Int
+    , head (x:x:_) :: Int
+    , head (x:0:_) :: Int
+    , head (x:id _:_) :: Int
+    , head (x:tail _) :: Int
+    , head (x:(_ ++ _)) :: Int
+    , head (0:ys) :: Int
+    , head (0:[0]) :: Int
+    , head (0:_:xs) :: Int
+    , head [0,_] :: Int
+    , head (0:_:_:_) :: Int
+    , head (0:x:_) :: Int
+    , head (0:0:_) :: Int
+    , head (0:id _:_) :: Int
+    , head (0:tail _) :: Int
+    , head (0:(_ ++ _)) :: Int
+    , head (id _:ys) :: Int
+    , head (id _:[0]) :: Int
+    , head (id _:_:xs) :: Int
+    , head [id _,_] :: Int
+    , head (id _:_:_:_) :: Int
+    , head (id _:x:_) :: Int
+    , head (id _:0:_) :: Int
+    , head (id _:id _:_) :: Int
+    , head (id _:tail _) :: Int
+    , head (id _:(_ ++ _)) :: Int
+    , head (y:xs) :: Int
+    , head [y] :: Int
+    , head (y:_:_) :: Int
+    , head (1:xs) :: Int
+    , head [1] :: Int
+    , head (1:_:_) :: Int
+    , head (id x:xs) :: Int
+    , head [id x] :: Int
+    , head (id x:_:_) :: Int
+    , head (id 0:xs) :: Int
+    , head [id 0] :: Int
+    , head (id 0:_:_) :: Int
+    , head (id (id _):xs) :: Int
+    , head [id (id _)] :: Int
+    , head (id (id _):_:_) :: Int
+    , head (negate _:xs) :: Int
+    , head [negate _] :: Int
+    , head (negate _:_:_) :: Int
+    , head (abs _:xs) :: Int
+    , head [abs _] :: Int
+    , head (abs _:_:_) :: Int
+    , head (_ + _:xs) :: Int
+    , head [_ + _] :: Int
+    , head (_ + _:_:_) :: Int
+    , head (head _:xs) :: Int
+    , head [head _] :: Int
+    , head (head _:_:_) :: Int
+    , head (ord _:xs) :: Int
+    , head [ord _] :: Int
+    , head (ord _:_:_) :: Int
+    , head (z:_) :: Int
+    , head ((-1):_) :: Int
+    , head (id y:_) :: Int
+    , head (id 1:_) :: Int
+    , head (id (id x):_) :: Int
+    , head (id (id 0):_) :: Int
+    , head (id (id (id _)):_) :: Int
+    , head (id (negate _):_) :: Int
+    , head (id (abs _):_) :: Int
+    , head (id (_ + _):_) :: Int
+    , head (id (head _):_) :: Int
+    , head (id (ord _):_) :: Int
+    , head (negate x:_) :: Int
+    , head (negate 0:_) :: Int
+    , head (negate (id _):_) :: Int
+    , head (abs x:_) :: Int
+    , head (abs 0:_) :: Int
+    , head (abs (id _):_) :: Int
+    , head (_ + x:_) :: Int
+    , head (_ + 0:_) :: Int
+    , head (_ + id _:_) :: Int
+    , head (x + _:_) :: Int
+    , head (0 + _:_) :: Int
+    , head (id _ + _:_) :: Int
+    , head (_ * _:_) :: Int
+    , head (f _:_) :: Int
+    , head (head xs:_) :: Int
+    , head (head []:_) :: Int
+    , head (head (_:_):_) :: Int
+    , head (ord c:_) :: Int
+    , head (ord 'a':_) :: Int
+    , head (tail ys) :: Int
+    , head (tail [0]) :: Int
+    , head (tail (_:xs)) :: Int
+    , head (tail [_]) :: Int
+    , head (tail (_:_:_)) :: Int
+    , head (tail (x:_)) :: Int
+    , head (tail (0:_)) :: Int
+    , head (tail (id _:_)) :: Int
+    , head (tail (tail _)) :: Int
+    , head (tail (_ ++ _)) :: Int
+    , head (_ ++ ys) :: Int
+    , head (_ ++ [0]) :: Int
+    , head (_ ++ (_:xs)) :: Int
+    , head (_ ++ [_]) :: Int
+    , head (_ ++ (_:_:_)) :: Int
+    , head (_ ++ (x:_)) :: Int
+    , head (_ ++ (0:_)) :: Int
+    , head (_ ++ (id _:_)) :: Int
+    , head (_ ++ tail _) :: Int
+    , head (_ ++ (_ ++ _)) :: Int
+    , head (xs ++ xs) :: Int
+    , head (xs ++ []) :: Int
+    , head (xs ++ (_:_)) :: Int
+    , head ([] ++ xs) :: Int
+    , head ([] ++ []) :: Int
+    , head ([] ++ (_:_)) :: Int
+    , head ((_:_) ++ xs) :: Int
+    , head ((_:_) ++ []) :: Int
+    , head ((_:_) ++ (_:_)) :: Int
+    , head (ys ++ _) :: Int
+    , head ([0] ++ _) :: Int
+    , head ((_:xs) ++ _) :: Int
+    , head ([_] ++ _) :: Int
+    , head ((_:_:_) ++ _) :: Int
+    , head ((x:_) ++ _) :: Int
+    , head ((0:_) ++ _) :: Int
+    , head ((id _:_) ++ _) :: Int
+    , head (tail _ ++ _) :: Int
+    , head ((_ ++ _) ++ _) :: Int
+    , head (sort xs) :: Int
+    , head (sort []) :: Int
+    , head (sort (_:_)) :: Int
+    , head (insert _ xs) :: Int
+    , head (insert _ []) :: Int
+    , head (insert _ (_:_)) :: Int
+    , head (insert x _) :: Int
+    , head (insert 0 _) :: Int
+    , head (insert (id _) _) :: Int
+    , ord c' :: Int
+    , ord 'A' :: Int
+    , q' :: Bool
+    , not p' :: Bool
+    , not (not r) :: Bool
+    , not (not (not q)) :: Bool
+    , not (not (not (not p))) :: Bool
+    , not (not (not (not False))) :: Bool
+    , not (not (not (not True))) :: Bool
+    , not (not (not (not (not _)))) :: Bool
+    , not (not (not (_ || _))) :: Bool
+    , not (not (_ || p)) :: Bool
+    , not (not (_ || False)) :: Bool
+    , not (not (_ || True)) :: Bool
+    , not (not (_ || not _)) :: Bool
+    , not (not (p || _)) :: Bool
+    , not (not (False || _)) :: Bool
+    , not (not (True || _)) :: Bool
+    , not (not (not _ || _)) :: Bool
+    , not (not (_ && _)) :: Bool
+    , not (not (_ == _)) :: Bool
+    , not (not (_ == _)) :: Bool
+    , not (not (odd _)) :: Bool
+    , not (not (even _)) :: Bool
+    , not (not (elem _ _)) :: Bool
+    , not (_ || q) :: Bool
+    , not (_ || not p) :: Bool
+    , not (_ || not False) :: Bool
+    , not (_ || not True) :: Bool
+    , not (_ || not (not _)) :: Bool
+    , not (_ || (_ || _)) :: Bool
+    , not (p || p) :: Bool
+    , not (p || False) :: Bool
+    , not (p || True) :: Bool
+    , not (p || not _) :: Bool
+    , not (False || p) :: Bool
+    , not (False || False) :: Bool
+    , not (False || True) :: Bool
+    , not (False || not _) :: Bool
+    , not (True || p) :: Bool
+    , not (True || False) :: Bool
+    , not (True || True) :: Bool
+    , not (True || not _) :: Bool
+    , not (not _ || p) :: Bool
+    , not (not _ || False) :: Bool
+    , not (not _ || True) :: Bool
+    , not (not _ || not _) :: Bool
+    , not (_ && p) :: Bool
+    , not (_ && False) :: Bool
+    , not (_ && True) :: Bool
+    , not (_ && not _) :: Bool
+    , not (q || _) :: Bool
+    , not (not p || _) :: Bool
+    , not (not False || _) :: Bool
+    , not (not True || _) :: Bool
+    , not (not (not _) || _) :: Bool
+    , not ((_ || _) || _) :: Bool
+    , not (p && _) :: Bool
+    , not (False && _) :: Bool
+    , not (True && _) :: Bool
+    , not (not _ && _) :: Bool
+    , not (_ ==> _) :: Bool
+    , not (_ == x) :: Bool
+    , not (_ == 0) :: Bool
+    , not (_ == id _) :: Bool
+    , not (x == _) :: Bool
+    , not (0 == _) :: Bool
+    , not (id _ == _) :: Bool
+    , not (_ == p) :: Bool
+    , not (_ == False) :: Bool
+    , not (_ == True) :: Bool
+    , not (_ == not _) :: Bool
+    , not (p == _) :: Bool
+    , not (False == _) :: Bool
+    , not (True == _) :: Bool
+    , not (not _ == _) :: Bool
+    , not (_ <= _) :: Bool
+    , not (_ <= _) :: Bool
+    , not (odd x) :: Bool
+    , not (odd 0) :: Bool
+    , not (odd (id _)) :: Bool
+    , not (even x) :: Bool
+    , not (even 0) :: Bool
+    , not (even (id _)) :: Bool
+    , not (elem _ xs) :: Bool
+    , not (elem _ []) :: Bool
+    , not (elem _ (_:_)) :: Bool
+    , not (elem x _) :: Bool
+    , not (elem 0 _) :: Bool
+    , not (elem (id _) _) :: Bool
+    , _ || r :: Bool
+    , _ || not q :: Bool
+    , _ || not (not p) :: Bool
+    , _ || not (not False) :: Bool
+    , _ || not (not True) :: Bool
+    , _ || not (not (not _)) :: Bool
+    , _ || not (_ || _) :: Bool
+    , _ || (_ || p) :: Bool
+    , _ || (_ || False) :: Bool
+    , _ || (_ || True) :: Bool
+    , _ || (_ || not _) :: Bool
+    , _ || (p || _) :: Bool
+    , _ || (False || _) :: Bool
+    , _ || (True || _) :: Bool
+    , _ || (not _ || _) :: Bool
+    , _ || _ && _ :: Bool
+    , _ || _ == _ :: Bool
+    , _ || _ == _ :: Bool
+    , _ || odd _ :: Bool
+    , _ || even _ :: Bool
+    , _ || elem _ _ :: Bool
+    , p || q :: Bool
+    , p || not p :: Bool
+    , p || not False :: Bool
+    , p || not True :: Bool
+    , p || not (not _) :: Bool
+    , p || (_ || _) :: Bool
+    , False || q :: Bool
+    , False || not p :: Bool
+    , False || not False :: Bool
+    , False || not True :: Bool
+    , False || not (not _) :: Bool
+    , False || (_ || _) :: Bool
+    , True || q :: Bool
+    , True || not p :: Bool
+    , True || not False :: Bool
+    , True || not True :: Bool
+    , True || not (not _) :: Bool
+    , True || (_ || _) :: Bool
+    , not _ || q :: Bool
+    , not _ || not p :: Bool
+    , not _ || not False :: Bool
+    , not _ || not True :: Bool
+    , not _ || not (not _) :: Bool
+    , not _ || (_ || _) :: Bool
+    , _ && q :: Bool
+    , _ && not p :: Bool
+    , _ && not False :: Bool
+    , _ && not True :: Bool
+    , _ && not (not _) :: Bool
+    , _ && (_ || _) :: Bool
+    , q || p :: Bool
+    , q || False :: Bool
+    , q || True :: Bool
+    , q || not _ :: Bool
+    , not p || p :: Bool
+    , not p || False :: Bool
+    , not p || True :: Bool
+    , not p || not _ :: Bool
+    , not False || p :: Bool
+    , not False || False :: Bool
+    , not False || True :: Bool
+    , not False || not _ :: Bool
+    , not True || p :: Bool
+    , not True || False :: Bool
+    , not True || True :: Bool
+    , not True || not _ :: Bool
+    , not (not _) || p :: Bool
+    , not (not _) || False :: Bool
+    , not (not _) || True :: Bool
+    , not (not _) || not _ :: Bool
+    , (_ || _) || p :: Bool
+    , (_ || _) || False :: Bool
+    , (_ || _) || True :: Bool
+    , (_ || _) || not _ :: Bool
+    , p && p :: Bool
+    , p && False :: Bool
+    , p && True :: Bool
+    , p && not _ :: Bool
+    , False && p :: Bool
+    , False && False :: Bool
+    , False && True :: Bool
+    , False && not _ :: Bool
+    , True && p :: Bool
+    , True && False :: Bool
+    , True && True :: Bool
+    , True && not _ :: Bool
+    , not _ && p :: Bool
+    , not _ && False :: Bool
+    , not _ && True :: Bool
+    , not _ && not _ :: Bool
+    , _ ==> p :: Bool
+    , _ ==> False :: Bool
+    , _ ==> True :: Bool
+    , _ ==> not _ :: Bool
+    , r || _ :: Bool
+    , not q || _ :: Bool
+    , not (not p) || _ :: Bool
+    , not (not False) || _ :: Bool
+    , not (not True) || _ :: Bool
+    , not (not (not _)) || _ :: Bool
+    , not (_ || _) || _ :: Bool
+    , (_ || p) || _ :: Bool
+    , (_ || False) || _ :: Bool
+    , (_ || True) || _ :: Bool
+    , (_ || not _) || _ :: Bool
+    , (p || _) || _ :: Bool
+    , (False || _) || _ :: Bool
+    , (True || _) || _ :: Bool
+    , (not _ || _) || _ :: Bool
+    , _ && _ || _ :: Bool
+    , _ == _ || _ :: Bool
+    , _ == _ || _ :: Bool
+    , odd _ || _ :: Bool
+    , even _ || _ :: Bool
+    , elem _ _ || _ :: Bool
+    , q && _ :: Bool
+    , not p && _ :: Bool
+    , not False && _ :: Bool
+    , not True && _ :: Bool
+    , not (not _) && _ :: Bool
+    , (_ || _) && _ :: Bool
+    , p ==> _ :: Bool
+    , False ==> _ :: Bool
+    , True ==> _ :: Bool
+    , not _ ==> _ :: Bool
+    , _ == y :: Bool
+    , _ == 1 :: Bool
+    , _ == id x :: Bool
+    , _ == id 0 :: Bool
+    , _ == id (id _) :: Bool
+    , _ == negate _ :: Bool
+    , _ == abs _ :: Bool
+    , _ == _ + _ :: Bool
+    , _ == head _ :: Bool
+    , _ == ord _ :: Bool
+    , x == x :: Bool
+    , x == 0 :: Bool
+    , x == id _ :: Bool
+    , 0 == x :: Bool
+    , 0 == 0 :: Bool
+    , 0 == id _ :: Bool
+    , id _ == x :: Bool
+    , id _ == 0 :: Bool
+    , id _ == id _ :: Bool
+    , y == _ :: Bool
+    , 1 == _ :: Bool
+    , id x == _ :: Bool
+    , id 0 == _ :: Bool
+    , id (id _) == _ :: Bool
+    , negate _ == _ :: Bool
+    , abs _ == _ :: Bool
+    , _ + _ == _ :: Bool
+    , head _ == _ :: Bool
+    , ord _ == _ :: Bool
+    , _ == q :: Bool
+    , _ == not p :: Bool
+    , _ == not False :: Bool
+    , _ == not True :: Bool
+    , _ == not (not _) :: Bool
+    , _ == (_ || _) :: Bool
+    , p == p :: Bool
+    , p == False :: Bool
+    , p == True :: Bool
+    , p == not _ :: Bool
+    , False == p :: Bool
+    , False == False :: Bool
+    , False == True :: Bool
+    , False == not _ :: Bool
+    , True == p :: Bool
+    , True == False :: Bool
+    , True == True :: Bool
+    , True == not _ :: Bool
+    , not _ == p :: Bool
+    , not _ == False :: Bool
+    , not _ == True :: Bool
+    , not _ == not _ :: Bool
+    , q == _ :: Bool
+    , not p == _ :: Bool
+    , not False == _ :: Bool
+    , not True == _ :: Bool
+    , not (not _) == _ :: Bool
+    , (_ || _) == _ :: Bool
+    , _ <= x :: Bool
+    , _ <= 0 :: Bool
+    , _ <= id _ :: Bool
+    , x <= _ :: Bool
+    , 0 <= _ :: Bool
+    , id _ <= _ :: Bool
+    , _ <= p :: Bool
+    , _ <= False :: Bool
+    , _ <= True :: Bool
+    , _ <= not _ :: Bool
+    , p <= _ :: Bool
+    , False <= _ :: Bool
+    , True <= _ :: Bool
+    , not _ <= _ :: Bool
+    , _ < _ :: Bool
+    , _ < _ :: Bool
+    , odd y :: Bool
+    , odd 1 :: Bool
+    , odd (id x) :: Bool
+    , odd (id 0) :: Bool
+    , odd (id (id _)) :: Bool
+    , odd (negate _) :: Bool
+    , odd (abs _) :: Bool
+    , odd (_ + _) :: Bool
+    , odd (head _) :: Bool
+    , odd (ord _) :: Bool
+    , even y :: Bool
+    , even 1 :: Bool
+    , even (id x) :: Bool
+    , even (id 0) :: Bool
+    , even (id (id _)) :: Bool
+    , even (negate _) :: Bool
+    , even (abs _) :: Bool
+    , even (_ + _) :: Bool
+    , even (head _) :: Bool
+    , even (ord _) :: Bool
+    , elem _ ys :: Bool
+    , elem _ [0] :: Bool
+    , elem _ (_:xs) :: Bool
+    , elem _ [_] :: Bool
+    , elem _ (_:_:_) :: Bool
+    , elem _ (x:_) :: Bool
+    , elem _ (0:_) :: Bool
+    , elem _ (id _:_) :: Bool
+    , elem _ (tail _) :: Bool
+    , elem _ (_ ++ _) :: Bool
+    , elem x xs :: Bool
+    , elem x [] :: Bool
+    , elem x (_:_) :: Bool
+    , elem 0 xs :: Bool
+    , elem 0 [] :: Bool
+    , elem 0 (_:_) :: Bool
+    , elem (id _) xs :: Bool
+    , elem (id _) [] :: Bool
+    , elem (id _) (_:_) :: Bool
+    , elem y _ :: Bool
+    , elem 1 _ :: Bool
+    , elem (id x) _ :: Bool
+    , elem (id 0) _ :: Bool
+    , elem (id (id _)) _ :: Bool
+    , elem (negate _) _ :: Bool
+    , elem (abs _) _ :: Bool
+    , elem (_ + _) _ :: Bool
+    , elem (head _) _ :: Bool
+    , elem (ord _) _ :: Bool
+    , d' :: Char
+    , 'c' :: Char
+    , ys' :: [Int]
+    , [0,0,0,0] :: [Int]
+    , [0,0,1] :: [Int]
+    , [0,1,0] :: [Int]
+    , [0,-1] :: [Int]
+    , [1,0,0] :: [Int]
+    , [1,1] :: [Int]
+    , [-1,0] :: [Int]
+    , [2] :: [Int]
+    , _:xs' :: [Int]
+    , _:[0,0,0] :: [Int]
+    , _:[0,1] :: [Int]
+    , _:[1,0] :: [Int]
+    , _:[-1] :: [Int]
+    , _:_:zs :: [Int]
+    , _:_:[0,0] :: [Int]
+    , _:_:[1] :: [Int]
+    , _:_:_:ys :: [Int]
+    , _:_:_:[0] :: [Int]
+    , _:_:_:_:xs :: [Int]
+    , [_,_,_,_] :: [Int]
+    , _:_:_:_:_:_ :: [Int]
+    , _:_:_:x:_ :: [Int]
+    , _:_:_:0:_ :: [Int]
+    , _:_:_:id _:_ :: [Int]
+    , _:_:_:tail _ :: [Int]
+    , _:_:_:(_ ++ _) :: [Int]
+    , _:_:x:xs :: [Int]
+    , [_,_,x] :: [Int]
+    , _:_:x:_:_ :: [Int]
+    , _:_:0:xs :: [Int]
+    , [_,_,0] :: [Int]
+    , _:_:0:_:_ :: [Int]
+    , _:_:id _:xs :: [Int]
+    , [_,_,id _] :: [Int]
+    , _:_:id _:_:_ :: [Int]
+    , _:_:y:_ :: [Int]
+    , _:_:1:_ :: [Int]
+    , _:_:id x:_ :: [Int]
+    , _:_:id 0:_ :: [Int]
+    , _:_:id (id _):_ :: [Int]
+    , _:_:negate _:_ :: [Int]
+    , _:_:abs _:_ :: [Int]
+    , _:_:_ + _:_ :: [Int]
+    , _:_:head _:_ :: [Int]
+    , _:_:ord _:_ :: [Int]
+    , _:_:tail xs :: [Int]
+    , _:_:tail [] :: [Int]
+    , _:_:tail (_:_) :: [Int]
+    , _:_:(_ ++ xs) :: [Int]
+    , _:_:(_ ++ []) :: [Int]
+    , _:_:(_ ++ (_:_)) :: [Int]
+    , _:_:(xs ++ _) :: [Int]
+    , _:_:([] ++ _) :: [Int]
+    , _:_:((_:_) ++ _) :: [Int]
+    , _:_:sort _ :: [Int]
+    , _:_:insert _ _ :: [Int]
+    , _:x:ys :: [Int]
+    , _:x:[0] :: [Int]
+    , _:x:_:xs :: [Int]
+    , [_,x,_] :: [Int]
+    , _:x:_:_:_ :: [Int]
+    , _:x:x:_ :: [Int]
+    , _:x:0:_ :: [Int]
+    , _:x:id _:_ :: [Int]
+    , _:x:tail _ :: [Int]
+    , _:x:(_ ++ _) :: [Int]
+    , _:0:ys :: [Int]
+    , _:0:[0] :: [Int]
+    , _:0:_:xs :: [Int]
+    , [_,0,_] :: [Int]
+    , _:0:_:_:_ :: [Int]
+    , _:0:x:_ :: [Int]
+    , _:0:0:_ :: [Int]
+    , _:0:id _:_ :: [Int]
+    , _:0:tail _ :: [Int]
+    , _:0:(_ ++ _) :: [Int]
+    , _:id _:ys :: [Int]
+    , _:id _:[0] :: [Int]
+    , _:id _:_:xs :: [Int]
+    , [_,id _,_] :: [Int]
+    , _:id _:_:_:_ :: [Int]
+    , _:id _:x:_ :: [Int]
+    , _:id _:0:_ :: [Int]
+    , _:id _:id _:_ :: [Int]
+    , _:id _:tail _ :: [Int]
+    , _:id _:(_ ++ _) :: [Int]
+    , _:y:xs :: [Int]
+    , [_,y] :: [Int]
+    , _:y:_:_ :: [Int]
+    , _:1:xs :: [Int]
+    , [_,1] :: [Int]
+    , _:1:_:_ :: [Int]
+    , _:id x:xs :: [Int]
+    , [_,id x] :: [Int]
+    , _:id x:_:_ :: [Int]
+    , _:id 0:xs :: [Int]
+    , [_,id 0] :: [Int]
+    , _:id 0:_:_ :: [Int]
+    , _:id (id _):xs :: [Int]
+    , [_,id (id _)] :: [Int]
+    , _:id (id _):_:_ :: [Int]
+    , _:negate _:xs :: [Int]
+    , [_,negate _] :: [Int]
+    , _:negate _:_:_ :: [Int]
+    , _:abs _:xs :: [Int]
+    , [_,abs _] :: [Int]
+    , _:abs _:_:_ :: [Int]
+    , _:_ + _:xs :: [Int]
+    , [_,_ + _] :: [Int]
+    , _:_ + _:_:_ :: [Int]
+    , _:head _:xs :: [Int]
+    , [_,head _] :: [Int]
+    , _:head _:_:_ :: [Int]
+    , _:ord _:xs :: [Int]
+    , [_,ord _] :: [Int]
+    , _:ord _:_:_ :: [Int]
+    , _:z:_ :: [Int]
+    , _:(-1):_ :: [Int]
+    , _:id y:_ :: [Int]
+    , _:id 1:_ :: [Int]
+    , _:id (id x):_ :: [Int]
+    , _:id (id 0):_ :: [Int]
+    , _:id (id (id _)):_ :: [Int]
+    , _:id (negate _):_ :: [Int]
+    , _:id (abs _):_ :: [Int]
+    , _:id (_ + _):_ :: [Int]
+    , _:id (head _):_ :: [Int]
+    , _:id (ord _):_ :: [Int]
+    , _:negate x:_ :: [Int]
+    , _:negate 0:_ :: [Int]
+    , _:negate (id _):_ :: [Int]
+    , _:abs x:_ :: [Int]
+    , _:abs 0:_ :: [Int]
+    , _:abs (id _):_ :: [Int]
+    , _:_ + x:_ :: [Int]
+    , _:_ + 0:_ :: [Int]
+    , _:_ + id _:_ :: [Int]
+    , _:x + _:_ :: [Int]
+    , _:0 + _:_ :: [Int]
+    , _:id _ + _:_ :: [Int]
+    , _:_ * _:_ :: [Int]
+    , _:f _:_ :: [Int]
+    , _:head xs:_ :: [Int]
+    , _:head []:_ :: [Int]
+    , _:head (_:_):_ :: [Int]
+    , _:ord c:_ :: [Int]
+    , _:ord 'a':_ :: [Int]
+    , _:tail ys :: [Int]
+    , _:tail [0] :: [Int]
+    , _:tail (_:xs) :: [Int]
+    , _:tail [_] :: [Int]
+    , _:tail (_:_:_) :: [Int]
+    , _:tail (x:_) :: [Int]
+    , _:tail (0:_) :: [Int]
+    , _:tail (id _:_) :: [Int]
+    , _:tail (tail _) :: [Int]
+    , _:tail (_ ++ _) :: [Int]
+    , _:(_ ++ ys) :: [Int]
+    , _:(_ ++ [0]) :: [Int]
+    , _:(_ ++ (_:xs)) :: [Int]
+    , _:(_ ++ [_]) :: [Int]
+    , _:(_ ++ (_:_:_)) :: [Int]
+    , _:(_ ++ (x:_)) :: [Int]
+    , _:(_ ++ (0:_)) :: [Int]
+    , _:(_ ++ (id _:_)) :: [Int]
+    , _:(_ ++ tail _) :: [Int]
+    , _:(_ ++ (_ ++ _)) :: [Int]
+    , _:(xs ++ xs) :: [Int]
+    , _:(xs ++ []) :: [Int]
+    , _:(xs ++ (_:_)) :: [Int]
+    , _:([] ++ xs) :: [Int]
+    , _:([] ++ []) :: [Int]
+    , _:([] ++ (_:_)) :: [Int]
+    , _:((_:_) ++ xs) :: [Int]
+    , _:((_:_) ++ []) :: [Int]
+    , _:((_:_) ++ (_:_)) :: [Int]
+    , _:(ys ++ _) :: [Int]
+    , _:([0] ++ _) :: [Int]
+    , _:((_:xs) ++ _) :: [Int]
+    , _:([_] ++ _) :: [Int]
+    , _:((_:_:_) ++ _) :: [Int]
+    , _:((x:_) ++ _) :: [Int]
+    , _:((0:_) ++ _) :: [Int]
+    , _:((id _:_) ++ _) :: [Int]
+    , _:(tail _ ++ _) :: [Int]
+    , _:((_ ++ _) ++ _) :: [Int]
+    , _:sort xs :: [Int]
+    , _:sort [] :: [Int]
+    , _:sort (_:_) :: [Int]
+    , _:insert _ xs :: [Int]
+    , _:insert _ [] :: [Int]
+    , _:insert _ (_:_) :: [Int]
+    , _:insert x _ :: [Int]
+    , _:insert 0 _ :: [Int]
+    , _:insert (id _) _ :: [Int]
+    , x:zs :: [Int]
+    , x:[0,0] :: [Int]
+    , x:[1] :: [Int]
+    , x:_:ys :: [Int]
+    , x:_:[0] :: [Int]
+    , x:_:_:xs :: [Int]
+    , [x,_,_] :: [Int]
+    , x:_:_:_:_ :: [Int]
+    , x:_:x:_ :: [Int]
+    , x:_:0:_ :: [Int]
+    , x:_:id _:_ :: [Int]
+    , x:_:tail _ :: [Int]
+    , x:_:(_ ++ _) :: [Int]
+    , x:x:xs :: [Int]
+    , [x,x] :: [Int]
+    , x:x:_:_ :: [Int]
+    , x:0:xs :: [Int]
+    , [x,0] :: [Int]
+    , x:0:_:_ :: [Int]
+    , x:id _:xs :: [Int]
+    , [x,id _] :: [Int]
+    , x:id _:_:_ :: [Int]
+    , x:y:_ :: [Int]
+    , x:1:_ :: [Int]
+    , x:id x:_ :: [Int]
+    , x:id 0:_ :: [Int]
+    , x:id (id _):_ :: [Int]
+    , x:negate _:_ :: [Int]
+    , x:abs _:_ :: [Int]
+    , x:_ + _:_ :: [Int]
+    , x:head _:_ :: [Int]
+    , x:ord _:_ :: [Int]
+    , x:tail xs :: [Int]
+    , x:tail [] :: [Int]
+    , x:tail (_:_) :: [Int]
+    , x:(_ ++ xs) :: [Int]
+    , x:(_ ++ []) :: [Int]
+    , x:(_ ++ (_:_)) :: [Int]
+    , x:(xs ++ _) :: [Int]
+    , x:([] ++ _) :: [Int]
+    , x:((_:_) ++ _) :: [Int]
+    , x:sort _ :: [Int]
+    , x:insert _ _ :: [Int]
+    , 0:zs :: [Int]
+    , 0:[0,0] :: [Int]
+    , 0:[1] :: [Int]
+    , 0:_:ys :: [Int]
+    , 0:_:[0] :: [Int]
+    , 0:_:_:xs :: [Int]
+    , [0,_,_] :: [Int]
+    , 0:_:_:_:_ :: [Int]
+    , 0:_:x:_ :: [Int]
+    , 0:_:0:_ :: [Int]
+    , 0:_:id _:_ :: [Int]
+    , 0:_:tail _ :: [Int]
+    , 0:_:(_ ++ _) :: [Int]
+    , 0:x:xs :: [Int]
+    , [0,x] :: [Int]
+    , 0:x:_:_ :: [Int]
+    , 0:0:xs :: [Int]
+    , [0,0] :: [Int]
+    , 0:0:_:_ :: [Int]
+    , 0:id _:xs :: [Int]
+    , [0,id _] :: [Int]
+    , 0:id _:_:_ :: [Int]
+    , 0:y:_ :: [Int]
+    , 0:1:_ :: [Int]
+    , 0:id x:_ :: [Int]
+    , 0:id 0:_ :: [Int]
+    , 0:id (id _):_ :: [Int]
+    , 0:negate _:_ :: [Int]
+    , 0:abs _:_ :: [Int]
+    , 0:_ + _:_ :: [Int]
+    , 0:head _:_ :: [Int]
+    , 0:ord _:_ :: [Int]
+    , 0:tail xs :: [Int]
+    , 0:tail [] :: [Int]
+    , 0:tail (_:_) :: [Int]
+    , 0:(_ ++ xs) :: [Int]
+    , 0:(_ ++ []) :: [Int]
+    , 0:(_ ++ (_:_)) :: [Int]
+    , 0:(xs ++ _) :: [Int]
+    , 0:([] ++ _) :: [Int]
+    , 0:((_:_) ++ _) :: [Int]
+    , 0:sort _ :: [Int]
+    , 0:insert _ _ :: [Int]
+    , id _:zs :: [Int]
+    , id _:[0,0] :: [Int]
+    , id _:[1] :: [Int]
+    , id _:_:ys :: [Int]
+    , id _:_:[0] :: [Int]
+    , id _:_:_:xs :: [Int]
+    , [id _,_,_] :: [Int]
+    , id _:_:_:_:_ :: [Int]
+    , id _:_:x:_ :: [Int]
+    , id _:_:0:_ :: [Int]
+    , id _:_:id _:_ :: [Int]
+    , id _:_:tail _ :: [Int]
+    , id _:_:(_ ++ _) :: [Int]
+    , id _:x:xs :: [Int]
+    , [id _,x] :: [Int]
+    , id _:x:_:_ :: [Int]
+    , id _:0:xs :: [Int]
+    , [id _,0] :: [Int]
+    , id _:0:_:_ :: [Int]
+    , id _:id _:xs :: [Int]
+    , [id _,id _] :: [Int]
+    , id _:id _:_:_ :: [Int]
+    , id _:y:_ :: [Int]
+    , id _:1:_ :: [Int]
+    , id _:id x:_ :: [Int]
+    , id _:id 0:_ :: [Int]
+    , id _:id (id _):_ :: [Int]
+    , id _:negate _:_ :: [Int]
+    , id _:abs _:_ :: [Int]
+    , id _:_ + _:_ :: [Int]
+    , id _:head _:_ :: [Int]
+    , id _:ord _:_ :: [Int]
+    , id _:tail xs :: [Int]
+    , id _:tail [] :: [Int]
+    , id _:tail (_:_) :: [Int]
+    , id _:(_ ++ xs) :: [Int]
+    , id _:(_ ++ []) :: [Int]
+    , id _:(_ ++ (_:_)) :: [Int]
+    , id _:(xs ++ _) :: [Int]
+    , id _:([] ++ _) :: [Int]
+    , id _:((_:_) ++ _) :: [Int]
+    , id _:sort _ :: [Int]
+    , id _:insert _ _ :: [Int]
+    , y:ys :: [Int]
+    , y:[0] :: [Int]
+    , y:_:xs :: [Int]
+    , [y,_] :: [Int]
+    , y:_:_:_ :: [Int]
+    , y:x:_ :: [Int]
+    , y:0:_ :: [Int]
+    , y:id _:_ :: [Int]
+    , y:tail _ :: [Int]
+    , y:(_ ++ _) :: [Int]
+    , 1:ys :: [Int]
+    , 1:[0] :: [Int]
+    , 1:_:xs :: [Int]
+    , [1,_] :: [Int]
+    , 1:_:_:_ :: [Int]
+    , 1:x:_ :: [Int]
+    , 1:0:_ :: [Int]
+    , 1:id _:_ :: [Int]
+    , 1:tail _ :: [Int]
+    , 1:(_ ++ _) :: [Int]
+    , id x:ys :: [Int]
+    , id x:[0] :: [Int]
+    , id x:_:xs :: [Int]
+    , [id x,_] :: [Int]
+    , id x:_:_:_ :: [Int]
+    , id x:x:_ :: [Int]
+    , id x:0:_ :: [Int]
+    , id x:id _:_ :: [Int]
+    , id x:tail _ :: [Int]
+    , id x:(_ ++ _) :: [Int]
+    , id 0:ys :: [Int]
+    , id 0:[0] :: [Int]
+    , id 0:_:xs :: [Int]
+    , [id 0,_] :: [Int]
+    , id 0:_:_:_ :: [Int]
+    , id 0:x:_ :: [Int]
+    , id 0:0:_ :: [Int]
+    , id 0:id _:_ :: [Int]
+    , id 0:tail _ :: [Int]
+    , id 0:(_ ++ _) :: [Int]
+    , id (id _):ys :: [Int]
+    , id (id _):[0] :: [Int]
+    , id (id _):_:xs :: [Int]
+    , [id (id _),_] :: [Int]
+    , id (id _):_:_:_ :: [Int]
+    , id (id _):x:_ :: [Int]
+    , id (id _):0:_ :: [Int]
+    , id (id _):id _:_ :: [Int]
+    , id (id _):tail _ :: [Int]
+    , id (id _):(_ ++ _) :: [Int]
+    , negate _:ys :: [Int]
+    , negate _:[0] :: [Int]
+    , negate _:_:xs :: [Int]
+    , [negate _,_] :: [Int]
+    , negate _:_:_:_ :: [Int]
+    , negate _:x:_ :: [Int]
+    , negate _:0:_ :: [Int]
+    , negate _:id _:_ :: [Int]
+    , negate _:tail _ :: [Int]
+    , negate _:(_ ++ _) :: [Int]
+    , abs _:ys :: [Int]
+    , abs _:[0] :: [Int]
+    , abs _:_:xs :: [Int]
+    , [abs _,_] :: [Int]
+    , abs _:_:_:_ :: [Int]
+    , abs _:x:_ :: [Int]
+    , abs _:0:_ :: [Int]
+    , abs _:id _:_ :: [Int]
+    , abs _:tail _ :: [Int]
+    , abs _:(_ ++ _) :: [Int]
+    , _ + _:ys :: [Int]
+    , _ + _:[0] :: [Int]
+    , _ + _:_:xs :: [Int]
+    , [_ + _,_] :: [Int]
+    , _ + _:_:_:_ :: [Int]
+    , _ + _:x:_ :: [Int]
+    , _ + _:0:_ :: [Int]
+    , _ + _:id _:_ :: [Int]
+    , _ + _:tail _ :: [Int]
+    , _ + _:(_ ++ _) :: [Int]
+    , head _:ys :: [Int]
+    , head _:[0] :: [Int]
+    , head _:_:xs :: [Int]
+    , [head _,_] :: [Int]
+    , head _:_:_:_ :: [Int]
+    , head _:x:_ :: [Int]
+    , head _:0:_ :: [Int]
+    , head _:id _:_ :: [Int]
+    , head _:tail _ :: [Int]
+    , head _:(_ ++ _) :: [Int]
+    , ord _:ys :: [Int]
+    , ord _:[0] :: [Int]
+    , ord _:_:xs :: [Int]
+    , [ord _,_] :: [Int]
+    , ord _:_:_:_ :: [Int]
+    , ord _:x:_ :: [Int]
+    , ord _:0:_ :: [Int]
+    , ord _:id _:_ :: [Int]
+    , ord _:tail _ :: [Int]
+    , ord _:(_ ++ _) :: [Int]
+    , z:xs :: [Int]
+    , [z] :: [Int]
+    , z:_:_ :: [Int]
+    , (-1):xs :: [Int]
+    , [-1] :: [Int]
+    , (-1):_:_ :: [Int]
+    , id y:xs :: [Int]
+    , [id y] :: [Int]
+    , id y:_:_ :: [Int]
+    , id 1:xs :: [Int]
+    , [id 1] :: [Int]
+    , id 1:_:_ :: [Int]
+    , id (id x):xs :: [Int]
+    , [id (id x)] :: [Int]
+    , id (id x):_:_ :: [Int]
+    , id (id 0):xs :: [Int]
+    , [id (id 0)] :: [Int]
+    , id (id 0):_:_ :: [Int]
+    , id (id (id _)):xs :: [Int]
+    , [id (id (id _))] :: [Int]
+    , id (id (id _)):_:_ :: [Int]
+    , id (negate _):xs :: [Int]
+    , [id (negate _)] :: [Int]
+    , id (negate _):_:_ :: [Int]
+    , id (abs _):xs :: [Int]
+    , [id (abs _)] :: [Int]
+    , id (abs _):_:_ :: [Int]
+    , id (_ + _):xs :: [Int]
+    , [id (_ + _)] :: [Int]
+    , id (_ + _):_:_ :: [Int]
+    , id (head _):xs :: [Int]
+    , [id (head _)] :: [Int]
+    , id (head _):_:_ :: [Int]
+    , id (ord _):xs :: [Int]
+    , [id (ord _)] :: [Int]
+    , id (ord _):_:_ :: [Int]
+    , negate x:xs :: [Int]
+    , [negate x] :: [Int]
+    , negate x:_:_ :: [Int]
+    , negate 0:xs :: [Int]
+    , [negate 0] :: [Int]
+    , negate 0:_:_ :: [Int]
+    , negate (id _):xs :: [Int]
+    , [negate (id _)] :: [Int]
+    , negate (id _):_:_ :: [Int]
+    , abs x:xs :: [Int]
+    , [abs x] :: [Int]
+    , abs x:_:_ :: [Int]
+    , abs 0:xs :: [Int]
+    , [abs 0] :: [Int]
+    , abs 0:_:_ :: [Int]
+    , abs (id _):xs :: [Int]
+    , [abs (id _)] :: [Int]
+    , abs (id _):_:_ :: [Int]
+    , _ + x:xs :: [Int]
+    , [_ + x] :: [Int]
+    , _ + x:_:_ :: [Int]
+    , _ + 0:xs :: [Int]
+    , [_ + 0] :: [Int]
+    , _ + 0:_:_ :: [Int]
+    , _ + id _:xs :: [Int]
+    , [_ + id _] :: [Int]
+    , _ + id _:_:_ :: [Int]
+    , x + _:xs :: [Int]
+    , [x + _] :: [Int]
+    , x + _:_:_ :: [Int]
+    , 0 + _:xs :: [Int]
+    , [0 + _] :: [Int]
+    , 0 + _:_:_ :: [Int]
+    , id _ + _:xs :: [Int]
+    , [id _ + _] :: [Int]
+    , id _ + _:_:_ :: [Int]
+    , _ * _:xs :: [Int]
+    , [_ * _] :: [Int]
+    , _ * _:_:_ :: [Int]
+    , f _:xs :: [Int]
+    , [f _] :: [Int]
+    , f _:_:_ :: [Int]
+    , head xs:xs :: [Int]
+    , [head xs] :: [Int]
+    , head xs:_:_ :: [Int]
+    , head []:xs :: [Int]
+    , [head []] :: [Int]
+    , head []:_:_ :: [Int]
+    , head (_:_):xs :: [Int]
+    , [head (_:_)] :: [Int]
+    , head (_:_):_:_ :: [Int]
+    , ord c:xs :: [Int]
+    , [ord c] :: [Int]
+    , ord c:_:_ :: [Int]
+    , ord 'a':xs :: [Int]
+    , [ord 'a'] :: [Int]
+    , ord 'a':_:_ :: [Int]
+    , x':_ :: [Int]
+    , 2:_ :: [Int]
+    , id z:_ :: [Int]
+    , id (-1):_ :: [Int]
+    , id (id y):_ :: [Int]
+    , id (id 1):_ :: [Int]
+    , id (id (id x)):_ :: [Int]
+    , id (id (id 0)):_ :: [Int]
+    , id (id (id (id _))):_ :: [Int]
+    , id (id (negate _)):_ :: [Int]
+    , id (id (abs _)):_ :: [Int]
+    , id (id (_ + _)):_ :: [Int]
+    , id (id (head _)):_ :: [Int]
+    , id (id (ord _)):_ :: [Int]
+    , id (negate x):_ :: [Int]
+    , id (negate 0):_ :: [Int]
+    , id (negate (id _)):_ :: [Int]
+    , id (abs x):_ :: [Int]
+    , id (abs 0):_ :: [Int]
+    , id (abs (id _)):_ :: [Int]
+    , id (_ + x):_ :: [Int]
+    , id (_ + 0):_ :: [Int]
+    , id (_ + id _):_ :: [Int]
+    , id (x + _):_ :: [Int]
+    , id (0 + _):_ :: [Int]
+    , id (id _ + _):_ :: [Int]
+    , id (_ * _):_ :: [Int]
+    , id (f _):_ :: [Int]
+    , id (head xs):_ :: [Int]
+    , id (head []):_ :: [Int]
+    , id (head (_:_)):_ :: [Int]
+    , id (ord c):_ :: [Int]
+    , id (ord 'a'):_ :: [Int]
+    , negate y:_ :: [Int]
+    , negate 1:_ :: [Int]
+    , negate (id x):_ :: [Int]
+    , negate (id 0):_ :: [Int]
+    , negate (id (id _)):_ :: [Int]
+    , negate (negate _):_ :: [Int]
+    , negate (abs _):_ :: [Int]
+    , negate (_ + _):_ :: [Int]
+    , negate (head _):_ :: [Int]
+    , negate (ord _):_ :: [Int]
+    , abs y:_ :: [Int]
+    , abs 1:_ :: [Int]
+    , abs (id x):_ :: [Int]
+    , abs (id 0):_ :: [Int]
+    , abs (id (id _)):_ :: [Int]
+    , abs (negate _):_ :: [Int]
+    , abs (abs _):_ :: [Int]
+    , abs (_ + _):_ :: [Int]
+    , abs (head _):_ :: [Int]
+    , abs (ord _):_ :: [Int]
+    , _ + y:_ :: [Int]
+    , _ + 1:_ :: [Int]
+    , _ + id x:_ :: [Int]
+    , _ + id 0:_ :: [Int]
+    , _ + id (id _):_ :: [Int]
+    , _ + negate _:_ :: [Int]
+    , _ + abs _:_ :: [Int]
+    , _ + (_ + _):_ :: [Int]
+    , _ + head _:_ :: [Int]
+    , _ + ord _:_ :: [Int]
+    , x + x:_ :: [Int]
+    , x + 0:_ :: [Int]
+    , x + id _:_ :: [Int]
+    , 0 + x:_ :: [Int]
+    , 0 + 0:_ :: [Int]
+    , 0 + id _:_ :: [Int]
+    , id _ + x:_ :: [Int]
+    , id _ + 0:_ :: [Int]
+    , id _ + id _:_ :: [Int]
+    , _ * x:_ :: [Int]
+    , _ * 0:_ :: [Int]
+    , _ * id _:_ :: [Int]
+    , f x:_ :: [Int]
+    , f 0:_ :: [Int]
+    , f (id _):_ :: [Int]
+    , y + _:_ :: [Int]
+    , 1 + _:_ :: [Int]
+    , id x + _:_ :: [Int]
+    , id 0 + _:_ :: [Int]
+    , id (id _) + _:_ :: [Int]
+    , negate _ + _:_ :: [Int]
+    , abs _ + _:_ :: [Int]
+    , (_ + _) + _:_ :: [Int]
+    , head _ + _:_ :: [Int]
+    , ord _ + _:_ :: [Int]
+    , x * _:_ :: [Int]
+    , 0 * _:_ :: [Int]
+    , id _ * _:_ :: [Int]
+    , g _:_ :: [Int]
+    , head ys:_ :: [Int]
+    , head [0]:_ :: [Int]
+    , head (_:xs):_ :: [Int]
+    , head [_]:_ :: [Int]
+    , head (_:_:_):_ :: [Int]
+    , head (x:_):_ :: [Int]
+    , head (0:_):_ :: [Int]
+    , head (id _:_):_ :: [Int]
+    , head (tail _):_ :: [Int]
+    , head (_ ++ _):_ :: [Int]
+    , ord d:_ :: [Int]
+    , ord ' ':_ :: [Int]
+    , tail zs :: [Int]
+    , tail [0,0] :: [Int]
+    , tail [1] :: [Int]
+    , tail (_:ys) :: [Int]
+    , tail (_:[0]) :: [Int]
+    , tail (_:_:xs) :: [Int]
+    , tail [_,_] :: [Int]
+    , tail (_:_:_:_) :: [Int]
+    , tail (_:x:_) :: [Int]
+    , tail (_:0:_) :: [Int]
+    , tail (_:id _:_) :: [Int]
+    , tail (_:tail _) :: [Int]
+    , tail (_:(_ ++ _)) :: [Int]
+    , tail (x:xs) :: [Int]
+    , tail [x] :: [Int]
+    , tail (x:_:_) :: [Int]
+    , tail (0:xs) :: [Int]
+    , tail [0] :: [Int]
+    , tail (0:_:_) :: [Int]
+    , tail (id _:xs) :: [Int]
+    , tail [id _] :: [Int]
+    , tail (id _:_:_) :: [Int]
+    , tail (y:_) :: [Int]
+    , tail (1:_) :: [Int]
+    , tail (id x:_) :: [Int]
+    , tail (id 0:_) :: [Int]
+    , tail (id (id _):_) :: [Int]
+    , tail (negate _:_) :: [Int]
+    , tail (abs _:_) :: [Int]
+    , tail (_ + _:_) :: [Int]
+    , tail (head _:_) :: [Int]
+    , tail (ord _:_) :: [Int]
+    , tail (tail xs) :: [Int]
+    , tail (tail []) :: [Int]
+    , tail (tail (_:_)) :: [Int]
+    , tail (_ ++ xs) :: [Int]
+    , tail (_ ++ []) :: [Int]
+    , tail (_ ++ (_:_)) :: [Int]
+    , tail (xs ++ _) :: [Int]
+    , tail ([] ++ _) :: [Int]
+    , tail ((_:_) ++ _) :: [Int]
+    , tail (sort _) :: [Int]
+    , tail (insert _ _) :: [Int]
+    , _ ++ zs :: [Int]
+    , _ ++ [0,0] :: [Int]
+    , _ ++ [1] :: [Int]
+    , _ ++ (_:ys) :: [Int]
+    , _ ++ (_:[0]) :: [Int]
+    , _ ++ (_:_:xs) :: [Int]
+    , _ ++ [_,_] :: [Int]
+    , _ ++ (_:_:_:_) :: [Int]
+    , _ ++ (_:x:_) :: [Int]
+    , _ ++ (_:0:_) :: [Int]
+    , _ ++ (_:id _:_) :: [Int]
+    , _ ++ (_:tail _) :: [Int]
+    , _ ++ (_:(_ ++ _)) :: [Int]
+    , _ ++ (x:xs) :: [Int]
+    , _ ++ [x] :: [Int]
+    , _ ++ (x:_:_) :: [Int]
+    , _ ++ (0:xs) :: [Int]
+    , _ ++ [0] :: [Int]
+    , _ ++ (0:_:_) :: [Int]
+    , _ ++ (id _:xs) :: [Int]
+    , _ ++ [id _] :: [Int]
+    , _ ++ (id _:_:_) :: [Int]
+    , _ ++ (y:_) :: [Int]
+    , _ ++ (1:_) :: [Int]
+    , _ ++ (id x:_) :: [Int]
+    , _ ++ (id 0:_) :: [Int]
+    , _ ++ (id (id _):_) :: [Int]
+    , _ ++ (negate _:_) :: [Int]
+    , _ ++ (abs _:_) :: [Int]
+    , _ ++ (_ + _:_) :: [Int]
+    , _ ++ (head _:_) :: [Int]
+    , _ ++ (ord _:_) :: [Int]
+    , _ ++ tail xs :: [Int]
+    , _ ++ tail [] :: [Int]
+    , _ ++ tail (_:_) :: [Int]
+    , _ ++ (_ ++ xs) :: [Int]
+    , _ ++ (_ ++ []) :: [Int]
+    , _ ++ (_ ++ (_:_)) :: [Int]
+    , _ ++ (xs ++ _) :: [Int]
+    , _ ++ ([] ++ _) :: [Int]
+    , _ ++ ((_:_) ++ _) :: [Int]
+    , _ ++ sort _ :: [Int]
+    , _ ++ insert _ _ :: [Int]
+    , xs ++ ys :: [Int]
+    , xs ++ [0] :: [Int]
+    , xs ++ (_:xs) :: [Int]
+    , xs ++ [_] :: [Int]
+    , xs ++ (_:_:_) :: [Int]
+    , xs ++ (x:_) :: [Int]
+    , xs ++ (0:_) :: [Int]
+    , xs ++ (id _:_) :: [Int]
+    , xs ++ tail _ :: [Int]
+    , xs ++ (_ ++ _) :: [Int]
+    , [] ++ ys :: [Int]
+    , [] ++ [0] :: [Int]
+    , [] ++ (_:xs) :: [Int]
+    , [] ++ [_] :: [Int]
+    , [] ++ (_:_:_) :: [Int]
+    , [] ++ (x:_) :: [Int]
+    , [] ++ (0:_) :: [Int]
+    , [] ++ (id _:_) :: [Int]
+    , [] ++ tail _ :: [Int]
+    , [] ++ (_ ++ _) :: [Int]
+    , (_:_) ++ ys :: [Int]
+    , (_:_) ++ [0] :: [Int]
+    , (_:_) ++ (_:xs) :: [Int]
+    , (_:_) ++ [_] :: [Int]
+    , (_:_) ++ (_:_:_) :: [Int]
+    , (_:_) ++ (x:_) :: [Int]
+    , (_:_) ++ (0:_) :: [Int]
+    , (_:_) ++ (id _:_) :: [Int]
+    , (_:_) ++ tail _ :: [Int]
+    , (_:_) ++ (_ ++ _) :: [Int]
+    , ys ++ xs :: [Int]
+    , ys ++ [] :: [Int]
+    , ys ++ (_:_) :: [Int]
+    , [0] ++ xs :: [Int]
+    , [0] ++ [] :: [Int]
+    , [0] ++ (_:_) :: [Int]
+    , (_:xs) ++ xs :: [Int]
+    , (_:xs) ++ [] :: [Int]
+    , (_:xs) ++ (_:_) :: [Int]
+    , [_] ++ xs :: [Int]
+    , [_] ++ [] :: [Int]
+    , [_] ++ (_:_) :: [Int]
+    , (_:_:_) ++ xs :: [Int]
+    , (_:_:_) ++ [] :: [Int]
+    , (_:_:_) ++ (_:_) :: [Int]
+    , (x:_) ++ xs :: [Int]
+    , (x:_) ++ [] :: [Int]
+    , (x:_) ++ (_:_) :: [Int]
+    , (0:_) ++ xs :: [Int]
+    , (0:_) ++ [] :: [Int]
+    , (0:_) ++ (_:_) :: [Int]
+    , (id _:_) ++ xs :: [Int]
+    , (id _:_) ++ [] :: [Int]
+    , (id _:_) ++ (_:_) :: [Int]
+    , tail _ ++ xs :: [Int]
+    , tail _ ++ [] :: [Int]
+    , tail _ ++ (_:_) :: [Int]
+    , (_ ++ _) ++ xs :: [Int]
+    , (_ ++ _) ++ [] :: [Int]
+    , (_ ++ _) ++ (_:_) :: [Int]
+    , zs ++ _ :: [Int]
+    , [0,0] ++ _ :: [Int]
+    , [1] ++ _ :: [Int]
+    , (_:ys) ++ _ :: [Int]
+    , (_:[0]) ++ _ :: [Int]
+    , (_:_:xs) ++ _ :: [Int]
+    , [_,_] ++ _ :: [Int]
+    , (_:_:_:_) ++ _ :: [Int]
+    , (_:x:_) ++ _ :: [Int]
+    , (_:0:_) ++ _ :: [Int]
+    , (_:id _:_) ++ _ :: [Int]
+    , (_:tail _) ++ _ :: [Int]
+    , (_:(_ ++ _)) ++ _ :: [Int]
+    , (x:xs) ++ _ :: [Int]
+    , [x] ++ _ :: [Int]
+    , (x:_:_) ++ _ :: [Int]
+    , (0:xs) ++ _ :: [Int]
+    , [0] ++ _ :: [Int]
+    , (0:_:_) ++ _ :: [Int]
+    , (id _:xs) ++ _ :: [Int]
+    , [id _] ++ _ :: [Int]
+    , (id _:_:_) ++ _ :: [Int]
+    , (y:_) ++ _ :: [Int]
+    , (1:_) ++ _ :: [Int]
+    , (id x:_) ++ _ :: [Int]
+    , (id 0:_) ++ _ :: [Int]
+    , (id (id _):_) ++ _ :: [Int]
+    , (negate _:_) ++ _ :: [Int]
+    , (abs _:_) ++ _ :: [Int]
+    , (_ + _:_) ++ _ :: [Int]
+    , (head _:_) ++ _ :: [Int]
+    , (ord _:_) ++ _ :: [Int]
+    , tail xs ++ _ :: [Int]
+    , tail [] ++ _ :: [Int]
+    , tail (_:_) ++ _ :: [Int]
+    , (_ ++ xs) ++ _ :: [Int]
+    , (_ ++ []) ++ _ :: [Int]
+    , (_ ++ (_:_)) ++ _ :: [Int]
+    , (xs ++ _) ++ _ :: [Int]
+    , ([] ++ _) ++ _ :: [Int]
+    , ((_:_) ++ _) ++ _ :: [Int]
+    , sort _ ++ _ :: [Int]
+    , insert _ _ ++ _ :: [Int]
+    , sort ys :: [Int]
+    , sort [0] :: [Int]
+    , sort (_:xs) :: [Int]
+    , sort [_] :: [Int]
+    , sort (_:_:_) :: [Int]
+    , sort (x:_) :: [Int]
+    , sort (0:_) :: [Int]
+    , sort (id _:_) :: [Int]
+    , sort (tail _) :: [Int]
+    , sort (_ ++ _) :: [Int]
+    , insert _ ys :: [Int]
+    , insert _ [0] :: [Int]
+    , insert _ (_:xs) :: [Int]
+    , insert _ [_] :: [Int]
+    , insert _ (_:_:_) :: [Int]
+    , insert _ (x:_) :: [Int]
+    , insert _ (0:_) :: [Int]
+    , insert _ (id _:_) :: [Int]
+    , insert _ (tail _) :: [Int]
+    , insert _ (_ ++ _) :: [Int]
+    , insert x xs :: [Int]
+    , insert x [] :: [Int]
+    , insert x (_:_) :: [Int]
+    , insert 0 xs :: [Int]
+    , insert 0 [] :: [Int]
+    , insert 0 (_:_) :: [Int]
+    , insert (id _) xs :: [Int]
+    , insert (id _) [] :: [Int]
+    , insert (id _) (_:_) :: [Int]
+    , insert y _ :: [Int]
+    , insert 1 _ :: [Int]
+    , insert (id x) _ :: [Int]
+    , insert (id 0) _ :: [Int]
+    , insert (id (id _)) _ :: [Int]
+    , insert (negate _) _ :: [Int]
+    , insert (abs _) _ :: [Int]
+    , insert (_ + _) _ :: [Int]
+    , insert (head _) _ :: [Int]
+    , insert (ord _) _ :: [Int]
+    , (z +) :: Int -> Int
+    , ((-1) +) :: Int -> Int
+    , (id y +) :: Int -> Int
+    , (id 1 +) :: Int -> Int
+    , (id (id x) +) :: Int -> Int
+    , (id (id 0) +) :: Int -> Int
+    , (id (id (id _)) +) :: Int -> Int
+    , (id (negate _) +) :: Int -> Int
+    , (id (abs _) +) :: Int -> Int
+    , (id (_ + _) +) :: Int -> Int
+    , (id (head _) +) :: Int -> Int
+    , (id (ord _) +) :: Int -> Int
+    , (negate x +) :: Int -> Int
+    , (negate 0 +) :: Int -> Int
+    , (negate (id _) +) :: Int -> Int
+    , (abs x +) :: Int -> Int
+    , (abs 0 +) :: Int -> Int
+    , (abs (id _) +) :: Int -> Int
+    , ((_ + x) +) :: Int -> Int
+    , ((_ + 0) +) :: Int -> Int
+    , ((_ + id _) +) :: Int -> Int
+    , ((x + _) +) :: Int -> Int
+    , ((0 + _) +) :: Int -> Int
+    , ((id _ + _) +) :: Int -> Int
+    , (_ * _ +) :: Int -> Int
+    , (f _ +) :: Int -> Int
+    , (head xs +) :: Int -> Int
+    , (head [] +) :: Int -> Int
+    , (head (_:_) +) :: Int -> Int
+    , (ord c +) :: Int -> Int
+    , (ord 'a' +) :: Int -> Int
+    , (y *) :: Int -> Int
+    , (1 *) :: Int -> Int
+    , (id x *) :: Int -> Int
+    , (id 0 *) :: Int -> Int
+    , (id (id _) *) :: Int -> Int
+    , (negate _ *) :: Int -> Int
+    , (abs _ *) :: Int -> Int
+    , ((_ + _) *) :: Int -> Int
+    , (head _ *) :: Int -> Int
+    , (ord _ *) :: Int -> Int
+    , h :: Int -> Int
+    , (q ||) :: Bool -> Bool
+    , (not p ||) :: Bool -> Bool
+    , (not False ||) :: Bool -> Bool
+    , (not True ||) :: Bool -> Bool
+    , (not (not _) ||) :: Bool -> Bool
+    , ((_ || _) ||) :: Bool -> Bool
+    , (p &&) :: Bool -> Bool
+    , (False &&) :: Bool -> Bool
+    , (True &&) :: Bool -> Bool
+    , (not _ &&) :: Bool -> Bool
+    , (_ ==>) :: Bool -> Bool
+    ]
+  , ...
+  ]
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,9 +2,29 @@
 =====================
 
 
-v1.0.12
--------
+v1.0.14 (January 2024)
+----------------------
 
+* `Data.Express`: add `>$$<`, `>$$` and `$$<`.
+
+* fix pretty-printing bug:
+  an expression encoding `x:y:([] ++ _) :: [Int]`
+  was being displayed as `[x,y,] ++ _ :: [Int]`.
+
+* `Data.Express.Fixtures`: update `-..`, `--..` and `--..-`.
+
+* improve pretty-printing
+
+* make ordering of `typesIn` consistent between GHC 9.8 and earlier versions
+
+* fix a test failure on GHC 9.6 (previous GHC versions unaffected)
+
+* simplify and improve testing, new benchmark and minor updates
+
+
+v1.0.12 (July 2023)
+-------------------
+
 * make ordering of `typesIn` consistent between GHC 9.6 and earlier versions
 
 * fix a test failure on GHC 9.6 (previous GHC versions unaffected)
@@ -17,8 +37,8 @@
 * miscellaneous improvements in build and CI scripts
 
 
-v1.0.10
--------
+v1.0.10 (April 2022)
+--------------------
 
 * show function-encoded Ordering case expressions exceptionally
 
@@ -29,8 +49,8 @@
 * minor updates in Makefile and CI scripts
 
 
-v1.0.8
-------
+v1.0.8 (September 2021)
+-----------------------
 
 * `Data.Express.Express.Derive`:
   fix generation of `-:` and `->:` in earlier GHC's.
@@ -39,8 +59,8 @@
   add `unboundVars`, `toBounded` and `toBoundedQ`.
 
 
-v1.0.6
-------
+v1.0.6 (September 2021)
+-----------------------
 
 * fix pretty printing of unapplied infixed variable functions:
   use `f :: ...`  instead of ``(`f`) :: ...``
@@ -51,8 +71,8 @@
 * minor fixes in README
 
 
-v1.0.4
-------
+v1.0.4 (July 2021)
+------------------
 
 * deeply encode `Ratio`s
 * add `Express (Complex a)` instance
@@ -60,8 +80,8 @@
 * `deriveName` now uses `x` for `Num` instances
 
 
-v1.0.2
-------
+v1.0.2 (July 2021)
+------------------
 
 * more Express instances:
 	- `Double` & `Float`
@@ -72,24 +92,24 @@
 * minor fix in README
 
 
-v1.0.0
-------
+v1.0.0 (July 2021)
+------------------
 
 This release indicates that the `Data.Express` API is now stable.
 
 * no changes since v0.2.0 or v0.1.16.
 
 
-v0.2.0
-------
+v0.2.0 (July 2021)
+------------------
 
 This release indicates that the `Data.Express` API is stable.
 
 * no changes since v0.1.16
 
 
-v0.1.16
--------
+v0.1.16 (July 2021)
+-------------------
 
 * add `five`, `six`, ... `twelve` to `Data.Express.Fixtures`.
 
@@ -101,8 +121,8 @@
 * 100% Haddock coverage on most modules including REPL examples.
 
 
-v0.1.14
--------
+v0.1.14 (June 2021)
+-------------------
 
 * permit and pretty-print `[<n>..<m>]` notations.
 
@@ -112,8 +132,8 @@
 	- before they were simply x, y, z
 
 
-v0.1.12
--------
+v0.1.12 (May 2021)
+------------------
 
 * `Data.Express.Fixtures`, add several symbols:
 	- `hh` and `hhE`;
@@ -130,8 +150,8 @@
 * Retire Travis as the CI
 
 
-v0.1.10
--------
+v0.1.10 (May 2021)
+------------------
 
 * add the `hasHole` and `isComplete` functions
 * add the `encompasses` function
@@ -144,8 +164,8 @@
 * add this changelog
 
 
-v0.1.8
-------
+v0.1.8 (April 2021)
+-------------------
 
 * slightly change behaviour of `canonicalVariations` and related functions.
 * add more fixtures and improve fixtures' documentation
@@ -153,8 +173,8 @@
 * use GitHub actions as CI
 
 
-v0.1.6
-------
+v0.1.6 (April 2021)
+-------------------
 
 * add `compareLexicographically` and `compareQuickly`
 * define behaviour of `canonicalVariations` for some undefined cases
@@ -162,8 +182,8 @@
 * improve tests
 
 
-v0.1.4
-------
+v0.1.4 (April 2021)
+-------------------
 
 * add the `fill` and `isFun` functions
 * `Data.Express.Fixtures`: more fixtures, define fixity
@@ -171,7 +191,8 @@
 * improve documentation, tests and lint
 
 
-v0.1.3
-------
+v0.1.3 (March 2020)
+-------------------
 
-See the git commit log for v0.1.3 and previous versions.
+See the git commit log for v0.1.3 and previous versions
+down to as early as February 2019.
diff --git a/eg/u-conjure.hs b/eg/u-conjure.hs
--- a/eg/u-conjure.hs
+++ b/eg/u-conjure.hs
@@ -4,7 +4,7 @@
 -- out of partially implemented functions.
 --
 --
--- Copyright (C) 2021 Rudy Matela
+-- Copyright (C) 2021-2024 Rudy Matela
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 --
 --
@@ -72,7 +72,7 @@
     , value "+" ((+) :: Int -> Int -> Int)
     , value "*" ((*) :: Int -> Int -> Int)
     , value "foldr" (foldr :: (Int -> Int -> Int) -> Int -> [Int] -> Int)
-    , value "enumFromTo" (enumFromTo :: Int -> Int -> [Int])
+    , value ".." (enumFromTo :: Int -> Int -> [Int])
     ]
 
   conjure "second"  second   listPrimitives
diff --git a/eg/u-conjure.txt b/eg/u-conjure.txt
new file mode 100644
--- /dev/null
+++ b/eg/u-conjure.txt
@@ -0,0 +1,24 @@
+square :: Int -> Int
+square x  =  x * x
+
+add :: Int -> Int -> Int
+add x y  =  x + y
+
+factorial :: Int -> Int
+cannot conjure
+
+factorial :: Int -> Int
+factorial x  =  foldr (*) 1 [1..x]
+
+second :: [Int] -> Int
+second xs  =  head (tail xs)
+
+(++) :: [Int] -> [Int] -> [Int]
+xs ++ ys  =  foldr (:) ys xs
+
+reverse :: [Int] -> [Int]
+cannot conjure
+
+reverse :: [Int] -> [Int]
+reverse xs  =  foldr (foldr (:) . unit) [] xs
+
diff --git a/eg/u-extrapolate.hs b/eg/u-extrapolate.hs
--- a/eg/u-extrapolate.hs
+++ b/eg/u-extrapolate.hs
@@ -1,6 +1,6 @@
 -- u-extrapolate.hs -- micro Extrapolate / Extrapolite
 --
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 --
 -- A small property-based testing library capable of generalizing
diff --git a/eg/u-extrapolate.txt b/eg/u-extrapolate.txt
new file mode 100644
--- /dev/null
+++ b/eg/u-extrapolate.txt
@@ -0,0 +1,26 @@
+sort . sort = sort
++++ Tests passed.
+
+length . nub = length  (incorrect when there are repeated elements)
+*** Falsified, counterexample:  [0,0]
+               generalization:  x:x:xs
+
+xs `union` ys == ys `union` xs  (incorrect for repeated elements)
+*** Falsified, counterexample:  ([],[0,0])
+               generalization:  (xs,x:x:xs)
+               generalization:  ([],x:x:xs)
+
+\(x,y) -> x + y == y + x
++++ Tests passed.
+
+\x -> x == x + 1  (always incorrect)
+*** Falsified, counterexample:  0
+               generalization:  x
+
+\(x,y) -> x + y == x + x  (incorrect)
+*** Falsified, counterexample:  (0,1)
+
+\(x,y) -> x /= y  (incorrect whenever x and y are equal)
+*** Falsified, counterexample:  (0,0)
+               generalization:  (x,x)
+
diff --git a/eg/u-speculate.hs b/eg/u-speculate.hs
--- a/eg/u-speculate.hs
+++ b/eg/u-speculate.hs
@@ -1,6 +1,6 @@
 -- u-speculate.hs -- micro Speculate / Speculite
 --
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 --
 -- A small library capable of conjecturing laws about Haskell functions
@@ -90,14 +90,14 @@
 candidateEquationsFrom :: [Expr] -> [Expr]
 candidateEquationsFrom es'  =  [e1 -==- e2 | e1 <- es, e2 <- es, e1 >= e2]
   where
-  es = candidateExprsFrom es'
+  es  =  candidateExprsFrom es'
 
 candidateExprsFrom :: [Expr] -> [Expr]
 candidateExprsFrom  =  concat . take 5 . expressionsT
   where
   expressionsT ds  =  [ds] \/ (delay $ productMaybeWith ($$) es es)
     where
-    es = expressionsT ds
+    es  =  expressionsT ds
 
 isTrue :: Expr -> Bool
 isTrue  =  all (eval False) . take 60 . grounds
@@ -117,11 +117,11 @@
 ex -==- ey  =  head $
   [eqn | eq <- eqs, let eqn = eq :$ ex :$ ey, isWellTyped eqn] ++ [val False]
   where
-  eqs = [ value "==" ((==) :: Int -> Int -> Bool)
-        , value "==" ((==) :: Bool -> Bool -> Bool)
-        , value "==" ((==) :: [Int] -> [Int] -> Bool)
-        , value "==" ((==) :: [Bool] -> [Bool] -> Bool)
-        ]
+  eqs  =  [ value "==" ((==) :: Int -> Int -> Bool)
+          , value "==" ((==) :: Bool -> Bool -> Bool)
+          , value "==" ((==) :: [Int] -> [Int] -> Bool)
+          , value "==" ((==) :: [Bool] -> [Bool] -> Bool)
+          ]
 
 lhs, rhs :: Expr -> Expr
 lhs (((Value "==" _) :$ e) :$ _)  =  e
diff --git a/eg/u-speculate.txt b/eg/u-speculate.txt
new file mode 100644
--- /dev/null
+++ b/eg/u-speculate.txt
@@ -0,0 +1,45 @@
+Equations about _, 0, (+), abs:
+abs 0  =  0
+x + 0  =  x
+0 + x  =  x
+abs (abs x)  =  abs x
+x + y  =  y + x
+abs (x + y)  =  abs (y + x)
+abs (x + abs x)  =  x + abs x
+abs (abs x + x)  =  x + abs x
+abs x + abs x  =  abs (x + x)
+x + (y + z)  =  x + (z + y)
+x + (y + z)  =  y + (x + z)
+x + (y + z)  =  y + (z + x)
+x + (y + z)  =  z + (x + y)
+x + (y + z)  =  z + (y + x)
+(x + y) + z  =  x + (y + z)
+(x + y) + z  =  x + (z + y)
+(x + y) + z  =  y + (x + z)
+(x + y) + z  =  y + (z + x)
+(x + y) + z  =  z + (y + x)
+(x + y) + z  =  (x + z) + y
+(x + y) + z  =  (y + x) + z
+(x + y) + z  =  (y + z) + x
+(x + y) + z  =  (z + x) + y
+(x + y) + z  =  (z + y) + x
+
+Equations about _, False, True, not:
+not False  =  True
+not True  =  False
+not (not p)  =  p
+
+Equations about _, _, [], (:), (++), sort:
+sort []  =  []
+xs ++ []  =  xs
+[] ++ xs  =  xs
+sort (sort xs)  =  sort xs
+sort [x]  =  [x]
+[x] ++ xs  =  x:xs
+sort (xs ++ ys)  =  sort (ys ++ xs)
+sort (x:sort xs)  =  sort (x:xs)
+sort (xs ++ sort ys)  =  sort (xs ++ ys)
+sort (sort xs ++ ys)  =  sort (xs ++ ys)
+(x:xs) ++ ys  =  x:(xs ++ ys)
+(xs ++ ys) ++ zs  =  xs ++ (ys ++ zs)
+
diff --git a/etc/hugs-backports/Data/Function.hs b/etc/hugs-backports/Data/Function.hs
--- a/etc/hugs-backports/Data/Function.hs
+++ b/etc/hugs-backports/Data/Function.hs
@@ -1,7 +1,7 @@
 -- Backport of Data.Function for Hugs 2006-09.
 -- Only exports `on`
 --
--- Copyright (c) 2018-2021 Rudy Matela.
+-- Copyright (c) 2018-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 module Data.Function
   ( on
diff --git a/express.cabal b/express.cabal
--- a/express.cabal
+++ b/express.cabal
@@ -1,6 +1,6 @@
 -- Cabal file for express
 name: express
-version: 1.0.12
+version: 1.0.14
 synopsis: Dynamically-typed expressions involving function application and variables.
 description:
   Express is a library for manipulating dynamically typed Haskell expressions.
@@ -37,14 +37,16 @@
                   , mk/Toplibs.hs
                   , stack.yaml
                   , test/sdist
-                  , test/model/bench/*.out
-                  , test/model/eg/*.out
+                  , bench/*.txt
+                  , eg/*.txt
                   , bench/versions
                   , bench/runtime/zero/versions
                   , bench/runtime/zero/bench/*.runtime
                   , bench/runtime/zero/eg/*.runtime
                   , etc/hugs-backports/Data/Function.hs
-tested-with: GHC==9.4
+tested-with: GHC==9.8
+           , GHC==9.6
+           , GHC==9.4
            , GHC==9.2
            , GHC==9.0
            , GHC==8.10
@@ -60,7 +62,7 @@
 source-repository this
   type:           git
   location:       https://github.com/rudymatela/express
-  tag:            v1.0.12
+  tag:            v1.0.14
 
 library
   exposed-modules:     Data.Express
@@ -103,6 +105,14 @@
   build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.10
   default-language:    Haskell2010
 
+test-suite basic
+  type:                exitcode-stdio-1.0
+  main-is:             basic.hs
+  hs-source-dirs:      test
+  other-modules:       Test, Test.ListableExpr
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.10
+  default-language:    Haskell2010
+
 test-suite canon
   type:                exitcode-stdio-1.0
   main-is:             canon.hs
@@ -266,6 +276,14 @@
 benchmark tiers
   type:                exitcode-stdio-1.0
   main-is:             tiers.hs
+  hs-source-dirs:      bench, test
+  other-modules:       Test, Test.ListableExpr
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.10
+  default-language:    Haskell2010
+
+benchmark tiers-complete
+  type:                exitcode-stdio-1.0
+  main-is:             tiers-complete.hs
   hs-source-dirs:      bench, test
   other-modules:       Test, Test.ListableExpr
   build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.10
diff --git a/mk/depend.mk b/mk/depend.mk
--- a/mk/depend.mk
+++ b/mk/depend.mk
@@ -167,6 +167,34 @@
   test/Test/ListableExpr.hs \
   bench/sort.hs \
   mk/toplibs
+bench/tiers-complete.o: \
+  test/Test.hs \
+  test/Test/ListableExpr.hs \
+  src/Data/Express/Utils/Typeable.hs \
+  src/Data/Express/Utils/TH.hs \
+  src/Data/Express/Utils/String.hs \
+  src/Data/Express/Utils.hs \
+  src/Data/Express/Utils/List.hs \
+  src/Data/Express.hs \
+  src/Data/Express/Name.hs \
+  src/Data/Express/Name/Derive.hs \
+  src/Data/Express/Match.hs \
+  src/Data/Express/Map.hs \
+  src/Data/Express/Instances.hs \
+  src/Data/Express/Hole.hs \
+  src/Data/Express/Fold.hs \
+  src/Data/Express/Fixtures.hs \
+  src/Data/Express/Express.hs \
+  src/Data/Express/Express/Derive.hs \
+  src/Data/Express/Core.hs \
+  src/Data/Express/Canon.hs \
+  src/Data/Express/Basic.hs \
+  bench/tiers-complete.hs
+bench/tiers-complete: \
+  test/Test.hs \
+  test/Test/ListableExpr.hs \
+  bench/tiers-complete.hs \
+  mk/toplibs
 bench/tiers.o: \
   test/Test.hs \
   test/Test/ListableExpr.hs \
@@ -426,10 +454,12 @@
 src/Data/Express/Name/Derive.o: \
   src/Data/Express/Utils/TH.hs \
   src/Data/Express/Utils/String.hs \
+  src/Data/Express/Utils/List.hs \
   src/Data/Express/Name.hs \
   src/Data/Express/Name/Derive.hs
 src/Data/Express/Name.o: \
   src/Data/Express/Utils/String.hs \
+  src/Data/Express/Utils/List.hs \
   src/Data/Express/Name.hs
 src/Data/Express.o: \
   src/Data/Express/Utils/Typeable.hs \
@@ -465,7 +495,8 @@
   src/Data/Express/Utils.hs \
   src/Data/Express/Utils/List.hs
 src/Data/Express/Utils/String.o: \
-  src/Data/Express/Utils/String.hs
+  src/Data/Express/Utils/String.hs \
+  src/Data/Express/Utils/List.hs
 src/Data/Express/Utils/TH.o: \
   src/Data/Express/Utils/TH.hs
 src/Data/Express/Utils/Typeable.o: \
@@ -473,6 +504,34 @@
   src/Data/Express/Utils/String.hs \
   src/Data/Express/Utils.hs \
   src/Data/Express/Utils/List.hs
+test/basic.o: \
+  test/Test.hs \
+  test/Test/ListableExpr.hs \
+  test/basic.hs \
+  src/Data/Express/Utils/Typeable.hs \
+  src/Data/Express/Utils/TH.hs \
+  src/Data/Express/Utils/String.hs \
+  src/Data/Express/Utils.hs \
+  src/Data/Express/Utils/List.hs \
+  src/Data/Express.hs \
+  src/Data/Express/Name.hs \
+  src/Data/Express/Name/Derive.hs \
+  src/Data/Express/Match.hs \
+  src/Data/Express/Map.hs \
+  src/Data/Express/Instances.hs \
+  src/Data/Express/Hole.hs \
+  src/Data/Express/Fold.hs \
+  src/Data/Express/Fixtures.hs \
+  src/Data/Express/Express.hs \
+  src/Data/Express/Express/Derive.hs \
+  src/Data/Express/Core.hs \
+  src/Data/Express/Canon.hs \
+  src/Data/Express/Basic.hs
+test/basic: \
+  test/Test.hs \
+  test/Test/ListableExpr.hs \
+  test/basic.hs \
+  mk/toplibs
 test/canon.o: \
   test/Test.hs \
   test/Test/ListableExpr.hs \
diff --git a/mk/ghcdeps b/mk/ghcdeps
--- a/mk/ghcdeps
+++ b/mk/ghcdeps
@@ -2,7 +2,7 @@
 #
 # ghcdeps: generate Haskell make dependencies for compiling with GHC.
 #
-# Copyright (c) 2015-2021 Rudy Matela.
+# Copyright (c) 2015-2024 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 #
 # From a list of files provided on standard input,
diff --git a/mk/haddock-i b/mk/haddock-i
--- a/mk/haddock-i
+++ b/mk/haddock-i
@@ -2,7 +2,7 @@
 #
 # haddock-i: list haddock's -i parameters.
 #
-# Copyright (c) 2015-2021 Rudy Matela.
+# Copyright (c) 2015-2024 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 #
 # $ haddock-i <package1> <package2> ... <packageN>
diff --git a/mk/haskell.mk b/mk/haskell.mk
--- a/mk/haskell.mk
+++ b/mk/haskell.mk
@@ -1,6 +1,6 @@
 # Implicit rules for compiling Haskell code.
 #
-# Copyright (c) 2015-2023 Rudy Matela.
+# Copyright (c) 2015-2024 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 #
 # You can optionally configure the "Configuration variables" below in your main
@@ -92,8 +92,9 @@
 install-dependencies:
 	if [ -n "$(INSTALL_DEPS)" ]; then \
 		cabal update && \
-		$(CABAL_INSTALL) $(INSTALL_DEPS); \
+		$(CABAL_INSTALL) $(INSTALL_DEPS) || true; \
 	fi
+	# above, "|| true" is needed for cabal >= 3.10.2
 
 # haddock rules
 haddock: doc/index.html
diff --git a/mk/install-on b/mk/install-on
--- a/mk/install-on
+++ b/mk/install-on
@@ -2,7 +2,7 @@
 #
 # mk/install-on: install or updates the mk folder on a Haskell project
 #
-# Copyright (c) 2019-2021 Rudy Matela.
+# Copyright (c) 2019-2024 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 #
 # usage: ./mk/install-on path/to/project
diff --git a/src/Data/Express.hs b/src/Data/Express.hs
--- a/src/Data/Express.hs
+++ b/src/Data/Express.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -173,6 +173,11 @@
   , nubValues
   , nubVars
   , nubConsts
+
+  -- -- -- Data.Express.Basic exports -- -- --
+  , (>$$<)
+  , (>$$)
+  , ($$<)
 
   -- -- -- Data.Express.Map exports -- -- --
 
diff --git a/src/Data/Express/Basic.hs b/src/Data/Express/Basic.hs
--- a/src/Data/Express/Basic.hs
+++ b/src/Data/Express/Basic.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Basic
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -21,6 +21,11 @@
   , module Data.Express.Map
   , module Data.Express.Fold
   , module Data.Express.Hole
+
+  -- * Additional utilities
+  , (>$$<)
+  , (>$$)
+  , ($$<)
   )
 where
 
@@ -28,3 +33,26 @@
 import Data.Express.Map
 import Data.Express.Fold
 import Data.Express.Hole
+
+import Data.Maybe (catMaybes, mapMaybe)
+
+-- | Lists valid applications between lists of 'Expr's
+--
+-- > > [notE, plus] >$$< [false, true, zero]
+-- > [not False :: Bool,not True :: Bool,(0 +) :: Int -> Int]
+(>$$<) :: [Expr] -> [Expr] -> [Expr]
+efs >$$< exs  =  catMaybes [ef $$ ex | ef <- efs, ex <- exs]
+
+-- | Lists valid applications between a list of 'Expr's and an 'Expr'.
+--
+-- > > [plus, times] >$$ zero
+-- > [(0 +) :: Int -> Int,(0 *) :: Int -> Int]
+(>$$) :: [Expr] -> Expr -> [Expr]
+efs >$$ ex  =  mapMaybe ($$ ex) efs
+
+-- | Lists valid applications between an 'Expr' and a list of 'Expr's.
+--
+-- > > notE >$$< [false, true, zero]
+-- > [not False :: Bool,not True :: Bool]
+($$<) :: Expr -> [Expr] -> [Expr]
+ef $$< exs  =  mapMaybe (ef $$) exs
diff --git a/src/Data/Express/Canon.hs b/src/Data/Express/Canon.hs
--- a/src/Data/Express/Canon.hs
+++ b/src/Data/Express/Canon.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Canon
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -62,8 +62,7 @@
                    else (e, n `varAsTypeOf` e):bs
     where
     existingNames = [n | (_,Value ('_':n) _) <- bs]
-    freshNames = namesFor e \\ existingNames
-    n = head freshNames
+    (n:_) = namesFor e \\ existingNames
 
 -- |
 -- Like 'isCanonical' but allows specifying
@@ -290,12 +289,12 @@
 fastCanonicalVariations :: Expr -> [Expr]
 fastCanonicalVariations e
   | null hs'   =  [e]
-  | otherwise  =  concatMap fastCanonicalVariations
-               .  map (fill e) . fillings 0
+  | otherwise  =  concatMap (fastCanonicalVariations . fill e)
+               .  fillings 0
                $  [h | h <- hs', typ h == typ h']
   where
-  hs' = holes e
-  h' = head hs'
+  hs'     =  holes e
+  (h':_)  =  hs'
 
   names  =  variableNamesFromTemplate "x" \\ varnames e
 
@@ -326,7 +325,7 @@
 fastMostSpecificVariation :: Expr -> Expr
 fastMostSpecificVariation e  =  fill e (map (name `varAsTypeOf`) (holes e))
   where
-  name  =  head $ variableNamesFromTemplate "x" \\ varnames e
+  (name:_)  =  variableNamesFromTemplate "x" \\ varnames e
 
 -- |
 -- Variable names existing in a given Expr.
@@ -352,7 +351,7 @@
 --
 -- This function is not exported.
 canonicalizeKeeping :: [Expr] -> Expr -> Expr
-canonicalizeKeeping vs e  =  canonicalizeWith namesFor e
+canonicalizeKeeping vs  =  canonicalizeWith namesFor
   where
   nm (Value ('_':n) _)  =  n
   namesFor v | v `elem` vs  =  nm v : err
diff --git a/src/Data/Express/Core.hs b/src/Data/Express/Core.hs
--- a/src/Data/Express/Core.hs
+++ b/src/Data/Express/Core.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Core
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -153,7 +153,7 @@
 -- > > value "sort" (sort :: [Bool] -> [Bool])
 -- > sort :: [Bool] -> [Bool]
 value :: Typeable a => String -> a -> Expr
-value s x = Value s (toDyn x)
+value s x  =  Value s (toDyn x)
 
 -- | /O(1)/.
 -- A shorthand for 'value' for values that are 'Show' instances.
@@ -173,7 +173,7 @@
 -- > val 'a'   =  value "'a'" 'a'
 -- > val True  =  value "True" True
 val :: (Typeable a, Show a) => a -> Expr
-val x = value (show x) x
+val x  =  value (show x) x
 
 -- | /O(n)/.
 -- Creates an 'Expr' representing a function application.
@@ -195,7 +195,7 @@
 e1 $$ e2 | isIllTyped e  =  Nothing
          | otherwise     =  Just e
   where
-  e = e1 :$ e2
+  e  =  e1 :$ e2
 
 -- | /O(1)/.
 -- Creates an 'Expr' representing a variable with the given name and argument
@@ -214,7 +214,7 @@
 -- a variable is just a 'value' whose string representation
 -- starts with underscore (@'_'@).
 var :: Typeable a => String -> a -> Expr
-var s a = value ('_':s) (undefined `asTypeOf` a)
+var s a  =  value ('_':s) (undefined `asTypeOf` a)
 
 -- | /O(n)/.
 -- Computes the type of an expression.  This raises errors, but this should
@@ -244,7 +244,8 @@
 typ :: Expr -> TypeRep
 typ  =  either err id . etyp
   where
-  err (t1, t2)  =  error $ "type mismatch, cannot apply `"
+  err (t1, t2)  =  errorOn "typ"
+                $  "type mismatch, cannot apply `"
                 ++ show t1 ++ "' to `" ++ show t2 ++ "'"
 
 -- | /O(n)/.
@@ -274,8 +275,8 @@
 -- > > etyp ((absE :$ bee) :$ one)
 -- > Left (Int -> Int, Char)
 etyp :: Expr -> Either (TypeRep, TypeRep) TypeRep
-etyp (Value _ d) = Right $ dynTypeRep d
-etyp (e1 :$ e2) = case (etyp e1, etyp e2) of
+etyp (Value _ d)  =  Right $ dynTypeRep d
+etyp (e1 :$ e2)  =  case (etyp e1, etyp e2) of
   (Right t1, Right t2) -> case t1 `funResultTy` t2 of
                           Nothing -> Left (t1,t2)
                           Just t  -> Right t
@@ -368,7 +369,7 @@
 -- > > evaluate $ negateE :$ bee :: Maybe Int
 -- > Nothing
 evaluate :: Typeable a => Expr -> Maybe a
-evaluate e = toDynamic e >>= fromDynamic
+evaluate e  =  toDynamic e >>= fromDynamic
 
 -- | /O(n)/.
 -- Evaluates an expression when possible (correct type).
@@ -387,7 +388,7 @@
 -- > > eval 0 $ two -+- val '3' :: Int
 -- > 0
 eval :: Typeable a => a -> Expr -> a
-eval x e = fromMaybe x (evaluate e)
+eval x e  =  fromMaybe x (evaluate e)
 
 -- | /O(n)/.
 -- Evaluates an expression when possible (correct type).
@@ -401,10 +402,10 @@
 --
 -- This may raise errors, please consider using 'eval' or 'evaluate'.
 evl :: Typeable a => Expr -> a
-evl e = r
+evl e  =  r
   where
-  r = eval err e
-  err = error $ "evl: cannot evaluate Expr `" ++ show e ++ "' at the " ++ show (typeOf r) ++ " type"
+  r  =  eval err e
+  err  =  errorOn "evl" $ "cannot evaluate Expr `" ++ show e ++ "' at the " ++ show (typeOf r) ++ " type"
 
 -- | /O(n)/.
 -- Evaluates an expression to a terminal 'Dynamic' value when possible.
@@ -419,23 +420,23 @@
 -- > > toDynamic $ value "abs" (abs :: Int -> Int) :$ val 'a'
 -- > Nothing
 toDynamic :: Expr -> Maybe Dynamic
-toDynamic (Value _ x) = Just x
-toDynamic (e1 :$ e2)  = do v1 <- toDynamic e1
-                           v2 <- toDynamic e2
-                           dynApply v1 v2
+toDynamic (Value _ x)  =  Just x
+toDynamic (e1 :$ e2)  =  do v1 <- toDynamic e1
+                            v2 <- toDynamic e2
+                            dynApply v1 v2
 
 -- | Shows 'Expr's with their types.
 --
 -- > > show (value "not" not :$ val False)
 -- > "not False :: Bool"
 instance Show Expr where
-  showsPrec d e = showParen (d > 10)
-                $ showsPrecExpr 0 e
-                . showString " :: "
-                . showsTypeExpr e
+  showsPrec d e  =  showParen (d > 10)
+                 $  showsPrecExpr 0 e
+                 .  showString " :: "
+                 .  showsTypeExpr e
 
 showsTypeExpr :: Expr -> String -> String
-showsTypeExpr e = case etyp e of
+showsTypeExpr e  =  case etyp e of
   Left (t1,t2) -> showString "ill-typed # "
                 . shows t1
                 . showString " $ "
@@ -444,106 +445,97 @@
   Right t -> shows t
 
 showsPrecExpr :: Int -> Expr -> String -> String
-showsPrecExpr d (Value "_" _) = showString "_" -- a hole
+showsPrecExpr d (Value "_" _)  =  showString "_" -- a hole
 showsPrecExpr d (Value ('_':s) _)  -- a variable
-  | isInfixedPrefix s = showString $ toPrefix s
-  | otherwise         = showParen (isInfix s) $ showString s
-showsPrecExpr d (Value s _) | isInfixedPrefix s = showString $ toPrefix s
-showsPrecExpr d (Value s _) | isNegativeLiteral s = showParen (d > 0) $ showString s
-showsPrecExpr d (Value s _) = showParen sp $ showString s
+  | isInfixedPrefix s  =  showString $ toPrefix s
+  | otherwise          =  showParen (isInfix s) $ showString s
+showsPrecExpr d (Value s _) | isInfixedPrefix s  =  showString $ toPrefix s
+showsPrecExpr d (Value s _) | isNegativeLiteral s  =  showParen (d > 0) $ showString s
+showsPrecExpr d (Value s _)  =  showParen sp $ showString s
   where sp = if atomic s then isInfix s else maybe True (d >) $ outernmostPrec s
-showsPrecExpr d (Value ":" _ :$ e1 :$ e2)
-  | isConst e1 && mtyp e1 == Just (typeOf (undefined :: Char)) =
-  case showsTailExpr e2 "" of
-    '\"':cs  -> showString ("\"" ++ (init . tail) (showsPrecExpr 0 e1 "") ++ cs)
-    cs -> showParen (d > prec ":")
-        $ showsOpExpr ":" e1 . showString ":" . showString cs
-showsPrecExpr d (Value ":" _ :$ e1 :$ e2) =
-  case showsTailExpr e2 "" of
-    "[]" -> showString "[" . showsPrecExpr 0 e1 . showString "]"
-    '[':cs -> showString "[" . showsPrecExpr 0 e1 . showString "," . showString cs
-    cs -> showParen (d > prec ":")
-        $ showsOpExpr ":" e1 . showString ":" . showString cs
+showsPrecExpr d e@(Value ":" _ :$ _ :$ _)  =
+  case unfoldEnd e of
+  (es,Value "[]" _) -> showString "["
+                     . foldr (.) id (intersperse (showString ",") [showsPrecExpr 0 e | e <- es])
+                     . showString "]"
+  (es,Value "\"\"" _)
+    | hasConstTail es -> let (cs,etc) = span isConst (reverse es)
+                         in showParen (not (null etc) && d > prec ":")
+                          $ foldr (.) id (intersperse (showString ":") $ [showsOpExpr ":" e | e <- reverse etc])
+                          . showString [':' | not (null etc)]
+                          . showString "\""
+                          . foldr (.) id [showString . init . drop 1 $ s | Value s _ <- reverse cs]
+                          . showString "\""
+  (es,end) -> showParen (d > prec ":")
+            $ foldr (.) id (intersperse (showString ":") $ [showsOpExpr ":" e | e <- es++[end]])
+  where
+  hasConstTail  =  not . null . takeWhile isConst . reverse
 showsPrecExpr d ee | isTuple ee = showParen True
                                 $ foldr1 (\s1 s2 -> s1 . showString "," . s2)
                                          (showsPrecExpr 0 `map` unfoldTuple ee)
-showsPrecExpr d (Value "if" _ :$ ep :$ ex :$ ey) =
+showsPrecExpr d (Value "if" _ :$ ep :$ ex :$ ey)  =
   showParen (d >= 0) $ showString "if "    . showsPrecExpr 0 ep
                      . showString " then " . showsPrecExpr 0 ex
                      . showString " else " . showsPrecExpr 0 ey
-showsPrecExpr d (Value "case" _ :$ ep :$ ex :$ ey) | typ ep == boolTy =
+showsPrecExpr d (Value "case" _ :$ ep :$ ex :$ ey) | typ ep == boolTy  =
   showParen (d >= 0) $ showString "case "         . showsPrecExpr 0 ep
                      . showString " of False -> " . showsPrecExpr 0 ex
                      . showString "; True -> "    . showsPrecExpr 0 ey
-showsPrecExpr d (Value "case" _ :$ eo :$ ex :$ ey :$ ez) | typ eo == orderingTy =
+showsPrecExpr d (Value "case" _ :$ eo :$ ex :$ ey :$ ez) | typ eo == orderingTy  =
   showParen (d >= 0) $ showString "case "      . showsPrecExpr 0 eo
                      . showString " of LT -> " . showsPrecExpr 0 ex
                      . showString "; EQ -> "   . showsPrecExpr 0 ey
                      . showString "; GT -> "   . showsPrecExpr 0 ez
-showsPrecExpr d (Value ",.." _ :$ ex :$ ey :$ ez) =
+showsPrecExpr d (Value ",.." _ :$ ex :$ ey :$ ez)  =
   showString "[" . showsPrecExpr 0 ex
                  . showString (if dotdot ex && dotdot ey && dotdot ez then "," else ", ")
                  . showsPrecExpr 0 ey
                  . showString (if dotdot ex && dotdot ey && dotdot ez then ".." else " .. ")
                  . showsPrecExpr 0 ez
                  . showString "]"
-showsPrecExpr d (Value ",.." _ :$ ex :$ ey) =
+showsPrecExpr d (Value ",.." _ :$ ex :$ ey)  =
   showString "[" . showsPrecExpr 0 ex
                  . showString (if dotdot ex && dotdot ey then "," else ", ")
                  . showsPrecExpr 0 ey
                  . showString (if dotdot ex && dotdot ey then "..]" else " ..]")
-showsPrecExpr d (Value ".." _ :$ ex :$ ey) =
+showsPrecExpr d (Value ".." _ :$ ex :$ ey)  =
   showString "[" . showsPrecExpr 0 ex
                  . showString (if dotdot ex && dotdot ey then ".." else " .. ")
                  . showsPrecExpr 0 ey
                  . showString "]"
-showsPrecExpr d (Value ".." _ :$ ex) =
+showsPrecExpr d (Value ".." _ :$ ex)  =
   showString "[" . showsPrecExpr 0 ex . showString (if dotdot ex then "..]" else " ..]")
 showsPrecExpr d (Value f' _ :$ e1 :$ e2)
-  | isInfix f = showParen (d > prec f)
-              $ showsOpExpr f e1
-              . showString " " . showString f . showString " "
-              . showsOpExpr f e2
-  | otherwise = showParen (d > prec " ")
-              $ showString f
-              . showString " " . showsOpExpr " " e1
-              . showString " " . showsOpExpr " " e2
+  | isInfix f  =  showParen (d > prec f)
+               $  showsOpExpr f e1
+               .  showString " " . showString f . showString " "
+               .  showsOpExpr f e2
+  | otherwise  =  showParen (d > prec " ")
+               $  showString f
+               .  showString " " . showsOpExpr " " e1
+               .  showString " " . showsOpExpr " " e2
   where
-  f = case f' of "_" -> "_"   -- holes are shown as _
-                 ('_':f) -> f -- on variables we drop the preceding _
-                 f -> f       -- constants as themselves
+  f  =  case f' of "_" -> "_"   -- holes are shown as _
+                   ('_':f) -> f -- on variables we drop the preceding _
+                   f -> f       -- constants as themselves
 showsPrecExpr d (Value f' _ :$ e1)
-  | isInfix f = showParen True $ showsOpExpr f e1 . showString " " . showString f
+  | isInfix f  =  showParen True $ showsOpExpr f e1 . showString " " . showString f
   where
-  f = case f' of "_" -> "_"   -- holes are shown as _
-                 ('_':f) -> f -- on variables we drop the preceding _
-                 f -> f       -- constants as themselves
-showsPrecExpr d (e1 :$ e2) = showParen (d > prec " ")
-                           $ showsPrecExpr (prec " ") e1
-                           . showString " "
-                           . showsPrecExpr (prec " " + 1) e2
+  f  =  case f' of "_" -> "_"   -- holes are shown as _
+                   ('_':f) -> f -- on variables we drop the preceding _
+                   f -> f       -- constants as themselves
+showsPrecExpr d (e1 :$ e2)  =  showParen (d > prec " ")
+                            $  showsPrecExpr (prec " ") e1
+                            .  showString " "
+                            .  showsPrecExpr (prec " " + 1) e2
 
 -- Can we avoid a space using @[<n>..<m>]@?
 dotdot :: Expr -> Bool
 dotdot (Value (c:_) _)  =  isNumber c || isLower c || c == '_' || c == '\''
 dotdot _  =  False
 
--- bad smell here, repeated code!
-showsTailExpr :: Expr -> String -> String
-showsTailExpr (Value ":" _ :$ e1 :$ e2)
-  | isConst e1 && mtyp e1 == Just (typeOf (undefined :: Char)) =
-  case showsPrecExpr 0 e2 "" of
-    '\"':cs  -> showString ("\"" ++ (init . tail) (showsPrecExpr 0 e1 "") ++ cs)
-    cs -> showsOpExpr ":" e1 . showString ":" . showsTailExpr e2
-showsTailExpr (Value ":" _ :$ e1 :$ e2) =
-  case showsPrecExpr 0 e2 "" of
-    "[]" -> showString "[" . showsPrecExpr 0 e1 . showString "]"
-    '[':cs -> showString "[" . showsPrecExpr 0 e1 . showString "," . showString cs
-    cs -> showsOpExpr ":" e1 . showString ":" . showsTailExpr e2
-showsTailExpr e = showsOpExpr ":" e
-
 showsOpExpr :: String -> Expr -> String -> String
-showsOpExpr op = showsPrecExpr (prec op + 1)
+showsOpExpr op  =  showsPrecExpr (prec op + 1)
 
 -- | /O(n)/.
 -- Like 'showPrecExpr' but
@@ -561,7 +553,7 @@
 -- > > showOpExpr " " (two -*- three)
 -- > "(2 * 3)"
 showOpExpr :: String -> Expr -> String
-showOpExpr op = showPrecExpr (prec op + 1)
+showOpExpr op  =  showPrecExpr (prec op + 1)
 
 -- | /O(n)/.
 -- Like 'showExpr' but allows specifying the surrounding precedence.
@@ -572,7 +564,7 @@
 -- > > showPrecExpr 7 (one -+- two)
 -- > "(1 + 2)"
 showPrecExpr :: Int -> Expr -> String
-showPrecExpr n e = showsPrecExpr n e ""
+showPrecExpr n e  =  showsPrecExpr n e ""
 
 -- | /O(n)/.
 -- Returns a string representation of an expression.
@@ -585,7 +577,7 @@
 -- > > putStrLn $ showExpr $ (pp -||- true) -&&- (qq -||- false)
 -- > (p || True) && (q || False)
 showExpr :: Expr -> String
-showExpr = showPrecExpr (-1)
+showExpr  =  showPrecExpr (-1)
 
 -- | /O(n)/.
 -- Does not evaluate values when comparing, but rather uses their
@@ -607,7 +599,7 @@
 -- when they have smaller complexity ('compareComplexity')
 -- or when they come first lexicographically ('compareLexicographically').
 instance Ord Expr where
-  compare = compareComplexity <> compareLexicographically
+  compare  =  compareComplexity <> compareLexicographically
 
 -- | /O(n)/.
 -- Compares the complexity of two 'Expr's.
@@ -720,8 +712,8 @@
 unfoldApp :: Expr -> [Expr]
 unfoldApp e  =  u e []
   where
-  u (ef :$ ex) = u ef . (ex:)
-  u ex         = (ex:)
+  u (ef :$ ex)  =  u ef . (ex:)
+  u ex          =  (ex:)
 
 -- | /O(n)/.
 -- Unfold a tuple 'Expr' into a list of values.
@@ -747,13 +739,29 @@
 --       This is intentional, allowing the 'Show' 'Expr' instance
 --       to present @(,) 1 2@ differently than @(1,2)@.
 unfoldTuple :: Expr -> [Expr]
-unfoldTuple = u . unfoldApp
+unfoldTuple  =  u . unfoldApp
   where
-  u (Value cs _:es) | not (null es) && cs == replicate (length es - 1) ',' = es
-  u _   = []
+  u (Value cs _:es) | not (null es) && cs == replicate (length es - 1) ','  =  es
+  u _  =  []
 
+-- | /O(n)/.
+-- Unfold a list 'Expr' into a list of values and a terminator.
+--
+-- This works for lists "terminated" by an arbitrary expression.
+-- One can later check the second value of the return tuple
+-- to see if it is a proper list or string by comparing the
+-- string representation with @[]@ or @""@.
+--
+-- This is used in the implementation of 'showsPrecExpr'.
+unfoldEnd :: Expr -> ([Expr],Expr)
+unfoldEnd (Value ":"  _ :$ e :$ es)  =  (e:) `first` unfoldEnd es
+                                        where  first f (x,y)  =  (f x, y)
+unfoldEnd e                          =  ([],e)
+
+-- | /O(1)/.
+-- Checks if a given expression is a tuple.
 isTuple :: Expr -> Bool
-isTuple = not . null . unfoldTuple
+isTuple  =  not . null . unfoldTuple
 
 -- | /O(n)/.
 -- Check if an 'Expr' has a variable.  (By convention, any value whose
@@ -1231,3 +1239,6 @@
 height :: Expr -> Int
 height (e1 :$ e2)  =  1 + height e1 `max` height e2
 height _           =  1
+
+errorOn :: String -> String -> a
+errorOn fn msg  =  error $ "Data.Express." ++ fn ++ ": " ++ msg
diff --git a/src/Data/Express/Express.hs b/src/Data/Express/Express.hs
--- a/src/Data/Express/Express.hs
+++ b/src/Data/Express/Express.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Express
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
diff --git a/src/Data/Express/Express/Derive.hs b/src/Data/Express/Express/Derive.hs
--- a/src/Data/Express/Express/Derive.hs
+++ b/src/Data/Express/Express/Derive.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE TemplateHaskell, CPP #-}
 -- |
 -- Module      : Data.Express.Express.Derive
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
diff --git a/src/Data/Express/Fixtures.hs b/src/Data/Express/Fixtures.hs
--- a/src/Data/Express/Fixtures.hs
+++ b/src/Data/Express/Fixtures.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Fixtures
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -210,8 +210,8 @@
   -- ** Enum
   , enumFrom',   (-..)
   , enumFromTo', (-..-)
-  , enumFromThen', (-...)
-  , enumFromThenTo', (-...-)
+  , enumFromThen', (--..)
+  , enumFromThenTo', (--..-)
   )
 where
 
@@ -562,14 +562,14 @@
 -- > > ff one
 -- > f 1 :: Int
 ff :: Expr -> Expr
-ff = (ffE :$)
+ff  =  (ffE :$)
 
 -- | A variable @f@ of 'Int -> Int' type encoded as an 'Expr'.
 --
 -- > > ffE
 -- > f :: Int -> Int
 ffE :: Expr
-ffE = var "f" (undefined :: Int -> Int)
+ffE  =  var "f" (undefined :: Int -> Int)
 
 -- | A variable function @g@ of 'Int -> Int' type lifted over the 'Expr' type.
 --
@@ -579,29 +579,48 @@
 -- > > gg minusTwo
 -- > gg (-2) :: Int
 gg :: Expr -> Expr
-gg = (ggE :$)
+gg  =  (ggE :$)
 
 -- | A variable @g@ of 'Int -> Int' type encoded as an 'Expr'.
 --
 -- > > ggE
 -- > g :: Int -> Int
 ggE :: Expr
-ggE = var "g" (undefined :: Int -> Int)
+ggE  =  var "g" (undefined :: Int -> Int)
 
 -- | A variable function @h@ of 'Int -> Int' type lifted over the 'Expr' type.
 --
 -- > > hh zz
 -- > h z :: Int
 hh :: Expr -> Expr
-hh = (hhE :$)
+hh  =  (hhE :$)
 
 -- | A variable @h@ of 'Int -> Int' type encoded as an 'Expr'.
 --
 -- > > hhE
 -- > h :: Int -> Int
 hhE :: Expr
-hhE = var "h" (undefined :: Int -> Int)
+hhE  =  var "h" (undefined :: Int -> Int)
 
+mk1 :: String -> [Expr] -> Expr -> Expr
+mk1 nm efs ex  =  headOr (err nm efs [ex]) $ efs >$$ ex
+
+mk2 :: String -> [Expr] -> Expr -> Expr -> Expr
+mk2 nm efs ex ey  =  headOr (err nm efs [ex,ey]) $ efs >$$ ex >$$ ey
+
+mk3 :: String -> [Expr] -> Expr -> Expr -> Expr -> Expr
+mk3 nm efs ex ey ez  =  headOr (err nm efs [ex,ey,ez]) $ efs >$$ ex >$$ ey >$$ ez
+
+mk4 :: String -> [Expr] -> Expr -> Expr -> Expr -> Expr -> Expr
+mk4 nm efs ex ey ez ew  =  headOr (err nm efs [ex,ey,ez,ew]) $ efs >$$ ex >$$ ey >$$ ez >$$ ew
+
+err :: String -> [Expr] -> [Expr] -> Expr
+err fn efs exs  =  error
+                $  fn ++ ": unhandled type: "
+                ++ intercalate ", " (map show exs)
+                ++ "\n    accepted types are:\n"
+                ++ unlines (map (("    " ++) . show) efs)
+
 -- | A variable binary operator @?@ lifted over the 'Expr' type.
 --   Works for 'Int', 'Bool', 'Char', @[Int]@ and 'String'.
 --
@@ -612,18 +631,25 @@
 -- > p ? q :: Bool
 --
 -- > > xx -?- qq
--- > *** Exception: (-?-): cannot apply `(?) :: * -> * -> *` to `x :: Int' and `q :: Bool'.  Unhandled types?
+-- > *** Exception: (-?-): unhandled type: 1 :: Int, False :: Bool
+-- >     accepted types are:
+-- >     (?) :: Int -> Int -> Int
+-- >     (?) :: Bool -> Bool -> Bool
+-- >     (?) :: Char -> Char -> Char
+-- >     (?) :: [Int] -> [Int] -> [Int]
+-- >     (?) :: [Char] -> [Char] -> [Char]
+-- >     (?) :: Int -> [Int] -> [Int]
+-- >     (?) :: Char -> [Char] -> [Char]
 (-?-) :: Expr -> Expr -> Expr
-ex -?- ey  =  fromMaybe err $ ($$ ey) $ headOr err $ mapMaybe ($$ ex)
+(-?-)  =  mk2 "(-?-)"
   [ var "?" (undefined :: Int -> Int -> Int)
   , var "?" (undefined :: Bool -> Bool -> Bool)
   , var "?" (undefined :: Char -> Char -> Char)
   , var "?" (undefined :: [Int] -> [Int] -> [Int])
   , var "?" (undefined :: String -> String -> String)
+  , var "?" (undefined :: Int -> [Int] -> [Int])
+  , var "?" (undefined :: Char -> String -> String)
   ]
-  where
-  err  =  error $ "(-?-): cannot apply `(?) :: * -> * -> *` to `"
-               ++ show ex ++ "' and `" ++ show ey ++ "'.  Unhandled types?"
 
 -- | A variable binary operator @?@ encoded as an 'Expr' (cf. '-?-')
 --
@@ -645,18 +671,21 @@
 -- > p `o` q :: Bool
 --
 -- > > xx `oo` qq
--- > *** Exception: (-?-): cannot apply `o :: * -> * -> *` to `x :: Int' and `q :: Bool'.  Unhandled types?
+-- > *** Exception: oo: unhandled type: 1 :: Int, False :: Bool
+-- >     accepted types are:
+-- >     o :: Int -> Int -> Int
+-- >     o :: Bool -> Bool -> Bool
+-- >     o :: Char -> Char -> Char
+-- >     o :: [Int] -> [Int] -> [Int]
+-- >     o :: [Char] -> [Char] -> [Char]
 oo :: Expr -> Expr -> Expr
-ex `oo` ey  =  fromMaybe err $ ($$ ey) $ headOr err $ mapMaybe ($$ ex)
+oo  =  mk2 "oo"
   [ var "`o`" (undefined :: Int -> Int -> Int)
   , var "`o`" (undefined :: Bool -> Bool -> Bool)
   , var "`o`" (undefined :: Char -> Char -> Char)
   , var "`o`" (undefined :: [Int] -> [Int] -> [Int])
   , var "`o`" (undefined :: String -> String -> String)
   ]
-  where
-  err  =  error $ "oo: cannot apply `o :: * -> * -> *` to `"
-               ++ show ex ++ "' and `" ++ show ey ++ "'.  Unhandled types?"
 
 -- | A variable binary function @o@ encoded as an 'Expr' (cf. 'oo')
 --
@@ -679,7 +708,7 @@
 -- > > xx -+- (yy -+- zz)
 -- > x + (y + z) :: Int
 (-+-) :: Expr -> Expr -> Expr
-e1 -+- e2 = plus :$ e1 :$ e2
+e1 -+- e2  =  plus :$ e1 :$ e2
 infixl 6 -+-
 
 -- | The operator '+' for the 'Int' type.  (See also '-+-'.)
@@ -693,7 +722,7 @@
 -- > > plus :$ xx :$ yy
 -- > x + y :: Int
 plus :: Expr
-plus = value "+" ((+) :: Int -> Int -> Int)
+plus  =  value "+" ((+) :: Int -> Int -> Int)
 
 -- | The operator '*' for the 'Int' type lifted over the 'Expr' type.  (See also 'times'.)
 --
@@ -706,7 +735,7 @@
 -- > > two -*- xx
 -- > 2 * x :: Int
 (-*-) :: Expr -> Expr -> Expr
-e1 -*- e2 = times :$ e1 :$ e2
+e1 -*- e2  =  times :$ e1 :$ e2
 infixl 7 -*-
 
 -- | The operator '*' for the 'Int' type.  (See also '-*-'.)
@@ -821,7 +850,7 @@
 -- > > evl (id' true) :: Bool
 -- > True :: Bool
 id' :: Expr -> Expr
-id' e  =  headOr err $ mapMaybe ($$ e)
+id'  =  mk1 "id'"
   [ idInt
   , idBool
   , idChar
@@ -829,8 +858,6 @@
   , idBools
   , idString
   ]
-  where
-  err  =  error $ "id': unhandled type " ++ show (typ e)
 
 -- | The function 'id' for the 'Int' type encoded as an 'Expr'.  (See also 'id''.)
 --
@@ -853,7 +880,7 @@
 idInts    =  value "id" (id :: Id [Int])
 idBools   =  value "id" (id :: Id [Bool])
 idString  =  value "id" (id :: Id String)
-type Id a = a -> a
+type Id a  =  a -> a
 
 -- | The 'const' function lifted over the 'Expr' type.
 --
@@ -862,7 +889,7 @@
 --
 -- This works for the argument types 'Int', 'Char', 'Bool' and their lists.
 const' :: Expr -> Expr -> Expr
-const' e1 e2  =  (:$ e2) . headOr err $ mapMaybe ($$ e1)
+const'  =  mk2 "const'"
   [ value "const" (const :: Int -> Int -> Int)
   , value "const" (const :: Bool -> Bool -> Bool)
   , value "const" (const :: Char -> Char -> Char)
@@ -870,8 +897,6 @@
   , value "const" (const :: [Bool] -> [Bool] -> [Bool])
   , value "const" (const :: String -> String -> String)
   ]
-  where
-  err  =  error $ "const': unhandled type " ++ show (typ e1)
 
 -- | 'negate' over the 'Int' type lifted over the 'Expr' type.
 --
@@ -932,7 +957,7 @@
 -- > > evl (odd' two) :: Bool
 -- > False
 odd' :: Expr -> Expr
-odd' = (oddE :$) where oddE = value "odd" (odd :: Int -> Bool)
+odd'  =  (oddE :$) where oddE = value "odd" (odd :: Int -> Bool)
 
 -- | 'even' with an 'Int' argument lifted over the 'Expr' type.
 --
@@ -942,7 +967,7 @@
 -- > > evl (even' two) :: Bool
 -- > True
 even' :: Expr -> Expr
-even' = (evenE :$) where evenE = value "even" (even :: Int -> Bool)
+even'  =  (evenE :$) where evenE = value "even" (even :: Int -> Bool)
 
 -- | A hole of 'Char' type encoded as an 'Expr'.
 --
@@ -1049,14 +1074,14 @@
 -- > > space
 -- > ' ' :: Char
 space :: Expr
-space = val ' '
+space  =  val ' '
 
 -- | The line break character encoded as an 'Expr'
 --
 -- > > lineBreak
 -- > '\n' :: Char
 lineBreak :: Expr
-lineBreak = val '\n'
+lineBreak  =  val '\n'
 
 -- | The 'ord' function lifted over 'Expr'
 --
@@ -1066,11 +1091,11 @@
 -- > > evl (ord' bee)
 -- > 98
 ord' :: Expr -> Expr
-ord' = (ordE :$)
+ord'  =  (ordE :$)
 
 -- | The 'ord' function encoded as an 'Expr'
 ordE :: Expr
-ordE = value "ord" ord
+ordE  =  value "ord" ord
 
 -- | A typed hole of @[Int]@ type encoded as an 'Expr'.
 --
@@ -1137,7 +1162,7 @@
 consInt   =  value ":" ((:) :: Cons Int)
 consBool  =  value ":" ((:) :: Cons Bool)
 consChar  =  value ":" ((:) :: Cons Char)
-type Cons a = a -> [a] -> [a]
+type Cons a  =  a -> [a] -> [a]
 
 -- | 'unit' constructs a list with a single element.
 --   This works for elements of type 'Int', 'Char' and 'Bool'.
@@ -1166,14 +1191,12 @@
 -- > > bee -:- unit cee
 -- > "bc" :: [Char]
 (-:-) :: Expr -> Expr -> Expr
-e1 -:- e2  =  (:$ e2) . headOr err $ mapMaybe ($$ e1)
+(-:-)  =  mk2 "(-:-)"
   [ consInt
   , consBool
   , consChar
   , value ":" ((:) :: Cons (Maybe Int))
   ]
-  where
-  err  =  error $ "(-:-): unhandled type " ++ show (typ e1)
 infixr 5 -:-
 
 -- | Append for list of 'Int's encoded as an 'Expr'.
@@ -1189,13 +1212,11 @@
 -- > > (bee -:- unit cee) -:- unit dee
 -- > "bc" -++- "c" :: [Char]
 (-++-) :: Expr -> Expr -> Expr
-e1 -++- e2 = (:$ e2) . headOr err $ mapMaybe ($$ e1)
+(-++-)  =  mk2 "(-++-)"
   [ value "++" ((++) :: [Int] -> [Int] -> [Int])
   , value "++" ((++) :: String -> String -> String)
   , value "++" ((++) :: [Bool] -> [Bool] -> [Bool])
   ]
-  where
-  err  =  error $ "(-++-): unhandled type " ++ show (typ e1)
 infixr 5 -++-
 
 -- | List 'head' lifted over the 'Expr' type.
@@ -1213,13 +1234,11 @@
 -- > > evl $ head' $ unit one :: Int
 -- > 1
 head' :: Expr -> Expr
-head' exs = headOr err $ mapMaybe ($$ exs)
+head'  =  mk1 "head'"
   [ value "head" (head :: [Int] -> Int)
   , value "head" (head :: [Char] -> Char)
   , value "head" (head :: [Bool] -> Bool)
   ]
-  where
-  err  =  error $ "head': cannot apply `head :: [a] -> a` to `" ++ show exs ++ "'."
 
 -- | List 'tail' lifted over the 'Expr' type.
 --   Works for the element types 'Int', 'Char' and 'Bool'.
@@ -1236,13 +1255,11 @@
 -- > > evl $ tail' $ zero -:- unit two :: [Int]
 -- > [2]
 tail' :: Expr -> Expr
-tail' exs = headOr err $ mapMaybe ($$ exs)
+tail'  =  mk1 "tail'"
   [ value "tail" (tail :: [Int] -> [Int])
   , value "tail" (tail :: [Char] -> [Char])
   , value "tail" (tail :: [Bool] -> [Bool])
   ]
-  where
-  err  =  error $ "tail': unhandled type " ++ show (typ exs)
 
 -- | List 'null' lifted over the 'Expr' type.
 --   Works for the element types 'Int', 'Char' and 'Bool'.
@@ -1256,13 +1273,11 @@
 -- > > evl $ null' nil :: Bool
 -- > True
 null' :: Expr -> Expr
-null' exs = headOr err $ mapMaybe ($$ exs)
+null'  =  mk1 "null'"
   [ value "null" (null :: [Int] -> Bool)
   , value "null" (null :: [Char] -> Bool)
   , value "null" (null :: [Bool] -> Bool)
   ]
-  where
-  err  =  error $ "null': unhandled type " ++ show (typ exs)
 
 -- | List 'length' lifted over the 'Expr' type.
 --   Works for the element types 'Int', 'Char' and 'Bool'.
@@ -1279,13 +1294,11 @@
 -- > > evl $ length' $ unit one :: Int
 -- > 1
 length' :: Expr -> Expr
-length' exs = headOr err $ mapMaybe ($$ exs)
+length'  =  mk1 "length'"
   [ value "length" (length :: [Int] -> Int)
   , value "length" (length :: [Char] -> Int)
   , value "length" (length :: [Bool] -> Int)
   ]
-  where
-  err  =  error $ "length': cannot apply `length :: [a] -> a` to `" ++ show exs ++ "'."
 
 -- | List 'init' lifted over the 'Expr' type.
 --   Works for the element types 'Int', 'Char' and 'Bool'.
@@ -1302,13 +1315,11 @@
 -- > > evl $ init' $ zero -:- unit two :: [Int]
 -- > [0]
 init' :: Expr -> Expr
-init' exs = headOr err $ mapMaybe ($$ exs)
+init'  =  mk1 "init'"
   [ value "init" (init :: [Int] -> [Int])
   , value "init" (init :: [Char] -> [Char])
   , value "init" (init :: [Bool] -> [Bool])
   ]
-  where
-  err  =  error $ "init': unhandled type " ++ show (typ exs)
 
 -- | List 'sort' lifted over the 'Expr' type.
 --   Works for the element types 'Int', 'Char' and 'Bool'.
@@ -1325,13 +1336,11 @@
 -- > > evl $ sort' $ two -:- unit one :: [Int]
 -- > [1,2]
 sort' :: Expr -> Expr
-sort' exs = headOr err $ mapMaybe ($$ exs)
+sort'  =  mk1 "sort'"
   [ value "sort" (sort :: [Int] -> [Int])
   , value "sort" (sort :: [Char] -> [Char])
   , value "sort" (sort :: [Bool] -> [Bool])
   ]
-  where
-  err  =  error $ "sort': unhandled type " ++ show (typ exs)
 
 -- | List 'insert' lifted over the 'Expr' type.
 --   Works for the element types 'Int', 'Char' and 'Bool'.
@@ -1342,13 +1351,11 @@
 -- > > insert' false (false -:- unit true)
 -- > insert False [False,True] :: [Bool]
 insert' :: Expr -> Expr -> Expr
-insert' ex exs  =  (:$ exs) . headOr err $ mapMaybe ($$ ex)
+insert'  =  mk2 "insert'"
   [ value "insert" (insert :: Int -> [Int] -> [Int])
   , value "insert" (insert :: Bool -> [Bool] -> [Bool])
   , value "insert" (insert :: Char -> String -> String)
   ]
-  where
-  err  =  error $ "insert': unhandled type " ++ show (typ ex)
 
 -- | List 'elem' lifted over the 'Expr' type.
 --   Works for the element types 'Int', 'Char' and 'Bool'.
@@ -1359,13 +1366,11 @@
 -- > > evl $ elem' false (false -:- unit true) :: Bool
 -- > True
 elem' :: Expr -> Expr -> Expr
-elem' ex exs  =  (:$ exs) . headOr err $ mapMaybe ($$ ex)
+elem'  =  mk2 "elem'"
   [ value "elem" (elem :: Int -> [Int] -> Bool)
   , value "elem" (elem :: Bool -> [Bool] -> Bool)
   , value "elem" (elem :: Char -> String -> Bool)
   ]
-  where
-  err  =  error $ "elem': unhandled type " ++ show (typ ex)
 
 -- | '$' lifted over 'Expr's
 --
@@ -1374,7 +1379,7 @@
 --
 -- Works for 'Int', 'Bool', 'Char' argument types and their lists.
 (-$-) :: Expr -> Expr -> Expr
-ef -$- ex = (:$ ex) . headOr err $ mapMaybe ($$ ef)
+(-$-)  =  mk2 "(-$-)"
   [ value "$" (($) :: Apply Int)
   , value "$" (($) :: Apply Bool)
   , value "$" (($) :: Apply Char)
@@ -1382,10 +1387,8 @@
   , value "$" (($) :: Apply [Bool])
   , value "$" (($) :: Apply [Char])
   ]
-  where
-  err  =  error $ "(-$-): unhandled type " ++ show (typ ef)
 infixl 6 -$-
-type Apply a = (a -> a) -> a -> a
+type Apply a  =  (a -> a) -> a -> a
 
 -- | Constructs an equation between two 'Expr's.
 --
@@ -1397,7 +1400,7 @@
 --
 -- This works for the 'Int', 'Bool', 'Char' argument types and their lists.
 (-==-) :: Expr -> Expr -> Expr
-ex -==- ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
+(-==-)  =  mk2 "(-==-)"
   [ value "==" ((==) :: Comparison ())
   , value "==" ((==) :: Comparison Int)
   , value "==" ((==) :: Comparison Bool)
@@ -1406,10 +1409,8 @@
   , value "==" ((==) :: Comparison [Bool])
   , value "==" ((==) :: Comparison [Char])
   ]
-  where
-  err  =  error $ "(-==-): unhandled type " ++ show (typ ex)
 infix 4 -==-
-type Comparison a = a -> a -> Bool
+type Comparison a  =  a -> a -> Bool
 
 -- | Constructs an inequation between two 'Expr's.
 --
@@ -1419,7 +1420,7 @@
 -- > > cc -/=- ae
 -- > c /= 'a' :: Bool
 (-/=-) :: Expr -> Expr -> Expr
-ex -/=- ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
+(-/=-)  =  mk2 "(-/=-)"
   [ value "/=" ((/=) :: Comparison ())
   , value "/=" ((/=) :: Comparison Int)
   , value "/=" ((/=) :: Comparison Bool)
@@ -1428,8 +1429,6 @@
   , value "/=" ((/=) :: Comparison [Bool])
   , value "/=" ((/=) :: Comparison [Char])
   ]
-  where
-  err  =  error $ "(-/=-): unhandled type " ++ show (typ ex)
 infix 4 -/=-
 
 -- | Constructs a less-than-or-equal inequation between two 'Expr's.
@@ -1440,7 +1439,7 @@
 -- > > cc -<=- ae
 -- > c <= 'a' :: Bool
 (-<=-) :: Expr -> Expr -> Expr
-ex -<=- ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
+(-<=-)  =  mk2 "(-<=-)"
   [ value "<=" ((<=) :: Comparison ())
   , value "<=" ((<=) :: Comparison Int)
   , value "<=" ((<=) :: Comparison Bool)
@@ -1449,8 +1448,6 @@
   , value "<=" ((<=) :: Comparison [Bool])
   , value "<=" ((<=) :: Comparison [Char])
   ]
-  where
-  err  =  error $ "(-<=-): unhandled type " ++ show (typ ex)
 infix 4 -<=-
 
 -- | Constructs a less-than inequation between two 'Expr's.
@@ -1461,7 +1458,7 @@
 -- > > cc -<- bee
 -- > c < 'b' :: Bool
 (-<-) :: Expr -> Expr -> Expr
-ex -<- ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
+(-<-)  =  mk2 "(-<-)"
   [ value "<" ((<) :: Comparison ())
   , value "<" ((<) :: Comparison Int)
   , value "<" ((<) :: Comparison Bool)
@@ -1470,8 +1467,6 @@
   , value "<" ((<) :: Comparison [Bool])
   , value "<" ((<) :: Comparison [Char])
   ]
-  where
-  err  =  error $ "(-<-): unhandled type " ++ show (typ ex)
 infix 4 -<-
 
 -- | A function @if :: Bool -> a -> a -> a@ lifted over the 'Expr' type
@@ -1490,7 +1485,7 @@
 -- > > evl $ if' true (val 't') (val 'f') :: Char
 -- > 't'
 if' :: Expr -> Expr -> Expr -> Expr
-if' ep ex ey  =  (:$ ey) . headOr err . mapMaybe ($$ ex) $ map (:$ ep)
+if'  =  mk3 "if'"
   [ value "if" (iff :: If ())
   , value "if" (iff :: If Int)
   , value "if" (iff :: If Bool)
@@ -1500,10 +1495,9 @@
   , value "if" (iff :: If [Char])
   ]
   where
-  err  =  error $ "if': unhandled type " ++ show (typ ex)
   iff :: Bool -> a -> a -> a
   iff p x y  =  if p then x else y
-type If a = Bool -> a -> a -> a
+type If a  =  Bool -> a -> a -> a
 
 -- | A function @case :: Bool -> a -> a -> a@ lifted over the 'Expr' type
 --   that encodes case-of-False-True functionality.
@@ -1528,7 +1522,7 @@
 -- Instead of using this, you are perhaps better of using if encoded as an
 -- expression.  This is just here to be consistent with 'caseOrdering'.
 caseBool :: Expr -> Expr -> Expr -> Expr
-caseBool ep ex ey  =  (:$ ey) . headOr err . mapMaybe ($$ ex) $ map (:$ ep)
+caseBool  =  mk3 "caseBool"
   [ value "case" (caseB :: CaseB ())
   , value "case" (caseB :: CaseB Int)
   , value "case" (caseB :: CaseB Bool)
@@ -1538,12 +1532,11 @@
   , value "case" (caseB :: CaseB [Char])
   ]
   where
-  err  =  error $ "caseBool: unhandled type " ++ show (typ ex)
   caseB :: Bool -> a -> a -> a
   caseB p x y  =  case p of
                   False -> x
                   True -> y
-type CaseB a = Bool -> a -> a -> a
+type CaseB a  =  Bool -> a -> a -> a
 
 -- | A function @case :: Ordering -> a -> a -> a -> a@ lifted over the 'Expr' type
 --   that encodes case-of-LT-EQ-GT functionality.
@@ -1559,7 +1552,7 @@
 -- By convention cases are given in 'LT', 'EQ' and 'GT' order
 -- as @LT < EQ < GT@ and @data Ordering = LT | EQ | GT@.
 caseOrdering :: Expr -> Expr -> Expr -> Expr -> Expr
-caseOrdering eo ex ey ez  =  (:$ ez) . (:$ ey) . headOr err . mapMaybe ($$ ex) $ map (:$ eo)
+caseOrdering  =  mk4 "caseOrdering"
   [ value "case" (caseO :: CaseO ())
   , value "case" (caseO :: CaseO Int)
   , value "case" (caseO :: CaseO Bool)
@@ -1569,13 +1562,12 @@
   , value "case" (caseO :: CaseO [Char])
   ]
   where
-  err  =  error $ "caseOrdering: unhandled type " ++ show (typ ex)
   caseO :: Ordering -> a -> a -> a -> a
   caseO o x y z  =  case o of
                     LT -> x
                     EQ -> y
                     GT -> z
-type CaseO a = Ordering -> a -> a -> a -> a
+type CaseO a  =  Ordering -> a -> a -> a -> a
 
 -- | Constructs an 'Expr'-encoded 'compare' operation between two 'Expr's.
 --
@@ -1585,7 +1577,7 @@
 -- > > compare' ae bee
 -- > compare 'a' 'b' :: Ordering
 compare' :: Expr -> Expr -> Expr
-compare' ex ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
+compare'  =  mk2 "compare'"
   [ value "compare" (compare :: Compare ())
   , value "compare" (compare :: Compare Int)
   , value "compare" (compare :: Compare Bool)
@@ -1594,9 +1586,7 @@
   , value "compare" (compare :: Compare [Bool])
   , value "compare" (compare :: Compare [Char])
   ]
-  where
-  err  =  error $ "(-<-): unhandled type " ++ show (typ ex)
-type Compare a = a -> a -> Ordering
+type Compare a  =  a -> a -> Ordering
 
 -- | 'Nothing' bound to the 'Maybe' 'Int' type encoded as an 'Expr'.
 --
@@ -1629,67 +1619,63 @@
 -- > > just false
 -- > Just False :: Maybe Bool
 just :: Expr -> Expr
-just ex  =  headOr err $ mapMaybe ($$ ex)
+just  =  mk1 "just"
   [ justInt
   , justBool
   ]
-  where
-  err  =  error $ "just: unhandled type " ++ show (typ ex)
 
 -- | An infix synonym of 'pair'.
 (-|-) :: Expr -> Expr -> Expr
-(-|-) = pair
+(-|-)  =  pair
 
 -- | The pair constructor lifted over 'Expr's.
 --
 -- This works for the 'Int' and 'Bool' element types
 -- by differently from 'foldPair' by returning a well-typed expression.
 pair :: Expr -> Expr -> Expr
-pair x y  =  comma :$ x :$ y
-  where
-  comma  =  case (show $ typ x, show $ typ y) of
-            ("Int", "Int")  -> value "," ((,) :: Pair Int Int)
-            ("Int", "Bool") -> value "," ((,) :: Pair Int Bool)
-            ("Bool","Int")  -> value "," ((,) :: Pair Bool Int)
-            ("Bool","Bool") -> value "," ((,) :: Pair Bool Bool)
-            (t,t')          -> error $ "(-:-): unhandled types " ++ t ++ " " ++ t'
-type Pair a b = a -> b -> (a,b)
+pair  =  mk2 "pair"
+  [ value "," ((,) :: Pair Int Int)
+  , value "," ((,) :: Pair Int Bool)
+  , value "," ((,) :: Pair Bool Int)
+  , value "," ((,) :: Pair Bool Bool)
+  ]
+type Pair a b  =  a -> b -> (a,b)
 
 -- | The pair constructor (@ :: ... -> (Int,Int) @) encoded as an 'Expr'.
 comma :: Expr
-comma = value "," ((,) :: Pair Int Int)
+comma  =  value "," ((,) :: Pair Int Int)
 
 -- | The triple/trio constructor lifted over 'Expr's.
 --
 -- This only works for the 'Int' element type.
 triple :: Expr -> Expr -> Expr -> Expr
-triple e1 e2 e3 = ccE :$ e1 :$ e2 :$ e3
+triple e1 e2 e3  =  ccE :$ e1 :$ e2 :$ e3
   where
-  ccE = value ",," ((,,) :: Int -> Int -> Int -> (Int,Int,Int))
+  ccE  =  value ",," ((,,) :: Int -> Int -> Int -> (Int,Int,Int))
 
 -- | The quadruple constructor lifted over 'Expr's.
 --
 -- This only works for the 'Int' element type.
 quadruple :: Expr -> Expr -> Expr -> Expr -> Expr
-quadruple e1 e2 e3 e4 = cccE :$ e1 :$ e2 :$ e3 :$ e4
+quadruple e1 e2 e3 e4  =  cccE :$ e1 :$ e2 :$ e3 :$ e4
   where
-  cccE = value ",,," ((,,,) :: Int -> Int -> Int -> Int -> (Int,Int,Int,Int))
+  cccE  =  value ",,," ((,,,) :: Int -> Int -> Int -> Int -> (Int,Int,Int,Int))
 
 -- | The quintuple constructor lifted over 'Expr's.
 --
 -- This only works for the 'Int' element type.
 quintuple :: Expr -> Expr -> Expr -> Expr -> Expr -> Expr
-quintuple e1 e2 e3 e4 e5 = ccccE :$ e1 :$ e2 :$ e3 :$ e4 :$ e5
+quintuple e1 e2 e3 e4 e5  =  ccccE :$ e1 :$ e2 :$ e3 :$ e4 :$ e5
   where
-  ccccE = value ",,,," ((,,,,) :: Int -> Int -> Int -> Int -> Int -> (Int,Int,Int,Int,Int))
+  ccccE  =  value ",,,," ((,,,,) :: Int -> Int -> Int -> Int -> Int -> (Int,Int,Int,Int,Int))
 
 -- | The sixtuple constructor lifted over 'Expr's.
 --
 -- This only works for the 'Int' element type.
 sixtuple :: Expr -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr
-sixtuple e1 e2 e3 e4 e5 e6 = cccccE :$ e1 :$ e2 :$ e3 :$ e4 :$ e5 :$ e6
+sixtuple e1 e2 e3 e4 e5 e6  =  cccccE :$ e1 :$ e2 :$ e3 :$ e4 :$ e5 :$ e6
   where
-  cccccE = value ",,,,," ((,,,,,) :: Int -> Int -> Int -> Int -> Int -> Int -> (Int,Int,Int,Int,Int,Int))
+  cccccE  =  value ",,,,," ((,,,,,) :: Int -> Int -> Int -> Int -> Int -> Int -> (Int,Int,Int,Int,Int,Int))
 
 -- | A typed hole of @[Bool]@ type encoded as an 'Expr'.
 --
@@ -1790,7 +1776,7 @@
 --
 -- This works for 'Int', 'Bool', 'Char' and their lists.
 (-.-) :: Expr -> Expr -> Expr
-ex -.- ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
+(-.-)  =  mk2 "(-.-)"
   [ value "." ((.) :: Compose ())
   , value "." ((.) :: Compose Int)
   , value "." ((.) :: Compose Bool)
@@ -1799,9 +1785,7 @@
   , value "." ((.) :: Compose [Bool])
   , value "." ((.) :: Compose [Char])
   ]
-  where
-  err  =  error $ "(-.-): unhandled type " ++ show (typ ex)
-type Compose a = (a -> a) -> (a -> a) -> (a -> a)
+type Compose a  =  (a -> a) -> (a -> a) -> (a -> a)
 
 -- | 'map' over the 'Int' element type encoded as an 'Expr'
 --
@@ -1815,7 +1799,7 @@
 -- > > map' absE (unit one)
 -- > map abs [1] :: [Int]
 map' :: Expr -> Expr -> Expr
-map' ef exs  =  (:$ exs) . headOr err $ mapMaybe ($$ ef)
+map'  =  mk2 "map'"
   [ value "map" (map :: Map ())
   , value "map" (map :: Map Int)
   , value "map" (map :: Map Bool)
@@ -1824,9 +1808,7 @@
   , value "map" (map :: Map [Bool])
   , value "map" (map :: Map [Char])
   ]
-  where
-  err  =  error $ "map': unhandled type " ++ show (typ ef)
-type Map a = (a -> a) -> [a] -> [a]
+type Map a  =  (a -> a) -> [a] -> [a]
 
 -- | 'enumFrom' lifted over 'Expr's.
 --
@@ -1835,42 +1817,38 @@
 --
 -- Works for 'Int's, 'Bool's and 'Char's.
 enumFrom' :: Expr -> Expr
-enumFrom' ex  =  headOr err $ mapMaybe ($$ ex)
+enumFrom'  =  mk1 "enumFrom'"
   [ value "enumFrom" (enumFrom :: EnumFrom Int)
   , value "enumFrom" (enumFrom :: EnumFrom Bool)
   , value "enumFrom" (enumFrom :: EnumFrom Char)
   ]
-  where
-  err  =  error $ "enumFrom': unhandled type " ++ show (typ ex)
 type EnumFrom a  =  (a -> [a])
 
 -- | 'enumFrom' lifted over 'Expr's named as @".."@ for pretty-printing.
 --
--- > > (-..) one
+-- > > one -.. ()
 -- > [1..] :: [Int]
 --
 -- Works for 'Int's, 'Bool's and 'Char's.
-(-..) :: Expr -> Expr
-(-..) ex  =  headOr err $ mapMaybe ($$ ex)
-  [ value ".." (enumFrom :: EnumFrom Int)
-  , value ".." (enumFrom :: EnumFrom Bool)
-  , value ".." (enumFrom :: EnumFrom Char)
-  ]
+(-..) :: Expr -> () -> Expr
+e -.. _  =  mk e
   where
-  err  =  error $ "(-..): unhandled type " ++ show (typ ex)
+  mk  =  mk1 "(-..)"
+      [ value ".." (enumFrom :: EnumFrom Int)
+      , value ".." (enumFrom :: EnumFrom Bool)
+      , value ".." (enumFrom :: EnumFrom Char)
+      ]
 
 -- | 'enumFromTo' lifted over 'Expr's
 --
 -- > > enumFromTo' zero four
 -- > enumFromTo 0 4 :: [Int]
 enumFromTo' :: Expr -> Expr -> Expr
-enumFromTo' ex ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
+enumFromTo'  =  mk2 "enumFromTo'"
   [ value "enumFromTo" (enumFromTo :: EnumFromTo Int)
   , value "enumFromTo" (enumFromTo :: EnumFromTo Bool)
   , value "enumFromTo" (enumFromTo :: EnumFromTo Char)
   ]
-  where
-  err  =  error $ "enumFromTo': unhandled type " ++ show (typ ex)
 type EnumFromTo a  =  (a -> a -> [a])
 
 -- | 'enumFromTo' lifted over 'Expr's but named as @".."@ for pretty-printing.
@@ -1878,64 +1856,58 @@
 -- > > zero -..- four
 -- > [0..4] :: [Int]
 (-..-) :: Expr -> Expr -> Expr
-ex -..- ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
+(-..-)  =  mk2 "(-..-)"
   [ value ".." (enumFromTo :: EnumFromTo Int)
   , value ".." (enumFromTo :: EnumFromTo Bool)
   , value ".." (enumFromTo :: EnumFromTo Char)
   ]
-  where
-  err  =  error $ "-..-: unhandled type " ++ show (typ ex)
 
 -- | 'enumFromThen' lifted over 'Expr's
 --
 -- > > enumFromThen' zero ten
 -- > enumFromThen 0 10 :: [Int]
 enumFromThen' :: Expr -> Expr -> Expr
-enumFromThen' ex ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
+enumFromThen'  =  mk2 "enumFromThen'"
   [ value "enumFromThen" (enumFromThen :: EnumFromThen Int)
   , value "enumFromThen" (enumFromThen :: EnumFromThen Bool)
   , value "enumFromThen" (enumFromThen :: EnumFromThen Char)
   ]
-  where
-  err  =  error $ "enumFromThen': unhandled type " ++ show (typ ex)
 type EnumFromThen a  =  (a -> a -> [a])
 
 -- | 'enumFromThen' lifted over 'Expr's but named as @",.."@ for pretty printing.
 --
--- > > zero -... ten
+-- > > (zero,ten) --.. ()
 -- > [0,10..] :: [Int]
-(-...) :: Expr -> Expr -> Expr
-ex -... ey  =  (:$ ey) . headOr err $ mapMaybe ($$ ex)
-  [ value ",.." (enumFromThen :: EnumFromThen Int)
-  , value ",.." (enumFromThen :: EnumFromThen Bool)
-  , value ",.." (enumFromThen :: EnumFromThen Char)
-  ]
+(--..) :: (Expr,Expr) -> () -> Expr
+(e1,e2) --.. _  =  mk e1 e2
   where
-  err  =  error $ "-..-: unhandled type " ++ show (typ ex)
+  mk  =  mk2 "(--..)"
+      [ value ",.." (enumFromThen :: EnumFromThen Int)
+      , value ",.." (enumFromThen :: EnumFromThen Bool)
+      , value ",.." (enumFromThen :: EnumFromThen Char)
+      ]
 
 -- | 'enumFromThenTo' lifted over 'Expr's.
 --
 -- > > enumFromThenTo' zero two ten
 -- > enumFromThenTo 0 2 10 :: [Int]
 enumFromThenTo' :: Expr -> Expr -> Expr -> Expr
-enumFromThenTo' ex ey ez  =  (:$ ez) . (:$ ey) . headOr err $ mapMaybe ($$ ex)
+enumFromThenTo'  =  mk3 "enumFromThenTo'"
   [ value "enumFromThenTo" (enumFromThenTo :: EnumFromThenTo Int)
   , value "enumFromThenTo" (enumFromThenTo :: EnumFromThenTo Bool)
   , value "enumFromThenTo" (enumFromThenTo :: EnumFromThenTo Char)
   ]
-  where
-  err  =  error $ "enumFromThenTo': unhandled type " ++ show (typ ex)
 type EnumFromThenTo a  =  (a -> a -> a -> [a])
 
 -- | 'enumFromThenTo' lifted over 'Expr's but named as @",.."@ for pretty-printing.
 --
--- > > (zero -...- two) ten
+-- > > (zero,two) --..- ten
 -- > [0,2..10] :: [Int]
-(-...-) :: Expr -> Expr -> Expr -> Expr
-(ex -...- ey) ez  =  (:$ ez) . (:$ ey) . headOr err $ mapMaybe ($$ ex)
-  [ value ",.." (enumFromThenTo :: EnumFromThenTo Int)
-  , value ",.." (enumFromThenTo :: EnumFromThenTo Bool)
-  , value ",.." (enumFromThenTo :: EnumFromThenTo Char)
-  ]
+(--..-) :: (Expr,Expr) -> Expr -> Expr
+(e1, e2) --..- e3  =  mk e1 e2 e3
   where
-  err  =  error $ "-..-: unhandled type " ++ show (typ ex)
+  mk  =  mk3 "(--..-)"
+      [ value ",.." (enumFromThenTo :: EnumFromThenTo Int)
+      , value ",.." (enumFromThenTo :: EnumFromThenTo Bool)
+      , value ",.." (enumFromThenTo :: EnumFromThenTo Char)
+      ]
diff --git a/src/Data/Express/Fold.hs b/src/Data/Express/Fold.hs
--- a/src/Data/Express/Fold.hs
+++ b/src/Data/Express/Fold.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Fold
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -82,7 +82,7 @@
 unfoldPair :: Expr -> (Expr,Expr)
 unfoldPair (Value "," _ :$ e1 :$ e2) = (e1,e2)
 unfoldPair (Value "(,)" _ :$ e1 :$ e2) = (e1,e2)
-unfoldPair _  =  error "unfoldPair: not an Expr pair"
+unfoldPair e  =  errorOn "unfoldPair" $ "not an Expr pair: " ++ show e
 
 data ExprTrio = ExprTrio
 
@@ -125,7 +125,7 @@
 unfoldTrio :: Expr -> (Expr,Expr,Expr)
 unfoldTrio (Value ",," _ :$ e1 :$ e2 :$ e3) = (e1,e2,e3)
 unfoldTrio (Value "(,,)" _ :$ e1 :$ e2 :$ e3) = (e1,e2,e3)
-unfoldTrio _  =  error "unfoldTrio: not an Expr trio"
+unfoldTrio e  =  errorOn "unfoldTrio" $ "not an Expr trio: " ++ show e
 
 data ExprList = ExprList
 
@@ -162,12 +162,16 @@
 -- > > unfold $ expr [1,2,3::Int]
 -- > [1 :: Int,2 :: Int,3 :: Int]
 unfold :: Expr -> [Expr]
+unfold (Value "\"\"" _)           =  []
 unfold (Value "[]" _)             =  []
 unfold (Value ":"  _ :$ e :$ es)  =  e : unfold es
-unfold e  =  error $ "unfold: cannot unfold expression: " ++ show e
+unfold e  =  errorOn "unfold" $ "cannot unfold expression: " ++ show e
 
 #if __GLASGOW_HASKELL__ == 708
 deriving instance Typeable ExprPair
 deriving instance Typeable ExprTrio
 deriving instance Typeable ExprList
 #endif
+
+errorOn :: String -> String -> a
+errorOn fn msg  =  error $ "Data.Express." ++ fn ++ ": " ++ msg
diff --git a/src/Data/Express/Hole.hs b/src/Data/Express/Hole.hs
--- a/src/Data/Express/Hole.hs
+++ b/src/Data/Express/Hole.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Hole
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -43,14 +43,17 @@
 -- > > "p" `varAsTypeOf` val False
 -- > p :: Bool
 varAsTypeOf :: String -> Expr -> Expr
-varAsTypeOf n = Value ('_':n) . undefine . fromMaybe err . toDynamic
+varAsTypeOf n e  =  Value ('_':n) . undefine . fromMaybe err . toDynamic $ e
   where
-  err = error "varAsTypeOf: could not compile Dynamic value, type error?"
+  err  =  error
+       $ "Data.Express.varAsTypeOf: could not compile Dynamic value for `"
+       ++ show e
+       ++ "' with name " ++ n
   undefine :: Dynamic -> Dynamic
 #if __GLASGOW_HASKELL__ >= 806
-  undefine (Dynamic t v) = (Dynamic t undefined)
+  undefine (Dynamic t v)  =  (Dynamic t undefined)
 #else
-  undefine = id -- there's no way to do this using the old Data.Dynamic API.
+  undefine  =  id -- there's no way to do this using the old Data.Dynamic API.
 #endif
 
 -- | /O(1)/.
@@ -62,7 +65,7 @@
 -- > > holeAsTypeOf $ val (1::Int)
 -- > _ :: Int
 holeAsTypeOf :: Expr -> Expr
-holeAsTypeOf = ("" `varAsTypeOf`)
+holeAsTypeOf  =  ("" `varAsTypeOf`)
 
 -- | /O(1)/.
 -- Creates an 'Expr' representing a typed hole of the given argument type.
@@ -79,7 +82,7 @@
 -- > hole x = var "" x
 -- > hole x = value "_" x
 hole :: Typeable a => a -> Expr
-hole a = var "" (undefined `asTypeOf` a)
+hole a  =  var "" (undefined `asTypeOf` a)
 
 -- | /O(1)/.
 -- Checks if an 'Expr' represents a typed hole.
@@ -259,11 +262,11 @@
 -- > > fill (i_ -+- i_ -+- i_) [xx, val 'c', yy]
 -- > (x + _) + _ :: Int
 fill :: Expr -> [Expr] -> Expr
-fill e = fst . fill' e
+fill e  =  fst . fill' e
   where
   fill' :: Expr -> [Expr] -> (Expr,[Expr])
-  fill' (e1 :$ e2) es = let (e1',es')  = fill' e1 es
-                            (e2',es'') = fill' e2 es'
-                        in (e1' :$ e2', es'')
-  fill' eh (e:es) | isHole eh && typ eh == typ e = (e,es)
-  fill' e es = (e,es)
+  fill' (e1 :$ e2) es  =  let (e1',es')  = fill' e1 es
+                              (e2',es'')  =  fill' e2 es'
+                          in (e1' :$ e2', es'')
+  fill' eh (e:es) | isHole eh && typ eh == typ e  =  (e,es)
+  fill' e es  =  (e,es)
diff --git a/src/Data/Express/Instances.hs b/src/Data/Express/Instances.hs
--- a/src/Data/Express/Instances.hs
+++ b/src/Data/Express/Instances.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Instances
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -129,7 +129,7 @@
   , value "/=" (/=)
   ]
   where
-  x /= y = not (x == y)
+  x /= y  =  not (x == y)
 
 -- | /O(1)/.
 -- Builds a reified 'Ord' instance from the given 'compare' function.
@@ -265,7 +265,7 @@
   e1e <- findValidApp os e1
   e1e $$ e2
   where
-  os = [eq | eq@(Value n _) <- is, n == n']
+  os  =  [eq | eq@(Value n _) <- is, n == n']
 
 -- | /O(n+m)./
 -- Returns an equation between two expressions
@@ -308,12 +308,12 @@
 -- > > lookupName [] (val False)
 -- > "x"
 lookupName :: [Expr] -> Expr -> String
-lookupName is e  =  fromMaybe d $ eval "x" <$> findValidApp es e
+lookupName is e  =  maybe d (eval "x") (findValidApp es e)
   where
   t  =  typ e
   d | isFunTy t  =  "f"
     | otherwise  =  'x' : replicate (countListTy t) 's'
-  es = [e | e@(Value "name" _) <- is]
+  es  =  [e | e@(Value "name" _) <- is]
 
 -- | /O(n+m)./
 -- A mix between 'lookupName' and 'names':
@@ -352,7 +352,7 @@
 -- A list of reified 'Name' instances
 -- for an arbitrary selection of types from the Haskell "Prelude".
 preludeNameInstances :: [Expr]
-preludeNameInstances = concat
+preludeNameInstances  =  concat
   [ reifyName (u :: ())
   , reifyName (u :: Bool)
   , reifyName (u :: Int)
diff --git a/src/Data/Express/Map.hs b/src/Data/Express/Map.hs
--- a/src/Data/Express/Map.hs
+++ b/src/Data/Express/Map.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Map
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -185,7 +185,7 @@
 -- Given that the argument list has length /m/,
 -- this function is /O(n*m)/.
 (//-) :: Expr -> [(Expr,Expr)] -> Expr
-e //- s  =  mapValues (flip lookupId s) e
+e //- s  =  mapValues (`lookupId` s) e
 
 -- | /O(n*n*m)/.
 -- Substitute subexpressions in an expression
@@ -221,7 +221,7 @@
 -- comparing two expressions is /O(n)/ in the worst case,
 -- and we may need to compare with /n/ subexpressions in the worst case.
 (//) :: Expr -> [(Expr,Expr)] -> Expr
-e // s  =  mapSubexprs (flip lookup s) e
+e // s  =  mapSubexprs (`lookup` s) e
 
 -- | Rename variables in an 'Expr'.
 --
@@ -241,5 +241,5 @@
 renameVarsBy :: (String -> String) -> Expr -> Expr
 renameVarsBy f = mapValues f'
   where
-  f' (Value ('_':n) t) = Value ('_':f n) t
-  f' e = e
+  f' (Value ('_':n) t)  =  Value ('_':f n) t
+  f' e  =  e
diff --git a/src/Data/Express/Match.hs b/src/Data/Express/Match.hs
--- a/src/Data/Express/Match.hs
+++ b/src/Data/Express/Match.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Match
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -45,7 +45,7 @@
 -- > (zero -+- (one -+- two)) `match` (xx -+- yy)           =  Just [(xx,zero), (yy,one-+-two)]
 -- > (zero -+- (one -+- two)) `match` (xx -+- (yy -+- yy))  =  Nothing
 match :: Expr -> Expr -> Maybe [(Expr,Expr)]
-match = matchWith []
+match  =  matchWith []
 
 -- |
 -- Like 'match' but allowing predefined bindings.
@@ -53,7 +53,7 @@
 -- > matchWith [(xx,zero)] (zero -+- one) (xx -+- yy)  =  Just [(xx,zero), (yy,one)]
 -- > matchWith [(xx,one)]  (zero -+- one) (xx -+- yy)  =  Nothing
 matchWith :: [(Expr,Expr)] -> Expr -> Expr -> Maybe [(Expr,Expr)]
-matchWith bs e1' e2' = m e1' e2' bs
+matchWith bs e1' e2'  =  m e1' e2' bs
   where
   m :: Expr -> Expr -> [(Expr,Expr)] -> Maybe [(Expr,Expr)]
   m (f1 :$ x1) (f2 :$ x2)             =  m f1 f2 >=> m x1 x2
@@ -63,12 +63,12 @@
     | otherwise                       =  const Nothing
 
 updateAssignments :: (Expr,Expr) -> [(Expr,Expr)] -> Maybe [(Expr,Expr)]
-updateAssignments (e,e') = \bs ->
+updateAssignments (e,e')  =  \bs ->
   case lookup e bs of
-    Nothing  -> Just ((e,e'):bs)
-    Just e'' -> if e'' == e'
-                then Just bs
-                else Nothing
+  Nothing  -> Just ((e,e'):bs)
+  Just e'' -> if e'' == e'
+              then Just bs
+              else Nothing
 
 -- |
 -- Given two 'Expr's,
@@ -94,7 +94,7 @@
 -- > (zero -+- (yy -+- xx)) `isInstanceOf` (zero -+- yy)  =  True
 -- >  (one -+- (yy -+- xx)) `isInstanceOf` (zero -+- yy)  =  False
 isInstanceOf :: Expr -> Expr -> Bool
-e1 `isInstanceOf` e2 = isJust $ e1 `match` e2
+e1 `isInstanceOf` e2  =  isJust $ e1 `match` e2
 
 
 -- |
@@ -129,4 +129,4 @@
 -- > > xx `isSubexprOf` yy
 -- > False
 isSubexprOf :: Expr -> Expr -> Bool
-isSubexprOf e = (e `elem`) . subexprs
+isSubexprOf e  =  (e `elem`) . subexprs
diff --git a/src/Data/Express/Name.hs b/src/Data/Express/Name.hs
--- a/src/Data/Express/Name.hs
+++ b/src/Data/Express/Name.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Name
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -141,10 +141,10 @@
 instance (Name a, Name b) => Name (Either a b) where
   name exy  =  "e" ++ n ++ m
     where
-    Left x  = exy
-    Right y = exy
-    n = name x
-    m = head $ names y \\ [n]
+    Left x   =  exy
+    Right y  =  exy
+    n        =  name x
+    (m:_)    =  delete n $ names y
 
 -- |
 -- > names (undefined :: (Int,Int)) = ["xy", "zw", "xy'", ...]
@@ -153,8 +153,8 @@
   name xy  =  n ++ m
     where
     (x,y)  =  xy
-    n  =  name x
-    m  =  head $ names y \\ [n]
+    n      =  name x
+    (m:_)  =  delete n $ names y
 
 -- |
 -- > names (undefined :: (Int,Int,Int)) = ["xyz","uvw", ...]
@@ -163,9 +163,9 @@
   name xyz  =  n ++ m ++ o
     where
     (x,y,z)  =  xyz
-    n  =  name x
-    m  =  head $ names y \\ [n]
-    o  =  head $ names z \\ [n,m]
+    n        =  name x
+    (m:_)    =  names y \\ [n]
+    (o:_)    =  names z \\ [n,m]
 
 -- |
 -- > names (undefined :: ((),(),(),())) = ["uuuu", "uuuu1", ...]
@@ -177,7 +177,7 @@
 -- > names (undefined :: [Int]) = ["xs", "ys", "zs", "xs'", ...]
 -- > names (undefined :: [Bool]) = ["ps", "qs", "rs", "ps'", ...]
 instance Name a => Name [a] where
-  name xs  =  name (head xs) ++ "s"
+  name xs  =  name x ++ "s"  where  (x:_) = xs
 
 -- |
 -- Returns na infinite list of variable names from the given type:
diff --git a/src/Data/Express/Name/Derive.hs b/src/Data/Express/Name/Derive.hs
--- a/src/Data/Express/Name/Derive.hs
+++ b/src/Data/Express/Name/Derive.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE TemplateHaskell, CPP #-}
 -- |
 -- Module      : Data.Express.Name.Derive
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
diff --git a/src/Data/Express/Triexpr.hs b/src/Data/Express/Triexpr.hs
--- a/src/Data/Express/Triexpr.hs
+++ b/src/Data/Express/Triexpr.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Triexpr
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -47,7 +47,7 @@
 --
 -- In the representation,
 -- 'Nothing' matches an App and 'Just' 'Expr' an expression.
-data Triexpr a = Triexpr [(Maybe Expr, Either (Triexpr a) (Expr,a))]
+newtype Triexpr a  =  Triexpr [(Maybe Expr, Either (Triexpr a) (Expr,a))]
   deriving (Eq, Ord, Show)
 
 -- | An empty 'Triexpr'.
diff --git a/src/Data/Express/Utils.hs b/src/Data/Express/Utils.hs
--- a/src/Data/Express/Utils.hs
+++ b/src/Data/Express/Utils.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Utils.List
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
diff --git a/src/Data/Express/Utils/List.hs b/src/Data/Express/Utils/List.hs
--- a/src/Data/Express/Utils/List.hs
+++ b/src/Data/Express/Utils/List.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Utils.List
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -13,6 +13,7 @@
   , isPermutationOf
   , isSubsetOf
   , isNub
+  , none
   , lookupId
   , (+++)
   , module Data.List
@@ -92,6 +93,16 @@
 -- > isNub [2,1,2]  =  False
 isNub :: Ord a => [a] -> Bool
 isNub xs  =  length (nubSort xs) == length xs
+
+-- | Determines whether no element of the given list satisfies the predicate.
+--
+-- > > none even [3,5,7,11,13]
+-- > True
+--
+-- > > none even [7,5,3,2]
+-- > False
+none :: (a -> Bool) -> [a] -> Bool
+none p  =  not . any p
 
 -- | /O(n)/.
 -- Like 'lookup' but returns the key itself if nothing is found.
diff --git a/src/Data/Express/Utils/String.hs b/src/Data/Express/Utils/String.hs
--- a/src/Data/Express/Utils/String.hs
+++ b/src/Data/Express/Utils/String.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Utils.String
--- Copyright   : (c) 2016-2021 Rudy Matela
+-- Copyright   : (c) 2016-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -22,6 +22,7 @@
 where
 
 import Data.Char
+import Data.Express.Utils.List
 
 -- | Unquotes a string if possible, otherwise, this is just an identity.
 --
@@ -58,7 +59,7 @@
 --
 -- but this does not cause problems for (all?) most cases.
 atomic :: String -> Bool
-atomic s | all (not . isSpace) s = True
+atomic s        | none isSpace s = True
 atomic ('\'':s) | last s == '\'' = True
 atomic ('"':s)  | last s == '"'  = True
 atomic ('[':s)  | last s == ']'  = True
@@ -100,8 +101,8 @@
 -- > isInfix "`foo`" == True
 -- > isInfix "+"     == True
 isInfix :: String -> Bool
-isInfix (c:_) = c `notElem` "()'\"[_" && not (isAlphaNum c)
-isInfix "" = error "isInfix: empty string"
+isInfix (c:_)  =  c `notElem` "()'\"[_" && not (isAlphaNum c)
+isInfix ""     =  False
 
 -- | Returns the precedence of default Haskell operators
 prec :: String -> Int
diff --git a/src/Data/Express/Utils/TH.hs b/src/Data/Express/Utils/TH.hs
--- a/src/Data/Express/Utils/TH.hs
+++ b/src/Data/Express/Utils/TH.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE TemplateHaskell, CPP #-}
 -- |
 -- Module      : Data.Express.Name.Derive
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -52,7 +52,7 @@
   is <- t `isInstanceOf` cls
   if is
   then do
-    unless (not warnExisting)
+    when warnExisting
       (reportWarning $ "Instance " ++ showJustName cls ++ " " ++ showJustName t
                     ++ " already exists, skipping derivation")
     return []
@@ -78,40 +78,37 @@
 reallyDeriveCascading cls reallyDerive t =
       return . concat
   =<< mapM reallyDerive
-  =<< filterM (liftM not . isTypeSynonym)
+  =<< filterM (fmap not . isTypeSynonym)
   =<< return . (t:) . delete t
   =<< t `typeConCascadingArgsThat` (`isntInstanceOf` cls)
 
 typeConArgs :: Name -> Q [Name]
-typeConArgs t = do
+typeConArgs t  =  do
   is <- isTypeSynonym t
   if is
-    then liftM typeConTs $ typeSynonymType t
-    else liftM (nubMerges . map typeConTs . concat . map snd) $ typeConstructors t
+  then typeConTs `fmap` typeSynonymType t
+  else (nubMerges . map typeConTs . concatMap snd) `fmap` typeConstructors t
   where
   typeConTs :: Type -> [Name]
-  typeConTs (AppT t1 t2) = typeConTs t1 `nubMerge` typeConTs t2
-  typeConTs (SigT t _) = typeConTs t
-  typeConTs (VarT _) = []
-  typeConTs (ConT n) = [n]
+  typeConTs (AppT t1 t2)  =  typeConTs t1 `nubMerge` typeConTs t2
+  typeConTs (SigT t _)  =  typeConTs t
+  typeConTs (VarT _)  =  []
+  typeConTs (ConT n)  =  [n]
 #if __GLASGOW_HASKELL__ >= 800
-  -- typeConTs (PromotedT n) = [n] ?
-  typeConTs (InfixT  t1 n t2) = typeConTs t1 `nubMerge` typeConTs t2
-  typeConTs (UInfixT t1 n t2) = typeConTs t1 `nubMerge` typeConTs t2
-  typeConTs (ParensT t) = typeConTs t
+  -- typeConTs (PromotedT n)  =  [n] ?
+  typeConTs (InfixT  t1 n t2)  =  typeConTs t1 `nubMerge` typeConTs t2
+  typeConTs (UInfixT t1 n t2)  =  typeConTs t1 `nubMerge` typeConTs t2
+  typeConTs (ParensT t)  =  typeConTs t
 #endif
-  typeConTs _ = []
+  typeConTs _  =  []
 
 typeConArgsThat :: Name -> (Name -> Q Bool) -> Q [Name]
-typeConArgsThat t p = do
-  targs <- typeConArgs t
-  tbs   <- mapM (\t' -> do is <- p t'; return (t',is)) targs
-  return [t' | (t',p) <- tbs, p]
+t `typeConArgsThat` p  =  filterM p =<< typeConArgs t
 
 typeConCascadingArgsThat :: Name -> (Name -> Q Bool) -> Q [Name]
-t `typeConCascadingArgsThat` p = do
+t `typeConCascadingArgsThat` p  =  do
   ts <- t `typeConArgsThat` p
-  let p' t' = do is <- p t'; return $ t' `notElem` (t:ts) && is
+  let p' t'  =  (t' `notElem` t:ts &&) `fmap` p t'
   tss <- mapM (`typeConCascadingArgsThat` p') ts
   return $ nubMerges (ts:tss)
 
@@ -132,22 +129,26 @@
 -- > > putStrLn $(stringE . show =<< normalizeType ''[])
 -- > (AppT (ConT ''[]) (VarT a),[VarT a])
 normalizeType :: Name -> Q (Type, [Type])
-normalizeType t = do
+normalizeType t  =  do
   ar <- typeArity t
   vs <- newVarTs ar
   return (foldl AppT (ConT t) vs, vs)
   where
     newNames :: [String] -> Q [Name]
-    newNames = mapM newName
+    newNames  =  mapM newName
     newVarTs :: Int -> Q [Type]
-    newVarTs n = liftM (map VarT)
-               $ newNames (take n . map (:[]) $ cycle ['a'..'z'])
+    newVarTs n  =  map VarT
+            `fmap` newNames (take n . map (:[]) $ cycle ['a'..'z'])
 
 -- |
 -- Normalizes a type by applying it to units to make it star-kinded.
 -- (cf. 'normalizeType')
+--
+-- > normalizeTypeUnits ''Int    === [t| Int |]
+-- > normalizeTypeUnits ''Maybe  === [t| Maybe () |]
+-- > normalizeTypeUnits ''Either === [t| Either () () |]
 normalizeTypeUnits :: Name -> Q Type
-normalizeTypeUnits t = do
+normalizeTypeUnits t  =  do
   ar <- typeArity t
   return (foldl AppT (ConT t) (replicate ar (TupleT 0)))
 
@@ -163,14 +164,14 @@
 -- > > putStrLn $(stringE . show =<< ''Int `isInstanceOf` ''Fractional)
 -- > False
 isInstanceOf :: Name -> Name -> Q Bool
-isInstanceOf tn cl = do
+isInstanceOf tn cl  =  do
   ty <- normalizeTypeUnits tn
   isInstance cl [ty]
 
 -- |
 -- The negation of 'isInstanceOf'.
 isntInstanceOf :: Name -> Name -> Q Bool
-isntInstanceOf tn cl = liftM not (isInstanceOf tn cl)
+isntInstanceOf tn  =  fmap not . isInstanceOf tn
 
 -- | Given a type name, return the number of arguments taken by that type.
 -- Examples in partially broken TH:
@@ -196,22 +197,22 @@
 -- > > putStrLn $(stringE . show =<< typeArity ''String)
 -- > 0
 --
--- This works for Data's and Newtype's and it is useful when generating
--- typeclass instances.
+-- This works for data and newtype declarations and
+-- it is useful when generating typeclass instances.
 typeArity :: Name -> Q Int
-typeArity t = do
-  ti <- reify t
-  return . length $ case ti of
+typeArity t  =  fmap arity $ reify t
+  where
+  arity  =  length . args
 #if __GLASGOW_HASKELL__ < 800
-    TyConI (DataD    _ _ ks _ _) -> ks
-    TyConI (NewtypeD _ _ ks _ _) -> ks
+  args (TyConI (DataD    _ _ ks   _ _))  =  ks
+  args (TyConI (NewtypeD _ _ ks   _ _))  =  ks
 #else
-    TyConI (DataD    _ _ ks _ _ _) -> ks
-    TyConI (NewtypeD _ _ ks _ _ _) -> ks
+  args (TyConI (DataD    _ _ ks _ _ _))  =  ks
+  args (TyConI (NewtypeD _ _ ks _ _ _))  =  ks
 #endif
-    TyConI (TySynD _ ks _) -> ks
-    _ -> error $ "error (typeArity): symbol " ++ show t
-              ++ " is not a newtype, data or type synonym"
+  args (TyConI (TySynD _ ks _))          =  ks
+  args _  =  errorOn "typeArity"
+          $  "neither newtype nor data nor type synonym: " ++ show t
 
 -- |
 -- Given a type 'Name',
@@ -236,23 +237,23 @@
 -- > > putStrLn $(stringE . show =<< typeConstructors ''Point)
 -- > [('Pt,[ConT ''Int, ConT ''Int])]
 typeConstructors :: Name -> Q [(Name,[Type])]
-typeConstructors t = do
-  ti <- reify t
-  return . map simplify $ case ti of
+typeConstructors t  =  fmap (map normalize . cons) $ reify t
+  where
 #if __GLASGOW_HASKELL__ < 800
-    TyConI (DataD    _ _ _ cs _) -> cs
-    TyConI (NewtypeD _ _ _ c  _) -> [c]
+  cons (TyConI (DataD    _ _ _   cs _))  =  cs
+  cons (TyConI (NewtypeD _ _ _   c  _))  =  [c]
 #else
-    TyConI (DataD    _ _ _ _ cs _) -> cs
-    TyConI (NewtypeD _ _ _ _ c  _) -> [c]
+  cons (TyConI (DataD    _ _ _ _ cs _))  =  cs
+  cons (TyConI (NewtypeD _ _ _ _ c  _))  =  [c]
 #endif
-    _ -> error $ "error (typeConstructors): symbol " ++ show t
-              ++ " is neither newtype nor data"
-  where
-  simplify (NormalC n ts)  = (n,map snd ts)
-  simplify (RecC    n ts)  = (n,map trd ts)
-  simplify (InfixC  t1 n t2) = (n,[snd t1,snd t2])
-  trd (x,y,z) = z
+  cons _  =  errorOn "typeConstructors"
+          $  "neither newtype nor data: " ++ show t
+  normalize (NormalC n ts)   =  (n,map snd ts)
+  normalize (RecC    n ts)   =  (n,map trd ts)
+  normalize (InfixC  t1 n t2)  =  (n,[snd t1,snd t2])
+  normalize _  =  errorOn "typeConstructors"
+               $  "unexpected unhandled case when called with " ++ show t
+  trd (x,y,z)  =  z
 
 -- |
 -- Is the given 'Name' a type synonym?
@@ -266,11 +267,10 @@
 -- > > putStrLn $(stringE . show =<< isTypeSynonym ''String)
 -- > True
 isTypeSynonym :: Name -> Q Bool
-isTypeSynonym t = do
-  ti <- reify t
-  return $ case ti of
-    TyConI (TySynD _ _ _) -> True
-    _                     -> False
+isTypeSynonym  =  fmap is . reify
+  where
+  is (TyConI (TySynD _ _ _))  =  True
+  is _                        =  False
 
 -- |
 -- Resolves a type synonym.
@@ -278,34 +278,30 @@
 -- > > putStrLn $(stringE . show =<< typeSynonymType ''String)
 -- > AppT ListT (ConT ''Char)
 typeSynonymType :: Name -> Q Type
-typeSynonymType t = do
-  ti <- reify t
-  return $ case ti of
-    TyConI (TySynD _ _ t') -> t'
-    _ -> error $ "error (typeSynonymType): symbol " ++ show t
-              ++ " is not a type synonym"
+typeSynonymType t  =  fmap typ $ reify t
+  where
+  typ (TyConI (TySynD _ _ t'))  =  t'
+  typ _  =  errorOn "typeSynonymType" $ "not a type synonym: " ++ show t
 
 -- Append to instance contexts in a declaration.
 --
 -- > sequence [[|Eq b|],[|Eq c|]] |=>| [t|instance Eq a => Cl (Ty a) where f=g|]
--- > == [t| instance (Eq a, Eq b, Eq c) => Cl (Ty a) where f = g |]
+-- > == [t| instance (Eq a, Eq b, Eq c) => Cl (Ty a) where f  =  g |]
 (|=>|) :: Cxt -> DecsQ -> DecsQ
-c |=>| qds = do ds <- qds
-                return $ map (`ac` c) ds
+c |=>| qds  =  map (=>++ c) `fmap` qds
+  where
 #if __GLASGOW_HASKELL__ < 800
-  where ac (InstanceD c ts ds) c' = InstanceD (c++c') ts ds
-        ac d                   _  = d
+  (InstanceD   c ts ds) =>++ c'  =  InstanceD   (c++c') ts ds
 #else
-  where ac (InstanceD o c ts ds) c' = InstanceD o (c++c') ts ds
-        ac d                     _  = d
+  (InstanceD o c ts ds) =>++ c'  =  InstanceD o (c++c') ts ds
 #endif
+  d                     =>++ _   =  d
 
 (|++|) :: DecsQ -> DecsQ -> DecsQ
 (|++|) = liftM2 (++)
 
 mergeIFns :: DecsQ -> DecsQ
-mergeIFns qds = do ds <- qds
-                   return $ map m' ds
+mergeIFns  =  fmap (map m')
   where
 #if __GLASGOW_HASKELL__ < 800
   m' (InstanceD   c ts ds) = InstanceD   c ts [foldr1 m ds]
@@ -315,9 +311,7 @@
   FunD n cs1 `m` FunD _ cs2 = FunD n (cs1 ++ cs2)
 
 mergeI :: DecsQ -> DecsQ -> DecsQ
-qds1 `mergeI` qds2 = do ds1 <- qds1
-                        ds2 <- qds2
-                        return $ ds1 `m` ds2
+mergeI  =  liftM2 m
   where
 #if __GLASGOW_HASKELL__ < 800
   [InstanceD   c ts ds1] `m` [InstanceD   _ _ ds2] = [InstanceD   c ts (ds1 ++ ds2)]
@@ -326,27 +320,26 @@
 #endif
 
 whereI :: DecsQ -> [Dec] -> DecsQ
-qds `whereI` w = do ds <- qds
-                    return $ map (`aw` w) ds
+qds `whereI` w  =  fmap (map (`aw` w)) qds
+  where
 #if __GLASGOW_HASKELL__ < 800
-  where aw (InstanceD   c ts ds) w' = InstanceD   c ts (ds++w')
-        aw d                     _  = d
+  aw (InstanceD   c ts ds) w' = InstanceD   c ts (ds++w')
 #else
-  where aw (InstanceD o c ts ds) w' = InstanceD o c ts (ds++w')
-        aw d                     _  = d
+  aw (InstanceD o c ts ds) w' = InstanceD o c ts (ds++w')
 #endif
+  aw d                     _  = d
 
 -- > nubMerge xs ys == nub (merge xs ys)
 -- > nubMerge xs ys == nub (sort (xs ++ ys))
 nubMerge :: Ord a => [a] -> [a] -> [a]
-nubMerge [] ys = ys
-nubMerge xs [] = xs
-nubMerge (x:xs) (y:ys) | x < y     = x :    xs  `nubMerge` (y:ys)
-                       | x > y     = y : (x:xs) `nubMerge`    ys
-                       | otherwise = x :    xs  `nubMerge`    ys
+nubMerge [] ys  =  ys
+nubMerge xs []  =  xs
+nubMerge (x:xs) (y:ys) | x < y      =  x :    xs  `nubMerge` (y:ys)
+                       | x > y      =  y : (x:xs) `nubMerge`    ys
+                       | otherwise  =  x :    xs  `nubMerge`    ys
 
 nubMerges :: Ord a => [[a]] -> [a]
-nubMerges = foldr nubMerge []
+nubMerges  =  foldr nubMerge []
 
 typeConstructorsArgNames :: Name -> Q [(Name,[Name])]
 typeConstructorsArgNames t = do
@@ -398,4 +391,7 @@
 
 -- | Same as toBounded but lifted over 'Q'
 toBoundedQ :: TypeQ -> TypeQ
-toBoundedQ  =  liftM toBounded
+toBoundedQ  =  fmap toBounded
+
+errorOn :: String -> String -> a
+errorOn fn msg  =  error $ "Data.Express.Derive.Utils." ++ fn ++ ": " ++ msg
diff --git a/src/Data/Express/Utils/Typeable.hs b/src/Data/Express/Utils/Typeable.hs
--- a/src/Data/Express/Utils/Typeable.hs
+++ b/src/Data/Express/Utils/Typeable.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Data.Express.Utils.Typeable
--- Copyright   : (c) 2016-2021 Rudy Matela
+-- Copyright   : (c) 2016-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -76,11 +76,27 @@
 -- > > showTyCon listTyCon
 -- > "[]"
 --
+-- On GHC <= 9.6:
+--
+-- > > show unitTyCon
+-- > "()"
+--
+-- On GHC >= 9.8:
+--
+-- > > show unitTyCon
+-- > "Unit"
+--
+-- On all GHCs:
+--
+-- > > showTyCon unitTyCon
+-- > "()"
+--
 -- Further exceptions to `show :: TyCon -> String` may be added here
 -- on future versions.
 showTyCon :: TyCon -> String
 showTyCon con
   | con == listTyCon  =  "[]"
+  | con == unitTyCon  =  "()"
   | otherwise         =  show con
 
 -- | Returns the functional arity of the given 'TypeRep'.
@@ -124,7 +140,7 @@
 unFunTy :: TypeRep -> (TypeRep,TypeRep)
 unFunTy t
   | isFunTy t = let (f,[a,b]) = splitTyConApp t in (a,b)
-  | otherwise = error $ "error (unFunTy): `" ++ show t ++ "` is not a function type"
+  | otherwise = errorOn "unFunTy" $ "`" ++ show t ++ "' is not a function type"
 
 -- | Returns the argument 'TypeRep' of a given functional 'TypeRep'.
 --
@@ -161,11 +177,11 @@
 --   > > > elementTy $ typeOf (undefined :: [Bool])
 --   > Bool
 --   > > > elementTy $ typeOf (undefined :: Bool)
---   > *** Exception: error (elementTy): `Bool' is not a list type
+--   > *** Exception: Data.Express.Utils.Typeable.elementTy: `Bool' is not a list type
 elementTy :: TypeRep -> TypeRep
 elementTy t
   | isListTy t = let (_,[a]) = splitTyConApp t in a
-  | otherwise = error $ "error (elementTy): `" ++ show t ++ "' is not a list type"
+  | otherwise = errorOn "elementTy" $ "`" ++ show t ++ "' is not a list type"
 
 -- | The 'Bool' type encoded as a 'TypeRep'.
 boolTy :: TypeRep
@@ -187,6 +203,10 @@
 listTyCon :: TyCon
 listTyCon = typeRepTyCon $ typeOf (undefined :: [()])
 
+-- | The unit type constructor as a 'TyCon'
+unitTyCon :: TyCon
+unitTyCon = typeRepTyCon $ typeOf (undefined :: ())
+
 -- | Returns whether a 'TypeRep' is functional.
 --
 -- > > isFunTy $ typeOf (undefined :: Int -> Int)
@@ -293,9 +313,12 @@
 typesInList ts  =  nubSortBy compareTy $ tins ts []
   where
   tin t  =  (t:) . tins (typeRepArgs t)
-  tins ts  =  foldr (.) id (map tin ts)
+  tins  =  foldr ((.) . tin) id
 
 -- | An infix alias for 'mkFunTy'.  It is right associative.
 (->::) :: TypeRep -> TypeRep -> TypeRep
 (->::) = mkFunTy
 infixr 9 ->::
+
+errorOn :: String -> String -> a
+errorOn fn msg  =  error $ "Data.Express.Utils.Typeable." ++ fn ++ ": " ++ msg
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Test
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -33,7 +33,7 @@
   )
 where
 
-import System.Environment (getArgs)
+import System.Environment (getArgs, getProgName)
 import System.Exit (exitFailure)
 import Data.List (elemIndices)
 import Data.Typeable (TypeRep, typeOf)
@@ -49,24 +49,25 @@
 import Data.Express.Utils.List
 import Data.Express.Utils.Typeable
 
-reportTests :: [Bool] -> IO ()
-reportTests tests =
+reportTests :: String -> [Bool] -> IO ()
+reportTests s tests =
   case elemIndices False tests of
-    [] -> putStrLn "+++ Tests passed!"
-    is -> do putStrLn ("*** Failed tests:" ++ show is)
+    [] -> putStrLn $ s ++ ": tests passed"
+    is -> do putStrLn (s ++ ": failed tests:" ++ show is)
              exitFailure
 
 getMaxTestsFromArgs :: Int -> IO Int
-getMaxTestsFromArgs n = do
+getMaxTestsFromArgs n  =  do
   as <- getArgs
   return $ case as of
              (s:_) -> read s
              _     -> n
 
 mainTest :: (Int -> [Bool]) -> Int -> IO ()
-mainTest tests n' = do
+mainTest tests n'  =  do
+  pn <- getProgName
   n <- getMaxTestsFromArgs n'
-  reportTests (tests n)
+  reportTests pn (tests n)
 
 tyBool :: TypeRep
 tyBool  =  typeOf (undefined :: Bool)
@@ -216,5 +217,5 @@
   ]
 
 (-=-) :: Expr -> Expr -> (Expr,Expr)
-e1 -=- e2 = (e1, e2)
+e1 -=- e2  =  (e1, e2)
 infix 0 -=-
diff --git a/test/Test/ListableExpr.hs b/test/Test/ListableExpr.hs
--- a/test/Test/ListableExpr.hs
+++ b/test/Test/ListableExpr.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Test.ListableExpr
--- Copyright   : (c) 2019-2021 Rudy Matela
+-- Copyright   : (c) 2019-2024 Rudy Matela
 -- License     : 3-Clause BSD  (see the file LICENSE)
 -- Maintainer  : Rudy Matela <rudy@matela.com.br>
 --
@@ -98,42 +98,42 @@
 unSameTypeE :: SameTypeE -> (Expr,Expr)
 unSameTypeE (SameTypeE e1 e2)  =  (e1,e2)
 
-data SameTypedPairsE  =  SameTypedPairsE { unSameTypedPairsE :: [(Expr,Expr)] }
+newtype SameTypedPairsE  =  SameTypedPairsE { unSameTypedPairsE :: [(Expr,Expr)] }
 
 -- | Ill typed expressions.
 newtype Ill  =  Ill { unIll :: Expr }
 
 
-instance Show E0  where  show (E0 e) = show e
-instance Show EV  where  show (EV e) = show e
+instance Show E0  where  show (E0 e)  =  show e
+instance Show EV  where  show (EV e)  =  show e
 
-instance Show IntE  where  show (IntE e) = show e
+instance Show IntE  where  show (IntE e)  =  show e
 
-instance Show IntE0  where  show (IntE0 e) = show e
-instance Show IntEV  where  show (IntEV e) = show e
+instance Show IntE0  where  show (IntE0 e)  =  show e
+instance Show IntEV  where  show (IntEV e)  =  show e
 
-instance Show IntToIntE  where  show (IntToIntE e) = show e
-instance Show IntToIntToIntE  where  show (IntToIntToIntE e) = show e
+instance Show IntToIntE  where  show (IntToIntE e)  =  show e
+instance Show IntToIntToIntE  where  show (IntToIntToIntE e)  =  show e
 
-instance Show BoolE  where  show (BoolE e) = show e
+instance Show BoolE  where  show (BoolE e)  =  show e
 
-instance Show BoolE0  where  show (BoolE0 e) = show e
-instance Show BoolEV  where  show (BoolEV e) = show e
+instance Show BoolE0  where  show (BoolE0 e)  =  show e
+instance Show BoolEV  where  show (BoolEV e)  =  show e
 
-instance Show BoolToBoolE  where  show (BoolToBoolE e) = show e
-instance Show BoolToBoolToBoolE  where  show (BoolToBoolToBoolE e) = show e
+instance Show BoolToBoolE  where  show (BoolToBoolE e)  =  show e
+instance Show BoolToBoolToBoolE  where  show (BoolToBoolToBoolE e)  =  show e
 
-instance Show IntsE  where  show (IntsE e) = show e
+instance Show IntsE  where  show (IntsE e)  =  show e
 
-instance Show IntsE0  where  show (IntsE0 e) = show e
-instance Show IntsEV  where  show (IntsEV e) = show e
+instance Show IntsE0  where  show (IntsE0 e)  =  show e
+instance Show IntsEV  where  show (IntsEV e)  =  show e
 
-instance Show CharE  where  show (CharE e) = show e
+instance Show CharE  where  show (CharE e)  =  show e
 
-instance Show CharE0  where  show (CharE0 e) = show e
-instance Show CharEV  where  show (CharEV e) = show e
+instance Show CharE0  where  show (CharE0 e)  =  show e
+instance Show CharEV  where  show (CharEV e)  =  show e
 
-instance Show SameTypeE  where  show (SameTypeE e1 e2) = show (e1,e2)
+instance Show SameTypeE  where  show (SameTypeE e1 e2)  =  show (e1,e2)
 
 instance Show SameTypedPairsE  where  show (SameTypedPairsE ees)  =  show ees
 
@@ -146,7 +146,7 @@
 -- | Varialbe of 'Ints' type.
 newtype IntsEV  =  IntsEV { unIntsEV :: Expr }
 
-instance Show Ill where  show (Ill e) = show e
+instance Show Ill where  show (Ill e)  =  show e
 
 instance Listable IntE  where
   tiers  =  mapT IntE
@@ -235,17 +235,17 @@
   tiers  =  (CharE0 . val) `mapT` (tiers :: [[Char]])
 
 instance Listable SameTypeE where
-  tiers = cons1 (\(IntE  e1, IntE  e2) -> SameTypeE e1 e2) `ofWeight` 0
-       \/ cons1 (\(BoolE e1, BoolE e2) -> SameTypeE e1 e2) `ofWeight` 1
-       \/ cons1 (\(IntsE e1, IntsE e2) -> SameTypeE e1 e2) `ofWeight` 1
-       \/ cons1 (\(CharE e1, CharE e2) -> SameTypeE e1 e2) `ofWeight` 2
-       \/ cons1 (\(IntToIntE e1, IntToIntE e2)     -> SameTypeE e1 e2) `ofWeight` 2
-       \/ cons1 (\(BoolToBoolE e1, BoolToBoolE e2) -> SameTypeE e1 e2) `ofWeight` 2
-       \/ cons1 (\(BoolToBoolToBoolE e1, BoolToBoolToBoolE e2) -> SameTypeE e1 e2) `ofWeight` 2
-       \/ cons1 (\(IntToIntToIntE e1, IntToIntToIntE e2)       -> SameTypeE e1 e2) `ofWeight` 2
+  tiers  =  cons1 (\(IntE  e1, IntE  e2) -> SameTypeE e1 e2) `ofWeight` 0
+        \/ cons1 (\(BoolE e1, BoolE e2) -> SameTypeE e1 e2) `ofWeight` 1
+        \/ cons1 (\(IntsE e1, IntsE e2) -> SameTypeE e1 e2) `ofWeight` 1
+        \/ cons1 (\(CharE e1, CharE e2) -> SameTypeE e1 e2) `ofWeight` 2
+        \/ cons1 (\(IntToIntE e1, IntToIntE e2)     -> SameTypeE e1 e2) `ofWeight` 2
+        \/ cons1 (\(BoolToBoolE e1, BoolToBoolE e2) -> SameTypeE e1 e2) `ofWeight` 2
+        \/ cons1 (\(BoolToBoolToBoolE e1, BoolToBoolToBoolE e2) -> SameTypeE e1 e2) `ofWeight` 2
+        \/ cons1 (\(IntToIntToIntE e1, IntToIntToIntE e2)       -> SameTypeE e1 e2) `ofWeight` 2
 
 instance Listable SameTypedPairsE where
-  tiers = cons1 (SameTypedPairsE . map unSameTypeE) `ofWeight` 0
+  tiers  =  cons1 (SameTypedPairsE . map unSameTypeE) `ofWeight` 0
 
 instance Listable E0 where
   tiers  =  mapT E0
diff --git a/test/basic.hs b/test/basic.hs
new file mode 100644
--- /dev/null
+++ b/test/basic.hs
@@ -0,0 +1,49 @@
+-- Copyright (c) 2024 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+{-# LANGUAGE CPP #-}
+import Test
+
+main :: IO ()
+main  =  mainTest tests 5040
+
+tests :: Int -> [Bool]
+tests n  =
+  [ True
+
+  , holds n $ \es e -> es >$$ e == es >$$< [e]
+  , holds n $ \es e -> e $$< es == [e] >$$< es
+
+  , [false, true, zero, one] >$$< [notE, andE, orE, plus, times] == []
+
+  , [notE, andE, orE, plus, times] >$$< [false, true, zero, one]
+    == [ not' false
+       , not' true
+       , andE :$ false
+       , andE :$ true
+       , orE :$ false
+       , orE :$ true
+       , plus :$ zero
+       , plus :$ one
+       , times :$ zero
+       , times :$ one
+       ]
+
+  , [notE, andE, orE, plus, times] >$$< [false, true, zero, one] >$$< [false, true, zero, one]
+    == [ false -&&- false
+       , false -&&- true
+       , true -&&- false
+       , true -&&- true
+       , false -||- false
+       , false -||- true
+       , true -||- false
+       , true -||- true
+       , zero -+- zero
+       , zero -+- one
+       , one -+- zero
+       , one -+- one
+       , zero -*- zero
+       , zero -*- one
+       , one -*- zero
+       , one -*- one
+       ]
+  ]
diff --git a/test/canon.hs b/test/canon.hs
--- a/test/canon.hs
+++ b/test/canon.hs
@@ -1,4 +1,4 @@
--- Copyright (c) 2017-2021 Rudy Matela.
+-- Copyright (c) 2017-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
diff --git a/test/core.hs b/test/core.hs
--- a/test/core.hs
+++ b/test/core.hs
@@ -1,4 +1,4 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
@@ -6,10 +6,10 @@
 import Test.LeanCheck.Error (errorToNothing)
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   -- smart constructors and evaluation
diff --git a/test/express-derive.hs b/test/express-derive.hs
--- a/test/express-derive.hs
+++ b/test/express-derive.hs
@@ -1,4 +1,4 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE DeriveDataTypeable #-}
@@ -26,8 +26,8 @@
 
 -- Nested datatype cascade
 data Nested  =  Nested N0 (N1 Int) (N2 Int Int) deriving (Eq, Show, Typeable)
-data N0      =  R0 Int deriving (Eq, Show, Typeable)
-data N1 a    =  R1 a   deriving (Eq, Show, Typeable)
+newtype N0   =  R0 Int deriving (Eq, Show, Typeable)
+newtype N1 a =  R1 a   deriving (Eq, Show, Typeable)
 data N2 a b  =  R2 a b deriving (Eq, Show, Typeable)
 
 deriveExpressCascading ''Nested
diff --git a/test/express.hs b/test/express.hs
--- a/test/express.hs
+++ b/test/express.hs
@@ -1,13 +1,13 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 {-# LANGUAGE CPP #-}
 import Test
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   , holds n $ \x -> expr x == val (x :: Int)
diff --git a/test/fixtures.hs b/test/fixtures.hs
--- a/test/fixtures.hs
+++ b/test/fixtures.hs
@@ -1,14 +1,14 @@
--- Copyright (c) 2017-2021 Rudy Matela.
+-- Copyright (c) 2017-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
 import Test.LeanCheck.Error (errorToNothing)
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   -- Bool --
@@ -201,10 +201,10 @@
   , evl  (enumFromTo' zero four) == [0,1,2,3,4 :: Int]
 
   -- [<n> .. <m>] --
-  , show ((-..) false) == "[False ..] :: [Bool]"
-  , evl  ((-..) false) == [False,True]
-  , show ((-..) true)  == "[True ..] :: [Bool]"
-  , evl  ((-..) true)  == [True]
+  , show (false -.. ()) == "[False ..] :: [Bool]"
+  , evl  (false -.. ()) == [False,True]
+  , show (true  -.. ())  == "[True ..] :: [Bool]"
+  , evl  (true  -.. ())  == [True]
   , show (false -..- false) == "[False .. False] :: [Bool]"
   , evl  (false -..- false) == [False]
   , show (false -..- true)  == "[False .. True] :: [Bool]"
@@ -214,7 +214,7 @@
   , show (true  -..- true)  == "[True .. True] :: [Bool]"
   , evl  (true  -..- true)  == [True]
 
-  , show ((-..) zero) == "[0..] :: [Int]"
+  , show (zero -.. ()) == "[0..] :: [Int]"
   , show (zero -..- four) == "[0..4] :: [Int]"
   , evl  (zero -..- four) == [0,1,2,3,4 :: Int]
   , show (minusTwo -..- minusOne) == "[-2 .. -1] :: [Int]"
@@ -222,7 +222,7 @@
   , show (minusTwo -..- two) == "[-2 .. 2] :: [Int]"
   , evl  (minusTwo -..- two) == [-2,-1,0,1,2 :: Int]
 
-  , show ((-..) ae) == "['a'..] :: [Char]"
+  , show (ae -.. ()) == "['a'..] :: [Char]"
   , show (ae -..- dee) == "['a'..'d'] :: [Char]"
   , evl  (ae -..- dee) == "abcd"
 
@@ -242,36 +242,36 @@
   , evl  (enumFromThenTo' zero two four) == [0,2,4 :: Int]
 
   -- [<n>, <m> .. <o>] --
-  , show ((-...) false true) == "[False, True ..] :: [Bool]"
-  , evl  ((-...) false true) == [False,True]
-  , show ((-...) true false)  == "[True, False ..] :: [Bool]"
-  , evl  ((-...) true false)  == [True,False]
-  , show ((false -...- false) true) == "[False, False .. True] :: [Bool]"
-  , show ((false -...- true)  true) == "[False, True .. True] :: [Bool]"
-  , evl  ((false -...- true)  true) == [False,True]
+  , show ((false,true) --.. ()) == "[False, True ..] :: [Bool]"
+  , evl  ((false,true) --.. ()) == [False,True]
+  , show ((true,false) --.. ()) == "[True, False ..] :: [Bool]"
+  , evl  ((true,false) --.. ()) == [True,False]
+  , show ((false,false) --..- true) == "[False, False .. True] :: [Bool]"
+  , show ((false,true)  --..- true) == "[False, True .. True] :: [Bool]"
+  , evl  ((false,true)  --..- true) == [False,True]
 
-  , show ((-...) zero one) == "[0,1..] :: [Int]"
-  , show ((zero -...- two) four) == "[0,2..4] :: [Int]"
-  , evl  ((zero -...- two) four) == [0,2,4 :: Int]
-  , show ((minusTwo -...- one) minusOne)  == "[-2, 1 .. -1] :: [Int]"
-  , evl  ((minusTwo -...- one) minusOne) == [-2 :: Int]
-  , show ((minusTwo -...- zero) two) == "[-2, 0 .. 2] :: [Int]"
-  , evl  ((minusTwo -...- zero) two) == [-2,0,2 :: Int]
+  , show ((zero,one) --.. ()) == "[0,1..] :: [Int]"
+  , show ((zero,two) --..- four) == "[0,2..4] :: [Int]"
+  , evl  ((zero,two) --..- four) == [0,2,4 :: Int]
+  , show ((minusTwo,one) --..- minusOne)  == "[-2, 1 .. -1] :: [Int]"
+  , evl  ((minusTwo,one) --..- minusOne) == [-2 :: Int]
+  , show ((minusTwo,zero) --..- two) == "[-2, 0 .. 2] :: [Int]"
+  , evl  ((minusTwo,zero) --..- two) == [-2,0,2 :: Int]
 
-  , show ((-...) ae bee) == "['a','b'..] :: [Char]"
-  , show ((ae -...- bee) dee) == "['a','b'..'d'] :: [Char]"
-  , evl  ((ae -...- bee) dee) == "abcd"
-  , show ((ae -...- dee) zed) == "['a','d'..'z'] :: [Char]"
-  , evl  ((ae -...- dee) zed) == "adgjmpsvy"
+  , show ((ae,bee) --.. ()) == "['a','b'..] :: [Char]"
+  , show ((ae,bee) --..- dee) == "['a','b'..'d'] :: [Char]"
+  , evl  ((ae,bee) --..- dee) == "abcd"
+  , show ((ae,dee) --..- zed) == "['a','d'..'z'] :: [Char]"
+  , evl  ((ae,dee) --..- zed) == "adgjmpsvy"
 
-  , show ((xx -...- yy) zz) == "[x,y..z] :: [Int]"
-  , show ((pp -...- qq) rr) == "[p,q..r] :: [Bool]"
-  , show ((cc -...- dd) cc) == "[c,d..c] :: [Char]"
+  , show ((xx,yy) --..- zz) == "[x,y..z] :: [Int]"
+  , show ((pp,qq) --..- rr) == "[p,q..r] :: [Bool]"
+  , show ((cc,dd) --..- cc) == "[c,d..c] :: [Char]"
 
-  , show ((zero -...- yy) zz) == "[0,y..z] :: [Int]"
-  , show ((pp -...- true) true) == "[p, True .. True] :: [Bool]"
-  , show ((cc -...- dd) zed) == "[c,d..'z'] :: [Char]"
-  , show ((ae -...- dd) cc)  == "['a',d..c] :: [Char]"
+  , show ((zero,yy) --..- zz) == "[0,y..z] :: [Int]"
+  , show ((pp,true) --..- true) == "[p, True .. True] :: [Bool]"
+  , show ((cc,dd) --..- zed) == "[c,d..'z'] :: [Char]"
+  , show ((ae,dd) --..- cc)  == "['a',d..c] :: [Char]"
 
   , show (twelve `div'`  five) == "12 `div` 5 :: Int"
   , show (twelve `mod'`  five) == "12 `mod` 5 :: Int"
diff --git a/test/fold.hs b/test/fold.hs
--- a/test/fold.hs
+++ b/test/fold.hs
@@ -1,12 +1,12 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   , holds n $ \e1 e2 -> (e1,e2) == unfoldPair (foldPair (e1,e2))
diff --git a/test/hole.hs b/test/hole.hs
--- a/test/hole.hs
+++ b/test/hole.hs
@@ -1,12 +1,12 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   , isHole (hole (undefined :: Int))  == True
diff --git a/test/instances.hs b/test/instances.hs
--- a/test/instances.hs
+++ b/test/instances.hs
@@ -1,13 +1,13 @@
--- Copyright (c) 2017-2021 Rudy Matela.
+-- Copyright (c) 2017-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 {-# LANGUAGE NoMonomorphismRestriction #-} -- ACK!
 import Test
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   , eval undefined (eqFor (undefined :: Int) :$ one :$ one) == True
@@ -62,11 +62,11 @@
   , lookupName preludeNameInstances (val [[[0::A]]]) == "xsss"
   ]
   where
-  eqFor = head . reifyEq
-  lessEqFor = head . reifyOrd
-  lessFor = head . tail . reifyOrd
---compareFor = head . reifyOrd
-  nameFor = head . reifyName
+  eqFor  =  head . reifyEq
+  lessEqFor  =  head . reifyOrd
+  lessFor  =  head . tail . reifyOrd
+--compareFor  =  head . reifyOrd
+  nameFor  =  head . reifyName
 
 functions :: [Expr]
 functions  =  concat
diff --git a/test/listable.hs b/test/listable.hs
--- a/test/listable.hs
+++ b/test/listable.hs
@@ -1,4 +1,4 @@
--- Copyright (c) 2017-2021 Rudy Matela.
+-- Copyright (c) 2017-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
@@ -56,7 +56,7 @@
   , holds n $ isVar . unCharEV
 
   -- counter-examples are of the right type
-  , (counterExample n $ \(IntE xx) -> False) == Just ["_ :: Int"]
+  , counterExample n (\(IntE xx) -> False) == Just ["_ :: Int"]
 
   , isNub (take (n`div`10) list :: [Expr])
   , isNub (take (n`div`10) $ map unSameTypeE list)
@@ -64,16 +64,16 @@
   ]
 
 evaluateInt :: Expr -> Maybe Int
-evaluateInt = evaluate
+evaluateInt  =  evaluate
 
 evaluateBool :: Expr -> Maybe Bool
-evaluateBool = evaluate
+evaluateBool  =  evaluate
 
 evaluateInts :: Expr -> Maybe [Int]
-evaluateInts = evaluate
+evaluateInts  =  evaluate
 
 evaluateIntToInt :: Expr -> Maybe (Int -> Int)
-evaluateIntToInt = evaluate
+evaluateIntToInt  =  evaluate
 
 evaluateChar :: Expr -> Maybe Char
-evaluateChar = evaluate
+evaluateChar  =  evaluate
diff --git a/test/main.hs b/test/main.hs
--- a/test/main.hs
+++ b/test/main.hs
@@ -1,14 +1,14 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
 import Data.Express.Utils.List
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   , evl (val (10 :: Int)) == (10 :: Int)
diff --git a/test/map.hs b/test/map.hs
--- a/test/map.hs
+++ b/test/map.hs
@@ -1,4 +1,4 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 import Test.LeanCheck.Function
@@ -6,10 +6,10 @@
 import Data.Express.Utils.List (isNub)
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   -- the order should not matter for //
diff --git a/test/match.hs b/test/match.hs
--- a/test/match.hs
+++ b/test/match.hs
@@ -1,12 +1,12 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   , holds n $ \(IntE e)            -> e `isInstanceOf` xx
diff --git a/test/model/bench/compare.out b/test/model/bench/compare.out
deleted file mode 100644
--- a/test/model/bench/compare.out
+++ /dev/null
@@ -1,5041 +0,0 @@
-_ :: Int `compare` _ :: Int  =  EQ
-_ :: Int `compare` x :: Int  =  LT
-_ :: Int `compare` 0 :: Int  =  LT
-_ :: Int `compare` id _ :: Int  =  LT
-_ :: Int `compare` _ :: Bool  =  GT
-_ :: Int `compare` _ :: Char  =  GT
-_ :: Int `compare` _ :: [Int]  =  LT
-x :: Int `compare` _ :: Int  =  GT
-0 :: Int `compare` _ :: Int  =  GT
-id _ :: Int `compare` _ :: Int  =  GT
-_ :: Bool `compare` _ :: Int  =  LT
-_ :: Char `compare` _ :: Int  =  LT
-_ :: [Int] `compare` _ :: Int  =  GT
-_ :: Int `compare` y :: Int  =  LT
-_ :: Int `compare` 1 :: Int  =  LT
-_ :: Int `compare` id x :: Int  =  LT
-_ :: Int `compare` id 0 :: Int  =  LT
-_ :: Int `compare` id (id _) :: Int  =  LT
-_ :: Int `compare` negate _ :: Int  =  LT
-_ :: Int `compare` abs _ :: Int  =  LT
-_ :: Int `compare` _ + _ :: Int  =  LT
-_ :: Int `compare` head _ :: Int  =  LT
-_ :: Int `compare` ord _ :: Int  =  LT
-_ :: Int `compare` p :: Bool  =  GT
-_ :: Int `compare` False :: Bool  =  LT
-_ :: Int `compare` True :: Bool  =  LT
-_ :: Int `compare` not _ :: Bool  =  LT
-_ :: Int `compare` c :: Char  =  GT
-_ :: Int `compare` 'a' :: Char  =  LT
-_ :: Int `compare` xs :: [Int]  =  LT
-_ :: Int `compare` [] :: [Int]  =  LT
-_ :: Int `compare` _:_ :: [Int]  =  LT
-_ :: Int `compare` id :: Int -> Int  =  LT
-_ :: Int `compare` (+) :: Int -> Int -> Int  =  LT
-x :: Int `compare` x :: Int  =  EQ
-x :: Int `compare` 0 :: Int  =  LT
-x :: Int `compare` id _ :: Int  =  LT
-x :: Int `compare` _ :: Bool  =  GT
-x :: Int `compare` _ :: Char  =  GT
-x :: Int `compare` _ :: [Int]  =  LT
-0 :: Int `compare` x :: Int  =  GT
-0 :: Int `compare` 0 :: Int  =  EQ
-0 :: Int `compare` id _ :: Int  =  LT
-0 :: Int `compare` _ :: Bool  =  GT
-0 :: Int `compare` _ :: Char  =  GT
-0 :: Int `compare` _ :: [Int]  =  GT
-id _ :: Int `compare` x :: Int  =  GT
-id _ :: Int `compare` 0 :: Int  =  GT
-id _ :: Int `compare` id _ :: Int  =  EQ
-id _ :: Int `compare` _ :: Bool  =  GT
-id _ :: Int `compare` _ :: Char  =  GT
-id _ :: Int `compare` _ :: [Int]  =  GT
-_ :: Bool `compare` x :: Int  =  LT
-_ :: Bool `compare` 0 :: Int  =  LT
-_ :: Bool `compare` id _ :: Int  =  LT
-_ :: Bool `compare` _ :: Bool  =  EQ
-_ :: Bool `compare` _ :: Char  =  LT
-_ :: Bool `compare` _ :: [Int]  =  LT
-_ :: Char `compare` x :: Int  =  LT
-_ :: Char `compare` 0 :: Int  =  LT
-_ :: Char `compare` id _ :: Int  =  LT
-_ :: Char `compare` _ :: Bool  =  GT
-_ :: Char `compare` _ :: Char  =  EQ
-_ :: Char `compare` _ :: [Int]  =  LT
-_ :: [Int] `compare` x :: Int  =  GT
-_ :: [Int] `compare` 0 :: Int  =  LT
-_ :: [Int] `compare` id _ :: Int  =  LT
-_ :: [Int] `compare` _ :: Bool  =  GT
-_ :: [Int] `compare` _ :: Char  =  GT
-_ :: [Int] `compare` _ :: [Int]  =  EQ
-y :: Int `compare` _ :: Int  =  GT
-1 :: Int `compare` _ :: Int  =  GT
-id x :: Int `compare` _ :: Int  =  GT
-id 0 :: Int `compare` _ :: Int  =  GT
-id (id _) :: Int `compare` _ :: Int  =  GT
-negate _ :: Int `compare` _ :: Int  =  GT
-abs _ :: Int `compare` _ :: Int  =  GT
-_ + _ :: Int `compare` _ :: Int  =  GT
-head _ :: Int `compare` _ :: Int  =  GT
-ord _ :: Int `compare` _ :: Int  =  GT
-p :: Bool `compare` _ :: Int  =  LT
-False :: Bool `compare` _ :: Int  =  GT
-True :: Bool `compare` _ :: Int  =  GT
-not _ :: Bool `compare` _ :: Int  =  GT
-c :: Char `compare` _ :: Int  =  LT
-'a' :: Char `compare` _ :: Int  =  GT
-xs :: [Int] `compare` _ :: Int  =  GT
-[] :: [Int] `compare` _ :: Int  =  GT
-_:_ :: [Int] `compare` _ :: Int  =  GT
-id :: Int -> Int `compare` _ :: Int  =  GT
-(+) :: Int -> Int -> Int `compare` _ :: Int  =  GT
-_ :: Int `compare` z :: Int  =  LT
-_ :: Int `compare` -1 :: Int  =  LT
-_ :: Int `compare` id y :: Int  =  LT
-_ :: Int `compare` id 1 :: Int  =  LT
-_ :: Int `compare` id (id x) :: Int  =  LT
-_ :: Int `compare` id (id 0) :: Int  =  LT
-_ :: Int `compare` id (id (id _)) :: Int  =  LT
-_ :: Int `compare` id (negate _) :: Int  =  LT
-_ :: Int `compare` id (abs _) :: Int  =  LT
-_ :: Int `compare` id (_ + _) :: Int  =  LT
-_ :: Int `compare` id (head _) :: Int  =  LT
-_ :: Int `compare` id (ord _) :: Int  =  LT
-_ :: Int `compare` negate x :: Int  =  LT
-_ :: Int `compare` negate 0 :: Int  =  LT
-_ :: Int `compare` negate (id _) :: Int  =  LT
-_ :: Int `compare` abs x :: Int  =  LT
-_ :: Int `compare` abs 0 :: Int  =  LT
-_ :: Int `compare` abs (id _) :: Int  =  LT
-_ :: Int `compare` _ + x :: Int  =  LT
-_ :: Int `compare` _ + 0 :: Int  =  LT
-_ :: Int `compare` _ + id _ :: Int  =  LT
-_ :: Int `compare` x + _ :: Int  =  LT
-_ :: Int `compare` 0 + _ :: Int  =  LT
-_ :: Int `compare` id _ + _ :: Int  =  LT
-_ :: Int `compare` _ * _ :: Int  =  LT
-_ :: Int `compare` f _ :: Int  =  LT
-_ :: Int `compare` head xs :: Int  =  LT
-_ :: Int `compare` head [] :: Int  =  LT
-_ :: Int `compare` head (_:_) :: Int  =  LT
-_ :: Int `compare` ord c :: Int  =  LT
-_ :: Int `compare` ord 'a' :: Int  =  LT
-_ :: Int `compare` q :: Bool  =  GT
-_ :: Int `compare` not p :: Bool  =  LT
-_ :: Int `compare` not False :: Bool  =  LT
-_ :: Int `compare` not True :: Bool  =  LT
-_ :: Int `compare` not (not _) :: Bool  =  LT
-_ :: Int `compare` _ || _ :: Bool  =  LT
-_ :: Int `compare` d :: Char  =  GT
-_ :: Int `compare` ' ' :: Char  =  LT
-_ :: Int `compare` ys :: [Int]  =  LT
-_ :: Int `compare` [0] :: [Int]  =  LT
-_ :: Int `compare` _:xs :: [Int]  =  LT
-_ :: Int `compare` [_] :: [Int]  =  LT
-_ :: Int `compare` _:_:_ :: [Int]  =  LT
-_ :: Int `compare` x:_ :: [Int]  =  LT
-_ :: Int `compare` 0:_ :: [Int]  =  LT
-_ :: Int `compare` id _:_ :: [Int]  =  LT
-_ :: Int `compare` tail _ :: [Int]  =  LT
-_ :: Int `compare` _ ++ _ :: [Int]  =  LT
-_ :: Int `compare` negate :: Int -> Int  =  LT
-_ :: Int `compare` abs :: Int -> Int  =  LT
-_ :: Int `compare` (_ +) :: Int -> Int  =  LT
-_ :: Int `compare` (*) :: Int -> Int -> Int  =  LT
-_ :: Int `compare` not :: Bool -> Bool  =  LT
-_ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
-x :: Int `compare` y :: Int  =  LT
-x :: Int `compare` 1 :: Int  =  LT
-x :: Int `compare` id x :: Int  =  LT
-x :: Int `compare` id 0 :: Int  =  LT
-x :: Int `compare` id (id _) :: Int  =  LT
-x :: Int `compare` negate _ :: Int  =  LT
-x :: Int `compare` abs _ :: Int  =  LT
-x :: Int `compare` _ + _ :: Int  =  LT
-x :: Int `compare` head _ :: Int  =  LT
-x :: Int `compare` ord _ :: Int  =  LT
-x :: Int `compare` p :: Bool  =  GT
-x :: Int `compare` False :: Bool  =  LT
-x :: Int `compare` True :: Bool  =  LT
-x :: Int `compare` not _ :: Bool  =  LT
-x :: Int `compare` c :: Char  =  GT
-x :: Int `compare` 'a' :: Char  =  LT
-x :: Int `compare` xs :: [Int]  =  LT
-x :: Int `compare` [] :: [Int]  =  LT
-x :: Int `compare` _:_ :: [Int]  =  LT
-x :: Int `compare` id :: Int -> Int  =  LT
-x :: Int `compare` (+) :: Int -> Int -> Int  =  LT
-0 :: Int `compare` y :: Int  =  GT
-0 :: Int `compare` 1 :: Int  =  LT
-0 :: Int `compare` id x :: Int  =  LT
-0 :: Int `compare` id 0 :: Int  =  LT
-0 :: Int `compare` id (id _) :: Int  =  LT
-0 :: Int `compare` negate _ :: Int  =  LT
-0 :: Int `compare` abs _ :: Int  =  LT
-0 :: Int `compare` _ + _ :: Int  =  LT
-0 :: Int `compare` head _ :: Int  =  LT
-0 :: Int `compare` ord _ :: Int  =  LT
-0 :: Int `compare` p :: Bool  =  GT
-0 :: Int `compare` False :: Bool  =  GT
-0 :: Int `compare` True :: Bool  =  GT
-0 :: Int `compare` not _ :: Bool  =  LT
-0 :: Int `compare` c :: Char  =  GT
-0 :: Int `compare` 'a' :: Char  =  GT
-0 :: Int `compare` xs :: [Int]  =  GT
-0 :: Int `compare` [] :: [Int]  =  LT
-0 :: Int `compare` _:_ :: [Int]  =  LT
-0 :: Int `compare` id :: Int -> Int  =  LT
-0 :: Int `compare` (+) :: Int -> Int -> Int  =  LT
-id _ :: Int `compare` y :: Int  =  GT
-id _ :: Int `compare` 1 :: Int  =  GT
-id _ :: Int `compare` id x :: Int  =  LT
-id _ :: Int `compare` id 0 :: Int  =  LT
-id _ :: Int `compare` id (id _) :: Int  =  LT
-id _ :: Int `compare` negate _ :: Int  =  LT
-id _ :: Int `compare` abs _ :: Int  =  LT
-id _ :: Int `compare` _ + _ :: Int  =  LT
-id _ :: Int `compare` head _ :: Int  =  LT
-id _ :: Int `compare` ord _ :: Int  =  GT
-id _ :: Int `compare` p :: Bool  =  GT
-id _ :: Int `compare` False :: Bool  =  GT
-id _ :: Int `compare` True :: Bool  =  GT
-id _ :: Int `compare` not _ :: Bool  =  GT
-id _ :: Int `compare` c :: Char  =  GT
-id _ :: Int `compare` 'a' :: Char  =  GT
-id _ :: Int `compare` xs :: [Int]  =  GT
-id _ :: Int `compare` [] :: [Int]  =  GT
-id _ :: Int `compare` _:_ :: [Int]  =  LT
-id _ :: Int `compare` id :: Int -> Int  =  GT
-id _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-_ :: Bool `compare` y :: Int  =  LT
-_ :: Bool `compare` 1 :: Int  =  LT
-_ :: Bool `compare` id x :: Int  =  LT
-_ :: Bool `compare` id 0 :: Int  =  LT
-_ :: Bool `compare` id (id _) :: Int  =  LT
-_ :: Bool `compare` negate _ :: Int  =  LT
-_ :: Bool `compare` abs _ :: Int  =  LT
-_ :: Bool `compare` _ + _ :: Int  =  LT
-_ :: Bool `compare` head _ :: Int  =  LT
-_ :: Bool `compare` ord _ :: Int  =  LT
-_ :: Bool `compare` p :: Bool  =  LT
-_ :: Bool `compare` False :: Bool  =  LT
-_ :: Bool `compare` True :: Bool  =  LT
-_ :: Bool `compare` not _ :: Bool  =  LT
-_ :: Bool `compare` c :: Char  =  LT
-_ :: Bool `compare` 'a' :: Char  =  LT
-_ :: Bool `compare` xs :: [Int]  =  LT
-_ :: Bool `compare` [] :: [Int]  =  LT
-_ :: Bool `compare` _:_ :: [Int]  =  LT
-_ :: Bool `compare` id :: Int -> Int  =  LT
-_ :: Bool `compare` (+) :: Int -> Int -> Int  =  LT
-_ :: Char `compare` y :: Int  =  LT
-_ :: Char `compare` 1 :: Int  =  LT
-_ :: Char `compare` id x :: Int  =  LT
-_ :: Char `compare` id 0 :: Int  =  LT
-_ :: Char `compare` id (id _) :: Int  =  LT
-_ :: Char `compare` negate _ :: Int  =  LT
-_ :: Char `compare` abs _ :: Int  =  LT
-_ :: Char `compare` _ + _ :: Int  =  LT
-_ :: Char `compare` head _ :: Int  =  LT
-_ :: Char `compare` ord _ :: Int  =  LT
-_ :: Char `compare` p :: Bool  =  GT
-_ :: Char `compare` False :: Bool  =  LT
-_ :: Char `compare` True :: Bool  =  LT
-_ :: Char `compare` not _ :: Bool  =  LT
-_ :: Char `compare` c :: Char  =  LT
-_ :: Char `compare` 'a' :: Char  =  LT
-_ :: Char `compare` xs :: [Int]  =  LT
-_ :: Char `compare` [] :: [Int]  =  LT
-_ :: Char `compare` _:_ :: [Int]  =  LT
-_ :: Char `compare` id :: Int -> Int  =  LT
-_ :: Char `compare` (+) :: Int -> Int -> Int  =  LT
-_ :: [Int] `compare` y :: Int  =  GT
-_ :: [Int] `compare` 1 :: Int  =  LT
-_ :: [Int] `compare` id x :: Int  =  LT
-_ :: [Int] `compare` id 0 :: Int  =  LT
-_ :: [Int] `compare` id (id _) :: Int  =  LT
-_ :: [Int] `compare` negate _ :: Int  =  LT
-_ :: [Int] `compare` abs _ :: Int  =  LT
-_ :: [Int] `compare` _ + _ :: Int  =  LT
-_ :: [Int] `compare` head _ :: Int  =  LT
-_ :: [Int] `compare` ord _ :: Int  =  LT
-_ :: [Int] `compare` p :: Bool  =  GT
-_ :: [Int] `compare` False :: Bool  =  LT
-_ :: [Int] `compare` True :: Bool  =  LT
-_ :: [Int] `compare` not _ :: Bool  =  LT
-_ :: [Int] `compare` c :: Char  =  GT
-_ :: [Int] `compare` 'a' :: Char  =  LT
-_ :: [Int] `compare` xs :: [Int]  =  LT
-_ :: [Int] `compare` [] :: [Int]  =  LT
-_ :: [Int] `compare` _:_ :: [Int]  =  LT
-_ :: [Int] `compare` id :: Int -> Int  =  LT
-_ :: [Int] `compare` (+) :: Int -> Int -> Int  =  LT
-y :: Int `compare` x :: Int  =  GT
-y :: Int `compare` 0 :: Int  =  LT
-y :: Int `compare` id _ :: Int  =  LT
-y :: Int `compare` _ :: Bool  =  GT
-y :: Int `compare` _ :: Char  =  GT
-y :: Int `compare` _ :: [Int]  =  LT
-1 :: Int `compare` x :: Int  =  GT
-1 :: Int `compare` 0 :: Int  =  GT
-1 :: Int `compare` id _ :: Int  =  LT
-1 :: Int `compare` _ :: Bool  =  GT
-1 :: Int `compare` _ :: Char  =  GT
-1 :: Int `compare` _ :: [Int]  =  GT
-id x :: Int `compare` x :: Int  =  GT
-id x :: Int `compare` 0 :: Int  =  GT
-id x :: Int `compare` id _ :: Int  =  GT
-id x :: Int `compare` _ :: Bool  =  GT
-id x :: Int `compare` _ :: Char  =  GT
-id x :: Int `compare` _ :: [Int]  =  GT
-id 0 :: Int `compare` x :: Int  =  GT
-id 0 :: Int `compare` 0 :: Int  =  GT
-id 0 :: Int `compare` id _ :: Int  =  GT
-id 0 :: Int `compare` _ :: Bool  =  GT
-id 0 :: Int `compare` _ :: Char  =  GT
-id 0 :: Int `compare` _ :: [Int]  =  GT
-id (id _) :: Int `compare` x :: Int  =  GT
-id (id _) :: Int `compare` 0 :: Int  =  GT
-id (id _) :: Int `compare` id _ :: Int  =  GT
-id (id _) :: Int `compare` _ :: Bool  =  GT
-id (id _) :: Int `compare` _ :: Char  =  GT
-id (id _) :: Int `compare` _ :: [Int]  =  GT
-negate _ :: Int `compare` x :: Int  =  GT
-negate _ :: Int `compare` 0 :: Int  =  GT
-negate _ :: Int `compare` id _ :: Int  =  GT
-negate _ :: Int `compare` _ :: Bool  =  GT
-negate _ :: Int `compare` _ :: Char  =  GT
-negate _ :: Int `compare` _ :: [Int]  =  GT
-abs _ :: Int `compare` x :: Int  =  GT
-abs _ :: Int `compare` 0 :: Int  =  GT
-abs _ :: Int `compare` id _ :: Int  =  GT
-abs _ :: Int `compare` _ :: Bool  =  GT
-abs _ :: Int `compare` _ :: Char  =  GT
-abs _ :: Int `compare` _ :: [Int]  =  GT
-_ + _ :: Int `compare` x :: Int  =  GT
-_ + _ :: Int `compare` 0 :: Int  =  GT
-_ + _ :: Int `compare` id _ :: Int  =  GT
-_ + _ :: Int `compare` _ :: Bool  =  GT
-_ + _ :: Int `compare` _ :: Char  =  GT
-_ + _ :: Int `compare` _ :: [Int]  =  GT
-head _ :: Int `compare` x :: Int  =  GT
-head _ :: Int `compare` 0 :: Int  =  GT
-head _ :: Int `compare` id _ :: Int  =  GT
-head _ :: Int `compare` _ :: Bool  =  GT
-head _ :: Int `compare` _ :: Char  =  GT
-head _ :: Int `compare` _ :: [Int]  =  GT
-ord _ :: Int `compare` x :: Int  =  GT
-ord _ :: Int `compare` 0 :: Int  =  GT
-ord _ :: Int `compare` id _ :: Int  =  LT
-ord _ :: Int `compare` _ :: Bool  =  GT
-ord _ :: Int `compare` _ :: Char  =  GT
-ord _ :: Int `compare` _ :: [Int]  =  GT
-p :: Bool `compare` x :: Int  =  LT
-p :: Bool `compare` 0 :: Int  =  LT
-p :: Bool `compare` id _ :: Int  =  LT
-p :: Bool `compare` _ :: Bool  =  GT
-p :: Bool `compare` _ :: Char  =  LT
-p :: Bool `compare` _ :: [Int]  =  LT
-False :: Bool `compare` x :: Int  =  GT
-False :: Bool `compare` 0 :: Int  =  LT
-False :: Bool `compare` id _ :: Int  =  LT
-False :: Bool `compare` _ :: Bool  =  GT
-False :: Bool `compare` _ :: Char  =  GT
-False :: Bool `compare` _ :: [Int]  =  GT
-True :: Bool `compare` x :: Int  =  GT
-True :: Bool `compare` 0 :: Int  =  LT
-True :: Bool `compare` id _ :: Int  =  LT
-True :: Bool `compare` _ :: Bool  =  GT
-True :: Bool `compare` _ :: Char  =  GT
-True :: Bool `compare` _ :: [Int]  =  GT
-not _ :: Bool `compare` x :: Int  =  GT
-not _ :: Bool `compare` 0 :: Int  =  GT
-not _ :: Bool `compare` id _ :: Int  =  LT
-not _ :: Bool `compare` _ :: Bool  =  GT
-not _ :: Bool `compare` _ :: Char  =  GT
-not _ :: Bool `compare` _ :: [Int]  =  GT
-c :: Char `compare` x :: Int  =  LT
-c :: Char `compare` 0 :: Int  =  LT
-c :: Char `compare` id _ :: Int  =  LT
-c :: Char `compare` _ :: Bool  =  GT
-c :: Char `compare` _ :: Char  =  GT
-c :: Char `compare` _ :: [Int]  =  LT
-'a' :: Char `compare` x :: Int  =  GT
-'a' :: Char `compare` 0 :: Int  =  LT
-'a' :: Char `compare` id _ :: Int  =  LT
-'a' :: Char `compare` _ :: Bool  =  GT
-'a' :: Char `compare` _ :: Char  =  GT
-'a' :: Char `compare` _ :: [Int]  =  GT
-xs :: [Int] `compare` x :: Int  =  GT
-xs :: [Int] `compare` 0 :: Int  =  LT
-xs :: [Int] `compare` id _ :: Int  =  LT
-xs :: [Int] `compare` _ :: Bool  =  GT
-xs :: [Int] `compare` _ :: Char  =  GT
-xs :: [Int] `compare` _ :: [Int]  =  GT
-[] :: [Int] `compare` x :: Int  =  GT
-[] :: [Int] `compare` 0 :: Int  =  GT
-[] :: [Int] `compare` id _ :: Int  =  LT
-[] :: [Int] `compare` _ :: Bool  =  GT
-[] :: [Int] `compare` _ :: Char  =  GT
-[] :: [Int] `compare` _ :: [Int]  =  GT
-_:_ :: [Int] `compare` x :: Int  =  GT
-_:_ :: [Int] `compare` 0 :: Int  =  GT
-_:_ :: [Int] `compare` id _ :: Int  =  GT
-_:_ :: [Int] `compare` _ :: Bool  =  GT
-_:_ :: [Int] `compare` _ :: Char  =  GT
-_:_ :: [Int] `compare` _ :: [Int]  =  GT
-id :: Int -> Int `compare` x :: Int  =  GT
-id :: Int -> Int `compare` 0 :: Int  =  GT
-id :: Int -> Int `compare` id _ :: Int  =  LT
-id :: Int -> Int `compare` _ :: Bool  =  GT
-id :: Int -> Int `compare` _ :: Char  =  GT
-id :: Int -> Int `compare` _ :: [Int]  =  GT
-(+) :: Int -> Int -> Int `compare` x :: Int  =  GT
-(+) :: Int -> Int -> Int `compare` 0 :: Int  =  GT
-(+) :: Int -> Int -> Int `compare` id _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` _ :: Bool  =  GT
-(+) :: Int -> Int -> Int `compare` _ :: Char  =  GT
-(+) :: Int -> Int -> Int `compare` _ :: [Int]  =  GT
-z :: Int `compare` _ :: Int  =  GT
--1 :: Int `compare` _ :: Int  =  GT
-id y :: Int `compare` _ :: Int  =  GT
-id 1 :: Int `compare` _ :: Int  =  GT
-id (id x) :: Int `compare` _ :: Int  =  GT
-id (id 0) :: Int `compare` _ :: Int  =  GT
-id (id (id _)) :: Int `compare` _ :: Int  =  GT
-id (negate _) :: Int `compare` _ :: Int  =  GT
-id (abs _) :: Int `compare` _ :: Int  =  GT
-id (_ + _) :: Int `compare` _ :: Int  =  GT
-id (head _) :: Int `compare` _ :: Int  =  GT
-id (ord _) :: Int `compare` _ :: Int  =  GT
-negate x :: Int `compare` _ :: Int  =  GT
-negate 0 :: Int `compare` _ :: Int  =  GT
-negate (id _) :: Int `compare` _ :: Int  =  GT
-abs x :: Int `compare` _ :: Int  =  GT
-abs 0 :: Int `compare` _ :: Int  =  GT
-abs (id _) :: Int `compare` _ :: Int  =  GT
-_ + x :: Int `compare` _ :: Int  =  GT
-_ + 0 :: Int `compare` _ :: Int  =  GT
-_ + id _ :: Int `compare` _ :: Int  =  GT
-x + _ :: Int `compare` _ :: Int  =  GT
-0 + _ :: Int `compare` _ :: Int  =  GT
-id _ + _ :: Int `compare` _ :: Int  =  GT
-_ * _ :: Int `compare` _ :: Int  =  GT
-f _ :: Int `compare` _ :: Int  =  GT
-head xs :: Int `compare` _ :: Int  =  GT
-head [] :: Int `compare` _ :: Int  =  GT
-head (_:_) :: Int `compare` _ :: Int  =  GT
-ord c :: Int `compare` _ :: Int  =  GT
-ord 'a' :: Int `compare` _ :: Int  =  GT
-q :: Bool `compare` _ :: Int  =  LT
-not p :: Bool `compare` _ :: Int  =  GT
-not False :: Bool `compare` _ :: Int  =  GT
-not True :: Bool `compare` _ :: Int  =  GT
-not (not _) :: Bool `compare` _ :: Int  =  GT
-_ || _ :: Bool `compare` _ :: Int  =  GT
-d :: Char `compare` _ :: Int  =  LT
-' ' :: Char `compare` _ :: Int  =  GT
-ys :: [Int] `compare` _ :: Int  =  GT
-[0] :: [Int] `compare` _ :: Int  =  GT
-_:xs :: [Int] `compare` _ :: Int  =  GT
-[_] :: [Int] `compare` _ :: Int  =  GT
-_:_:_ :: [Int] `compare` _ :: Int  =  GT
-x:_ :: [Int] `compare` _ :: Int  =  GT
-0:_ :: [Int] `compare` _ :: Int  =  GT
-id _:_ :: [Int] `compare` _ :: Int  =  GT
-tail _ :: [Int] `compare` _ :: Int  =  GT
-_ ++ _ :: [Int] `compare` _ :: Int  =  GT
-negate :: Int -> Int `compare` _ :: Int  =  GT
-abs :: Int -> Int `compare` _ :: Int  =  GT
-(_ +) :: Int -> Int `compare` _ :: Int  =  GT
-(*) :: Int -> Int -> Int `compare` _ :: Int  =  GT
-not :: Bool -> Bool `compare` _ :: Int  =  GT
-(||) :: Bool -> Bool -> Bool `compare` _ :: Int  =  GT
-_ :: Int `compare` x' :: Int  =  LT
-_ :: Int `compare` 2 :: Int  =  LT
-_ :: Int `compare` id z :: Int  =  LT
-_ :: Int `compare` id (-1) :: Int  =  LT
-_ :: Int `compare` id (id y) :: Int  =  LT
-_ :: Int `compare` id (id 1) :: Int  =  LT
-_ :: Int `compare` id (id (id x)) :: Int  =  LT
-_ :: Int `compare` id (id (id 0)) :: Int  =  LT
-_ :: Int `compare` id (id (id (id _))) :: Int  =  LT
-_ :: Int `compare` id (id (negate _)) :: Int  =  LT
-_ :: Int `compare` id (id (abs _)) :: Int  =  LT
-_ :: Int `compare` id (id (_ + _)) :: Int  =  LT
-_ :: Int `compare` id (id (head _)) :: Int  =  LT
-_ :: Int `compare` id (id (ord _)) :: Int  =  LT
-_ :: Int `compare` id (negate x) :: Int  =  LT
-_ :: Int `compare` id (negate 0) :: Int  =  LT
-_ :: Int `compare` id (negate (id _)) :: Int  =  LT
-_ :: Int `compare` id (abs x) :: Int  =  LT
-_ :: Int `compare` id (abs 0) :: Int  =  LT
-_ :: Int `compare` id (abs (id _)) :: Int  =  LT
-_ :: Int `compare` id (_ + x) :: Int  =  LT
-_ :: Int `compare` id (_ + 0) :: Int  =  LT
-_ :: Int `compare` id (_ + id _) :: Int  =  LT
-_ :: Int `compare` id (x + _) :: Int  =  LT
-_ :: Int `compare` id (0 + _) :: Int  =  LT
-_ :: Int `compare` id (id _ + _) :: Int  =  LT
-_ :: Int `compare` id (_ * _) :: Int  =  LT
-_ :: Int `compare` id (f _) :: Int  =  LT
-_ :: Int `compare` id (head xs) :: Int  =  LT
-_ :: Int `compare` id (head []) :: Int  =  LT
-_ :: Int `compare` id (head (_:_)) :: Int  =  LT
-_ :: Int `compare` id (ord c) :: Int  =  LT
-_ :: Int `compare` id (ord 'a') :: Int  =  LT
-_ :: Int `compare` negate y :: Int  =  LT
-_ :: Int `compare` negate 1 :: Int  =  LT
-_ :: Int `compare` negate (id x) :: Int  =  LT
-_ :: Int `compare` negate (id 0) :: Int  =  LT
-_ :: Int `compare` negate (id (id _)) :: Int  =  LT
-_ :: Int `compare` negate (negate _) :: Int  =  LT
-_ :: Int `compare` negate (abs _) :: Int  =  LT
-_ :: Int `compare` negate (_ + _) :: Int  =  LT
-_ :: Int `compare` negate (head _) :: Int  =  LT
-_ :: Int `compare` negate (ord _) :: Int  =  LT
-_ :: Int `compare` abs y :: Int  =  LT
-_ :: Int `compare` abs 1 :: Int  =  LT
-_ :: Int `compare` abs (id x) :: Int  =  LT
-_ :: Int `compare` abs (id 0) :: Int  =  LT
-_ :: Int `compare` abs (id (id _)) :: Int  =  LT
-_ :: Int `compare` abs (negate _) :: Int  =  LT
-_ :: Int `compare` abs (abs _) :: Int  =  LT
-_ :: Int `compare` abs (_ + _) :: Int  =  LT
-_ :: Int `compare` abs (head _) :: Int  =  LT
-_ :: Int `compare` abs (ord _) :: Int  =  LT
-_ :: Int `compare` _ + y :: Int  =  LT
-_ :: Int `compare` _ + 1 :: Int  =  LT
-_ :: Int `compare` _ + id x :: Int  =  LT
-_ :: Int `compare` _ + id 0 :: Int  =  LT
-_ :: Int `compare` _ + id (id _) :: Int  =  LT
-_ :: Int `compare` _ + negate _ :: Int  =  LT
-_ :: Int `compare` _ + abs _ :: Int  =  LT
-_ :: Int `compare` _ + (_ + _) :: Int  =  LT
-_ :: Int `compare` _ + head _ :: Int  =  LT
-_ :: Int `compare` _ + ord _ :: Int  =  LT
-_ :: Int `compare` x + x :: Int  =  LT
-_ :: Int `compare` x + 0 :: Int  =  LT
-_ :: Int `compare` x + id _ :: Int  =  LT
-_ :: Int `compare` 0 + x :: Int  =  LT
-_ :: Int `compare` 0 + 0 :: Int  =  LT
-_ :: Int `compare` 0 + id _ :: Int  =  LT
-_ :: Int `compare` id _ + x :: Int  =  LT
-_ :: Int `compare` id _ + 0 :: Int  =  LT
-_ :: Int `compare` id _ + id _ :: Int  =  LT
-_ :: Int `compare` _ * x :: Int  =  LT
-_ :: Int `compare` _ * 0 :: Int  =  LT
-_ :: Int `compare` _ * id _ :: Int  =  LT
-_ :: Int `compare` f x :: Int  =  LT
-_ :: Int `compare` f 0 :: Int  =  LT
-_ :: Int `compare` f (id _) :: Int  =  LT
-_ :: Int `compare` y + _ :: Int  =  LT
-_ :: Int `compare` 1 + _ :: Int  =  LT
-_ :: Int `compare` id x + _ :: Int  =  LT
-_ :: Int `compare` id 0 + _ :: Int  =  LT
-_ :: Int `compare` id (id _) + _ :: Int  =  LT
-_ :: Int `compare` negate _ + _ :: Int  =  LT
-_ :: Int `compare` abs _ + _ :: Int  =  LT
-_ :: Int `compare` (_ + _) + _ :: Int  =  LT
-_ :: Int `compare` head _ + _ :: Int  =  LT
-_ :: Int `compare` ord _ + _ :: Int  =  LT
-_ :: Int `compare` x * _ :: Int  =  LT
-_ :: Int `compare` 0 * _ :: Int  =  LT
-_ :: Int `compare` id _ * _ :: Int  =  LT
-_ :: Int `compare` g _ :: Int  =  LT
-_ :: Int `compare` head ys :: Int  =  LT
-_ :: Int `compare` head [0] :: Int  =  LT
-_ :: Int `compare` head (_:xs) :: Int  =  LT
-_ :: Int `compare` head [_] :: Int  =  LT
-_ :: Int `compare` head (_:_:_) :: Int  =  LT
-_ :: Int `compare` head (x:_) :: Int  =  LT
-_ :: Int `compare` head (0:_) :: Int  =  LT
-_ :: Int `compare` head (id _:_) :: Int  =  LT
-_ :: Int `compare` head (tail _) :: Int  =  LT
-_ :: Int `compare` head (_ ++ _) :: Int  =  LT
-_ :: Int `compare` ord d :: Int  =  LT
-_ :: Int `compare` ord ' ' :: Int  =  LT
-_ :: Int `compare` r :: Bool  =  GT
-_ :: Int `compare` not q :: Bool  =  LT
-_ :: Int `compare` not (not p) :: Bool  =  LT
-_ :: Int `compare` not (not False) :: Bool  =  LT
-_ :: Int `compare` not (not True) :: Bool  =  LT
-_ :: Int `compare` not (not (not _)) :: Bool  =  LT
-_ :: Int `compare` not (_ || _) :: Bool  =  LT
-_ :: Int `compare` _ || p :: Bool  =  LT
-_ :: Int `compare` _ || False :: Bool  =  LT
-_ :: Int `compare` _ || True :: Bool  =  LT
-_ :: Int `compare` _ || not _ :: Bool  =  LT
-_ :: Int `compare` p || _ :: Bool  =  LT
-_ :: Int `compare` False || _ :: Bool  =  LT
-_ :: Int `compare` True || _ :: Bool  =  LT
-_ :: Int `compare` not _ || _ :: Bool  =  LT
-_ :: Int `compare` _ && _ :: Bool  =  LT
-_ :: Int `compare` _ == _ :: Bool  =  LT
-_ :: Int `compare` _ == _ :: Bool  =  LT
-_ :: Int `compare` odd _ :: Bool  =  LT
-_ :: Int `compare` even _ :: Bool  =  LT
-_ :: Int `compare` elem _ _ :: Bool  =  LT
-_ :: Int `compare` e :: Char  =  GT
-_ :: Int `compare` 'b' :: Char  =  LT
-_ :: Int `compare` zs :: [Int]  =  LT
-_ :: Int `compare` [0,0] :: [Int]  =  LT
-_ :: Int `compare` [1] :: [Int]  =  LT
-_ :: Int `compare` _:ys :: [Int]  =  LT
-_ :: Int `compare` [_,0] :: [Int]  =  LT
-_ :: Int `compare` _:_:xs :: [Int]  =  LT
-_ :: Int `compare` [_,_] :: [Int]  =  LT
-_ :: Int `compare` _:_:_:_ :: [Int]  =  LT
-_ :: Int `compare` _:x:_ :: [Int]  =  LT
-_ :: Int `compare` _:0:_ :: [Int]  =  LT
-_ :: Int `compare` _:id _:_ :: [Int]  =  LT
-_ :: Int `compare` _:tail _ :: [Int]  =  LT
-_ :: Int `compare` _:(_ ++ _) :: [Int]  =  LT
-_ :: Int `compare` x:xs :: [Int]  =  LT
-_ :: Int `compare` [x] :: [Int]  =  LT
-_ :: Int `compare` x:_:_ :: [Int]  =  LT
-_ :: Int `compare` 0:xs :: [Int]  =  LT
-_ :: Int `compare` [0] :: [Int]  =  LT
-_ :: Int `compare` 0:_:_ :: [Int]  =  LT
-_ :: Int `compare` id _:xs :: [Int]  =  LT
-_ :: Int `compare` [id _] :: [Int]  =  LT
-_ :: Int `compare` id _:_:_ :: [Int]  =  LT
-_ :: Int `compare` y:_ :: [Int]  =  LT
-_ :: Int `compare` 1:_ :: [Int]  =  LT
-_ :: Int `compare` id x:_ :: [Int]  =  LT
-_ :: Int `compare` id 0:_ :: [Int]  =  LT
-_ :: Int `compare` id (id _):_ :: [Int]  =  LT
-_ :: Int `compare` negate _:_ :: [Int]  =  LT
-_ :: Int `compare` abs _:_ :: [Int]  =  LT
-_ :: Int `compare` _ + _:_ :: [Int]  =  LT
-_ :: Int `compare` head _:_ :: [Int]  =  LT
-_ :: Int `compare` ord _:_ :: [Int]  =  LT
-_ :: Int `compare` tail xs :: [Int]  =  LT
-_ :: Int `compare` tail [] :: [Int]  =  LT
-_ :: Int `compare` tail (_:_) :: [Int]  =  LT
-_ :: Int `compare` _ ++ xs :: [Int]  =  LT
-_ :: Int `compare` _ ++ [] :: [Int]  =  LT
-_ :: Int `compare` _ ++ (_:_) :: [Int]  =  LT
-_ :: Int `compare` xs ++ _ :: [Int]  =  LT
-_ :: Int `compare` [] ++ _ :: [Int]  =  LT
-_ :: Int `compare` (_:_) ++ _ :: [Int]  =  LT
-_ :: Int `compare` sort _ :: [Int]  =  LT
-_ :: Int `compare` insert _ _ :: [Int]  =  LT
-_ :: Int `compare` (x +) :: Int -> Int  =  LT
-_ :: Int `compare` (0 +) :: Int -> Int  =  LT
-_ :: Int `compare` (id _ +) :: Int -> Int  =  LT
-_ :: Int `compare` (_ *) :: Int -> Int  =  LT
-_ :: Int `compare` f :: Int -> Int  =  LT
-_ :: Int `compare` (_ ||) :: Bool -> Bool  =  LT
-_ :: Int `compare` (&&) :: Bool -> Bool -> Bool  =  LT
-x :: Int `compare` z :: Int  =  LT
-x :: Int `compare` -1 :: Int  =  LT
-x :: Int `compare` id y :: Int  =  LT
-x :: Int `compare` id 1 :: Int  =  LT
-x :: Int `compare` id (id x) :: Int  =  LT
-x :: Int `compare` id (id 0) :: Int  =  LT
-x :: Int `compare` id (id (id _)) :: Int  =  LT
-x :: Int `compare` id (negate _) :: Int  =  LT
-x :: Int `compare` id (abs _) :: Int  =  LT
-x :: Int `compare` id (_ + _) :: Int  =  LT
-x :: Int `compare` id (head _) :: Int  =  LT
-x :: Int `compare` id (ord _) :: Int  =  LT
-x :: Int `compare` negate x :: Int  =  LT
-x :: Int `compare` negate 0 :: Int  =  LT
-x :: Int `compare` negate (id _) :: Int  =  LT
-x :: Int `compare` abs x :: Int  =  LT
-x :: Int `compare` abs 0 :: Int  =  LT
-x :: Int `compare` abs (id _) :: Int  =  LT
-x :: Int `compare` _ + x :: Int  =  LT
-x :: Int `compare` _ + 0 :: Int  =  LT
-x :: Int `compare` _ + id _ :: Int  =  LT
-x :: Int `compare` x + _ :: Int  =  LT
-x :: Int `compare` 0 + _ :: Int  =  LT
-x :: Int `compare` id _ + _ :: Int  =  LT
-x :: Int `compare` _ * _ :: Int  =  LT
-x :: Int `compare` f _ :: Int  =  LT
-x :: Int `compare` head xs :: Int  =  LT
-x :: Int `compare` head [] :: Int  =  LT
-x :: Int `compare` head (_:_) :: Int  =  LT
-x :: Int `compare` ord c :: Int  =  LT
-x :: Int `compare` ord 'a' :: Int  =  LT
-x :: Int `compare` q :: Bool  =  GT
-x :: Int `compare` not p :: Bool  =  LT
-x :: Int `compare` not False :: Bool  =  LT
-x :: Int `compare` not True :: Bool  =  LT
-x :: Int `compare` not (not _) :: Bool  =  LT
-x :: Int `compare` _ || _ :: Bool  =  LT
-x :: Int `compare` d :: Char  =  GT
-x :: Int `compare` ' ' :: Char  =  LT
-x :: Int `compare` ys :: [Int]  =  LT
-x :: Int `compare` [0] :: [Int]  =  LT
-x :: Int `compare` _:xs :: [Int]  =  LT
-x :: Int `compare` [_] :: [Int]  =  LT
-x :: Int `compare` _:_:_ :: [Int]  =  LT
-x :: Int `compare` x:_ :: [Int]  =  LT
-x :: Int `compare` 0:_ :: [Int]  =  LT
-x :: Int `compare` id _:_ :: [Int]  =  LT
-x :: Int `compare` tail _ :: [Int]  =  LT
-x :: Int `compare` _ ++ _ :: [Int]  =  LT
-x :: Int `compare` negate :: Int -> Int  =  LT
-x :: Int `compare` abs :: Int -> Int  =  LT
-x :: Int `compare` (_ +) :: Int -> Int  =  LT
-x :: Int `compare` (*) :: Int -> Int -> Int  =  LT
-x :: Int `compare` not :: Bool -> Bool  =  LT
-x :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
-0 :: Int `compare` z :: Int  =  GT
-0 :: Int `compare` -1 :: Int  =  LT
-0 :: Int `compare` id y :: Int  =  LT
-0 :: Int `compare` id 1 :: Int  =  LT
-0 :: Int `compare` id (id x) :: Int  =  LT
-0 :: Int `compare` id (id 0) :: Int  =  LT
-0 :: Int `compare` id (id (id _)) :: Int  =  LT
-0 :: Int `compare` id (negate _) :: Int  =  LT
-0 :: Int `compare` id (abs _) :: Int  =  LT
-0 :: Int `compare` id (_ + _) :: Int  =  LT
-0 :: Int `compare` id (head _) :: Int  =  LT
-0 :: Int `compare` id (ord _) :: Int  =  LT
-0 :: Int `compare` negate x :: Int  =  LT
-0 :: Int `compare` negate 0 :: Int  =  LT
-0 :: Int `compare` negate (id _) :: Int  =  LT
-0 :: Int `compare` abs x :: Int  =  LT
-0 :: Int `compare` abs 0 :: Int  =  LT
-0 :: Int `compare` abs (id _) :: Int  =  LT
-0 :: Int `compare` _ + x :: Int  =  LT
-0 :: Int `compare` _ + 0 :: Int  =  LT
-0 :: Int `compare` _ + id _ :: Int  =  LT
-0 :: Int `compare` x + _ :: Int  =  LT
-0 :: Int `compare` 0 + _ :: Int  =  LT
-0 :: Int `compare` id _ + _ :: Int  =  LT
-0 :: Int `compare` _ * _ :: Int  =  LT
-0 :: Int `compare` f _ :: Int  =  LT
-0 :: Int `compare` head xs :: Int  =  LT
-0 :: Int `compare` head [] :: Int  =  LT
-0 :: Int `compare` head (_:_) :: Int  =  LT
-0 :: Int `compare` ord c :: Int  =  LT
-0 :: Int `compare` ord 'a' :: Int  =  LT
-0 :: Int `compare` q :: Bool  =  GT
-0 :: Int `compare` not p :: Bool  =  LT
-0 :: Int `compare` not False :: Bool  =  LT
-0 :: Int `compare` not True :: Bool  =  LT
-0 :: Int `compare` not (not _) :: Bool  =  LT
-0 :: Int `compare` _ || _ :: Bool  =  LT
-0 :: Int `compare` d :: Char  =  GT
-0 :: Int `compare` ' ' :: Char  =  GT
-0 :: Int `compare` ys :: [Int]  =  GT
-0 :: Int `compare` [0] :: [Int]  =  LT
-0 :: Int `compare` _:xs :: [Int]  =  LT
-0 :: Int `compare` [_] :: [Int]  =  LT
-0 :: Int `compare` _:_:_ :: [Int]  =  LT
-0 :: Int `compare` x:_ :: [Int]  =  LT
-0 :: Int `compare` 0:_ :: [Int]  =  LT
-0 :: Int `compare` id _:_ :: [Int]  =  LT
-0 :: Int `compare` tail _ :: [Int]  =  LT
-0 :: Int `compare` _ ++ _ :: [Int]  =  LT
-0 :: Int `compare` negate :: Int -> Int  =  LT
-0 :: Int `compare` abs :: Int -> Int  =  LT
-0 :: Int `compare` (_ +) :: Int -> Int  =  LT
-0 :: Int `compare` (*) :: Int -> Int -> Int  =  LT
-0 :: Int `compare` not :: Bool -> Bool  =  LT
-0 :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
-id _ :: Int `compare` z :: Int  =  GT
-id _ :: Int `compare` -1 :: Int  =  GT
-id _ :: Int `compare` id y :: Int  =  LT
-id _ :: Int `compare` id 1 :: Int  =  LT
-id _ :: Int `compare` id (id x) :: Int  =  LT
-id _ :: Int `compare` id (id 0) :: Int  =  LT
-id _ :: Int `compare` id (id (id _)) :: Int  =  LT
-id _ :: Int `compare` id (negate _) :: Int  =  LT
-id _ :: Int `compare` id (abs _) :: Int  =  LT
-id _ :: Int `compare` id (_ + _) :: Int  =  LT
-id _ :: Int `compare` id (head _) :: Int  =  LT
-id _ :: Int `compare` id (ord _) :: Int  =  LT
-id _ :: Int `compare` negate x :: Int  =  LT
-id _ :: Int `compare` negate 0 :: Int  =  LT
-id _ :: Int `compare` negate (id _) :: Int  =  LT
-id _ :: Int `compare` abs x :: Int  =  LT
-id _ :: Int `compare` abs 0 :: Int  =  LT
-id _ :: Int `compare` abs (id _) :: Int  =  LT
-id _ :: Int `compare` _ + x :: Int  =  LT
-id _ :: Int `compare` _ + 0 :: Int  =  LT
-id _ :: Int `compare` _ + id _ :: Int  =  LT
-id _ :: Int `compare` x + _ :: Int  =  LT
-id _ :: Int `compare` 0 + _ :: Int  =  LT
-id _ :: Int `compare` id _ + _ :: Int  =  LT
-id _ :: Int `compare` _ * _ :: Int  =  LT
-id _ :: Int `compare` f _ :: Int  =  GT
-id _ :: Int `compare` head xs :: Int  =  LT
-id _ :: Int `compare` head [] :: Int  =  LT
-id _ :: Int `compare` head (_:_) :: Int  =  LT
-id _ :: Int `compare` ord c :: Int  =  GT
-id _ :: Int `compare` ord 'a' :: Int  =  LT
-id _ :: Int `compare` q :: Bool  =  GT
-id _ :: Int `compare` not p :: Bool  =  GT
-id _ :: Int `compare` not False :: Bool  =  LT
-id _ :: Int `compare` not True :: Bool  =  LT
-id _ :: Int `compare` not (not _) :: Bool  =  LT
-id _ :: Int `compare` _ || _ :: Bool  =  LT
-id _ :: Int `compare` d :: Char  =  GT
-id _ :: Int `compare` ' ' :: Char  =  GT
-id _ :: Int `compare` ys :: [Int]  =  GT
-id _ :: Int `compare` [0] :: [Int]  =  GT
-id _ :: Int `compare` _:xs :: [Int]  =  LT
-id _ :: Int `compare` [_] :: [Int]  =  LT
-id _ :: Int `compare` _:_:_ :: [Int]  =  LT
-id _ :: Int `compare` x:_ :: [Int]  =  LT
-id _ :: Int `compare` 0:_ :: [Int]  =  LT
-id _ :: Int `compare` id _:_ :: [Int]  =  LT
-id _ :: Int `compare` tail _ :: [Int]  =  LT
-id _ :: Int `compare` _ ++ _ :: [Int]  =  LT
-id _ :: Int `compare` negate :: Int -> Int  =  GT
-id _ :: Int `compare` abs :: Int -> Int  =  GT
-id _ :: Int `compare` (_ +) :: Int -> Int  =  LT
-id _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
-id _ :: Int `compare` not :: Bool -> Bool  =  GT
-id _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-_ :: Bool `compare` z :: Int  =  LT
-_ :: Bool `compare` -1 :: Int  =  LT
-_ :: Bool `compare` id y :: Int  =  LT
-_ :: Bool `compare` id 1 :: Int  =  LT
-_ :: Bool `compare` id (id x) :: Int  =  LT
-_ :: Bool `compare` id (id 0) :: Int  =  LT
-_ :: Bool `compare` id (id (id _)) :: Int  =  LT
-_ :: Bool `compare` id (negate _) :: Int  =  LT
-_ :: Bool `compare` id (abs _) :: Int  =  LT
-_ :: Bool `compare` id (_ + _) :: Int  =  LT
-_ :: Bool `compare` id (head _) :: Int  =  LT
-_ :: Bool `compare` id (ord _) :: Int  =  LT
-_ :: Bool `compare` negate x :: Int  =  LT
-_ :: Bool `compare` negate 0 :: Int  =  LT
-_ :: Bool `compare` negate (id _) :: Int  =  LT
-_ :: Bool `compare` abs x :: Int  =  LT
-_ :: Bool `compare` abs 0 :: Int  =  LT
-_ :: Bool `compare` abs (id _) :: Int  =  LT
-_ :: Bool `compare` _ + x :: Int  =  LT
-_ :: Bool `compare` _ + 0 :: Int  =  LT
-_ :: Bool `compare` _ + id _ :: Int  =  LT
-_ :: Bool `compare` x + _ :: Int  =  LT
-_ :: Bool `compare` 0 + _ :: Int  =  LT
-_ :: Bool `compare` id _ + _ :: Int  =  LT
-_ :: Bool `compare` _ * _ :: Int  =  LT
-_ :: Bool `compare` f _ :: Int  =  LT
-_ :: Bool `compare` head xs :: Int  =  LT
-_ :: Bool `compare` head [] :: Int  =  LT
-_ :: Bool `compare` head (_:_) :: Int  =  LT
-_ :: Bool `compare` ord c :: Int  =  LT
-_ :: Bool `compare` ord 'a' :: Int  =  LT
-_ :: Bool `compare` q :: Bool  =  LT
-_ :: Bool `compare` not p :: Bool  =  LT
-_ :: Bool `compare` not False :: Bool  =  LT
-_ :: Bool `compare` not True :: Bool  =  LT
-_ :: Bool `compare` not (not _) :: Bool  =  LT
-_ :: Bool `compare` _ || _ :: Bool  =  LT
-_ :: Bool `compare` d :: Char  =  LT
-_ :: Bool `compare` ' ' :: Char  =  LT
-_ :: Bool `compare` ys :: [Int]  =  LT
-_ :: Bool `compare` [0] :: [Int]  =  LT
-_ :: Bool `compare` _:xs :: [Int]  =  LT
-_ :: Bool `compare` [_] :: [Int]  =  LT
-_ :: Bool `compare` _:_:_ :: [Int]  =  LT
-_ :: Bool `compare` x:_ :: [Int]  =  LT
-_ :: Bool `compare` 0:_ :: [Int]  =  LT
-_ :: Bool `compare` id _:_ :: [Int]  =  LT
-_ :: Bool `compare` tail _ :: [Int]  =  LT
-_ :: Bool `compare` _ ++ _ :: [Int]  =  LT
-_ :: Bool `compare` negate :: Int -> Int  =  LT
-_ :: Bool `compare` abs :: Int -> Int  =  LT
-_ :: Bool `compare` (_ +) :: Int -> Int  =  LT
-_ :: Bool `compare` (*) :: Int -> Int -> Int  =  LT
-_ :: Bool `compare` not :: Bool -> Bool  =  LT
-_ :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  LT
-_ :: Char `compare` z :: Int  =  LT
-_ :: Char `compare` -1 :: Int  =  LT
-_ :: Char `compare` id y :: Int  =  LT
-_ :: Char `compare` id 1 :: Int  =  LT
-_ :: Char `compare` id (id x) :: Int  =  LT
-_ :: Char `compare` id (id 0) :: Int  =  LT
-_ :: Char `compare` id (id (id _)) :: Int  =  LT
-_ :: Char `compare` id (negate _) :: Int  =  LT
-_ :: Char `compare` id (abs _) :: Int  =  LT
-_ :: Char `compare` id (_ + _) :: Int  =  LT
-_ :: Char `compare` id (head _) :: Int  =  LT
-_ :: Char `compare` id (ord _) :: Int  =  LT
-_ :: Char `compare` negate x :: Int  =  LT
-_ :: Char `compare` negate 0 :: Int  =  LT
-_ :: Char `compare` negate (id _) :: Int  =  LT
-_ :: Char `compare` abs x :: Int  =  LT
-_ :: Char `compare` abs 0 :: Int  =  LT
-_ :: Char `compare` abs (id _) :: Int  =  LT
-_ :: Char `compare` _ + x :: Int  =  LT
-_ :: Char `compare` _ + 0 :: Int  =  LT
-_ :: Char `compare` _ + id _ :: Int  =  LT
-_ :: Char `compare` x + _ :: Int  =  LT
-_ :: Char `compare` 0 + _ :: Int  =  LT
-_ :: Char `compare` id _ + _ :: Int  =  LT
-_ :: Char `compare` _ * _ :: Int  =  LT
-_ :: Char `compare` f _ :: Int  =  LT
-_ :: Char `compare` head xs :: Int  =  LT
-_ :: Char `compare` head [] :: Int  =  LT
-_ :: Char `compare` head (_:_) :: Int  =  LT
-_ :: Char `compare` ord c :: Int  =  LT
-_ :: Char `compare` ord 'a' :: Int  =  LT
-_ :: Char `compare` q :: Bool  =  GT
-_ :: Char `compare` not p :: Bool  =  LT
-_ :: Char `compare` not False :: Bool  =  LT
-_ :: Char `compare` not True :: Bool  =  LT
-_ :: Char `compare` not (not _) :: Bool  =  LT
-_ :: Char `compare` _ || _ :: Bool  =  LT
-_ :: Char `compare` d :: Char  =  LT
-_ :: Char `compare` ' ' :: Char  =  LT
-_ :: Char `compare` ys :: [Int]  =  LT
-_ :: Char `compare` [0] :: [Int]  =  LT
-_ :: Char `compare` _:xs :: [Int]  =  LT
-_ :: Char `compare` [_] :: [Int]  =  LT
-_ :: Char `compare` _:_:_ :: [Int]  =  LT
-_ :: Char `compare` x:_ :: [Int]  =  LT
-_ :: Char `compare` 0:_ :: [Int]  =  LT
-_ :: Char `compare` id _:_ :: [Int]  =  LT
-_ :: Char `compare` tail _ :: [Int]  =  LT
-_ :: Char `compare` _ ++ _ :: [Int]  =  LT
-_ :: Char `compare` negate :: Int -> Int  =  LT
-_ :: Char `compare` abs :: Int -> Int  =  LT
-_ :: Char `compare` (_ +) :: Int -> Int  =  LT
-_ :: Char `compare` (*) :: Int -> Int -> Int  =  LT
-_ :: Char `compare` not :: Bool -> Bool  =  LT
-_ :: Char `compare` (||) :: Bool -> Bool -> Bool  =  LT
-_ :: [Int] `compare` z :: Int  =  GT
-_ :: [Int] `compare` -1 :: Int  =  LT
-_ :: [Int] `compare` id y :: Int  =  LT
-_ :: [Int] `compare` id 1 :: Int  =  LT
-_ :: [Int] `compare` id (id x) :: Int  =  LT
-_ :: [Int] `compare` id (id 0) :: Int  =  LT
-_ :: [Int] `compare` id (id (id _)) :: Int  =  LT
-_ :: [Int] `compare` id (negate _) :: Int  =  LT
-_ :: [Int] `compare` id (abs _) :: Int  =  LT
-_ :: [Int] `compare` id (_ + _) :: Int  =  LT
-_ :: [Int] `compare` id (head _) :: Int  =  LT
-_ :: [Int] `compare` id (ord _) :: Int  =  LT
-_ :: [Int] `compare` negate x :: Int  =  LT
-_ :: [Int] `compare` negate 0 :: Int  =  LT
-_ :: [Int] `compare` negate (id _) :: Int  =  LT
-_ :: [Int] `compare` abs x :: Int  =  LT
-_ :: [Int] `compare` abs 0 :: Int  =  LT
-_ :: [Int] `compare` abs (id _) :: Int  =  LT
-_ :: [Int] `compare` _ + x :: Int  =  LT
-_ :: [Int] `compare` _ + 0 :: Int  =  LT
-_ :: [Int] `compare` _ + id _ :: Int  =  LT
-_ :: [Int] `compare` x + _ :: Int  =  LT
-_ :: [Int] `compare` 0 + _ :: Int  =  LT
-_ :: [Int] `compare` id _ + _ :: Int  =  LT
-_ :: [Int] `compare` _ * _ :: Int  =  LT
-_ :: [Int] `compare` f _ :: Int  =  LT
-_ :: [Int] `compare` head xs :: Int  =  LT
-_ :: [Int] `compare` head [] :: Int  =  LT
-_ :: [Int] `compare` head (_:_) :: Int  =  LT
-_ :: [Int] `compare` ord c :: Int  =  LT
-_ :: [Int] `compare` ord 'a' :: Int  =  LT
-_ :: [Int] `compare` q :: Bool  =  GT
-_ :: [Int] `compare` not p :: Bool  =  LT
-_ :: [Int] `compare` not False :: Bool  =  LT
-_ :: [Int] `compare` not True :: Bool  =  LT
-_ :: [Int] `compare` not (not _) :: Bool  =  LT
-_ :: [Int] `compare` _ || _ :: Bool  =  LT
-_ :: [Int] `compare` d :: Char  =  GT
-_ :: [Int] `compare` ' ' :: Char  =  LT
-_ :: [Int] `compare` ys :: [Int]  =  LT
-_ :: [Int] `compare` [0] :: [Int]  =  LT
-_ :: [Int] `compare` _:xs :: [Int]  =  LT
-_ :: [Int] `compare` [_] :: [Int]  =  LT
-_ :: [Int] `compare` _:_:_ :: [Int]  =  LT
-_ :: [Int] `compare` x:_ :: [Int]  =  LT
-_ :: [Int] `compare` 0:_ :: [Int]  =  LT
-_ :: [Int] `compare` id _:_ :: [Int]  =  LT
-_ :: [Int] `compare` tail _ :: [Int]  =  LT
-_ :: [Int] `compare` _ ++ _ :: [Int]  =  LT
-_ :: [Int] `compare` negate :: Int -> Int  =  LT
-_ :: [Int] `compare` abs :: Int -> Int  =  LT
-_ :: [Int] `compare` (_ +) :: Int -> Int  =  LT
-_ :: [Int] `compare` (*) :: Int -> Int -> Int  =  LT
-_ :: [Int] `compare` not :: Bool -> Bool  =  LT
-_ :: [Int] `compare` (||) :: Bool -> Bool -> Bool  =  LT
-y :: Int `compare` y :: Int  =  EQ
-y :: Int `compare` 1 :: Int  =  LT
-y :: Int `compare` id x :: Int  =  LT
-y :: Int `compare` id 0 :: Int  =  LT
-y :: Int `compare` id (id _) :: Int  =  LT
-y :: Int `compare` negate _ :: Int  =  LT
-y :: Int `compare` abs _ :: Int  =  LT
-y :: Int `compare` _ + _ :: Int  =  LT
-y :: Int `compare` head _ :: Int  =  LT
-y :: Int `compare` ord _ :: Int  =  LT
-y :: Int `compare` p :: Bool  =  GT
-y :: Int `compare` False :: Bool  =  LT
-y :: Int `compare` True :: Bool  =  LT
-y :: Int `compare` not _ :: Bool  =  LT
-y :: Int `compare` c :: Char  =  GT
-y :: Int `compare` 'a' :: Char  =  LT
-y :: Int `compare` xs :: [Int]  =  LT
-y :: Int `compare` [] :: [Int]  =  LT
-y :: Int `compare` _:_ :: [Int]  =  LT
-y :: Int `compare` id :: Int -> Int  =  LT
-y :: Int `compare` (+) :: Int -> Int -> Int  =  LT
-1 :: Int `compare` y :: Int  =  GT
-1 :: Int `compare` 1 :: Int  =  EQ
-1 :: Int `compare` id x :: Int  =  LT
-1 :: Int `compare` id 0 :: Int  =  LT
-1 :: Int `compare` id (id _) :: Int  =  LT
-1 :: Int `compare` negate _ :: Int  =  LT
-1 :: Int `compare` abs _ :: Int  =  LT
-1 :: Int `compare` _ + _ :: Int  =  LT
-1 :: Int `compare` head _ :: Int  =  LT
-1 :: Int `compare` ord _ :: Int  =  LT
-1 :: Int `compare` p :: Bool  =  GT
-1 :: Int `compare` False :: Bool  =  GT
-1 :: Int `compare` True :: Bool  =  GT
-1 :: Int `compare` not _ :: Bool  =  LT
-1 :: Int `compare` c :: Char  =  GT
-1 :: Int `compare` 'a' :: Char  =  GT
-1 :: Int `compare` xs :: [Int]  =  GT
-1 :: Int `compare` [] :: [Int]  =  LT
-1 :: Int `compare` _:_ :: [Int]  =  LT
-1 :: Int `compare` id :: Int -> Int  =  LT
-1 :: Int `compare` (+) :: Int -> Int -> Int  =  LT
-id x :: Int `compare` y :: Int  =  GT
-id x :: Int `compare` 1 :: Int  =  GT
-id x :: Int `compare` id x :: Int  =  EQ
-id x :: Int `compare` id 0 :: Int  =  LT
-id x :: Int `compare` id (id _) :: Int  =  LT
-id x :: Int `compare` negate _ :: Int  =  LT
-id x :: Int `compare` abs _ :: Int  =  LT
-id x :: Int `compare` _ + _ :: Int  =  LT
-id x :: Int `compare` head _ :: Int  =  LT
-id x :: Int `compare` ord _ :: Int  =  GT
-id x :: Int `compare` p :: Bool  =  GT
-id x :: Int `compare` False :: Bool  =  GT
-id x :: Int `compare` True :: Bool  =  GT
-id x :: Int `compare` not _ :: Bool  =  GT
-id x :: Int `compare` c :: Char  =  GT
-id x :: Int `compare` 'a' :: Char  =  GT
-id x :: Int `compare` xs :: [Int]  =  GT
-id x :: Int `compare` [] :: [Int]  =  GT
-id x :: Int `compare` _:_ :: [Int]  =  LT
-id x :: Int `compare` id :: Int -> Int  =  GT
-id x :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id 0 :: Int `compare` y :: Int  =  GT
-id 0 :: Int `compare` 1 :: Int  =  GT
-id 0 :: Int `compare` id x :: Int  =  GT
-id 0 :: Int `compare` id 0 :: Int  =  EQ
-id 0 :: Int `compare` id (id _) :: Int  =  LT
-id 0 :: Int `compare` negate _ :: Int  =  GT
-id 0 :: Int `compare` abs _ :: Int  =  GT
-id 0 :: Int `compare` _ + _ :: Int  =  LT
-id 0 :: Int `compare` head _ :: Int  =  GT
-id 0 :: Int `compare` ord _ :: Int  =  GT
-id 0 :: Int `compare` p :: Bool  =  GT
-id 0 :: Int `compare` False :: Bool  =  GT
-id 0 :: Int `compare` True :: Bool  =  GT
-id 0 :: Int `compare` not _ :: Bool  =  GT
-id 0 :: Int `compare` c :: Char  =  GT
-id 0 :: Int `compare` 'a' :: Char  =  GT
-id 0 :: Int `compare` xs :: [Int]  =  GT
-id 0 :: Int `compare` [] :: [Int]  =  GT
-id 0 :: Int `compare` _:_ :: [Int]  =  LT
-id 0 :: Int `compare` id :: Int -> Int  =  GT
-id 0 :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id (id _) :: Int `compare` y :: Int  =  GT
-id (id _) :: Int `compare` 1 :: Int  =  GT
-id (id _) :: Int `compare` id x :: Int  =  GT
-id (id _) :: Int `compare` id 0 :: Int  =  GT
-id (id _) :: Int `compare` id (id _) :: Int  =  EQ
-id (id _) :: Int `compare` negate _ :: Int  =  GT
-id (id _) :: Int `compare` abs _ :: Int  =  GT
-id (id _) :: Int `compare` _ + _ :: Int  =  GT
-id (id _) :: Int `compare` head _ :: Int  =  GT
-id (id _) :: Int `compare` ord _ :: Int  =  GT
-id (id _) :: Int `compare` p :: Bool  =  GT
-id (id _) :: Int `compare` False :: Bool  =  GT
-id (id _) :: Int `compare` True :: Bool  =  GT
-id (id _) :: Int `compare` not _ :: Bool  =  GT
-id (id _) :: Int `compare` c :: Char  =  GT
-id (id _) :: Int `compare` 'a' :: Char  =  GT
-id (id _) :: Int `compare` xs :: [Int]  =  GT
-id (id _) :: Int `compare` [] :: [Int]  =  GT
-id (id _) :: Int `compare` _:_ :: [Int]  =  GT
-id (id _) :: Int `compare` id :: Int -> Int  =  GT
-id (id _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-negate _ :: Int `compare` y :: Int  =  GT
-negate _ :: Int `compare` 1 :: Int  =  GT
-negate _ :: Int `compare` id x :: Int  =  GT
-negate _ :: Int `compare` id 0 :: Int  =  LT
-negate _ :: Int `compare` id (id _) :: Int  =  LT
-negate _ :: Int `compare` negate _ :: Int  =  EQ
-negate _ :: Int `compare` abs _ :: Int  =  GT
-negate _ :: Int `compare` _ + _ :: Int  =  LT
-negate _ :: Int `compare` head _ :: Int  =  LT
-negate _ :: Int `compare` ord _ :: Int  =  GT
-negate _ :: Int `compare` p :: Bool  =  GT
-negate _ :: Int `compare` False :: Bool  =  GT
-negate _ :: Int `compare` True :: Bool  =  GT
-negate _ :: Int `compare` not _ :: Bool  =  GT
-negate _ :: Int `compare` c :: Char  =  GT
-negate _ :: Int `compare` 'a' :: Char  =  GT
-negate _ :: Int `compare` xs :: [Int]  =  GT
-negate _ :: Int `compare` [] :: [Int]  =  GT
-negate _ :: Int `compare` _:_ :: [Int]  =  LT
-negate _ :: Int `compare` id :: Int -> Int  =  GT
-negate _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-abs _ :: Int `compare` y :: Int  =  GT
-abs _ :: Int `compare` 1 :: Int  =  GT
-abs _ :: Int `compare` id x :: Int  =  GT
-abs _ :: Int `compare` id 0 :: Int  =  LT
-abs _ :: Int `compare` id (id _) :: Int  =  LT
-abs _ :: Int `compare` negate _ :: Int  =  LT
-abs _ :: Int `compare` abs _ :: Int  =  EQ
-abs _ :: Int `compare` _ + _ :: Int  =  LT
-abs _ :: Int `compare` head _ :: Int  =  LT
-abs _ :: Int `compare` ord _ :: Int  =  GT
-abs _ :: Int `compare` p :: Bool  =  GT
-abs _ :: Int `compare` False :: Bool  =  GT
-abs _ :: Int `compare` True :: Bool  =  GT
-abs _ :: Int `compare` not _ :: Bool  =  GT
-abs _ :: Int `compare` c :: Char  =  GT
-abs _ :: Int `compare` 'a' :: Char  =  GT
-abs _ :: Int `compare` xs :: [Int]  =  GT
-abs _ :: Int `compare` [] :: [Int]  =  GT
-abs _ :: Int `compare` _:_ :: [Int]  =  LT
-abs _ :: Int `compare` id :: Int -> Int  =  GT
-abs _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-_ + _ :: Int `compare` y :: Int  =  GT
-_ + _ :: Int `compare` 1 :: Int  =  GT
-_ + _ :: Int `compare` id x :: Int  =  GT
-_ + _ :: Int `compare` id 0 :: Int  =  GT
-_ + _ :: Int `compare` id (id _) :: Int  =  LT
-_ + _ :: Int `compare` negate _ :: Int  =  GT
-_ + _ :: Int `compare` abs _ :: Int  =  GT
-_ + _ :: Int `compare` _ + _ :: Int  =  EQ
-_ + _ :: Int `compare` head _ :: Int  =  GT
-_ + _ :: Int `compare` ord _ :: Int  =  GT
-_ + _ :: Int `compare` p :: Bool  =  GT
-_ + _ :: Int `compare` False :: Bool  =  GT
-_ + _ :: Int `compare` True :: Bool  =  GT
-_ + _ :: Int `compare` not _ :: Bool  =  GT
-_ + _ :: Int `compare` c :: Char  =  GT
-_ + _ :: Int `compare` 'a' :: Char  =  GT
-_ + _ :: Int `compare` xs :: [Int]  =  GT
-_ + _ :: Int `compare` [] :: [Int]  =  GT
-_ + _ :: Int `compare` _:_ :: [Int]  =  GT
-_ + _ :: Int `compare` id :: Int -> Int  =  GT
-_ + _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-head _ :: Int `compare` y :: Int  =  GT
-head _ :: Int `compare` 1 :: Int  =  GT
-head _ :: Int `compare` id x :: Int  =  GT
-head _ :: Int `compare` id 0 :: Int  =  LT
-head _ :: Int `compare` id (id _) :: Int  =  LT
-head _ :: Int `compare` negate _ :: Int  =  GT
-head _ :: Int `compare` abs _ :: Int  =  GT
-head _ :: Int `compare` _ + _ :: Int  =  LT
-head _ :: Int `compare` head _ :: Int  =  EQ
-head _ :: Int `compare` ord _ :: Int  =  GT
-head _ :: Int `compare` p :: Bool  =  GT
-head _ :: Int `compare` False :: Bool  =  GT
-head _ :: Int `compare` True :: Bool  =  GT
-head _ :: Int `compare` not _ :: Bool  =  GT
-head _ :: Int `compare` c :: Char  =  GT
-head _ :: Int `compare` 'a' :: Char  =  GT
-head _ :: Int `compare` xs :: [Int]  =  GT
-head _ :: Int `compare` [] :: [Int]  =  GT
-head _ :: Int `compare` _:_ :: [Int]  =  LT
-head _ :: Int `compare` id :: Int -> Int  =  GT
-head _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-ord _ :: Int `compare` y :: Int  =  GT
-ord _ :: Int `compare` 1 :: Int  =  GT
-ord _ :: Int `compare` id x :: Int  =  LT
-ord _ :: Int `compare` id 0 :: Int  =  LT
-ord _ :: Int `compare` id (id _) :: Int  =  LT
-ord _ :: Int `compare` negate _ :: Int  =  LT
-ord _ :: Int `compare` abs _ :: Int  =  LT
-ord _ :: Int `compare` _ + _ :: Int  =  LT
-ord _ :: Int `compare` head _ :: Int  =  LT
-ord _ :: Int `compare` ord _ :: Int  =  EQ
-ord _ :: Int `compare` p :: Bool  =  GT
-ord _ :: Int `compare` False :: Bool  =  GT
-ord _ :: Int `compare` True :: Bool  =  GT
-ord _ :: Int `compare` not _ :: Bool  =  GT
-ord _ :: Int `compare` c :: Char  =  GT
-ord _ :: Int `compare` 'a' :: Char  =  GT
-ord _ :: Int `compare` xs :: [Int]  =  GT
-ord _ :: Int `compare` [] :: [Int]  =  GT
-ord _ :: Int `compare` _:_ :: [Int]  =  LT
-ord _ :: Int `compare` id :: Int -> Int  =  GT
-ord _ :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-p :: Bool `compare` y :: Int  =  LT
-p :: Bool `compare` 1 :: Int  =  LT
-p :: Bool `compare` id x :: Int  =  LT
-p :: Bool `compare` id 0 :: Int  =  LT
-p :: Bool `compare` id (id _) :: Int  =  LT
-p :: Bool `compare` negate _ :: Int  =  LT
-p :: Bool `compare` abs _ :: Int  =  LT
-p :: Bool `compare` _ + _ :: Int  =  LT
-p :: Bool `compare` head _ :: Int  =  LT
-p :: Bool `compare` ord _ :: Int  =  LT
-p :: Bool `compare` p :: Bool  =  EQ
-p :: Bool `compare` False :: Bool  =  LT
-p :: Bool `compare` True :: Bool  =  LT
-p :: Bool `compare` not _ :: Bool  =  LT
-p :: Bool `compare` c :: Char  =  LT
-p :: Bool `compare` 'a' :: Char  =  LT
-p :: Bool `compare` xs :: [Int]  =  LT
-p :: Bool `compare` [] :: [Int]  =  LT
-p :: Bool `compare` _:_ :: [Int]  =  LT
-p :: Bool `compare` id :: Int -> Int  =  LT
-p :: Bool `compare` (+) :: Int -> Int -> Int  =  LT
-False :: Bool `compare` y :: Int  =  GT
-False :: Bool `compare` 1 :: Int  =  LT
-False :: Bool `compare` id x :: Int  =  LT
-False :: Bool `compare` id 0 :: Int  =  LT
-False :: Bool `compare` id (id _) :: Int  =  LT
-False :: Bool `compare` negate _ :: Int  =  LT
-False :: Bool `compare` abs _ :: Int  =  LT
-False :: Bool `compare` _ + _ :: Int  =  LT
-False :: Bool `compare` head _ :: Int  =  LT
-False :: Bool `compare` ord _ :: Int  =  LT
-False :: Bool `compare` p :: Bool  =  GT
-False :: Bool `compare` False :: Bool  =  EQ
-False :: Bool `compare` True :: Bool  =  LT
-False :: Bool `compare` not _ :: Bool  =  LT
-False :: Bool `compare` c :: Char  =  GT
-False :: Bool `compare` 'a' :: Char  =  LT
-False :: Bool `compare` xs :: [Int]  =  GT
-False :: Bool `compare` [] :: [Int]  =  LT
-False :: Bool `compare` _:_ :: [Int]  =  LT
-False :: Bool `compare` id :: Int -> Int  =  LT
-False :: Bool `compare` (+) :: Int -> Int -> Int  =  LT
-True :: Bool `compare` y :: Int  =  GT
-True :: Bool `compare` 1 :: Int  =  LT
-True :: Bool `compare` id x :: Int  =  LT
-True :: Bool `compare` id 0 :: Int  =  LT
-True :: Bool `compare` id (id _) :: Int  =  LT
-True :: Bool `compare` negate _ :: Int  =  LT
-True :: Bool `compare` abs _ :: Int  =  LT
-True :: Bool `compare` _ + _ :: Int  =  LT
-True :: Bool `compare` head _ :: Int  =  LT
-True :: Bool `compare` ord _ :: Int  =  LT
-True :: Bool `compare` p :: Bool  =  GT
-True :: Bool `compare` False :: Bool  =  GT
-True :: Bool `compare` True :: Bool  =  EQ
-True :: Bool `compare` not _ :: Bool  =  LT
-True :: Bool `compare` c :: Char  =  GT
-True :: Bool `compare` 'a' :: Char  =  LT
-True :: Bool `compare` xs :: [Int]  =  GT
-True :: Bool `compare` [] :: [Int]  =  LT
-True :: Bool `compare` _:_ :: [Int]  =  LT
-True :: Bool `compare` id :: Int -> Int  =  LT
-True :: Bool `compare` (+) :: Int -> Int -> Int  =  LT
-not _ :: Bool `compare` y :: Int  =  GT
-not _ :: Bool `compare` 1 :: Int  =  GT
-not _ :: Bool `compare` id x :: Int  =  LT
-not _ :: Bool `compare` id 0 :: Int  =  LT
-not _ :: Bool `compare` id (id _) :: Int  =  LT
-not _ :: Bool `compare` negate _ :: Int  =  LT
-not _ :: Bool `compare` abs _ :: Int  =  LT
-not _ :: Bool `compare` _ + _ :: Int  =  LT
-not _ :: Bool `compare` head _ :: Int  =  LT
-not _ :: Bool `compare` ord _ :: Int  =  LT
-not _ :: Bool `compare` p :: Bool  =  GT
-not _ :: Bool `compare` False :: Bool  =  GT
-not _ :: Bool `compare` True :: Bool  =  GT
-not _ :: Bool `compare` not _ :: Bool  =  EQ
-not _ :: Bool `compare` c :: Char  =  GT
-not _ :: Bool `compare` 'a' :: Char  =  GT
-not _ :: Bool `compare` xs :: [Int]  =  GT
-not _ :: Bool `compare` [] :: [Int]  =  GT
-not _ :: Bool `compare` _:_ :: [Int]  =  LT
-not _ :: Bool `compare` id :: Int -> Int  =  GT
-not _ :: Bool `compare` (+) :: Int -> Int -> Int  =  GT
-c :: Char `compare` y :: Int  =  LT
-c :: Char `compare` 1 :: Int  =  LT
-c :: Char `compare` id x :: Int  =  LT
-c :: Char `compare` id 0 :: Int  =  LT
-c :: Char `compare` id (id _) :: Int  =  LT
-c :: Char `compare` negate _ :: Int  =  LT
-c :: Char `compare` abs _ :: Int  =  LT
-c :: Char `compare` _ + _ :: Int  =  LT
-c :: Char `compare` head _ :: Int  =  LT
-c :: Char `compare` ord _ :: Int  =  LT
-c :: Char `compare` p :: Bool  =  GT
-c :: Char `compare` False :: Bool  =  LT
-c :: Char `compare` True :: Bool  =  LT
-c :: Char `compare` not _ :: Bool  =  LT
-c :: Char `compare` c :: Char  =  EQ
-c :: Char `compare` 'a' :: Char  =  LT
-c :: Char `compare` xs :: [Int]  =  LT
-c :: Char `compare` [] :: [Int]  =  LT
-c :: Char `compare` _:_ :: [Int]  =  LT
-c :: Char `compare` id :: Int -> Int  =  LT
-c :: Char `compare` (+) :: Int -> Int -> Int  =  LT
-'a' :: Char `compare` y :: Int  =  GT
-'a' :: Char `compare` 1 :: Int  =  LT
-'a' :: Char `compare` id x :: Int  =  LT
-'a' :: Char `compare` id 0 :: Int  =  LT
-'a' :: Char `compare` id (id _) :: Int  =  LT
-'a' :: Char `compare` negate _ :: Int  =  LT
-'a' :: Char `compare` abs _ :: Int  =  LT
-'a' :: Char `compare` _ + _ :: Int  =  LT
-'a' :: Char `compare` head _ :: Int  =  LT
-'a' :: Char `compare` ord _ :: Int  =  LT
-'a' :: Char `compare` p :: Bool  =  GT
-'a' :: Char `compare` False :: Bool  =  GT
-'a' :: Char `compare` True :: Bool  =  GT
-'a' :: Char `compare` not _ :: Bool  =  LT
-'a' :: Char `compare` c :: Char  =  GT
-'a' :: Char `compare` 'a' :: Char  =  EQ
-'a' :: Char `compare` xs :: [Int]  =  GT
-'a' :: Char `compare` [] :: [Int]  =  LT
-'a' :: Char `compare` _:_ :: [Int]  =  LT
-'a' :: Char `compare` id :: Int -> Int  =  LT
-'a' :: Char `compare` (+) :: Int -> Int -> Int  =  LT
-xs :: [Int] `compare` y :: Int  =  GT
-xs :: [Int] `compare` 1 :: Int  =  LT
-xs :: [Int] `compare` id x :: Int  =  LT
-xs :: [Int] `compare` id 0 :: Int  =  LT
-xs :: [Int] `compare` id (id _) :: Int  =  LT
-xs :: [Int] `compare` negate _ :: Int  =  LT
-xs :: [Int] `compare` abs _ :: Int  =  LT
-xs :: [Int] `compare` _ + _ :: Int  =  LT
-xs :: [Int] `compare` head _ :: Int  =  LT
-xs :: [Int] `compare` ord _ :: Int  =  LT
-xs :: [Int] `compare` p :: Bool  =  GT
-xs :: [Int] `compare` False :: Bool  =  LT
-xs :: [Int] `compare` True :: Bool  =  LT
-xs :: [Int] `compare` not _ :: Bool  =  LT
-xs :: [Int] `compare` c :: Char  =  GT
-xs :: [Int] `compare` 'a' :: Char  =  LT
-xs :: [Int] `compare` xs :: [Int]  =  EQ
-xs :: [Int] `compare` [] :: [Int]  =  LT
-xs :: [Int] `compare` _:_ :: [Int]  =  LT
-xs :: [Int] `compare` id :: Int -> Int  =  LT
-xs :: [Int] `compare` (+) :: Int -> Int -> Int  =  LT
-[] :: [Int] `compare` y :: Int  =  GT
-[] :: [Int] `compare` 1 :: Int  =  GT
-[] :: [Int] `compare` id x :: Int  =  LT
-[] :: [Int] `compare` id 0 :: Int  =  LT
-[] :: [Int] `compare` id (id _) :: Int  =  LT
-[] :: [Int] `compare` negate _ :: Int  =  LT
-[] :: [Int] `compare` abs _ :: Int  =  LT
-[] :: [Int] `compare` _ + _ :: Int  =  LT
-[] :: [Int] `compare` head _ :: Int  =  LT
-[] :: [Int] `compare` ord _ :: Int  =  LT
-[] :: [Int] `compare` p :: Bool  =  GT
-[] :: [Int] `compare` False :: Bool  =  GT
-[] :: [Int] `compare` True :: Bool  =  GT
-[] :: [Int] `compare` not _ :: Bool  =  LT
-[] :: [Int] `compare` c :: Char  =  GT
-[] :: [Int] `compare` 'a' :: Char  =  GT
-[] :: [Int] `compare` xs :: [Int]  =  GT
-[] :: [Int] `compare` [] :: [Int]  =  EQ
-[] :: [Int] `compare` _:_ :: [Int]  =  LT
-[] :: [Int] `compare` id :: Int -> Int  =  LT
-[] :: [Int] `compare` (+) :: Int -> Int -> Int  =  LT
-_:_ :: [Int] `compare` y :: Int  =  GT
-_:_ :: [Int] `compare` 1 :: Int  =  GT
-_:_ :: [Int] `compare` id x :: Int  =  GT
-_:_ :: [Int] `compare` id 0 :: Int  =  GT
-_:_ :: [Int] `compare` id (id _) :: Int  =  LT
-_:_ :: [Int] `compare` negate _ :: Int  =  GT
-_:_ :: [Int] `compare` abs _ :: Int  =  GT
-_:_ :: [Int] `compare` _ + _ :: Int  =  LT
-_:_ :: [Int] `compare` head _ :: Int  =  GT
-_:_ :: [Int] `compare` ord _ :: Int  =  GT
-_:_ :: [Int] `compare` p :: Bool  =  GT
-_:_ :: [Int] `compare` False :: Bool  =  GT
-_:_ :: [Int] `compare` True :: Bool  =  GT
-_:_ :: [Int] `compare` not _ :: Bool  =  GT
-_:_ :: [Int] `compare` c :: Char  =  GT
-_:_ :: [Int] `compare` 'a' :: Char  =  GT
-_:_ :: [Int] `compare` xs :: [Int]  =  GT
-_:_ :: [Int] `compare` [] :: [Int]  =  GT
-_:_ :: [Int] `compare` _:_ :: [Int]  =  EQ
-_:_ :: [Int] `compare` id :: Int -> Int  =  GT
-_:_ :: [Int] `compare` (+) :: Int -> Int -> Int  =  GT
-id :: Int -> Int `compare` y :: Int  =  GT
-id :: Int -> Int `compare` 1 :: Int  =  GT
-id :: Int -> Int `compare` id x :: Int  =  LT
-id :: Int -> Int `compare` id 0 :: Int  =  LT
-id :: Int -> Int `compare` id (id _) :: Int  =  LT
-id :: Int -> Int `compare` negate _ :: Int  =  LT
-id :: Int -> Int `compare` abs _ :: Int  =  LT
-id :: Int -> Int `compare` _ + _ :: Int  =  LT
-id :: Int -> Int `compare` head _ :: Int  =  LT
-id :: Int -> Int `compare` ord _ :: Int  =  LT
-id :: Int -> Int `compare` p :: Bool  =  GT
-id :: Int -> Int `compare` False :: Bool  =  GT
-id :: Int -> Int `compare` True :: Bool  =  GT
-id :: Int -> Int `compare` not _ :: Bool  =  LT
-id :: Int -> Int `compare` c :: Char  =  GT
-id :: Int -> Int `compare` 'a' :: Char  =  GT
-id :: Int -> Int `compare` xs :: [Int]  =  GT
-id :: Int -> Int `compare` [] :: [Int]  =  GT
-id :: Int -> Int `compare` _:_ :: [Int]  =  LT
-id :: Int -> Int `compare` id :: Int -> Int  =  EQ
-id :: Int -> Int `compare` (+) :: Int -> Int -> Int  =  LT
-(+) :: Int -> Int -> Int `compare` y :: Int  =  GT
-(+) :: Int -> Int -> Int `compare` 1 :: Int  =  GT
-(+) :: Int -> Int -> Int `compare` id x :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id 0 :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id (id _) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` negate _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` abs _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` _ + _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` head _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` ord _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` p :: Bool  =  GT
-(+) :: Int -> Int -> Int `compare` False :: Bool  =  GT
-(+) :: Int -> Int -> Int `compare` True :: Bool  =  GT
-(+) :: Int -> Int -> Int `compare` not _ :: Bool  =  LT
-(+) :: Int -> Int -> Int `compare` c :: Char  =  GT
-(+) :: Int -> Int -> Int `compare` 'a' :: Char  =  GT
-(+) :: Int -> Int -> Int `compare` xs :: [Int]  =  GT
-(+) :: Int -> Int -> Int `compare` [] :: [Int]  =  GT
-(+) :: Int -> Int -> Int `compare` _:_ :: [Int]  =  LT
-(+) :: Int -> Int -> Int `compare` id :: Int -> Int  =  GT
-(+) :: Int -> Int -> Int `compare` (+) :: Int -> Int -> Int  =  EQ
-z :: Int `compare` x :: Int  =  GT
-z :: Int `compare` 0 :: Int  =  LT
-z :: Int `compare` id _ :: Int  =  LT
-z :: Int `compare` _ :: Bool  =  GT
-z :: Int `compare` _ :: Char  =  GT
-z :: Int `compare` _ :: [Int]  =  LT
--1 :: Int `compare` x :: Int  =  GT
--1 :: Int `compare` 0 :: Int  =  GT
--1 :: Int `compare` id _ :: Int  =  LT
--1 :: Int `compare` _ :: Bool  =  GT
--1 :: Int `compare` _ :: Char  =  GT
--1 :: Int `compare` _ :: [Int]  =  GT
-id y :: Int `compare` x :: Int  =  GT
-id y :: Int `compare` 0 :: Int  =  GT
-id y :: Int `compare` id _ :: Int  =  GT
-id y :: Int `compare` _ :: Bool  =  GT
-id y :: Int `compare` _ :: Char  =  GT
-id y :: Int `compare` _ :: [Int]  =  GT
-id 1 :: Int `compare` x :: Int  =  GT
-id 1 :: Int `compare` 0 :: Int  =  GT
-id 1 :: Int `compare` id _ :: Int  =  GT
-id 1 :: Int `compare` _ :: Bool  =  GT
-id 1 :: Int `compare` _ :: Char  =  GT
-id 1 :: Int `compare` _ :: [Int]  =  GT
-id (id x) :: Int `compare` x :: Int  =  GT
-id (id x) :: Int `compare` 0 :: Int  =  GT
-id (id x) :: Int `compare` id _ :: Int  =  GT
-id (id x) :: Int `compare` _ :: Bool  =  GT
-id (id x) :: Int `compare` _ :: Char  =  GT
-id (id x) :: Int `compare` _ :: [Int]  =  GT
-id (id 0) :: Int `compare` x :: Int  =  GT
-id (id 0) :: Int `compare` 0 :: Int  =  GT
-id (id 0) :: Int `compare` id _ :: Int  =  GT
-id (id 0) :: Int `compare` _ :: Bool  =  GT
-id (id 0) :: Int `compare` _ :: Char  =  GT
-id (id 0) :: Int `compare` _ :: [Int]  =  GT
-id (id (id _)) :: Int `compare` x :: Int  =  GT
-id (id (id _)) :: Int `compare` 0 :: Int  =  GT
-id (id (id _)) :: Int `compare` id _ :: Int  =  GT
-id (id (id _)) :: Int `compare` _ :: Bool  =  GT
-id (id (id _)) :: Int `compare` _ :: Char  =  GT
-id (id (id _)) :: Int `compare` _ :: [Int]  =  GT
-id (negate _) :: Int `compare` x :: Int  =  GT
-id (negate _) :: Int `compare` 0 :: Int  =  GT
-id (negate _) :: Int `compare` id _ :: Int  =  GT
-id (negate _) :: Int `compare` _ :: Bool  =  GT
-id (negate _) :: Int `compare` _ :: Char  =  GT
-id (negate _) :: Int `compare` _ :: [Int]  =  GT
-id (abs _) :: Int `compare` x :: Int  =  GT
-id (abs _) :: Int `compare` 0 :: Int  =  GT
-id (abs _) :: Int `compare` id _ :: Int  =  GT
-id (abs _) :: Int `compare` _ :: Bool  =  GT
-id (abs _) :: Int `compare` _ :: Char  =  GT
-id (abs _) :: Int `compare` _ :: [Int]  =  GT
-id (_ + _) :: Int `compare` x :: Int  =  GT
-id (_ + _) :: Int `compare` 0 :: Int  =  GT
-id (_ + _) :: Int `compare` id _ :: Int  =  GT
-id (_ + _) :: Int `compare` _ :: Bool  =  GT
-id (_ + _) :: Int `compare` _ :: Char  =  GT
-id (_ + _) :: Int `compare` _ :: [Int]  =  GT
-id (head _) :: Int `compare` x :: Int  =  GT
-id (head _) :: Int `compare` 0 :: Int  =  GT
-id (head _) :: Int `compare` id _ :: Int  =  GT
-id (head _) :: Int `compare` _ :: Bool  =  GT
-id (head _) :: Int `compare` _ :: Char  =  GT
-id (head _) :: Int `compare` _ :: [Int]  =  GT
-id (ord _) :: Int `compare` x :: Int  =  GT
-id (ord _) :: Int `compare` 0 :: Int  =  GT
-id (ord _) :: Int `compare` id _ :: Int  =  GT
-id (ord _) :: Int `compare` _ :: Bool  =  GT
-id (ord _) :: Int `compare` _ :: Char  =  GT
-id (ord _) :: Int `compare` _ :: [Int]  =  GT
-negate x :: Int `compare` x :: Int  =  GT
-negate x :: Int `compare` 0 :: Int  =  GT
-negate x :: Int `compare` id _ :: Int  =  GT
-negate x :: Int `compare` _ :: Bool  =  GT
-negate x :: Int `compare` _ :: Char  =  GT
-negate x :: Int `compare` _ :: [Int]  =  GT
-negate 0 :: Int `compare` x :: Int  =  GT
-negate 0 :: Int `compare` 0 :: Int  =  GT
-negate 0 :: Int `compare` id _ :: Int  =  GT
-negate 0 :: Int `compare` _ :: Bool  =  GT
-negate 0 :: Int `compare` _ :: Char  =  GT
-negate 0 :: Int `compare` _ :: [Int]  =  GT
-negate (id _) :: Int `compare` x :: Int  =  GT
-negate (id _) :: Int `compare` 0 :: Int  =  GT
-negate (id _) :: Int `compare` id _ :: Int  =  GT
-negate (id _) :: Int `compare` _ :: Bool  =  GT
-negate (id _) :: Int `compare` _ :: Char  =  GT
-negate (id _) :: Int `compare` _ :: [Int]  =  GT
-abs x :: Int `compare` x :: Int  =  GT
-abs x :: Int `compare` 0 :: Int  =  GT
-abs x :: Int `compare` id _ :: Int  =  GT
-abs x :: Int `compare` _ :: Bool  =  GT
-abs x :: Int `compare` _ :: Char  =  GT
-abs x :: Int `compare` _ :: [Int]  =  GT
-abs 0 :: Int `compare` x :: Int  =  GT
-abs 0 :: Int `compare` 0 :: Int  =  GT
-abs 0 :: Int `compare` id _ :: Int  =  GT
-abs 0 :: Int `compare` _ :: Bool  =  GT
-abs 0 :: Int `compare` _ :: Char  =  GT
-abs 0 :: Int `compare` _ :: [Int]  =  GT
-abs (id _) :: Int `compare` x :: Int  =  GT
-abs (id _) :: Int `compare` 0 :: Int  =  GT
-abs (id _) :: Int `compare` id _ :: Int  =  GT
-abs (id _) :: Int `compare` _ :: Bool  =  GT
-abs (id _) :: Int `compare` _ :: Char  =  GT
-abs (id _) :: Int `compare` _ :: [Int]  =  GT
-_ + x :: Int `compare` x :: Int  =  GT
-_ + x :: Int `compare` 0 :: Int  =  GT
-_ + x :: Int `compare` id _ :: Int  =  GT
-_ + x :: Int `compare` _ :: Bool  =  GT
-_ + x :: Int `compare` _ :: Char  =  GT
-_ + x :: Int `compare` _ :: [Int]  =  GT
-_ + 0 :: Int `compare` x :: Int  =  GT
-_ + 0 :: Int `compare` 0 :: Int  =  GT
-_ + 0 :: Int `compare` id _ :: Int  =  GT
-_ + 0 :: Int `compare` _ :: Bool  =  GT
-_ + 0 :: Int `compare` _ :: Char  =  GT
-_ + 0 :: Int `compare` _ :: [Int]  =  GT
-_ + id _ :: Int `compare` x :: Int  =  GT
-_ + id _ :: Int `compare` 0 :: Int  =  GT
-_ + id _ :: Int `compare` id _ :: Int  =  GT
-_ + id _ :: Int `compare` _ :: Bool  =  GT
-_ + id _ :: Int `compare` _ :: Char  =  GT
-_ + id _ :: Int `compare` _ :: [Int]  =  GT
-x + _ :: Int `compare` x :: Int  =  GT
-x + _ :: Int `compare` 0 :: Int  =  GT
-x + _ :: Int `compare` id _ :: Int  =  GT
-x + _ :: Int `compare` _ :: Bool  =  GT
-x + _ :: Int `compare` _ :: Char  =  GT
-x + _ :: Int `compare` _ :: [Int]  =  GT
-0 + _ :: Int `compare` x :: Int  =  GT
-0 + _ :: Int `compare` 0 :: Int  =  GT
-0 + _ :: Int `compare` id _ :: Int  =  GT
-0 + _ :: Int `compare` _ :: Bool  =  GT
-0 + _ :: Int `compare` _ :: Char  =  GT
-0 + _ :: Int `compare` _ :: [Int]  =  GT
-id _ + _ :: Int `compare` x :: Int  =  GT
-id _ + _ :: Int `compare` 0 :: Int  =  GT
-id _ + _ :: Int `compare` id _ :: Int  =  GT
-id _ + _ :: Int `compare` _ :: Bool  =  GT
-id _ + _ :: Int `compare` _ :: Char  =  GT
-id _ + _ :: Int `compare` _ :: [Int]  =  GT
-_ * _ :: Int `compare` x :: Int  =  GT
-_ * _ :: Int `compare` 0 :: Int  =  GT
-_ * _ :: Int `compare` id _ :: Int  =  GT
-_ * _ :: Int `compare` _ :: Bool  =  GT
-_ * _ :: Int `compare` _ :: Char  =  GT
-_ * _ :: Int `compare` _ :: [Int]  =  GT
-f _ :: Int `compare` x :: Int  =  GT
-f _ :: Int `compare` 0 :: Int  =  GT
-f _ :: Int `compare` id _ :: Int  =  LT
-f _ :: Int `compare` _ :: Bool  =  GT
-f _ :: Int `compare` _ :: Char  =  GT
-f _ :: Int `compare` _ :: [Int]  =  GT
-head xs :: Int `compare` x :: Int  =  GT
-head xs :: Int `compare` 0 :: Int  =  GT
-head xs :: Int `compare` id _ :: Int  =  GT
-head xs :: Int `compare` _ :: Bool  =  GT
-head xs :: Int `compare` _ :: Char  =  GT
-head xs :: Int `compare` _ :: [Int]  =  GT
-head [] :: Int `compare` x :: Int  =  GT
-head [] :: Int `compare` 0 :: Int  =  GT
-head [] :: Int `compare` id _ :: Int  =  GT
-head [] :: Int `compare` _ :: Bool  =  GT
-head [] :: Int `compare` _ :: Char  =  GT
-head [] :: Int `compare` _ :: [Int]  =  GT
-head (_:_) :: Int `compare` x :: Int  =  GT
-head (_:_) :: Int `compare` 0 :: Int  =  GT
-head (_:_) :: Int `compare` id _ :: Int  =  GT
-head (_:_) :: Int `compare` _ :: Bool  =  GT
-head (_:_) :: Int `compare` _ :: Char  =  GT
-head (_:_) :: Int `compare` _ :: [Int]  =  GT
-ord c :: Int `compare` x :: Int  =  GT
-ord c :: Int `compare` 0 :: Int  =  GT
-ord c :: Int `compare` id _ :: Int  =  LT
-ord c :: Int `compare` _ :: Bool  =  GT
-ord c :: Int `compare` _ :: Char  =  GT
-ord c :: Int `compare` _ :: [Int]  =  GT
-ord 'a' :: Int `compare` x :: Int  =  GT
-ord 'a' :: Int `compare` 0 :: Int  =  GT
-ord 'a' :: Int `compare` id _ :: Int  =  GT
-ord 'a' :: Int `compare` _ :: Bool  =  GT
-ord 'a' :: Int `compare` _ :: Char  =  GT
-ord 'a' :: Int `compare` _ :: [Int]  =  GT
-q :: Bool `compare` x :: Int  =  LT
-q :: Bool `compare` 0 :: Int  =  LT
-q :: Bool `compare` id _ :: Int  =  LT
-q :: Bool `compare` _ :: Bool  =  GT
-q :: Bool `compare` _ :: Char  =  LT
-q :: Bool `compare` _ :: [Int]  =  LT
-not p :: Bool `compare` x :: Int  =  GT
-not p :: Bool `compare` 0 :: Int  =  GT
-not p :: Bool `compare` id _ :: Int  =  LT
-not p :: Bool `compare` _ :: Bool  =  GT
-not p :: Bool `compare` _ :: Char  =  GT
-not p :: Bool `compare` _ :: [Int]  =  GT
-not False :: Bool `compare` x :: Int  =  GT
-not False :: Bool `compare` 0 :: Int  =  GT
-not False :: Bool `compare` id _ :: Int  =  GT
-not False :: Bool `compare` _ :: Bool  =  GT
-not False :: Bool `compare` _ :: Char  =  GT
-not False :: Bool `compare` _ :: [Int]  =  GT
-not True :: Bool `compare` x :: Int  =  GT
-not True :: Bool `compare` 0 :: Int  =  GT
-not True :: Bool `compare` id _ :: Int  =  GT
-not True :: Bool `compare` _ :: Bool  =  GT
-not True :: Bool `compare` _ :: Char  =  GT
-not True :: Bool `compare` _ :: [Int]  =  GT
-not (not _) :: Bool `compare` x :: Int  =  GT
-not (not _) :: Bool `compare` 0 :: Int  =  GT
-not (not _) :: Bool `compare` id _ :: Int  =  GT
-not (not _) :: Bool `compare` _ :: Bool  =  GT
-not (not _) :: Bool `compare` _ :: Char  =  GT
-not (not _) :: Bool `compare` _ :: [Int]  =  GT
-_ || _ :: Bool `compare` x :: Int  =  GT
-_ || _ :: Bool `compare` 0 :: Int  =  GT
-_ || _ :: Bool `compare` id _ :: Int  =  GT
-_ || _ :: Bool `compare` _ :: Bool  =  GT
-_ || _ :: Bool `compare` _ :: Char  =  GT
-_ || _ :: Bool `compare` _ :: [Int]  =  GT
-d :: Char `compare` x :: Int  =  LT
-d :: Char `compare` 0 :: Int  =  LT
-d :: Char `compare` id _ :: Int  =  LT
-d :: Char `compare` _ :: Bool  =  GT
-d :: Char `compare` _ :: Char  =  GT
-d :: Char `compare` _ :: [Int]  =  LT
-' ' :: Char `compare` x :: Int  =  GT
-' ' :: Char `compare` 0 :: Int  =  LT
-' ' :: Char `compare` id _ :: Int  =  LT
-' ' :: Char `compare` _ :: Bool  =  GT
-' ' :: Char `compare` _ :: Char  =  GT
-' ' :: Char `compare` _ :: [Int]  =  GT
-ys :: [Int] `compare` x :: Int  =  GT
-ys :: [Int] `compare` 0 :: Int  =  LT
-ys :: [Int] `compare` id _ :: Int  =  LT
-ys :: [Int] `compare` _ :: Bool  =  GT
-ys :: [Int] `compare` _ :: Char  =  GT
-ys :: [Int] `compare` _ :: [Int]  =  GT
-[0] :: [Int] `compare` x :: Int  =  GT
-[0] :: [Int] `compare` 0 :: Int  =  GT
-[0] :: [Int] `compare` id _ :: Int  =  LT
-[0] :: [Int] `compare` _ :: Bool  =  GT
-[0] :: [Int] `compare` _ :: Char  =  GT
-[0] :: [Int] `compare` _ :: [Int]  =  GT
-_:xs :: [Int] `compare` x :: Int  =  GT
-_:xs :: [Int] `compare` 0 :: Int  =  GT
-_:xs :: [Int] `compare` id _ :: Int  =  GT
-_:xs :: [Int] `compare` _ :: Bool  =  GT
-_:xs :: [Int] `compare` _ :: Char  =  GT
-_:xs :: [Int] `compare` _ :: [Int]  =  GT
-[_] :: [Int] `compare` x :: Int  =  GT
-[_] :: [Int] `compare` 0 :: Int  =  GT
-[_] :: [Int] `compare` id _ :: Int  =  GT
-[_] :: [Int] `compare` _ :: Bool  =  GT
-[_] :: [Int] `compare` _ :: Char  =  GT
-[_] :: [Int] `compare` _ :: [Int]  =  GT
-_:_:_ :: [Int] `compare` x :: Int  =  GT
-_:_:_ :: [Int] `compare` 0 :: Int  =  GT
-_:_:_ :: [Int] `compare` id _ :: Int  =  GT
-_:_:_ :: [Int] `compare` _ :: Bool  =  GT
-_:_:_ :: [Int] `compare` _ :: Char  =  GT
-_:_:_ :: [Int] `compare` _ :: [Int]  =  GT
-x:_ :: [Int] `compare` x :: Int  =  GT
-x:_ :: [Int] `compare` 0 :: Int  =  GT
-x:_ :: [Int] `compare` id _ :: Int  =  GT
-x:_ :: [Int] `compare` _ :: Bool  =  GT
-x:_ :: [Int] `compare` _ :: Char  =  GT
-x:_ :: [Int] `compare` _ :: [Int]  =  GT
-0:_ :: [Int] `compare` x :: Int  =  GT
-0:_ :: [Int] `compare` 0 :: Int  =  GT
-0:_ :: [Int] `compare` id _ :: Int  =  GT
-0:_ :: [Int] `compare` _ :: Bool  =  GT
-0:_ :: [Int] `compare` _ :: Char  =  GT
-0:_ :: [Int] `compare` _ :: [Int]  =  GT
-id _:_ :: [Int] `compare` x :: Int  =  GT
-id _:_ :: [Int] `compare` 0 :: Int  =  GT
-id _:_ :: [Int] `compare` id _ :: Int  =  GT
-id _:_ :: [Int] `compare` _ :: Bool  =  GT
-id _:_ :: [Int] `compare` _ :: Char  =  GT
-id _:_ :: [Int] `compare` _ :: [Int]  =  GT
-tail _ :: [Int] `compare` x :: Int  =  GT
-tail _ :: [Int] `compare` 0 :: Int  =  GT
-tail _ :: [Int] `compare` id _ :: Int  =  GT
-tail _ :: [Int] `compare` _ :: Bool  =  GT
-tail _ :: [Int] `compare` _ :: Char  =  GT
-tail _ :: [Int] `compare` _ :: [Int]  =  GT
-_ ++ _ :: [Int] `compare` x :: Int  =  GT
-_ ++ _ :: [Int] `compare` 0 :: Int  =  GT
-_ ++ _ :: [Int] `compare` id _ :: Int  =  GT
-_ ++ _ :: [Int] `compare` _ :: Bool  =  GT
-_ ++ _ :: [Int] `compare` _ :: Char  =  GT
-_ ++ _ :: [Int] `compare` _ :: [Int]  =  GT
-negate :: Int -> Int `compare` x :: Int  =  GT
-negate :: Int -> Int `compare` 0 :: Int  =  GT
-negate :: Int -> Int `compare` id _ :: Int  =  LT
-negate :: Int -> Int `compare` _ :: Bool  =  GT
-negate :: Int -> Int `compare` _ :: Char  =  GT
-negate :: Int -> Int `compare` _ :: [Int]  =  GT
-abs :: Int -> Int `compare` x :: Int  =  GT
-abs :: Int -> Int `compare` 0 :: Int  =  GT
-abs :: Int -> Int `compare` id _ :: Int  =  LT
-abs :: Int -> Int `compare` _ :: Bool  =  GT
-abs :: Int -> Int `compare` _ :: Char  =  GT
-abs :: Int -> Int `compare` _ :: [Int]  =  GT
-(_ +) :: Int -> Int `compare` x :: Int  =  GT
-(_ +) :: Int -> Int `compare` 0 :: Int  =  GT
-(_ +) :: Int -> Int `compare` id _ :: Int  =  GT
-(_ +) :: Int -> Int `compare` _ :: Bool  =  GT
-(_ +) :: Int -> Int `compare` _ :: Char  =  GT
-(_ +) :: Int -> Int `compare` _ :: [Int]  =  GT
-(*) :: Int -> Int -> Int `compare` x :: Int  =  GT
-(*) :: Int -> Int -> Int `compare` 0 :: Int  =  GT
-(*) :: Int -> Int -> Int `compare` id _ :: Int  =  LT
-(*) :: Int -> Int -> Int `compare` _ :: Bool  =  GT
-(*) :: Int -> Int -> Int `compare` _ :: Char  =  GT
-(*) :: Int -> Int -> Int `compare` _ :: [Int]  =  GT
-not :: Bool -> Bool `compare` x :: Int  =  GT
-not :: Bool -> Bool `compare` 0 :: Int  =  GT
-not :: Bool -> Bool `compare` id _ :: Int  =  LT
-not :: Bool -> Bool `compare` _ :: Bool  =  GT
-not :: Bool -> Bool `compare` _ :: Char  =  GT
-not :: Bool -> Bool `compare` _ :: [Int]  =  GT
-(||) :: Bool -> Bool -> Bool `compare` x :: Int  =  GT
-(||) :: Bool -> Bool -> Bool `compare` 0 :: Int  =  GT
-(||) :: Bool -> Bool -> Bool `compare` id _ :: Int  =  LT
-(||) :: Bool -> Bool -> Bool `compare` _ :: Bool  =  GT
-(||) :: Bool -> Bool -> Bool `compare` _ :: Char  =  GT
-(||) :: Bool -> Bool -> Bool `compare` _ :: [Int]  =  GT
-x' :: Int `compare` _ :: Int  =  GT
-2 :: Int `compare` _ :: Int  =  GT
-id z :: Int `compare` _ :: Int  =  GT
-id (-1) :: Int `compare` _ :: Int  =  GT
-id (id y) :: Int `compare` _ :: Int  =  GT
-id (id 1) :: Int `compare` _ :: Int  =  GT
-id (id (id x)) :: Int `compare` _ :: Int  =  GT
-id (id (id 0)) :: Int `compare` _ :: Int  =  GT
-id (id (id (id _))) :: Int `compare` _ :: Int  =  GT
-id (id (negate _)) :: Int `compare` _ :: Int  =  GT
-id (id (abs _)) :: Int `compare` _ :: Int  =  GT
-id (id (_ + _)) :: Int `compare` _ :: Int  =  GT
-id (id (head _)) :: Int `compare` _ :: Int  =  GT
-id (id (ord _)) :: Int `compare` _ :: Int  =  GT
-id (negate x) :: Int `compare` _ :: Int  =  GT
-id (negate 0) :: Int `compare` _ :: Int  =  GT
-id (negate (id _)) :: Int `compare` _ :: Int  =  GT
-id (abs x) :: Int `compare` _ :: Int  =  GT
-id (abs 0) :: Int `compare` _ :: Int  =  GT
-id (abs (id _)) :: Int `compare` _ :: Int  =  GT
-id (_ + x) :: Int `compare` _ :: Int  =  GT
-id (_ + 0) :: Int `compare` _ :: Int  =  GT
-id (_ + id _) :: Int `compare` _ :: Int  =  GT
-id (x + _) :: Int `compare` _ :: Int  =  GT
-id (0 + _) :: Int `compare` _ :: Int  =  GT
-id (id _ + _) :: Int `compare` _ :: Int  =  GT
-id (_ * _) :: Int `compare` _ :: Int  =  GT
-id (f _) :: Int `compare` _ :: Int  =  GT
-id (head xs) :: Int `compare` _ :: Int  =  GT
-id (head []) :: Int `compare` _ :: Int  =  GT
-id (head (_:_)) :: Int `compare` _ :: Int  =  GT
-id (ord c) :: Int `compare` _ :: Int  =  GT
-id (ord 'a') :: Int `compare` _ :: Int  =  GT
-negate y :: Int `compare` _ :: Int  =  GT
-negate 1 :: Int `compare` _ :: Int  =  GT
-negate (id x) :: Int `compare` _ :: Int  =  GT
-negate (id 0) :: Int `compare` _ :: Int  =  GT
-negate (id (id _)) :: Int `compare` _ :: Int  =  GT
-negate (negate _) :: Int `compare` _ :: Int  =  GT
-negate (abs _) :: Int `compare` _ :: Int  =  GT
-negate (_ + _) :: Int `compare` _ :: Int  =  GT
-negate (head _) :: Int `compare` _ :: Int  =  GT
-negate (ord _) :: Int `compare` _ :: Int  =  GT
-abs y :: Int `compare` _ :: Int  =  GT
-abs 1 :: Int `compare` _ :: Int  =  GT
-abs (id x) :: Int `compare` _ :: Int  =  GT
-abs (id 0) :: Int `compare` _ :: Int  =  GT
-abs (id (id _)) :: Int `compare` _ :: Int  =  GT
-abs (negate _) :: Int `compare` _ :: Int  =  GT
-abs (abs _) :: Int `compare` _ :: Int  =  GT
-abs (_ + _) :: Int `compare` _ :: Int  =  GT
-abs (head _) :: Int `compare` _ :: Int  =  GT
-abs (ord _) :: Int `compare` _ :: Int  =  GT
-_ + y :: Int `compare` _ :: Int  =  GT
-_ + 1 :: Int `compare` _ :: Int  =  GT
-_ + id x :: Int `compare` _ :: Int  =  GT
-_ + id 0 :: Int `compare` _ :: Int  =  GT
-_ + id (id _) :: Int `compare` _ :: Int  =  GT
-_ + negate _ :: Int `compare` _ :: Int  =  GT
-_ + abs _ :: Int `compare` _ :: Int  =  GT
-_ + (_ + _) :: Int `compare` _ :: Int  =  GT
-_ + head _ :: Int `compare` _ :: Int  =  GT
-_ + ord _ :: Int `compare` _ :: Int  =  GT
-x + x :: Int `compare` _ :: Int  =  GT
-x + 0 :: Int `compare` _ :: Int  =  GT
-x + id _ :: Int `compare` _ :: Int  =  GT
-0 + x :: Int `compare` _ :: Int  =  GT
-0 + 0 :: Int `compare` _ :: Int  =  GT
-0 + id _ :: Int `compare` _ :: Int  =  GT
-id _ + x :: Int `compare` _ :: Int  =  GT
-id _ + 0 :: Int `compare` _ :: Int  =  GT
-id _ + id _ :: Int `compare` _ :: Int  =  GT
-_ * x :: Int `compare` _ :: Int  =  GT
-_ * 0 :: Int `compare` _ :: Int  =  GT
-_ * id _ :: Int `compare` _ :: Int  =  GT
-f x :: Int `compare` _ :: Int  =  GT
-f 0 :: Int `compare` _ :: Int  =  GT
-f (id _) :: Int `compare` _ :: Int  =  GT
-y + _ :: Int `compare` _ :: Int  =  GT
-1 + _ :: Int `compare` _ :: Int  =  GT
-id x + _ :: Int `compare` _ :: Int  =  GT
-id 0 + _ :: Int `compare` _ :: Int  =  GT
-id (id _) + _ :: Int `compare` _ :: Int  =  GT
-negate _ + _ :: Int `compare` _ :: Int  =  GT
-abs _ + _ :: Int `compare` _ :: Int  =  GT
-(_ + _) + _ :: Int `compare` _ :: Int  =  GT
-head _ + _ :: Int `compare` _ :: Int  =  GT
-ord _ + _ :: Int `compare` _ :: Int  =  GT
-x * _ :: Int `compare` _ :: Int  =  GT
-0 * _ :: Int `compare` _ :: Int  =  GT
-id _ * _ :: Int `compare` _ :: Int  =  GT
-g _ :: Int `compare` _ :: Int  =  GT
-head ys :: Int `compare` _ :: Int  =  GT
-head [0] :: Int `compare` _ :: Int  =  GT
-head (_:xs) :: Int `compare` _ :: Int  =  GT
-head [_] :: Int `compare` _ :: Int  =  GT
-head (_:_:_) :: Int `compare` _ :: Int  =  GT
-head (x:_) :: Int `compare` _ :: Int  =  GT
-head (0:_) :: Int `compare` _ :: Int  =  GT
-head (id _:_) :: Int `compare` _ :: Int  =  GT
-head (tail _) :: Int `compare` _ :: Int  =  GT
-head (_ ++ _) :: Int `compare` _ :: Int  =  GT
-ord d :: Int `compare` _ :: Int  =  GT
-ord ' ' :: Int `compare` _ :: Int  =  GT
-r :: Bool `compare` _ :: Int  =  LT
-not q :: Bool `compare` _ :: Int  =  GT
-not (not p) :: Bool `compare` _ :: Int  =  GT
-not (not False) :: Bool `compare` _ :: Int  =  GT
-not (not True) :: Bool `compare` _ :: Int  =  GT
-not (not (not _)) :: Bool `compare` _ :: Int  =  GT
-not (_ || _) :: Bool `compare` _ :: Int  =  GT
-_ || p :: Bool `compare` _ :: Int  =  GT
-_ || False :: Bool `compare` _ :: Int  =  GT
-_ || True :: Bool `compare` _ :: Int  =  GT
-_ || not _ :: Bool `compare` _ :: Int  =  GT
-p || _ :: Bool `compare` _ :: Int  =  GT
-False || _ :: Bool `compare` _ :: Int  =  GT
-True || _ :: Bool `compare` _ :: Int  =  GT
-not _ || _ :: Bool `compare` _ :: Int  =  GT
-_ && _ :: Bool `compare` _ :: Int  =  GT
-_ == _ :: Bool `compare` _ :: Int  =  GT
-_ == _ :: Bool `compare` _ :: Int  =  GT
-odd _ :: Bool `compare` _ :: Int  =  GT
-even _ :: Bool `compare` _ :: Int  =  GT
-elem _ _ :: Bool `compare` _ :: Int  =  GT
-e :: Char `compare` _ :: Int  =  LT
-'b' :: Char `compare` _ :: Int  =  GT
-zs :: [Int] `compare` _ :: Int  =  GT
-[0,0] :: [Int] `compare` _ :: Int  =  GT
-[1] :: [Int] `compare` _ :: Int  =  GT
-_:ys :: [Int] `compare` _ :: Int  =  GT
-[_,0] :: [Int] `compare` _ :: Int  =  GT
-_:_:xs :: [Int] `compare` _ :: Int  =  GT
-[_,_] :: [Int] `compare` _ :: Int  =  GT
-_:_:_:_ :: [Int] `compare` _ :: Int  =  GT
-_:x:_ :: [Int] `compare` _ :: Int  =  GT
-_:0:_ :: [Int] `compare` _ :: Int  =  GT
-_:id _:_ :: [Int] `compare` _ :: Int  =  GT
-_:tail _ :: [Int] `compare` _ :: Int  =  GT
-_:(_ ++ _) :: [Int] `compare` _ :: Int  =  GT
-x:xs :: [Int] `compare` _ :: Int  =  GT
-[x] :: [Int] `compare` _ :: Int  =  GT
-x:_:_ :: [Int] `compare` _ :: Int  =  GT
-0:xs :: [Int] `compare` _ :: Int  =  GT
-[0] :: [Int] `compare` _ :: Int  =  GT
-0:_:_ :: [Int] `compare` _ :: Int  =  GT
-id _:xs :: [Int] `compare` _ :: Int  =  GT
-[id _] :: [Int] `compare` _ :: Int  =  GT
-id _:_:_ :: [Int] `compare` _ :: Int  =  GT
-y:_ :: [Int] `compare` _ :: Int  =  GT
-1:_ :: [Int] `compare` _ :: Int  =  GT
-id x:_ :: [Int] `compare` _ :: Int  =  GT
-id 0:_ :: [Int] `compare` _ :: Int  =  GT
-id (id _):_ :: [Int] `compare` _ :: Int  =  GT
-negate _:_ :: [Int] `compare` _ :: Int  =  GT
-abs _:_ :: [Int] `compare` _ :: Int  =  GT
-_ + _:_ :: [Int] `compare` _ :: Int  =  GT
-head _:_ :: [Int] `compare` _ :: Int  =  GT
-ord _:_ :: [Int] `compare` _ :: Int  =  GT
-tail xs :: [Int] `compare` _ :: Int  =  GT
-tail [] :: [Int] `compare` _ :: Int  =  GT
-tail (_:_) :: [Int] `compare` _ :: Int  =  GT
-_ ++ xs :: [Int] `compare` _ :: Int  =  GT
-_ ++ [] :: [Int] `compare` _ :: Int  =  GT
-_ ++ (_:_) :: [Int] `compare` _ :: Int  =  GT
-xs ++ _ :: [Int] `compare` _ :: Int  =  GT
-[] ++ _ :: [Int] `compare` _ :: Int  =  GT
-(_:_) ++ _ :: [Int] `compare` _ :: Int  =  GT
-sort _ :: [Int] `compare` _ :: Int  =  GT
-insert _ _ :: [Int] `compare` _ :: Int  =  GT
-(x +) :: Int -> Int `compare` _ :: Int  =  GT
-(0 +) :: Int -> Int `compare` _ :: Int  =  GT
-(id _ +) :: Int -> Int `compare` _ :: Int  =  GT
-(_ *) :: Int -> Int `compare` _ :: Int  =  GT
-f :: Int -> Int `compare` _ :: Int  =  GT
-(_ ||) :: Bool -> Bool `compare` _ :: Int  =  GT
-(&&) :: Bool -> Bool -> Bool `compare` _ :: Int  =  GT
-_ :: Int `compare` y' :: Int  =  LT
-_ :: Int `compare` -2 :: Int  =  LT
-_ :: Int `compare` id x' :: Int  =  LT
-_ :: Int `compare` id 2 :: Int  =  LT
-_ :: Int `compare` id (id z) :: Int  =  LT
-_ :: Int `compare` id (id (-1)) :: Int  =  LT
-_ :: Int `compare` id (id (id y)) :: Int  =  LT
-_ :: Int `compare` id (id (id 1)) :: Int  =  LT
-_ :: Int `compare` id (id (id (id x))) :: Int  =  LT
-_ :: Int `compare` id (id (id (id 0))) :: Int  =  LT
-_ :: Int `compare` id (id (id (id (id _)))) :: Int  =  LT
-_ :: Int `compare` id (id (id (negate _))) :: Int  =  LT
-_ :: Int `compare` id (id (id (abs _))) :: Int  =  LT
-_ :: Int `compare` id (id (id (_ + _))) :: Int  =  LT
-_ :: Int `compare` id (id (id (head _))) :: Int  =  LT
-_ :: Int `compare` id (id (id (ord _))) :: Int  =  LT
-_ :: Int `compare` id (id (negate x)) :: Int  =  LT
-_ :: Int `compare` id (id (negate 0)) :: Int  =  LT
-_ :: Int `compare` id (id (negate (id _))) :: Int  =  LT
-_ :: Int `compare` id (id (abs x)) :: Int  =  LT
-_ :: Int `compare` id (id (abs 0)) :: Int  =  LT
-_ :: Int `compare` id (id (abs (id _))) :: Int  =  LT
-_ :: Int `compare` id (id (_ + x)) :: Int  =  LT
-_ :: Int `compare` id (id (_ + 0)) :: Int  =  LT
-_ :: Int `compare` id (id (_ + id _)) :: Int  =  LT
-_ :: Int `compare` id (id (x + _)) :: Int  =  LT
-_ :: Int `compare` id (id (0 + _)) :: Int  =  LT
-_ :: Int `compare` id (id (id _ + _)) :: Int  =  LT
-_ :: Int `compare` id (id (_ * _)) :: Int  =  LT
-_ :: Int `compare` id (id (f _)) :: Int  =  LT
-_ :: Int `compare` id (id (head xs)) :: Int  =  LT
-_ :: Int `compare` id (id (head [])) :: Int  =  LT
-_ :: Int `compare` id (id (head (_:_))) :: Int  =  LT
-_ :: Int `compare` id (id (ord c)) :: Int  =  LT
-_ :: Int `compare` id (id (ord 'a')) :: Int  =  LT
-_ :: Int `compare` id (negate y) :: Int  =  LT
-_ :: Int `compare` id (negate 1) :: Int  =  LT
-_ :: Int `compare` id (negate (id x)) :: Int  =  LT
-_ :: Int `compare` id (negate (id 0)) :: Int  =  LT
-_ :: Int `compare` id (negate (id (id _))) :: Int  =  LT
-_ :: Int `compare` id (negate (negate _)) :: Int  =  LT
-_ :: Int `compare` id (negate (abs _)) :: Int  =  LT
-_ :: Int `compare` id (negate (_ + _)) :: Int  =  LT
-_ :: Int `compare` id (negate (head _)) :: Int  =  LT
-_ :: Int `compare` id (negate (ord _)) :: Int  =  LT
-_ :: Int `compare` id (abs y) :: Int  =  LT
-_ :: Int `compare` id (abs 1) :: Int  =  LT
-_ :: Int `compare` id (abs (id x)) :: Int  =  LT
-_ :: Int `compare` id (abs (id 0)) :: Int  =  LT
-_ :: Int `compare` id (abs (id (id _))) :: Int  =  LT
-_ :: Int `compare` id (abs (negate _)) :: Int  =  LT
-_ :: Int `compare` id (abs (abs _)) :: Int  =  LT
-_ :: Int `compare` id (abs (_ + _)) :: Int  =  LT
-_ :: Int `compare` id (abs (head _)) :: Int  =  LT
-_ :: Int `compare` id (abs (ord _)) :: Int  =  LT
-_ :: Int `compare` id (_ + y) :: Int  =  LT
-_ :: Int `compare` id (_ + 1) :: Int  =  LT
-_ :: Int `compare` id (_ + id x) :: Int  =  LT
-_ :: Int `compare` id (_ + id 0) :: Int  =  LT
-_ :: Int `compare` id (_ + id (id _)) :: Int  =  LT
-_ :: Int `compare` id (_ + negate _) :: Int  =  LT
-_ :: Int `compare` id (_ + abs _) :: Int  =  LT
-_ :: Int `compare` id (_ + (_ + _)) :: Int  =  LT
-_ :: Int `compare` id (_ + head _) :: Int  =  LT
-_ :: Int `compare` id (_ + ord _) :: Int  =  LT
-_ :: Int `compare` id (x + x) :: Int  =  LT
-_ :: Int `compare` id (x + 0) :: Int  =  LT
-_ :: Int `compare` id (x + id _) :: Int  =  LT
-_ :: Int `compare` id (0 + x) :: Int  =  LT
-_ :: Int `compare` id (0 + 0) :: Int  =  LT
-_ :: Int `compare` id (0 + id _) :: Int  =  LT
-_ :: Int `compare` id (id _ + x) :: Int  =  LT
-_ :: Int `compare` id (id _ + 0) :: Int  =  LT
-_ :: Int `compare` id (id _ + id _) :: Int  =  LT
-_ :: Int `compare` id (_ * x) :: Int  =  LT
-_ :: Int `compare` id (_ * 0) :: Int  =  LT
-_ :: Int `compare` id (_ * id _) :: Int  =  LT
-_ :: Int `compare` id (f x) :: Int  =  LT
-_ :: Int `compare` id (f 0) :: Int  =  LT
-_ :: Int `compare` id (f (id _)) :: Int  =  LT
-_ :: Int `compare` id (y + _) :: Int  =  LT
-_ :: Int `compare` id (1 + _) :: Int  =  LT
-_ :: Int `compare` id (id x + _) :: Int  =  LT
-_ :: Int `compare` id (id 0 + _) :: Int  =  LT
-_ :: Int `compare` id (id (id _) + _) :: Int  =  LT
-_ :: Int `compare` id (negate _ + _) :: Int  =  LT
-_ :: Int `compare` id (abs _ + _) :: Int  =  LT
-_ :: Int `compare` id ((_ + _) + _) :: Int  =  LT
-_ :: Int `compare` id (head _ + _) :: Int  =  LT
-_ :: Int `compare` id (ord _ + _) :: Int  =  LT
-_ :: Int `compare` id (x * _) :: Int  =  LT
-_ :: Int `compare` id (0 * _) :: Int  =  LT
-_ :: Int `compare` id (id _ * _) :: Int  =  LT
-_ :: Int `compare` id (g _) :: Int  =  LT
-_ :: Int `compare` id (head ys) :: Int  =  LT
-_ :: Int `compare` id (head [0]) :: Int  =  LT
-_ :: Int `compare` id (head (_:xs)) :: Int  =  LT
-_ :: Int `compare` id (head [_]) :: Int  =  LT
-_ :: Int `compare` id (head (_:_:_)) :: Int  =  LT
-_ :: Int `compare` id (head (x:_)) :: Int  =  LT
-_ :: Int `compare` id (head (0:_)) :: Int  =  LT
-_ :: Int `compare` id (head (id _:_)) :: Int  =  LT
-_ :: Int `compare` id (head (tail _)) :: Int  =  LT
-_ :: Int `compare` id (head (_ ++ _)) :: Int  =  LT
-_ :: Int `compare` id (ord d) :: Int  =  LT
-_ :: Int `compare` id (ord ' ') :: Int  =  LT
-_ :: Int `compare` negate z :: Int  =  LT
-_ :: Int `compare` negate (-1) :: Int  =  LT
-_ :: Int `compare` negate (id y) :: Int  =  LT
-_ :: Int `compare` negate (id 1) :: Int  =  LT
-_ :: Int `compare` negate (id (id x)) :: Int  =  LT
-_ :: Int `compare` negate (id (id 0)) :: Int  =  LT
-_ :: Int `compare` negate (id (id (id _))) :: Int  =  LT
-_ :: Int `compare` negate (id (negate _)) :: Int  =  LT
-_ :: Int `compare` negate (id (abs _)) :: Int  =  LT
-_ :: Int `compare` negate (id (_ + _)) :: Int  =  LT
-_ :: Int `compare` negate (id (head _)) :: Int  =  LT
-_ :: Int `compare` negate (id (ord _)) :: Int  =  LT
-_ :: Int `compare` negate (negate x) :: Int  =  LT
-_ :: Int `compare` negate (negate 0) :: Int  =  LT
-_ :: Int `compare` negate (negate (id _)) :: Int  =  LT
-_ :: Int `compare` negate (abs x) :: Int  =  LT
-_ :: Int `compare` negate (abs 0) :: Int  =  LT
-_ :: Int `compare` negate (abs (id _)) :: Int  =  LT
-_ :: Int `compare` negate (_ + x) :: Int  =  LT
-_ :: Int `compare` negate (_ + 0) :: Int  =  LT
-_ :: Int `compare` negate (_ + id _) :: Int  =  LT
-_ :: Int `compare` negate (x + _) :: Int  =  LT
-_ :: Int `compare` negate (0 + _) :: Int  =  LT
-_ :: Int `compare` negate (id _ + _) :: Int  =  LT
-_ :: Int `compare` negate (_ * _) :: Int  =  LT
-_ :: Int `compare` negate (f _) :: Int  =  LT
-_ :: Int `compare` negate (head xs) :: Int  =  LT
-_ :: Int `compare` negate (head []) :: Int  =  LT
-_ :: Int `compare` negate (head (_:_)) :: Int  =  LT
-_ :: Int `compare` negate (ord c) :: Int  =  LT
-_ :: Int `compare` negate (ord 'a') :: Int  =  LT
-_ :: Int `compare` abs z :: Int  =  LT
-_ :: Int `compare` abs (-1) :: Int  =  LT
-_ :: Int `compare` abs (id y) :: Int  =  LT
-_ :: Int `compare` abs (id 1) :: Int  =  LT
-_ :: Int `compare` abs (id (id x)) :: Int  =  LT
-_ :: Int `compare` abs (id (id 0)) :: Int  =  LT
-_ :: Int `compare` abs (id (id (id _))) :: Int  =  LT
-_ :: Int `compare` abs (id (negate _)) :: Int  =  LT
-_ :: Int `compare` abs (id (abs _)) :: Int  =  LT
-_ :: Int `compare` abs (id (_ + _)) :: Int  =  LT
-_ :: Int `compare` abs (id (head _)) :: Int  =  LT
-_ :: Int `compare` abs (id (ord _)) :: Int  =  LT
-_ :: Int `compare` abs (negate x) :: Int  =  LT
-_ :: Int `compare` abs (negate 0) :: Int  =  LT
-_ :: Int `compare` abs (negate (id _)) :: Int  =  LT
-_ :: Int `compare` abs (abs x) :: Int  =  LT
-_ :: Int `compare` abs (abs 0) :: Int  =  LT
-_ :: Int `compare` abs (abs (id _)) :: Int  =  LT
-_ :: Int `compare` abs (_ + x) :: Int  =  LT
-_ :: Int `compare` abs (_ + 0) :: Int  =  LT
-_ :: Int `compare` abs (_ + id _) :: Int  =  LT
-_ :: Int `compare` abs (x + _) :: Int  =  LT
-_ :: Int `compare` abs (0 + _) :: Int  =  LT
-_ :: Int `compare` abs (id _ + _) :: Int  =  LT
-_ :: Int `compare` abs (_ * _) :: Int  =  LT
-_ :: Int `compare` abs (f _) :: Int  =  LT
-_ :: Int `compare` abs (head xs) :: Int  =  LT
-_ :: Int `compare` abs (head []) :: Int  =  LT
-_ :: Int `compare` abs (head (_:_)) :: Int  =  LT
-_ :: Int `compare` abs (ord c) :: Int  =  LT
-_ :: Int `compare` abs (ord 'a') :: Int  =  LT
-_ :: Int `compare` _ + z :: Int  =  LT
-_ :: Int `compare` _ + (-1) :: Int  =  LT
-_ :: Int `compare` _ + id y :: Int  =  LT
-_ :: Int `compare` _ + id 1 :: Int  =  LT
-_ :: Int `compare` _ + id (id x) :: Int  =  LT
-_ :: Int `compare` _ + id (id 0) :: Int  =  LT
-_ :: Int `compare` _ + id (id (id _)) :: Int  =  LT
-_ :: Int `compare` _ + id (negate _) :: Int  =  LT
-_ :: Int `compare` _ + id (abs _) :: Int  =  LT
-_ :: Int `compare` _ + id (_ + _) :: Int  =  LT
-_ :: Int `compare` _ + id (head _) :: Int  =  LT
-_ :: Int `compare` _ + id (ord _) :: Int  =  LT
-_ :: Int `compare` _ + negate x :: Int  =  LT
-_ :: Int `compare` _ + negate 0 :: Int  =  LT
-_ :: Int `compare` _ + negate (id _) :: Int  =  LT
-_ :: Int `compare` _ + abs x :: Int  =  LT
-_ :: Int `compare` _ + abs 0 :: Int  =  LT
-_ :: Int `compare` _ + abs (id _) :: Int  =  LT
-_ :: Int `compare` _ + (_ + x) :: Int  =  LT
-_ :: Int `compare` _ + (_ + 0) :: Int  =  LT
-_ :: Int `compare` _ + (_ + id _) :: Int  =  LT
-_ :: Int `compare` _ + (x + _) :: Int  =  LT
-_ :: Int `compare` _ + (0 + _) :: Int  =  LT
-_ :: Int `compare` _ + (id _ + _) :: Int  =  LT
-_ :: Int `compare` _ + _ * _ :: Int  =  LT
-_ :: Int `compare` _ + f _ :: Int  =  LT
-_ :: Int `compare` _ + head xs :: Int  =  LT
-_ :: Int `compare` _ + head [] :: Int  =  LT
-_ :: Int `compare` _ + head (_:_) :: Int  =  LT
-_ :: Int `compare` _ + ord c :: Int  =  LT
-_ :: Int `compare` _ + ord 'a' :: Int  =  LT
-_ :: Int `compare` x + y :: Int  =  LT
-_ :: Int `compare` x + 1 :: Int  =  LT
-_ :: Int `compare` x + id x :: Int  =  LT
-_ :: Int `compare` x + id 0 :: Int  =  LT
-_ :: Int `compare` x + id (id _) :: Int  =  LT
-_ :: Int `compare` x + negate _ :: Int  =  LT
-_ :: Int `compare` x + abs _ :: Int  =  LT
-_ :: Int `compare` x + (_ + _) :: Int  =  LT
-_ :: Int `compare` x + head _ :: Int  =  LT
-_ :: Int `compare` x + ord _ :: Int  =  LT
-_ :: Int `compare` 0 + y :: Int  =  LT
-_ :: Int `compare` 0 + 1 :: Int  =  LT
-_ :: Int `compare` 0 + id x :: Int  =  LT
-_ :: Int `compare` 0 + id 0 :: Int  =  LT
-_ :: Int `compare` 0 + id (id _) :: Int  =  LT
-_ :: Int `compare` 0 + negate _ :: Int  =  LT
-_ :: Int `compare` 0 + abs _ :: Int  =  LT
-_ :: Int `compare` 0 + (_ + _) :: Int  =  LT
-_ :: Int `compare` 0 + head _ :: Int  =  LT
-_ :: Int `compare` 0 + ord _ :: Int  =  LT
-_ :: Int `compare` id _ + y :: Int  =  LT
-_ :: Int `compare` id _ + 1 :: Int  =  LT
-_ :: Int `compare` id _ + id x :: Int  =  LT
-_ :: Int `compare` id _ + id 0 :: Int  =  LT
-_ :: Int `compare` id _ + id (id _) :: Int  =  LT
-_ :: Int `compare` id _ + negate _ :: Int  =  LT
-_ :: Int `compare` id _ + abs _ :: Int  =  LT
-_ :: Int `compare` id _ + (_ + _) :: Int  =  LT
-_ :: Int `compare` id _ + head _ :: Int  =  LT
-_ :: Int `compare` id _ + ord _ :: Int  =  LT
-_ :: Int `compare` _ * y :: Int  =  LT
-_ :: Int `compare` _ * 1 :: Int  =  LT
-_ :: Int `compare` _ * id x :: Int  =  LT
-_ :: Int `compare` _ * id 0 :: Int  =  LT
-_ :: Int `compare` _ * id (id _) :: Int  =  LT
-_ :: Int `compare` _ * negate _ :: Int  =  LT
-_ :: Int `compare` _ * abs _ :: Int  =  LT
-_ :: Int `compare` _ * (_ + _) :: Int  =  LT
-_ :: Int `compare` _ * head _ :: Int  =  LT
-_ :: Int `compare` _ * ord _ :: Int  =  LT
-_ :: Int `compare` f y :: Int  =  LT
-_ :: Int `compare` f 1 :: Int  =  LT
-_ :: Int `compare` f (id x) :: Int  =  LT
-_ :: Int `compare` f (id 0) :: Int  =  LT
-_ :: Int `compare` f (id (id _)) :: Int  =  LT
-_ :: Int `compare` f (negate _) :: Int  =  LT
-_ :: Int `compare` f (abs _) :: Int  =  LT
-_ :: Int `compare` f (_ + _) :: Int  =  LT
-_ :: Int `compare` f (head _) :: Int  =  LT
-_ :: Int `compare` f (ord _) :: Int  =  LT
-_ :: Int `compare` y + x :: Int  =  LT
-_ :: Int `compare` y + 0 :: Int  =  LT
-_ :: Int `compare` y + id _ :: Int  =  LT
-_ :: Int `compare` 1 + x :: Int  =  LT
-_ :: Int `compare` 1 + 0 :: Int  =  LT
-_ :: Int `compare` 1 + id _ :: Int  =  LT
-_ :: Int `compare` id x + x :: Int  =  LT
-_ :: Int `compare` id x + 0 :: Int  =  LT
-_ :: Int `compare` id x + id _ :: Int  =  LT
-_ :: Int `compare` id 0 + x :: Int  =  LT
-_ :: Int `compare` id 0 + 0 :: Int  =  LT
-_ :: Int `compare` id 0 + id _ :: Int  =  LT
-_ :: Int `compare` id (id _) + x :: Int  =  LT
-_ :: Int `compare` id (id _) + 0 :: Int  =  LT
-_ :: Int `compare` id (id _) + id _ :: Int  =  LT
-_ :: Int `compare` negate _ + x :: Int  =  LT
-_ :: Int `compare` negate _ + 0 :: Int  =  LT
-_ :: Int `compare` negate _ + id _ :: Int  =  LT
-_ :: Int `compare` abs _ + x :: Int  =  LT
-_ :: Int `compare` abs _ + 0 :: Int  =  LT
-_ :: Int `compare` abs _ + id _ :: Int  =  LT
-_ :: Int `compare` (_ + _) + x :: Int  =  LT
-_ :: Int `compare` (_ + _) + 0 :: Int  =  LT
-_ :: Int `compare` (_ + _) + id _ :: Int  =  LT
-_ :: Int `compare` head _ + x :: Int  =  LT
-_ :: Int `compare` head _ + 0 :: Int  =  LT
-_ :: Int `compare` head _ + id _ :: Int  =  LT
-_ :: Int `compare` ord _ + x :: Int  =  LT
-_ :: Int `compare` ord _ + 0 :: Int  =  LT
-_ :: Int `compare` ord _ + id _ :: Int  =  LT
-_ :: Int `compare` x * x :: Int  =  LT
-_ :: Int `compare` x * 0 :: Int  =  LT
-_ :: Int `compare` x * id _ :: Int  =  LT
-_ :: Int `compare` 0 * x :: Int  =  LT
-_ :: Int `compare` 0 * 0 :: Int  =  LT
-_ :: Int `compare` 0 * id _ :: Int  =  LT
-_ :: Int `compare` id _ * x :: Int  =  LT
-_ :: Int `compare` id _ * 0 :: Int  =  LT
-_ :: Int `compare` id _ * id _ :: Int  =  LT
-_ :: Int `compare` g x :: Int  =  LT
-_ :: Int `compare` g 0 :: Int  =  LT
-_ :: Int `compare` g (id _) :: Int  =  LT
-_ :: Int `compare` z + _ :: Int  =  LT
-_ :: Int `compare` (-1) + _ :: Int  =  LT
-_ :: Int `compare` id y + _ :: Int  =  LT
-_ :: Int `compare` id 1 + _ :: Int  =  LT
-_ :: Int `compare` id (id x) + _ :: Int  =  LT
-_ :: Int `compare` id (id 0) + _ :: Int  =  LT
-_ :: Int `compare` id (id (id _)) + _ :: Int  =  LT
-_ :: Int `compare` id (negate _) + _ :: Int  =  LT
-_ :: Int `compare` id (abs _) + _ :: Int  =  LT
-_ :: Int `compare` id (_ + _) + _ :: Int  =  LT
-_ :: Int `compare` id (head _) + _ :: Int  =  LT
-_ :: Int `compare` id (ord _) + _ :: Int  =  LT
-_ :: Int `compare` negate x + _ :: Int  =  LT
-_ :: Int `compare` negate 0 + _ :: Int  =  LT
-_ :: Int `compare` negate (id _) + _ :: Int  =  LT
-_ :: Int `compare` abs x + _ :: Int  =  LT
-_ :: Int `compare` abs 0 + _ :: Int  =  LT
-_ :: Int `compare` abs (id _) + _ :: Int  =  LT
-_ :: Int `compare` (_ + x) + _ :: Int  =  LT
-_ :: Int `compare` (_ + 0) + _ :: Int  =  LT
-_ :: Int `compare` (_ + id _) + _ :: Int  =  LT
-_ :: Int `compare` (x + _) + _ :: Int  =  LT
-_ :: Int `compare` (0 + _) + _ :: Int  =  LT
-_ :: Int `compare` (id _ + _) + _ :: Int  =  LT
-_ :: Int `compare` _ * _ + _ :: Int  =  LT
-_ :: Int `compare` f _ + _ :: Int  =  LT
-_ :: Int `compare` head xs + _ :: Int  =  LT
-_ :: Int `compare` head [] + _ :: Int  =  LT
-_ :: Int `compare` head (_:_) + _ :: Int  =  LT
-_ :: Int `compare` ord c + _ :: Int  =  LT
-_ :: Int `compare` ord 'a' + _ :: Int  =  LT
-_ :: Int `compare` y * _ :: Int  =  LT
-_ :: Int `compare` 1 * _ :: Int  =  LT
-_ :: Int `compare` id x * _ :: Int  =  LT
-_ :: Int `compare` id 0 * _ :: Int  =  LT
-_ :: Int `compare` id (id _) * _ :: Int  =  LT
-_ :: Int `compare` negate _ * _ :: Int  =  LT
-_ :: Int `compare` abs _ * _ :: Int  =  LT
-_ :: Int `compare` (_ + _) * _ :: Int  =  LT
-_ :: Int `compare` head _ * _ :: Int  =  LT
-_ :: Int `compare` ord _ * _ :: Int  =  LT
-_ :: Int `compare` h _ :: Int  =  LT
-_ :: Int `compare` head zs :: Int  =  LT
-_ :: Int `compare` head [0,0] :: Int  =  LT
-_ :: Int `compare` head [1] :: Int  =  LT
-_ :: Int `compare` head (_:ys) :: Int  =  LT
-_ :: Int `compare` head [_,0] :: Int  =  LT
-_ :: Int `compare` head (_:_:xs) :: Int  =  LT
-_ :: Int `compare` head [_,_] :: Int  =  LT
-_ :: Int `compare` head (_:_:_:_) :: Int  =  LT
-_ :: Int `compare` head (_:x:_) :: Int  =  LT
-_ :: Int `compare` head (_:0:_) :: Int  =  LT
-_ :: Int `compare` head (_:id _:_) :: Int  =  LT
-_ :: Int `compare` head (_:tail _) :: Int  =  LT
-_ :: Int `compare` head (_:(_ ++ _)) :: Int  =  LT
-_ :: Int `compare` head (x:xs) :: Int  =  LT
-_ :: Int `compare` head [x] :: Int  =  LT
-_ :: Int `compare` head (x:_:_) :: Int  =  LT
-_ :: Int `compare` head (0:xs) :: Int  =  LT
-_ :: Int `compare` head [0] :: Int  =  LT
-_ :: Int `compare` head (0:_:_) :: Int  =  LT
-_ :: Int `compare` head (id _:xs) :: Int  =  LT
-_ :: Int `compare` head [id _] :: Int  =  LT
-_ :: Int `compare` head (id _:_:_) :: Int  =  LT
-_ :: Int `compare` head (y:_) :: Int  =  LT
-_ :: Int `compare` head (1:_) :: Int  =  LT
-_ :: Int `compare` head (id x:_) :: Int  =  LT
-_ :: Int `compare` head (id 0:_) :: Int  =  LT
-_ :: Int `compare` head (id (id _):_) :: Int  =  LT
-_ :: Int `compare` head (negate _:_) :: Int  =  LT
-_ :: Int `compare` head (abs _:_) :: Int  =  LT
-_ :: Int `compare` head (_ + _:_) :: Int  =  LT
-_ :: Int `compare` head (head _:_) :: Int  =  LT
-_ :: Int `compare` head (ord _:_) :: Int  =  LT
-_ :: Int `compare` head (tail xs) :: Int  =  LT
-_ :: Int `compare` head (tail []) :: Int  =  LT
-_ :: Int `compare` head (tail (_:_)) :: Int  =  LT
-_ :: Int `compare` head (_ ++ xs) :: Int  =  LT
-_ :: Int `compare` head (_ ++ []) :: Int  =  LT
-_ :: Int `compare` head (_ ++ (_:_)) :: Int  =  LT
-_ :: Int `compare` head (xs ++ _) :: Int  =  LT
-_ :: Int `compare` head ([] ++ _) :: Int  =  LT
-_ :: Int `compare` head ((_:_) ++ _) :: Int  =  LT
-_ :: Int `compare` head (sort _) :: Int  =  LT
-_ :: Int `compare` head (insert _ _) :: Int  =  LT
-_ :: Int `compare` ord e :: Int  =  LT
-_ :: Int `compare` ord 'b' :: Int  =  LT
-_ :: Int `compare` p' :: Bool  =  GT
-_ :: Int `compare` not r :: Bool  =  LT
-_ :: Int `compare` not (not q) :: Bool  =  LT
-_ :: Int `compare` not (not (not p)) :: Bool  =  LT
-_ :: Int `compare` not (not (not False)) :: Bool  =  LT
-_ :: Int `compare` not (not (not True)) :: Bool  =  LT
-_ :: Int `compare` not (not (not (not _))) :: Bool  =  LT
-_ :: Int `compare` not (not (_ || _)) :: Bool  =  LT
-_ :: Int `compare` not (_ || p) :: Bool  =  LT
-_ :: Int `compare` not (_ || False) :: Bool  =  LT
-_ :: Int `compare` not (_ || True) :: Bool  =  LT
-_ :: Int `compare` not (_ || not _) :: Bool  =  LT
-_ :: Int `compare` not (p || _) :: Bool  =  LT
-_ :: Int `compare` not (False || _) :: Bool  =  LT
-_ :: Int `compare` not (True || _) :: Bool  =  LT
-_ :: Int `compare` not (not _ || _) :: Bool  =  LT
-_ :: Int `compare` not (_ && _) :: Bool  =  LT
-_ :: Int `compare` not (_ == _) :: Bool  =  LT
-_ :: Int `compare` not (_ == _) :: Bool  =  LT
-_ :: Int `compare` not (odd _) :: Bool  =  LT
-_ :: Int `compare` not (even _) :: Bool  =  LT
-_ :: Int `compare` not (elem _ _) :: Bool  =  LT
-_ :: Int `compare` _ || q :: Bool  =  LT
-_ :: Int `compare` _ || not p :: Bool  =  LT
-_ :: Int `compare` _ || not False :: Bool  =  LT
-_ :: Int `compare` _ || not True :: Bool  =  LT
-_ :: Int `compare` _ || not (not _) :: Bool  =  LT
-_ :: Int `compare` _ || (_ || _) :: Bool  =  LT
-_ :: Int `compare` p || p :: Bool  =  LT
-_ :: Int `compare` p || False :: Bool  =  LT
-_ :: Int `compare` p || True :: Bool  =  LT
-_ :: Int `compare` p || not _ :: Bool  =  LT
-_ :: Int `compare` False || p :: Bool  =  LT
-_ :: Int `compare` False || False :: Bool  =  LT
-_ :: Int `compare` False || True :: Bool  =  LT
-_ :: Int `compare` False || not _ :: Bool  =  LT
-_ :: Int `compare` True || p :: Bool  =  LT
-_ :: Int `compare` True || False :: Bool  =  LT
-_ :: Int `compare` True || True :: Bool  =  LT
-_ :: Int `compare` True || not _ :: Bool  =  LT
-_ :: Int `compare` not _ || p :: Bool  =  LT
-_ :: Int `compare` not _ || False :: Bool  =  LT
-_ :: Int `compare` not _ || True :: Bool  =  LT
-_ :: Int `compare` not _ || not _ :: Bool  =  LT
-_ :: Int `compare` _ && p :: Bool  =  LT
-_ :: Int `compare` _ && False :: Bool  =  LT
-_ :: Int `compare` _ && True :: Bool  =  LT
-_ :: Int `compare` _ && not _ :: Bool  =  LT
-_ :: Int `compare` q || _ :: Bool  =  LT
-_ :: Int `compare` not p || _ :: Bool  =  LT
-_ :: Int `compare` not False || _ :: Bool  =  LT
-_ :: Int `compare` not True || _ :: Bool  =  LT
-_ :: Int `compare` not (not _) || _ :: Bool  =  LT
-_ :: Int `compare` (_ || _) || _ :: Bool  =  LT
-_ :: Int `compare` p && _ :: Bool  =  LT
-_ :: Int `compare` False && _ :: Bool  =  LT
-_ :: Int `compare` True && _ :: Bool  =  LT
-_ :: Int `compare` not _ && _ :: Bool  =  LT
-_ :: Int `compare` _ ==> _ :: Bool  =  LT
-_ :: Int `compare` _ == x :: Bool  =  LT
-_ :: Int `compare` _ == 0 :: Bool  =  LT
-_ :: Int `compare` _ == id _ :: Bool  =  LT
-_ :: Int `compare` x == _ :: Bool  =  LT
-_ :: Int `compare` 0 == _ :: Bool  =  LT
-_ :: Int `compare` id _ == _ :: Bool  =  LT
-_ :: Int `compare` _ == p :: Bool  =  LT
-_ :: Int `compare` _ == False :: Bool  =  LT
-_ :: Int `compare` _ == True :: Bool  =  LT
-_ :: Int `compare` _ == not _ :: Bool  =  LT
-_ :: Int `compare` p == _ :: Bool  =  LT
-_ :: Int `compare` False == _ :: Bool  =  LT
-_ :: Int `compare` True == _ :: Bool  =  LT
-_ :: Int `compare` not _ == _ :: Bool  =  LT
-_ :: Int `compare` _ <= _ :: Bool  =  LT
-_ :: Int `compare` _ <= _ :: Bool  =  LT
-_ :: Int `compare` odd x :: Bool  =  LT
-_ :: Int `compare` odd 0 :: Bool  =  LT
-_ :: Int `compare` odd (id _) :: Bool  =  LT
-_ :: Int `compare` even x :: Bool  =  LT
-_ :: Int `compare` even 0 :: Bool  =  LT
-_ :: Int `compare` even (id _) :: Bool  =  LT
-_ :: Int `compare` elem _ xs :: Bool  =  LT
-_ :: Int `compare` elem _ [] :: Bool  =  LT
-_ :: Int `compare` elem _ (_:_) :: Bool  =  LT
-_ :: Int `compare` elem x _ :: Bool  =  LT
-_ :: Int `compare` elem 0 _ :: Bool  =  LT
-_ :: Int `compare` elem (id _) _ :: Bool  =  LT
-_ :: Int `compare` c' :: Char  =  GT
-_ :: Int `compare` 'A' :: Char  =  LT
-_ :: Int `compare` xs' :: [Int]  =  LT
-_ :: Int `compare` [0,0,0] :: [Int]  =  LT
-_ :: Int `compare` [0,1] :: [Int]  =  LT
-_ :: Int `compare` [1,0] :: [Int]  =  LT
-_ :: Int `compare` [-1] :: [Int]  =  LT
-_ :: Int `compare` _:zs :: [Int]  =  LT
-_ :: Int `compare` [_,0,0] :: [Int]  =  LT
-_ :: Int `compare` [_,1] :: [Int]  =  LT
-_ :: Int `compare` _:_:ys :: [Int]  =  LT
-_ :: Int `compare` [_,_,0] :: [Int]  =  LT
-_ :: Int `compare` _:_:_:xs :: [Int]  =  LT
-_ :: Int `compare` [_,_,_] :: [Int]  =  LT
-_ :: Int `compare` _:_:_:_:_ :: [Int]  =  LT
-_ :: Int `compare` _:_:x:_ :: [Int]  =  LT
-_ :: Int `compare` _:_:0:_ :: [Int]  =  LT
-_ :: Int `compare` _:_:id _:_ :: [Int]  =  LT
-_ :: Int `compare` _:_:tail _ :: [Int]  =  LT
-_ :: Int `compare` _:_:(_ ++ _) :: [Int]  =  LT
-_ :: Int `compare` _:x:xs :: [Int]  =  LT
-_ :: Int `compare` [_,x] :: [Int]  =  LT
-_ :: Int `compare` _:x:_:_ :: [Int]  =  LT
-_ :: Int `compare` _:0:xs :: [Int]  =  LT
-_ :: Int `compare` [_,0] :: [Int]  =  LT
-_ :: Int `compare` _:0:_:_ :: [Int]  =  LT
-_ :: Int `compare` _:id _:xs :: [Int]  =  LT
-_ :: Int `compare` [_,id _] :: [Int]  =  LT
-_ :: Int `compare` _:id _:_:_ :: [Int]  =  LT
-_ :: Int `compare` _:y:_ :: [Int]  =  LT
-_ :: Int `compare` _:1:_ :: [Int]  =  LT
-_ :: Int `compare` _:id x:_ :: [Int]  =  LT
-_ :: Int `compare` _:id 0:_ :: [Int]  =  LT
-_ :: Int `compare` _:id (id _):_ :: [Int]  =  LT
-_ :: Int `compare` _:negate _:_ :: [Int]  =  LT
-_ :: Int `compare` _:abs _:_ :: [Int]  =  LT
-_ :: Int `compare` _:_ + _:_ :: [Int]  =  LT
-_ :: Int `compare` _:head _:_ :: [Int]  =  LT
-_ :: Int `compare` _:ord _:_ :: [Int]  =  LT
-_ :: Int `compare` _:tail xs :: [Int]  =  LT
-_ :: Int `compare` _:tail [] :: [Int]  =  LT
-_ :: Int `compare` _:tail (_:_) :: [Int]  =  LT
-_ :: Int `compare` _:(_ ++ xs) :: [Int]  =  LT
-_ :: Int `compare` _:(_ ++ []) :: [Int]  =  LT
-_ :: Int `compare` _:(_ ++ (_:_)) :: [Int]  =  LT
-_ :: Int `compare` _:(xs ++ _) :: [Int]  =  LT
-_ :: Int `compare` _:([] ++ _) :: [Int]  =  LT
-_ :: Int `compare` _:((_:_) ++ _) :: [Int]  =  LT
-_ :: Int `compare` _:sort _ :: [Int]  =  LT
-_ :: Int `compare` _:insert _ _ :: [Int]  =  LT
-_ :: Int `compare` x:ys :: [Int]  =  LT
-_ :: Int `compare` [x,0] :: [Int]  =  LT
-_ :: Int `compare` x:_:xs :: [Int]  =  LT
-_ :: Int `compare` [x,_] :: [Int]  =  LT
-_ :: Int `compare` x:_:_:_ :: [Int]  =  LT
-_ :: Int `compare` x:x:_ :: [Int]  =  LT
-_ :: Int `compare` x:0:_ :: [Int]  =  LT
-_ :: Int `compare` x:id _:_ :: [Int]  =  LT
-_ :: Int `compare` x:tail _ :: [Int]  =  LT
-_ :: Int `compare` x:(_ ++ _) :: [Int]  =  LT
-_ :: Int `compare` 0:ys :: [Int]  =  LT
-_ :: Int `compare` [0,0] :: [Int]  =  LT
-_ :: Int `compare` 0:_:xs :: [Int]  =  LT
-_ :: Int `compare` [0,_] :: [Int]  =  LT
-_ :: Int `compare` 0:_:_:_ :: [Int]  =  LT
-_ :: Int `compare` 0:x:_ :: [Int]  =  LT
-_ :: Int `compare` 0:0:_ :: [Int]  =  LT
-_ :: Int `compare` 0:id _:_ :: [Int]  =  LT
-_ :: Int `compare` 0:tail _ :: [Int]  =  LT
-_ :: Int `compare` 0:(_ ++ _) :: [Int]  =  LT
-_ :: Int `compare` id _:ys :: [Int]  =  LT
-_ :: Int `compare` [id _,0] :: [Int]  =  LT
-_ :: Int `compare` id _:_:xs :: [Int]  =  LT
-_ :: Int `compare` [id _,_] :: [Int]  =  LT
-_ :: Int `compare` id _:_:_:_ :: [Int]  =  LT
-_ :: Int `compare` id _:x:_ :: [Int]  =  LT
-_ :: Int `compare` id _:0:_ :: [Int]  =  LT
-_ :: Int `compare` id _:id _:_ :: [Int]  =  LT
-_ :: Int `compare` id _:tail _ :: [Int]  =  LT
-_ :: Int `compare` id _:(_ ++ _) :: [Int]  =  LT
-_ :: Int `compare` y:xs :: [Int]  =  LT
-_ :: Int `compare` [y] :: [Int]  =  LT
-_ :: Int `compare` y:_:_ :: [Int]  =  LT
-_ :: Int `compare` 1:xs :: [Int]  =  LT
-_ :: Int `compare` [1] :: [Int]  =  LT
-_ :: Int `compare` 1:_:_ :: [Int]  =  LT
-_ :: Int `compare` id x:xs :: [Int]  =  LT
-_ :: Int `compare` [id x] :: [Int]  =  LT
-_ :: Int `compare` id x:_:_ :: [Int]  =  LT
-_ :: Int `compare` id 0:xs :: [Int]  =  LT
-_ :: Int `compare` [id 0] :: [Int]  =  LT
-_ :: Int `compare` id 0:_:_ :: [Int]  =  LT
-_ :: Int `compare` id (id _):xs :: [Int]  =  LT
-_ :: Int `compare` [id (id _)] :: [Int]  =  LT
-_ :: Int `compare` id (id _):_:_ :: [Int]  =  LT
-_ :: Int `compare` negate _:xs :: [Int]  =  LT
-_ :: Int `compare` [negate _] :: [Int]  =  LT
-_ :: Int `compare` negate _:_:_ :: [Int]  =  LT
-_ :: Int `compare` abs _:xs :: [Int]  =  LT
-_ :: Int `compare` [abs _] :: [Int]  =  LT
-_ :: Int `compare` abs _:_:_ :: [Int]  =  LT
-_ :: Int `compare` _ + _:xs :: [Int]  =  LT
-_ :: Int `compare` [_ + _] :: [Int]  =  LT
-_ :: Int `compare` _ + _:_:_ :: [Int]  =  LT
-_ :: Int `compare` head _:xs :: [Int]  =  LT
-_ :: Int `compare` [head _] :: [Int]  =  LT
-_ :: Int `compare` head _:_:_ :: [Int]  =  LT
-_ :: Int `compare` ord _:xs :: [Int]  =  LT
-_ :: Int `compare` [ord _] :: [Int]  =  LT
-_ :: Int `compare` ord _:_:_ :: [Int]  =  LT
-_ :: Int `compare` z:_ :: [Int]  =  LT
-_ :: Int `compare` (-1):_ :: [Int]  =  LT
-_ :: Int `compare` id y:_ :: [Int]  =  LT
-_ :: Int `compare` id 1:_ :: [Int]  =  LT
-_ :: Int `compare` id (id x):_ :: [Int]  =  LT
-_ :: Int `compare` id (id 0):_ :: [Int]  =  LT
-_ :: Int `compare` id (id (id _)):_ :: [Int]  =  LT
-_ :: Int `compare` id (negate _):_ :: [Int]  =  LT
-_ :: Int `compare` id (abs _):_ :: [Int]  =  LT
-_ :: Int `compare` id (_ + _):_ :: [Int]  =  LT
-_ :: Int `compare` id (head _):_ :: [Int]  =  LT
-_ :: Int `compare` id (ord _):_ :: [Int]  =  LT
-_ :: Int `compare` negate x:_ :: [Int]  =  LT
-_ :: Int `compare` negate 0:_ :: [Int]  =  LT
-_ :: Int `compare` negate (id _):_ :: [Int]  =  LT
-_ :: Int `compare` abs x:_ :: [Int]  =  LT
-_ :: Int `compare` abs 0:_ :: [Int]  =  LT
-_ :: Int `compare` abs (id _):_ :: [Int]  =  LT
-_ :: Int `compare` _ + x:_ :: [Int]  =  LT
-_ :: Int `compare` _ + 0:_ :: [Int]  =  LT
-_ :: Int `compare` _ + id _:_ :: [Int]  =  LT
-_ :: Int `compare` x + _:_ :: [Int]  =  LT
-_ :: Int `compare` 0 + _:_ :: [Int]  =  LT
-_ :: Int `compare` id _ + _:_ :: [Int]  =  LT
-_ :: Int `compare` _ * _:_ :: [Int]  =  LT
-_ :: Int `compare` f _:_ :: [Int]  =  LT
-_ :: Int `compare` head xs:_ :: [Int]  =  LT
-_ :: Int `compare` head []:_ :: [Int]  =  LT
-_ :: Int `compare` head (_:_):_ :: [Int]  =  LT
-_ :: Int `compare` ord c:_ :: [Int]  =  LT
-_ :: Int `compare` ord 'a':_ :: [Int]  =  LT
-_ :: Int `compare` tail ys :: [Int]  =  LT
-_ :: Int `compare` tail [0] :: [Int]  =  LT
-_ :: Int `compare` tail (_:xs) :: [Int]  =  LT
-_ :: Int `compare` tail [_] :: [Int]  =  LT
-_ :: Int `compare` tail (_:_:_) :: [Int]  =  LT
-_ :: Int `compare` tail (x:_) :: [Int]  =  LT
-_ :: Int `compare` tail (0:_) :: [Int]  =  LT
-_ :: Int `compare` tail (id _:_) :: [Int]  =  LT
-_ :: Int `compare` tail (tail _) :: [Int]  =  LT
-_ :: Int `compare` tail (_ ++ _) :: [Int]  =  LT
-_ :: Int `compare` _ ++ ys :: [Int]  =  LT
-_ :: Int `compare` _ ++ [0] :: [Int]  =  LT
-_ :: Int `compare` _ ++ (_:xs) :: [Int]  =  LT
-_ :: Int `compare` _ ++ [_] :: [Int]  =  LT
-_ :: Int `compare` _ ++ (_:_:_) :: [Int]  =  LT
-_ :: Int `compare` _ ++ (x:_) :: [Int]  =  LT
-_ :: Int `compare` _ ++ (0:_) :: [Int]  =  LT
-_ :: Int `compare` _ ++ (id _:_) :: [Int]  =  LT
-_ :: Int `compare` _ ++ tail _ :: [Int]  =  LT
-_ :: Int `compare` _ ++ (_ ++ _) :: [Int]  =  LT
-_ :: Int `compare` xs ++ xs :: [Int]  =  LT
-_ :: Int `compare` xs ++ [] :: [Int]  =  LT
-_ :: Int `compare` xs ++ (_:_) :: [Int]  =  LT
-_ :: Int `compare` [] ++ xs :: [Int]  =  LT
-_ :: Int `compare` [] ++ [] :: [Int]  =  LT
-_ :: Int `compare` [] ++ (_:_) :: [Int]  =  LT
-_ :: Int `compare` (_:_) ++ xs :: [Int]  =  LT
-_ :: Int `compare` (_:_) ++ [] :: [Int]  =  LT
-_ :: Int `compare` (_:_) ++ (_:_) :: [Int]  =  LT
-_ :: Int `compare` ys ++ _ :: [Int]  =  LT
-_ :: Int `compare` [0] ++ _ :: [Int]  =  LT
-_ :: Int `compare` (_:xs) ++ _ :: [Int]  =  LT
-_ :: Int `compare` [_] ++ _ :: [Int]  =  LT
-_ :: Int `compare` (_:_:_) ++ _ :: [Int]  =  LT
-_ :: Int `compare` (x:_) ++ _ :: [Int]  =  LT
-_ :: Int `compare` (0:_) ++ _ :: [Int]  =  LT
-_ :: Int `compare` (id _:_) ++ _ :: [Int]  =  LT
-_ :: Int `compare` tail _ ++ _ :: [Int]  =  LT
-_ :: Int `compare` (_ ++ _) ++ _ :: [Int]  =  LT
-_ :: Int `compare` sort xs :: [Int]  =  LT
-_ :: Int `compare` sort [] :: [Int]  =  LT
-_ :: Int `compare` sort (_:_) :: [Int]  =  LT
-_ :: Int `compare` insert _ xs :: [Int]  =  LT
-_ :: Int `compare` insert _ [] :: [Int]  =  LT
-_ :: Int `compare` insert _ (_:_) :: [Int]  =  LT
-_ :: Int `compare` insert x _ :: [Int]  =  LT
-_ :: Int `compare` insert 0 _ :: [Int]  =  LT
-_ :: Int `compare` insert (id _) _ :: [Int]  =  LT
-_ :: Int `compare` (y +) :: Int -> Int  =  LT
-_ :: Int `compare` (1 +) :: Int -> Int  =  LT
-_ :: Int `compare` (id x +) :: Int -> Int  =  LT
-_ :: Int `compare` (id 0 +) :: Int -> Int  =  LT
-_ :: Int `compare` (id (id _) +) :: Int -> Int  =  LT
-_ :: Int `compare` (negate _ +) :: Int -> Int  =  LT
-_ :: Int `compare` (abs _ +) :: Int -> Int  =  LT
-_ :: Int `compare` ((_ + _) +) :: Int -> Int  =  LT
-_ :: Int `compare` (head _ +) :: Int -> Int  =  LT
-_ :: Int `compare` (ord _ +) :: Int -> Int  =  LT
-_ :: Int `compare` (x *) :: Int -> Int  =  LT
-_ :: Int `compare` (0 *) :: Int -> Int  =  LT
-_ :: Int `compare` (id _ *) :: Int -> Int  =  LT
-_ :: Int `compare` g :: Int -> Int  =  LT
-_ :: Int `compare` (p ||) :: Bool -> Bool  =  LT
-_ :: Int `compare` (False ||) :: Bool -> Bool  =  LT
-_ :: Int `compare` (True ||) :: Bool -> Bool  =  LT
-_ :: Int `compare` (not _ ||) :: Bool -> Bool  =  LT
-_ :: Int `compare` (_ &&) :: Bool -> Bool  =  LT
-_ :: Int `compare` (==>) :: Bool -> Bool -> Bool  =  LT
-x :: Int `compare` x' :: Int  =  LT
-x :: Int `compare` 2 :: Int  =  LT
-x :: Int `compare` id z :: Int  =  LT
-x :: Int `compare` id (-1) :: Int  =  LT
-x :: Int `compare` id (id y) :: Int  =  LT
-x :: Int `compare` id (id 1) :: Int  =  LT
-x :: Int `compare` id (id (id x)) :: Int  =  LT
-x :: Int `compare` id (id (id 0)) :: Int  =  LT
-x :: Int `compare` id (id (id (id _))) :: Int  =  LT
-x :: Int `compare` id (id (negate _)) :: Int  =  LT
-x :: Int `compare` id (id (abs _)) :: Int  =  LT
-x :: Int `compare` id (id (_ + _)) :: Int  =  LT
-x :: Int `compare` id (id (head _)) :: Int  =  LT
-x :: Int `compare` id (id (ord _)) :: Int  =  LT
-x :: Int `compare` id (negate x) :: Int  =  LT
-x :: Int `compare` id (negate 0) :: Int  =  LT
-x :: Int `compare` id (negate (id _)) :: Int  =  LT
-x :: Int `compare` id (abs x) :: Int  =  LT
-x :: Int `compare` id (abs 0) :: Int  =  LT
-x :: Int `compare` id (abs (id _)) :: Int  =  LT
-x :: Int `compare` id (_ + x) :: Int  =  LT
-x :: Int `compare` id (_ + 0) :: Int  =  LT
-x :: Int `compare` id (_ + id _) :: Int  =  LT
-x :: Int `compare` id (x + _) :: Int  =  LT
-x :: Int `compare` id (0 + _) :: Int  =  LT
-x :: Int `compare` id (id _ + _) :: Int  =  LT
-x :: Int `compare` id (_ * _) :: Int  =  LT
-x :: Int `compare` id (f _) :: Int  =  LT
-x :: Int `compare` id (head xs) :: Int  =  LT
-x :: Int `compare` id (head []) :: Int  =  LT
-x :: Int `compare` id (head (_:_)) :: Int  =  LT
-x :: Int `compare` id (ord c) :: Int  =  LT
-x :: Int `compare` id (ord 'a') :: Int  =  LT
-x :: Int `compare` negate y :: Int  =  LT
-x :: Int `compare` negate 1 :: Int  =  LT
-x :: Int `compare` negate (id x) :: Int  =  LT
-x :: Int `compare` negate (id 0) :: Int  =  LT
-x :: Int `compare` negate (id (id _)) :: Int  =  LT
-x :: Int `compare` negate (negate _) :: Int  =  LT
-x :: Int `compare` negate (abs _) :: Int  =  LT
-x :: Int `compare` negate (_ + _) :: Int  =  LT
-x :: Int `compare` negate (head _) :: Int  =  LT
-x :: Int `compare` negate (ord _) :: Int  =  LT
-x :: Int `compare` abs y :: Int  =  LT
-x :: Int `compare` abs 1 :: Int  =  LT
-x :: Int `compare` abs (id x) :: Int  =  LT
-x :: Int `compare` abs (id 0) :: Int  =  LT
-x :: Int `compare` abs (id (id _)) :: Int  =  LT
-x :: Int `compare` abs (negate _) :: Int  =  LT
-x :: Int `compare` abs (abs _) :: Int  =  LT
-x :: Int `compare` abs (_ + _) :: Int  =  LT
-x :: Int `compare` abs (head _) :: Int  =  LT
-x :: Int `compare` abs (ord _) :: Int  =  LT
-x :: Int `compare` _ + y :: Int  =  LT
-x :: Int `compare` _ + 1 :: Int  =  LT
-x :: Int `compare` _ + id x :: Int  =  LT
-x :: Int `compare` _ + id 0 :: Int  =  LT
-x :: Int `compare` _ + id (id _) :: Int  =  LT
-x :: Int `compare` _ + negate _ :: Int  =  LT
-x :: Int `compare` _ + abs _ :: Int  =  LT
-x :: Int `compare` _ + (_ + _) :: Int  =  LT
-x :: Int `compare` _ + head _ :: Int  =  LT
-x :: Int `compare` _ + ord _ :: Int  =  LT
-x :: Int `compare` x + x :: Int  =  LT
-x :: Int `compare` x + 0 :: Int  =  LT
-x :: Int `compare` x + id _ :: Int  =  LT
-x :: Int `compare` 0 + x :: Int  =  LT
-x :: Int `compare` 0 + 0 :: Int  =  LT
-x :: Int `compare` 0 + id _ :: Int  =  LT
-x :: Int `compare` id _ + x :: Int  =  LT
-x :: Int `compare` id _ + 0 :: Int  =  LT
-x :: Int `compare` id _ + id _ :: Int  =  LT
-x :: Int `compare` _ * x :: Int  =  LT
-x :: Int `compare` _ * 0 :: Int  =  LT
-x :: Int `compare` _ * id _ :: Int  =  LT
-x :: Int `compare` f x :: Int  =  LT
-x :: Int `compare` f 0 :: Int  =  LT
-x :: Int `compare` f (id _) :: Int  =  LT
-x :: Int `compare` y + _ :: Int  =  LT
-x :: Int `compare` 1 + _ :: Int  =  LT
-x :: Int `compare` id x + _ :: Int  =  LT
-x :: Int `compare` id 0 + _ :: Int  =  LT
-x :: Int `compare` id (id _) + _ :: Int  =  LT
-x :: Int `compare` negate _ + _ :: Int  =  LT
-x :: Int `compare` abs _ + _ :: Int  =  LT
-x :: Int `compare` (_ + _) + _ :: Int  =  LT
-x :: Int `compare` head _ + _ :: Int  =  LT
-x :: Int `compare` ord _ + _ :: Int  =  LT
-x :: Int `compare` x * _ :: Int  =  LT
-x :: Int `compare` 0 * _ :: Int  =  LT
-x :: Int `compare` id _ * _ :: Int  =  LT
-x :: Int `compare` g _ :: Int  =  LT
-x :: Int `compare` head ys :: Int  =  LT
-x :: Int `compare` head [0] :: Int  =  LT
-x :: Int `compare` head (_:xs) :: Int  =  LT
-x :: Int `compare` head [_] :: Int  =  LT
-x :: Int `compare` head (_:_:_) :: Int  =  LT
-x :: Int `compare` head (x:_) :: Int  =  LT
-x :: Int `compare` head (0:_) :: Int  =  LT
-x :: Int `compare` head (id _:_) :: Int  =  LT
-x :: Int `compare` head (tail _) :: Int  =  LT
-x :: Int `compare` head (_ ++ _) :: Int  =  LT
-x :: Int `compare` ord d :: Int  =  LT
-x :: Int `compare` ord ' ' :: Int  =  LT
-x :: Int `compare` r :: Bool  =  GT
-x :: Int `compare` not q :: Bool  =  LT
-x :: Int `compare` not (not p) :: Bool  =  LT
-x :: Int `compare` not (not False) :: Bool  =  LT
-x :: Int `compare` not (not True) :: Bool  =  LT
-x :: Int `compare` not (not (not _)) :: Bool  =  LT
-x :: Int `compare` not (_ || _) :: Bool  =  LT
-x :: Int `compare` _ || p :: Bool  =  LT
-x :: Int `compare` _ || False :: Bool  =  LT
-x :: Int `compare` _ || True :: Bool  =  LT
-x :: Int `compare` _ || not _ :: Bool  =  LT
-x :: Int `compare` p || _ :: Bool  =  LT
-x :: Int `compare` False || _ :: Bool  =  LT
-x :: Int `compare` True || _ :: Bool  =  LT
-x :: Int `compare` not _ || _ :: Bool  =  LT
-x :: Int `compare` _ && _ :: Bool  =  LT
-x :: Int `compare` _ == _ :: Bool  =  LT
-x :: Int `compare` _ == _ :: Bool  =  LT
-x :: Int `compare` odd _ :: Bool  =  LT
-x :: Int `compare` even _ :: Bool  =  LT
-x :: Int `compare` elem _ _ :: Bool  =  LT
-x :: Int `compare` e :: Char  =  GT
-x :: Int `compare` 'b' :: Char  =  LT
-x :: Int `compare` zs :: [Int]  =  LT
-x :: Int `compare` [0,0] :: [Int]  =  LT
-x :: Int `compare` [1] :: [Int]  =  LT
-x :: Int `compare` _:ys :: [Int]  =  LT
-x :: Int `compare` [_,0] :: [Int]  =  LT
-x :: Int `compare` _:_:xs :: [Int]  =  LT
-x :: Int `compare` [_,_] :: [Int]  =  LT
-x :: Int `compare` _:_:_:_ :: [Int]  =  LT
-x :: Int `compare` _:x:_ :: [Int]  =  LT
-x :: Int `compare` _:0:_ :: [Int]  =  LT
-x :: Int `compare` _:id _:_ :: [Int]  =  LT
-x :: Int `compare` _:tail _ :: [Int]  =  LT
-x :: Int `compare` _:(_ ++ _) :: [Int]  =  LT
-x :: Int `compare` x:xs :: [Int]  =  LT
-x :: Int `compare` [x] :: [Int]  =  LT
-x :: Int `compare` x:_:_ :: [Int]  =  LT
-x :: Int `compare` 0:xs :: [Int]  =  LT
-x :: Int `compare` [0] :: [Int]  =  LT
-x :: Int `compare` 0:_:_ :: [Int]  =  LT
-x :: Int `compare` id _:xs :: [Int]  =  LT
-x :: Int `compare` [id _] :: [Int]  =  LT
-x :: Int `compare` id _:_:_ :: [Int]  =  LT
-x :: Int `compare` y:_ :: [Int]  =  LT
-x :: Int `compare` 1:_ :: [Int]  =  LT
-x :: Int `compare` id x:_ :: [Int]  =  LT
-x :: Int `compare` id 0:_ :: [Int]  =  LT
-x :: Int `compare` id (id _):_ :: [Int]  =  LT
-x :: Int `compare` negate _:_ :: [Int]  =  LT
-x :: Int `compare` abs _:_ :: [Int]  =  LT
-x :: Int `compare` _ + _:_ :: [Int]  =  LT
-x :: Int `compare` head _:_ :: [Int]  =  LT
-x :: Int `compare` ord _:_ :: [Int]  =  LT
-x :: Int `compare` tail xs :: [Int]  =  LT
-x :: Int `compare` tail [] :: [Int]  =  LT
-x :: Int `compare` tail (_:_) :: [Int]  =  LT
-x :: Int `compare` _ ++ xs :: [Int]  =  LT
-x :: Int `compare` _ ++ [] :: [Int]  =  LT
-x :: Int `compare` _ ++ (_:_) :: [Int]  =  LT
-x :: Int `compare` xs ++ _ :: [Int]  =  LT
-x :: Int `compare` [] ++ _ :: [Int]  =  LT
-x :: Int `compare` (_:_) ++ _ :: [Int]  =  LT
-x :: Int `compare` sort _ :: [Int]  =  LT
-x :: Int `compare` insert _ _ :: [Int]  =  LT
-x :: Int `compare` (x +) :: Int -> Int  =  LT
-x :: Int `compare` (0 +) :: Int -> Int  =  LT
-x :: Int `compare` (id _ +) :: Int -> Int  =  LT
-x :: Int `compare` (_ *) :: Int -> Int  =  LT
-x :: Int `compare` f :: Int -> Int  =  LT
-x :: Int `compare` (_ ||) :: Bool -> Bool  =  LT
-x :: Int `compare` (&&) :: Bool -> Bool -> Bool  =  LT
-0 :: Int `compare` x' :: Int  =  GT
-0 :: Int `compare` 2 :: Int  =  LT
-0 :: Int `compare` id z :: Int  =  LT
-0 :: Int `compare` id (-1) :: Int  =  LT
-0 :: Int `compare` id (id y) :: Int  =  LT
-0 :: Int `compare` id (id 1) :: Int  =  LT
-0 :: Int `compare` id (id (id x)) :: Int  =  LT
-0 :: Int `compare` id (id (id 0)) :: Int  =  LT
-0 :: Int `compare` id (id (id (id _))) :: Int  =  LT
-0 :: Int `compare` id (id (negate _)) :: Int  =  LT
-0 :: Int `compare` id (id (abs _)) :: Int  =  LT
-0 :: Int `compare` id (id (_ + _)) :: Int  =  LT
-0 :: Int `compare` id (id (head _)) :: Int  =  LT
-0 :: Int `compare` id (id (ord _)) :: Int  =  LT
-0 :: Int `compare` id (negate x) :: Int  =  LT
-0 :: Int `compare` id (negate 0) :: Int  =  LT
-0 :: Int `compare` id (negate (id _)) :: Int  =  LT
-0 :: Int `compare` id (abs x) :: Int  =  LT
-0 :: Int `compare` id (abs 0) :: Int  =  LT
-0 :: Int `compare` id (abs (id _)) :: Int  =  LT
-0 :: Int `compare` id (_ + x) :: Int  =  LT
-0 :: Int `compare` id (_ + 0) :: Int  =  LT
-0 :: Int `compare` id (_ + id _) :: Int  =  LT
-0 :: Int `compare` id (x + _) :: Int  =  LT
-0 :: Int `compare` id (0 + _) :: Int  =  LT
-0 :: Int `compare` id (id _ + _) :: Int  =  LT
-0 :: Int `compare` id (_ * _) :: Int  =  LT
-0 :: Int `compare` id (f _) :: Int  =  LT
-0 :: Int `compare` id (head xs) :: Int  =  LT
-0 :: Int `compare` id (head []) :: Int  =  LT
-0 :: Int `compare` id (head (_:_)) :: Int  =  LT
-0 :: Int `compare` id (ord c) :: Int  =  LT
-0 :: Int `compare` id (ord 'a') :: Int  =  LT
-0 :: Int `compare` negate y :: Int  =  LT
-0 :: Int `compare` negate 1 :: Int  =  LT
-0 :: Int `compare` negate (id x) :: Int  =  LT
-0 :: Int `compare` negate (id 0) :: Int  =  LT
-0 :: Int `compare` negate (id (id _)) :: Int  =  LT
-0 :: Int `compare` negate (negate _) :: Int  =  LT
-0 :: Int `compare` negate (abs _) :: Int  =  LT
-0 :: Int `compare` negate (_ + _) :: Int  =  LT
-0 :: Int `compare` negate (head _) :: Int  =  LT
-0 :: Int `compare` negate (ord _) :: Int  =  LT
-0 :: Int `compare` abs y :: Int  =  LT
-0 :: Int `compare` abs 1 :: Int  =  LT
-0 :: Int `compare` abs (id x) :: Int  =  LT
-0 :: Int `compare` abs (id 0) :: Int  =  LT
-0 :: Int `compare` abs (id (id _)) :: Int  =  LT
-0 :: Int `compare` abs (negate _) :: Int  =  LT
-0 :: Int `compare` abs (abs _) :: Int  =  LT
-0 :: Int `compare` abs (_ + _) :: Int  =  LT
-0 :: Int `compare` abs (head _) :: Int  =  LT
-0 :: Int `compare` abs (ord _) :: Int  =  LT
-0 :: Int `compare` _ + y :: Int  =  LT
-0 :: Int `compare` _ + 1 :: Int  =  LT
-0 :: Int `compare` _ + id x :: Int  =  LT
-0 :: Int `compare` _ + id 0 :: Int  =  LT
-0 :: Int `compare` _ + id (id _) :: Int  =  LT
-0 :: Int `compare` _ + negate _ :: Int  =  LT
-0 :: Int `compare` _ + abs _ :: Int  =  LT
-0 :: Int `compare` _ + (_ + _) :: Int  =  LT
-0 :: Int `compare` _ + head _ :: Int  =  LT
-0 :: Int `compare` _ + ord _ :: Int  =  LT
-0 :: Int `compare` x + x :: Int  =  LT
-0 :: Int `compare` x + 0 :: Int  =  LT
-0 :: Int `compare` x + id _ :: Int  =  LT
-0 :: Int `compare` 0 + x :: Int  =  LT
-0 :: Int `compare` 0 + 0 :: Int  =  LT
-0 :: Int `compare` 0 + id _ :: Int  =  LT
-0 :: Int `compare` id _ + x :: Int  =  LT
-0 :: Int `compare` id _ + 0 :: Int  =  LT
-0 :: Int `compare` id _ + id _ :: Int  =  LT
-0 :: Int `compare` _ * x :: Int  =  LT
-0 :: Int `compare` _ * 0 :: Int  =  LT
-0 :: Int `compare` _ * id _ :: Int  =  LT
-0 :: Int `compare` f x :: Int  =  LT
-0 :: Int `compare` f 0 :: Int  =  LT
-0 :: Int `compare` f (id _) :: Int  =  LT
-0 :: Int `compare` y + _ :: Int  =  LT
-0 :: Int `compare` 1 + _ :: Int  =  LT
-0 :: Int `compare` id x + _ :: Int  =  LT
-0 :: Int `compare` id 0 + _ :: Int  =  LT
-0 :: Int `compare` id (id _) + _ :: Int  =  LT
-0 :: Int `compare` negate _ + _ :: Int  =  LT
-0 :: Int `compare` abs _ + _ :: Int  =  LT
-0 :: Int `compare` (_ + _) + _ :: Int  =  LT
-0 :: Int `compare` head _ + _ :: Int  =  LT
-0 :: Int `compare` ord _ + _ :: Int  =  LT
-0 :: Int `compare` x * _ :: Int  =  LT
-0 :: Int `compare` 0 * _ :: Int  =  LT
-0 :: Int `compare` id _ * _ :: Int  =  LT
-0 :: Int `compare` g _ :: Int  =  LT
-0 :: Int `compare` head ys :: Int  =  LT
-0 :: Int `compare` head [0] :: Int  =  LT
-0 :: Int `compare` head (_:xs) :: Int  =  LT
-0 :: Int `compare` head [_] :: Int  =  LT
-0 :: Int `compare` head (_:_:_) :: Int  =  LT
-0 :: Int `compare` head (x:_) :: Int  =  LT
-0 :: Int `compare` head (0:_) :: Int  =  LT
-0 :: Int `compare` head (id _:_) :: Int  =  LT
-0 :: Int `compare` head (tail _) :: Int  =  LT
-0 :: Int `compare` head (_ ++ _) :: Int  =  LT
-0 :: Int `compare` ord d :: Int  =  LT
-0 :: Int `compare` ord ' ' :: Int  =  LT
-0 :: Int `compare` r :: Bool  =  GT
-0 :: Int `compare` not q :: Bool  =  LT
-0 :: Int `compare` not (not p) :: Bool  =  LT
-0 :: Int `compare` not (not False) :: Bool  =  LT
-0 :: Int `compare` not (not True) :: Bool  =  LT
-0 :: Int `compare` not (not (not _)) :: Bool  =  LT
-0 :: Int `compare` not (_ || _) :: Bool  =  LT
-0 :: Int `compare` _ || p :: Bool  =  LT
-0 :: Int `compare` _ || False :: Bool  =  LT
-0 :: Int `compare` _ || True :: Bool  =  LT
-0 :: Int `compare` _ || not _ :: Bool  =  LT
-0 :: Int `compare` p || _ :: Bool  =  LT
-0 :: Int `compare` False || _ :: Bool  =  LT
-0 :: Int `compare` True || _ :: Bool  =  LT
-0 :: Int `compare` not _ || _ :: Bool  =  LT
-0 :: Int `compare` _ && _ :: Bool  =  LT
-0 :: Int `compare` _ == _ :: Bool  =  LT
-0 :: Int `compare` _ == _ :: Bool  =  LT
-0 :: Int `compare` odd _ :: Bool  =  LT
-0 :: Int `compare` even _ :: Bool  =  LT
-0 :: Int `compare` elem _ _ :: Bool  =  LT
-0 :: Int `compare` e :: Char  =  GT
-0 :: Int `compare` 'b' :: Char  =  GT
-0 :: Int `compare` zs :: [Int]  =  GT
-0 :: Int `compare` [0,0] :: [Int]  =  LT
-0 :: Int `compare` [1] :: [Int]  =  LT
-0 :: Int `compare` _:ys :: [Int]  =  LT
-0 :: Int `compare` [_,0] :: [Int]  =  LT
-0 :: Int `compare` _:_:xs :: [Int]  =  LT
-0 :: Int `compare` [_,_] :: [Int]  =  LT
-0 :: Int `compare` _:_:_:_ :: [Int]  =  LT
-0 :: Int `compare` _:x:_ :: [Int]  =  LT
-0 :: Int `compare` _:0:_ :: [Int]  =  LT
-0 :: Int `compare` _:id _:_ :: [Int]  =  LT
-0 :: Int `compare` _:tail _ :: [Int]  =  LT
-0 :: Int `compare` _:(_ ++ _) :: [Int]  =  LT
-0 :: Int `compare` x:xs :: [Int]  =  LT
-0 :: Int `compare` [x] :: [Int]  =  LT
-0 :: Int `compare` x:_:_ :: [Int]  =  LT
-0 :: Int `compare` 0:xs :: [Int]  =  LT
-0 :: Int `compare` [0] :: [Int]  =  LT
-0 :: Int `compare` 0:_:_ :: [Int]  =  LT
-0 :: Int `compare` id _:xs :: [Int]  =  LT
-0 :: Int `compare` [id _] :: [Int]  =  LT
-0 :: Int `compare` id _:_:_ :: [Int]  =  LT
-0 :: Int `compare` y:_ :: [Int]  =  LT
-0 :: Int `compare` 1:_ :: [Int]  =  LT
-0 :: Int `compare` id x:_ :: [Int]  =  LT
-0 :: Int `compare` id 0:_ :: [Int]  =  LT
-0 :: Int `compare` id (id _):_ :: [Int]  =  LT
-0 :: Int `compare` negate _:_ :: [Int]  =  LT
-0 :: Int `compare` abs _:_ :: [Int]  =  LT
-0 :: Int `compare` _ + _:_ :: [Int]  =  LT
-0 :: Int `compare` head _:_ :: [Int]  =  LT
-0 :: Int `compare` ord _:_ :: [Int]  =  LT
-0 :: Int `compare` tail xs :: [Int]  =  LT
-0 :: Int `compare` tail [] :: [Int]  =  LT
-0 :: Int `compare` tail (_:_) :: [Int]  =  LT
-0 :: Int `compare` _ ++ xs :: [Int]  =  LT
-0 :: Int `compare` _ ++ [] :: [Int]  =  LT
-0 :: Int `compare` _ ++ (_:_) :: [Int]  =  LT
-0 :: Int `compare` xs ++ _ :: [Int]  =  LT
-0 :: Int `compare` [] ++ _ :: [Int]  =  LT
-0 :: Int `compare` (_:_) ++ _ :: [Int]  =  LT
-0 :: Int `compare` sort _ :: [Int]  =  LT
-0 :: Int `compare` insert _ _ :: [Int]  =  LT
-0 :: Int `compare` (x +) :: Int -> Int  =  LT
-0 :: Int `compare` (0 +) :: Int -> Int  =  LT
-0 :: Int `compare` (id _ +) :: Int -> Int  =  LT
-0 :: Int `compare` (_ *) :: Int -> Int  =  LT
-0 :: Int `compare` f :: Int -> Int  =  GT
-0 :: Int `compare` (_ ||) :: Bool -> Bool  =  LT
-0 :: Int `compare` (&&) :: Bool -> Bool -> Bool  =  LT
-id _ :: Int `compare` x' :: Int  =  GT
-id _ :: Int `compare` 2 :: Int  =  GT
-id _ :: Int `compare` id z :: Int  =  LT
-id _ :: Int `compare` id (-1) :: Int  =  LT
-id _ :: Int `compare` id (id y) :: Int  =  LT
-id _ :: Int `compare` id (id 1) :: Int  =  LT
-id _ :: Int `compare` id (id (id x)) :: Int  =  LT
-id _ :: Int `compare` id (id (id 0)) :: Int  =  LT
-id _ :: Int `compare` id (id (id (id _))) :: Int  =  LT
-id _ :: Int `compare` id (id (negate _)) :: Int  =  LT
-id _ :: Int `compare` id (id (abs _)) :: Int  =  LT
-id _ :: Int `compare` id (id (_ + _)) :: Int  =  LT
-id _ :: Int `compare` id (id (head _)) :: Int  =  LT
-id _ :: Int `compare` id (id (ord _)) :: Int  =  LT
-id _ :: Int `compare` id (negate x) :: Int  =  LT
-id _ :: Int `compare` id (negate 0) :: Int  =  LT
-id _ :: Int `compare` id (negate (id _)) :: Int  =  LT
-id _ :: Int `compare` id (abs x) :: Int  =  LT
-id _ :: Int `compare` id (abs 0) :: Int  =  LT
-id _ :: Int `compare` id (abs (id _)) :: Int  =  LT
-id _ :: Int `compare` id (_ + x) :: Int  =  LT
-id _ :: Int `compare` id (_ + 0) :: Int  =  LT
-id _ :: Int `compare` id (_ + id _) :: Int  =  LT
-id _ :: Int `compare` id (x + _) :: Int  =  LT
-id _ :: Int `compare` id (0 + _) :: Int  =  LT
-id _ :: Int `compare` id (id _ + _) :: Int  =  LT
-id _ :: Int `compare` id (_ * _) :: Int  =  LT
-id _ :: Int `compare` id (f _) :: Int  =  LT
-id _ :: Int `compare` id (head xs) :: Int  =  LT
-id _ :: Int `compare` id (head []) :: Int  =  LT
-id _ :: Int `compare` id (head (_:_)) :: Int  =  LT
-id _ :: Int `compare` id (ord c) :: Int  =  LT
-id _ :: Int `compare` id (ord 'a') :: Int  =  LT
-id _ :: Int `compare` negate y :: Int  =  LT
-id _ :: Int `compare` negate 1 :: Int  =  LT
-id _ :: Int `compare` negate (id x) :: Int  =  LT
-id _ :: Int `compare` negate (id 0) :: Int  =  LT
-id _ :: Int `compare` negate (id (id _)) :: Int  =  LT
-id _ :: Int `compare` negate (negate _) :: Int  =  LT
-id _ :: Int `compare` negate (abs _) :: Int  =  LT
-id _ :: Int `compare` negate (_ + _) :: Int  =  LT
-id _ :: Int `compare` negate (head _) :: Int  =  LT
-id _ :: Int `compare` negate (ord _) :: Int  =  LT
-id _ :: Int `compare` abs y :: Int  =  LT
-id _ :: Int `compare` abs 1 :: Int  =  LT
-id _ :: Int `compare` abs (id x) :: Int  =  LT
-id _ :: Int `compare` abs (id 0) :: Int  =  LT
-id _ :: Int `compare` abs (id (id _)) :: Int  =  LT
-id _ :: Int `compare` abs (negate _) :: Int  =  LT
-id _ :: Int `compare` abs (abs _) :: Int  =  LT
-id _ :: Int `compare` abs (_ + _) :: Int  =  LT
-id _ :: Int `compare` abs (head _) :: Int  =  LT
-id _ :: Int `compare` abs (ord _) :: Int  =  LT
-id _ :: Int `compare` _ + y :: Int  =  LT
-id _ :: Int `compare` _ + 1 :: Int  =  LT
-id _ :: Int `compare` _ + id x :: Int  =  LT
-id _ :: Int `compare` _ + id 0 :: Int  =  LT
-id _ :: Int `compare` _ + id (id _) :: Int  =  LT
-id _ :: Int `compare` _ + negate _ :: Int  =  LT
-id _ :: Int `compare` _ + abs _ :: Int  =  LT
-id _ :: Int `compare` _ + (_ + _) :: Int  =  LT
-id _ :: Int `compare` _ + head _ :: Int  =  LT
-id _ :: Int `compare` _ + ord _ :: Int  =  LT
-id _ :: Int `compare` x + x :: Int  =  LT
-id _ :: Int `compare` x + 0 :: Int  =  LT
-id _ :: Int `compare` x + id _ :: Int  =  LT
-id _ :: Int `compare` 0 + x :: Int  =  LT
-id _ :: Int `compare` 0 + 0 :: Int  =  LT
-id _ :: Int `compare` 0 + id _ :: Int  =  LT
-id _ :: Int `compare` id _ + x :: Int  =  LT
-id _ :: Int `compare` id _ + 0 :: Int  =  LT
-id _ :: Int `compare` id _ + id _ :: Int  =  LT
-id _ :: Int `compare` _ * x :: Int  =  LT
-id _ :: Int `compare` _ * 0 :: Int  =  LT
-id _ :: Int `compare` _ * id _ :: Int  =  LT
-id _ :: Int `compare` f x :: Int  =  GT
-id _ :: Int `compare` f 0 :: Int  =  GT
-id _ :: Int `compare` f (id _) :: Int  =  LT
-id _ :: Int `compare` y + _ :: Int  =  LT
-id _ :: Int `compare` 1 + _ :: Int  =  LT
-id _ :: Int `compare` id x + _ :: Int  =  LT
-id _ :: Int `compare` id 0 + _ :: Int  =  LT
-id _ :: Int `compare` id (id _) + _ :: Int  =  LT
-id _ :: Int `compare` negate _ + _ :: Int  =  LT
-id _ :: Int `compare` abs _ + _ :: Int  =  LT
-id _ :: Int `compare` (_ + _) + _ :: Int  =  LT
-id _ :: Int `compare` head _ + _ :: Int  =  LT
-id _ :: Int `compare` ord _ + _ :: Int  =  LT
-id _ :: Int `compare` x * _ :: Int  =  LT
-id _ :: Int `compare` 0 * _ :: Int  =  LT
-id _ :: Int `compare` id _ * _ :: Int  =  LT
-id _ :: Int `compare` g _ :: Int  =  GT
-id _ :: Int `compare` head ys :: Int  =  LT
-id _ :: Int `compare` head [0] :: Int  =  LT
-id _ :: Int `compare` head (_:xs) :: Int  =  LT
-id _ :: Int `compare` head [_] :: Int  =  LT
-id _ :: Int `compare` head (_:_:_) :: Int  =  LT
-id _ :: Int `compare` head (x:_) :: Int  =  LT
-id _ :: Int `compare` head (0:_) :: Int  =  LT
-id _ :: Int `compare` head (id _:_) :: Int  =  LT
-id _ :: Int `compare` head (tail _) :: Int  =  LT
-id _ :: Int `compare` head (_ ++ _) :: Int  =  LT
-id _ :: Int `compare` ord d :: Int  =  GT
-id _ :: Int `compare` ord ' ' :: Int  =  LT
-id _ :: Int `compare` r :: Bool  =  GT
-id _ :: Int `compare` not q :: Bool  =  GT
-id _ :: Int `compare` not (not p) :: Bool  =  LT
-id _ :: Int `compare` not (not False) :: Bool  =  LT
-id _ :: Int `compare` not (not True) :: Bool  =  LT
-id _ :: Int `compare` not (not (not _)) :: Bool  =  LT
-id _ :: Int `compare` not (_ || _) :: Bool  =  LT
-id _ :: Int `compare` _ || p :: Bool  =  LT
-id _ :: Int `compare` _ || False :: Bool  =  LT
-id _ :: Int `compare` _ || True :: Bool  =  LT
-id _ :: Int `compare` _ || not _ :: Bool  =  LT
-id _ :: Int `compare` p || _ :: Bool  =  LT
-id _ :: Int `compare` False || _ :: Bool  =  LT
-id _ :: Int `compare` True || _ :: Bool  =  LT
-id _ :: Int `compare` not _ || _ :: Bool  =  LT
-id _ :: Int `compare` _ && _ :: Bool  =  LT
-id _ :: Int `compare` _ == _ :: Bool  =  LT
-id _ :: Int `compare` _ == _ :: Bool  =  LT
-id _ :: Int `compare` odd _ :: Bool  =  GT
-id _ :: Int `compare` even _ :: Bool  =  GT
-id _ :: Int `compare` elem _ _ :: Bool  =  LT
-id _ :: Int `compare` e :: Char  =  GT
-id _ :: Int `compare` 'b' :: Char  =  GT
-id _ :: Int `compare` zs :: [Int]  =  GT
-id _ :: Int `compare` [0,0] :: [Int]  =  GT
-id _ :: Int `compare` [1] :: [Int]  =  GT
-id _ :: Int `compare` _:ys :: [Int]  =  LT
-id _ :: Int `compare` [_,0] :: [Int]  =  LT
-id _ :: Int `compare` _:_:xs :: [Int]  =  LT
-id _ :: Int `compare` [_,_] :: [Int]  =  LT
-id _ :: Int `compare` _:_:_:_ :: [Int]  =  LT
-id _ :: Int `compare` _:x:_ :: [Int]  =  LT
-id _ :: Int `compare` _:0:_ :: [Int]  =  LT
-id _ :: Int `compare` _:id _:_ :: [Int]  =  LT
-id _ :: Int `compare` _:tail _ :: [Int]  =  LT
-id _ :: Int `compare` _:(_ ++ _) :: [Int]  =  LT
-id _ :: Int `compare` x:xs :: [Int]  =  LT
-id _ :: Int `compare` [x] :: [Int]  =  LT
-id _ :: Int `compare` x:_:_ :: [Int]  =  LT
-id _ :: Int `compare` 0:xs :: [Int]  =  LT
-id _ :: Int `compare` [0] :: [Int]  =  LT
-id _ :: Int `compare` 0:_:_ :: [Int]  =  LT
-id _ :: Int `compare` id _:xs :: [Int]  =  LT
-id _ :: Int `compare` [id _] :: [Int]  =  LT
-id _ :: Int `compare` id _:_:_ :: [Int]  =  LT
-id _ :: Int `compare` y:_ :: [Int]  =  LT
-id _ :: Int `compare` 1:_ :: [Int]  =  LT
-id _ :: Int `compare` id x:_ :: [Int]  =  LT
-id _ :: Int `compare` id 0:_ :: [Int]  =  LT
-id _ :: Int `compare` id (id _):_ :: [Int]  =  LT
-id _ :: Int `compare` negate _:_ :: [Int]  =  LT
-id _ :: Int `compare` abs _:_ :: [Int]  =  LT
-id _ :: Int `compare` _ + _:_ :: [Int]  =  LT
-id _ :: Int `compare` head _:_ :: [Int]  =  LT
-id _ :: Int `compare` ord _:_ :: [Int]  =  LT
-id _ :: Int `compare` tail xs :: [Int]  =  LT
-id _ :: Int `compare` tail [] :: [Int]  =  LT
-id _ :: Int `compare` tail (_:_) :: [Int]  =  LT
-id _ :: Int `compare` _ ++ xs :: [Int]  =  LT
-id _ :: Int `compare` _ ++ [] :: [Int]  =  LT
-id _ :: Int `compare` _ ++ (_:_) :: [Int]  =  LT
-id _ :: Int `compare` xs ++ _ :: [Int]  =  LT
-id _ :: Int `compare` [] ++ _ :: [Int]  =  LT
-id _ :: Int `compare` (_:_) ++ _ :: [Int]  =  LT
-id _ :: Int `compare` sort _ :: [Int]  =  LT
-id _ :: Int `compare` insert _ _ :: [Int]  =  LT
-id _ :: Int `compare` (x +) :: Int -> Int  =  LT
-id _ :: Int `compare` (0 +) :: Int -> Int  =  LT
-id _ :: Int `compare` (id _ +) :: Int -> Int  =  LT
-id _ :: Int `compare` (_ *) :: Int -> Int  =  LT
-id _ :: Int `compare` f :: Int -> Int  =  GT
-id _ :: Int `compare` (_ ||) :: Bool -> Bool  =  LT
-id _ :: Int `compare` (&&) :: Bool -> Bool -> Bool  =  GT
-_ :: Bool `compare` x' :: Int  =  LT
-_ :: Bool `compare` 2 :: Int  =  LT
-_ :: Bool `compare` id z :: Int  =  LT
-_ :: Bool `compare` id (-1) :: Int  =  LT
-_ :: Bool `compare` id (id y) :: Int  =  LT
-_ :: Bool `compare` id (id 1) :: Int  =  LT
-_ :: Bool `compare` id (id (id x)) :: Int  =  LT
-_ :: Bool `compare` id (id (id 0)) :: Int  =  LT
-_ :: Bool `compare` id (id (id (id _))) :: Int  =  LT
-_ :: Bool `compare` id (id (negate _)) :: Int  =  LT
-_ :: Bool `compare` id (id (abs _)) :: Int  =  LT
-_ :: Bool `compare` id (id (_ + _)) :: Int  =  LT
-_ :: Bool `compare` id (id (head _)) :: Int  =  LT
-_ :: Bool `compare` id (id (ord _)) :: Int  =  LT
-_ :: Bool `compare` id (negate x) :: Int  =  LT
-_ :: Bool `compare` id (negate 0) :: Int  =  LT
-_ :: Bool `compare` id (negate (id _)) :: Int  =  LT
-_ :: Bool `compare` id (abs x) :: Int  =  LT
-_ :: Bool `compare` id (abs 0) :: Int  =  LT
-_ :: Bool `compare` id (abs (id _)) :: Int  =  LT
-_ :: Bool `compare` id (_ + x) :: Int  =  LT
-_ :: Bool `compare` id (_ + 0) :: Int  =  LT
-_ :: Bool `compare` id (_ + id _) :: Int  =  LT
-_ :: Bool `compare` id (x + _) :: Int  =  LT
-_ :: Bool `compare` id (0 + _) :: Int  =  LT
-_ :: Bool `compare` id (id _ + _) :: Int  =  LT
-_ :: Bool `compare` id (_ * _) :: Int  =  LT
-_ :: Bool `compare` id (f _) :: Int  =  LT
-_ :: Bool `compare` id (head xs) :: Int  =  LT
-_ :: Bool `compare` id (head []) :: Int  =  LT
-_ :: Bool `compare` id (head (_:_)) :: Int  =  LT
-_ :: Bool `compare` id (ord c) :: Int  =  LT
-_ :: Bool `compare` id (ord 'a') :: Int  =  LT
-_ :: Bool `compare` negate y :: Int  =  LT
-_ :: Bool `compare` negate 1 :: Int  =  LT
-_ :: Bool `compare` negate (id x) :: Int  =  LT
-_ :: Bool `compare` negate (id 0) :: Int  =  LT
-_ :: Bool `compare` negate (id (id _)) :: Int  =  LT
-_ :: Bool `compare` negate (negate _) :: Int  =  LT
-_ :: Bool `compare` negate (abs _) :: Int  =  LT
-_ :: Bool `compare` negate (_ + _) :: Int  =  LT
-_ :: Bool `compare` negate (head _) :: Int  =  LT
-_ :: Bool `compare` negate (ord _) :: Int  =  LT
-_ :: Bool `compare` abs y :: Int  =  LT
-_ :: Bool `compare` abs 1 :: Int  =  LT
-_ :: Bool `compare` abs (id x) :: Int  =  LT
-_ :: Bool `compare` abs (id 0) :: Int  =  LT
-_ :: Bool `compare` abs (id (id _)) :: Int  =  LT
-_ :: Bool `compare` abs (negate _) :: Int  =  LT
-_ :: Bool `compare` abs (abs _) :: Int  =  LT
-_ :: Bool `compare` abs (_ + _) :: Int  =  LT
-_ :: Bool `compare` abs (head _) :: Int  =  LT
-_ :: Bool `compare` abs (ord _) :: Int  =  LT
-_ :: Bool `compare` _ + y :: Int  =  LT
-_ :: Bool `compare` _ + 1 :: Int  =  LT
-_ :: Bool `compare` _ + id x :: Int  =  LT
-_ :: Bool `compare` _ + id 0 :: Int  =  LT
-_ :: Bool `compare` _ + id (id _) :: Int  =  LT
-_ :: Bool `compare` _ + negate _ :: Int  =  LT
-_ :: Bool `compare` _ + abs _ :: Int  =  LT
-_ :: Bool `compare` _ + (_ + _) :: Int  =  LT
-_ :: Bool `compare` _ + head _ :: Int  =  LT
-_ :: Bool `compare` _ + ord _ :: Int  =  LT
-_ :: Bool `compare` x + x :: Int  =  LT
-_ :: Bool `compare` x + 0 :: Int  =  LT
-_ :: Bool `compare` x + id _ :: Int  =  LT
-_ :: Bool `compare` 0 + x :: Int  =  LT
-_ :: Bool `compare` 0 + 0 :: Int  =  LT
-_ :: Bool `compare` 0 + id _ :: Int  =  LT
-_ :: Bool `compare` id _ + x :: Int  =  LT
-_ :: Bool `compare` id _ + 0 :: Int  =  LT
-_ :: Bool `compare` id _ + id _ :: Int  =  LT
-_ :: Bool `compare` _ * x :: Int  =  LT
-_ :: Bool `compare` _ * 0 :: Int  =  LT
-_ :: Bool `compare` _ * id _ :: Int  =  LT
-_ :: Bool `compare` f x :: Int  =  LT
-_ :: Bool `compare` f 0 :: Int  =  LT
-_ :: Bool `compare` f (id _) :: Int  =  LT
-_ :: Bool `compare` y + _ :: Int  =  LT
-_ :: Bool `compare` 1 + _ :: Int  =  LT
-_ :: Bool `compare` id x + _ :: Int  =  LT
-_ :: Bool `compare` id 0 + _ :: Int  =  LT
-_ :: Bool `compare` id (id _) + _ :: Int  =  LT
-_ :: Bool `compare` negate _ + _ :: Int  =  LT
-_ :: Bool `compare` abs _ + _ :: Int  =  LT
-_ :: Bool `compare` (_ + _) + _ :: Int  =  LT
-_ :: Bool `compare` head _ + _ :: Int  =  LT
-_ :: Bool `compare` ord _ + _ :: Int  =  LT
-_ :: Bool `compare` x * _ :: Int  =  LT
-_ :: Bool `compare` 0 * _ :: Int  =  LT
-_ :: Bool `compare` id _ * _ :: Int  =  LT
-_ :: Bool `compare` g _ :: Int  =  LT
-_ :: Bool `compare` head ys :: Int  =  LT
-_ :: Bool `compare` head [0] :: Int  =  LT
-_ :: Bool `compare` head (_:xs) :: Int  =  LT
-_ :: Bool `compare` head [_] :: Int  =  LT
-_ :: Bool `compare` head (_:_:_) :: Int  =  LT
-_ :: Bool `compare` head (x:_) :: Int  =  LT
-_ :: Bool `compare` head (0:_) :: Int  =  LT
-_ :: Bool `compare` head (id _:_) :: Int  =  LT
-_ :: Bool `compare` head (tail _) :: Int  =  LT
-_ :: Bool `compare` head (_ ++ _) :: Int  =  LT
-_ :: Bool `compare` ord d :: Int  =  LT
-_ :: Bool `compare` ord ' ' :: Int  =  LT
-_ :: Bool `compare` r :: Bool  =  LT
-_ :: Bool `compare` not q :: Bool  =  LT
-_ :: Bool `compare` not (not p) :: Bool  =  LT
-_ :: Bool `compare` not (not False) :: Bool  =  LT
-_ :: Bool `compare` not (not True) :: Bool  =  LT
-_ :: Bool `compare` not (not (not _)) :: Bool  =  LT
-_ :: Bool `compare` not (_ || _) :: Bool  =  LT
-_ :: Bool `compare` _ || p :: Bool  =  LT
-_ :: Bool `compare` _ || False :: Bool  =  LT
-_ :: Bool `compare` _ || True :: Bool  =  LT
-_ :: Bool `compare` _ || not _ :: Bool  =  LT
-_ :: Bool `compare` p || _ :: Bool  =  LT
-_ :: Bool `compare` False || _ :: Bool  =  LT
-_ :: Bool `compare` True || _ :: Bool  =  LT
-_ :: Bool `compare` not _ || _ :: Bool  =  LT
-_ :: Bool `compare` _ && _ :: Bool  =  LT
-_ :: Bool `compare` _ == _ :: Bool  =  LT
-_ :: Bool `compare` _ == _ :: Bool  =  LT
-_ :: Bool `compare` odd _ :: Bool  =  LT
-_ :: Bool `compare` even _ :: Bool  =  LT
-_ :: Bool `compare` elem _ _ :: Bool  =  LT
-_ :: Bool `compare` e :: Char  =  LT
-_ :: Bool `compare` 'b' :: Char  =  LT
-_ :: Bool `compare` zs :: [Int]  =  LT
-_ :: Bool `compare` [0,0] :: [Int]  =  LT
-_ :: Bool `compare` [1] :: [Int]  =  LT
-_ :: Bool `compare` _:ys :: [Int]  =  LT
-_ :: Bool `compare` [_,0] :: [Int]  =  LT
-_ :: Bool `compare` _:_:xs :: [Int]  =  LT
-_ :: Bool `compare` [_,_] :: [Int]  =  LT
-_ :: Bool `compare` _:_:_:_ :: [Int]  =  LT
-_ :: Bool `compare` _:x:_ :: [Int]  =  LT
-_ :: Bool `compare` _:0:_ :: [Int]  =  LT
-_ :: Bool `compare` _:id _:_ :: [Int]  =  LT
-_ :: Bool `compare` _:tail _ :: [Int]  =  LT
-_ :: Bool `compare` _:(_ ++ _) :: [Int]  =  LT
-_ :: Bool `compare` x:xs :: [Int]  =  LT
-_ :: Bool `compare` [x] :: [Int]  =  LT
-_ :: Bool `compare` x:_:_ :: [Int]  =  LT
-_ :: Bool `compare` 0:xs :: [Int]  =  LT
-_ :: Bool `compare` [0] :: [Int]  =  LT
-_ :: Bool `compare` 0:_:_ :: [Int]  =  LT
-_ :: Bool `compare` id _:xs :: [Int]  =  LT
-_ :: Bool `compare` [id _] :: [Int]  =  LT
-_ :: Bool `compare` id _:_:_ :: [Int]  =  LT
-_ :: Bool `compare` y:_ :: [Int]  =  LT
-_ :: Bool `compare` 1:_ :: [Int]  =  LT
-_ :: Bool `compare` id x:_ :: [Int]  =  LT
-_ :: Bool `compare` id 0:_ :: [Int]  =  LT
-_ :: Bool `compare` id (id _):_ :: [Int]  =  LT
-_ :: Bool `compare` negate _:_ :: [Int]  =  LT
-_ :: Bool `compare` abs _:_ :: [Int]  =  LT
-_ :: Bool `compare` _ + _:_ :: [Int]  =  LT
-_ :: Bool `compare` head _:_ :: [Int]  =  LT
-_ :: Bool `compare` ord _:_ :: [Int]  =  LT
-_ :: Bool `compare` tail xs :: [Int]  =  LT
-_ :: Bool `compare` tail [] :: [Int]  =  LT
-_ :: Bool `compare` tail (_:_) :: [Int]  =  LT
-_ :: Bool `compare` _ ++ xs :: [Int]  =  LT
-_ :: Bool `compare` _ ++ [] :: [Int]  =  LT
-_ :: Bool `compare` _ ++ (_:_) :: [Int]  =  LT
-_ :: Bool `compare` xs ++ _ :: [Int]  =  LT
-_ :: Bool `compare` [] ++ _ :: [Int]  =  LT
-_ :: Bool `compare` (_:_) ++ _ :: [Int]  =  LT
-_ :: Bool `compare` sort _ :: [Int]  =  LT
-_ :: Bool `compare` insert _ _ :: [Int]  =  LT
-_ :: Bool `compare` (x +) :: Int -> Int  =  LT
-_ :: Bool `compare` (0 +) :: Int -> Int  =  LT
-_ :: Bool `compare` (id _ +) :: Int -> Int  =  LT
-_ :: Bool `compare` (_ *) :: Int -> Int  =  LT
-_ :: Bool `compare` f :: Int -> Int  =  LT
-_ :: Bool `compare` (_ ||) :: Bool -> Bool  =  LT
-_ :: Bool `compare` (&&) :: Bool -> Bool -> Bool  =  LT
-_ :: Char `compare` x' :: Int  =  LT
-_ :: Char `compare` 2 :: Int  =  LT
-_ :: Char `compare` id z :: Int  =  LT
-_ :: Char `compare` id (-1) :: Int  =  LT
-_ :: Char `compare` id (id y) :: Int  =  LT
-_ :: Char `compare` id (id 1) :: Int  =  LT
-_ :: Char `compare` id (id (id x)) :: Int  =  LT
-_ :: Char `compare` id (id (id 0)) :: Int  =  LT
-_ :: Char `compare` id (id (id (id _))) :: Int  =  LT
-_ :: Char `compare` id (id (negate _)) :: Int  =  LT
-_ :: Char `compare` id (id (abs _)) :: Int  =  LT
-_ :: Char `compare` id (id (_ + _)) :: Int  =  LT
-_ :: Char `compare` id (id (head _)) :: Int  =  LT
-_ :: Char `compare` id (id (ord _)) :: Int  =  LT
-_ :: Char `compare` id (negate x) :: Int  =  LT
-_ :: Char `compare` id (negate 0) :: Int  =  LT
-_ :: Char `compare` id (negate (id _)) :: Int  =  LT
-_ :: Char `compare` id (abs x) :: Int  =  LT
-_ :: Char `compare` id (abs 0) :: Int  =  LT
-_ :: Char `compare` id (abs (id _)) :: Int  =  LT
-_ :: Char `compare` id (_ + x) :: Int  =  LT
-_ :: Char `compare` id (_ + 0) :: Int  =  LT
-_ :: Char `compare` id (_ + id _) :: Int  =  LT
-_ :: Char `compare` id (x + _) :: Int  =  LT
-_ :: Char `compare` id (0 + _) :: Int  =  LT
-_ :: Char `compare` id (id _ + _) :: Int  =  LT
-_ :: Char `compare` id (_ * _) :: Int  =  LT
-_ :: Char `compare` id (f _) :: Int  =  LT
-_ :: Char `compare` id (head xs) :: Int  =  LT
-_ :: Char `compare` id (head []) :: Int  =  LT
-_ :: Char `compare` id (head (_:_)) :: Int  =  LT
-_ :: Char `compare` id (ord c) :: Int  =  LT
-_ :: Char `compare` id (ord 'a') :: Int  =  LT
-_ :: Char `compare` negate y :: Int  =  LT
-_ :: Char `compare` negate 1 :: Int  =  LT
-_ :: Char `compare` negate (id x) :: Int  =  LT
-_ :: Char `compare` negate (id 0) :: Int  =  LT
-_ :: Char `compare` negate (id (id _)) :: Int  =  LT
-_ :: Char `compare` negate (negate _) :: Int  =  LT
-_ :: Char `compare` negate (abs _) :: Int  =  LT
-_ :: Char `compare` negate (_ + _) :: Int  =  LT
-_ :: Char `compare` negate (head _) :: Int  =  LT
-_ :: Char `compare` negate (ord _) :: Int  =  LT
-_ :: Char `compare` abs y :: Int  =  LT
-_ :: Char `compare` abs 1 :: Int  =  LT
-_ :: Char `compare` abs (id x) :: Int  =  LT
-_ :: Char `compare` abs (id 0) :: Int  =  LT
-_ :: Char `compare` abs (id (id _)) :: Int  =  LT
-_ :: Char `compare` abs (negate _) :: Int  =  LT
-_ :: Char `compare` abs (abs _) :: Int  =  LT
-_ :: Char `compare` abs (_ + _) :: Int  =  LT
-_ :: Char `compare` abs (head _) :: Int  =  LT
-_ :: Char `compare` abs (ord _) :: Int  =  LT
-_ :: Char `compare` _ + y :: Int  =  LT
-_ :: Char `compare` _ + 1 :: Int  =  LT
-_ :: Char `compare` _ + id x :: Int  =  LT
-_ :: Char `compare` _ + id 0 :: Int  =  LT
-_ :: Char `compare` _ + id (id _) :: Int  =  LT
-_ :: Char `compare` _ + negate _ :: Int  =  LT
-_ :: Char `compare` _ + abs _ :: Int  =  LT
-_ :: Char `compare` _ + (_ + _) :: Int  =  LT
-_ :: Char `compare` _ + head _ :: Int  =  LT
-_ :: Char `compare` _ + ord _ :: Int  =  LT
-_ :: Char `compare` x + x :: Int  =  LT
-_ :: Char `compare` x + 0 :: Int  =  LT
-_ :: Char `compare` x + id _ :: Int  =  LT
-_ :: Char `compare` 0 + x :: Int  =  LT
-_ :: Char `compare` 0 + 0 :: Int  =  LT
-_ :: Char `compare` 0 + id _ :: Int  =  LT
-_ :: Char `compare` id _ + x :: Int  =  LT
-_ :: Char `compare` id _ + 0 :: Int  =  LT
-_ :: Char `compare` id _ + id _ :: Int  =  LT
-_ :: Char `compare` _ * x :: Int  =  LT
-_ :: Char `compare` _ * 0 :: Int  =  LT
-_ :: Char `compare` _ * id _ :: Int  =  LT
-_ :: Char `compare` f x :: Int  =  LT
-_ :: Char `compare` f 0 :: Int  =  LT
-_ :: Char `compare` f (id _) :: Int  =  LT
-_ :: Char `compare` y + _ :: Int  =  LT
-_ :: Char `compare` 1 + _ :: Int  =  LT
-_ :: Char `compare` id x + _ :: Int  =  LT
-_ :: Char `compare` id 0 + _ :: Int  =  LT
-_ :: Char `compare` id (id _) + _ :: Int  =  LT
-_ :: Char `compare` negate _ + _ :: Int  =  LT
-_ :: Char `compare` abs _ + _ :: Int  =  LT
-_ :: Char `compare` (_ + _) + _ :: Int  =  LT
-_ :: Char `compare` head _ + _ :: Int  =  LT
-_ :: Char `compare` ord _ + _ :: Int  =  LT
-_ :: Char `compare` x * _ :: Int  =  LT
-_ :: Char `compare` 0 * _ :: Int  =  LT
-_ :: Char `compare` id _ * _ :: Int  =  LT
-_ :: Char `compare` g _ :: Int  =  LT
-_ :: Char `compare` head ys :: Int  =  LT
-_ :: Char `compare` head [0] :: Int  =  LT
-_ :: Char `compare` head (_:xs) :: Int  =  LT
-_ :: Char `compare` head [_] :: Int  =  LT
-_ :: Char `compare` head (_:_:_) :: Int  =  LT
-_ :: Char `compare` head (x:_) :: Int  =  LT
-_ :: Char `compare` head (0:_) :: Int  =  LT
-_ :: Char `compare` head (id _:_) :: Int  =  LT
-_ :: Char `compare` head (tail _) :: Int  =  LT
-_ :: Char `compare` head (_ ++ _) :: Int  =  LT
-_ :: Char `compare` ord d :: Int  =  LT
-_ :: Char `compare` ord ' ' :: Int  =  LT
-_ :: Char `compare` r :: Bool  =  GT
-_ :: Char `compare` not q :: Bool  =  LT
-_ :: Char `compare` not (not p) :: Bool  =  LT
-_ :: Char `compare` not (not False) :: Bool  =  LT
-_ :: Char `compare` not (not True) :: Bool  =  LT
-_ :: Char `compare` not (not (not _)) :: Bool  =  LT
-_ :: Char `compare` not (_ || _) :: Bool  =  LT
-_ :: Char `compare` _ || p :: Bool  =  LT
-_ :: Char `compare` _ || False :: Bool  =  LT
-_ :: Char `compare` _ || True :: Bool  =  LT
-_ :: Char `compare` _ || not _ :: Bool  =  LT
-_ :: Char `compare` p || _ :: Bool  =  LT
-_ :: Char `compare` False || _ :: Bool  =  LT
-_ :: Char `compare` True || _ :: Bool  =  LT
-_ :: Char `compare` not _ || _ :: Bool  =  LT
-_ :: Char `compare` _ && _ :: Bool  =  LT
-_ :: Char `compare` _ == _ :: Bool  =  LT
-_ :: Char `compare` _ == _ :: Bool  =  LT
-_ :: Char `compare` odd _ :: Bool  =  LT
-_ :: Char `compare` even _ :: Bool  =  LT
-_ :: Char `compare` elem _ _ :: Bool  =  LT
-_ :: Char `compare` e :: Char  =  LT
-_ :: Char `compare` 'b' :: Char  =  LT
-_ :: Char `compare` zs :: [Int]  =  LT
-_ :: Char `compare` [0,0] :: [Int]  =  LT
-_ :: Char `compare` [1] :: [Int]  =  LT
-_ :: Char `compare` _:ys :: [Int]  =  LT
-_ :: Char `compare` [_,0] :: [Int]  =  LT
-_ :: Char `compare` _:_:xs :: [Int]  =  LT
-_ :: Char `compare` [_,_] :: [Int]  =  LT
-_ :: Char `compare` _:_:_:_ :: [Int]  =  LT
-_ :: Char `compare` _:x:_ :: [Int]  =  LT
-_ :: Char `compare` _:0:_ :: [Int]  =  LT
-_ :: Char `compare` _:id _:_ :: [Int]  =  LT
-_ :: Char `compare` _:tail _ :: [Int]  =  LT
-_ :: Char `compare` _:(_ ++ _) :: [Int]  =  LT
-_ :: Char `compare` x:xs :: [Int]  =  LT
-_ :: Char `compare` [x] :: [Int]  =  LT
-_ :: Char `compare` x:_:_ :: [Int]  =  LT
-_ :: Char `compare` 0:xs :: [Int]  =  LT
-_ :: Char `compare` [0] :: [Int]  =  LT
-_ :: Char `compare` 0:_:_ :: [Int]  =  LT
-_ :: Char `compare` id _:xs :: [Int]  =  LT
-_ :: Char `compare` [id _] :: [Int]  =  LT
-_ :: Char `compare` id _:_:_ :: [Int]  =  LT
-_ :: Char `compare` y:_ :: [Int]  =  LT
-_ :: Char `compare` 1:_ :: [Int]  =  LT
-_ :: Char `compare` id x:_ :: [Int]  =  LT
-_ :: Char `compare` id 0:_ :: [Int]  =  LT
-_ :: Char `compare` id (id _):_ :: [Int]  =  LT
-_ :: Char `compare` negate _:_ :: [Int]  =  LT
-_ :: Char `compare` abs _:_ :: [Int]  =  LT
-_ :: Char `compare` _ + _:_ :: [Int]  =  LT
-_ :: Char `compare` head _:_ :: [Int]  =  LT
-_ :: Char `compare` ord _:_ :: [Int]  =  LT
-_ :: Char `compare` tail xs :: [Int]  =  LT
-_ :: Char `compare` tail [] :: [Int]  =  LT
-_ :: Char `compare` tail (_:_) :: [Int]  =  LT
-_ :: Char `compare` _ ++ xs :: [Int]  =  LT
-_ :: Char `compare` _ ++ [] :: [Int]  =  LT
-_ :: Char `compare` _ ++ (_:_) :: [Int]  =  LT
-_ :: Char `compare` xs ++ _ :: [Int]  =  LT
-_ :: Char `compare` [] ++ _ :: [Int]  =  LT
-_ :: Char `compare` (_:_) ++ _ :: [Int]  =  LT
-_ :: Char `compare` sort _ :: [Int]  =  LT
-_ :: Char `compare` insert _ _ :: [Int]  =  LT
-_ :: Char `compare` (x +) :: Int -> Int  =  LT
-_ :: Char `compare` (0 +) :: Int -> Int  =  LT
-_ :: Char `compare` (id _ +) :: Int -> Int  =  LT
-_ :: Char `compare` (_ *) :: Int -> Int  =  LT
-_ :: Char `compare` f :: Int -> Int  =  LT
-_ :: Char `compare` (_ ||) :: Bool -> Bool  =  LT
-_ :: Char `compare` (&&) :: Bool -> Bool -> Bool  =  LT
-_ :: [Int] `compare` x' :: Int  =  GT
-_ :: [Int] `compare` 2 :: Int  =  LT
-_ :: [Int] `compare` id z :: Int  =  LT
-_ :: [Int] `compare` id (-1) :: Int  =  LT
-_ :: [Int] `compare` id (id y) :: Int  =  LT
-_ :: [Int] `compare` id (id 1) :: Int  =  LT
-_ :: [Int] `compare` id (id (id x)) :: Int  =  LT
-_ :: [Int] `compare` id (id (id 0)) :: Int  =  LT
-_ :: [Int] `compare` id (id (id (id _))) :: Int  =  LT
-_ :: [Int] `compare` id (id (negate _)) :: Int  =  LT
-_ :: [Int] `compare` id (id (abs _)) :: Int  =  LT
-_ :: [Int] `compare` id (id (_ + _)) :: Int  =  LT
-_ :: [Int] `compare` id (id (head _)) :: Int  =  LT
-_ :: [Int] `compare` id (id (ord _)) :: Int  =  LT
-_ :: [Int] `compare` id (negate x) :: Int  =  LT
-_ :: [Int] `compare` id (negate 0) :: Int  =  LT
-_ :: [Int] `compare` id (negate (id _)) :: Int  =  LT
-_ :: [Int] `compare` id (abs x) :: Int  =  LT
-_ :: [Int] `compare` id (abs 0) :: Int  =  LT
-_ :: [Int] `compare` id (abs (id _)) :: Int  =  LT
-_ :: [Int] `compare` id (_ + x) :: Int  =  LT
-_ :: [Int] `compare` id (_ + 0) :: Int  =  LT
-_ :: [Int] `compare` id (_ + id _) :: Int  =  LT
-_ :: [Int] `compare` id (x + _) :: Int  =  LT
-_ :: [Int] `compare` id (0 + _) :: Int  =  LT
-_ :: [Int] `compare` id (id _ + _) :: Int  =  LT
-_ :: [Int] `compare` id (_ * _) :: Int  =  LT
-_ :: [Int] `compare` id (f _) :: Int  =  LT
-_ :: [Int] `compare` id (head xs) :: Int  =  LT
-_ :: [Int] `compare` id (head []) :: Int  =  LT
-_ :: [Int] `compare` id (head (_:_)) :: Int  =  LT
-_ :: [Int] `compare` id (ord c) :: Int  =  LT
-_ :: [Int] `compare` id (ord 'a') :: Int  =  LT
-_ :: [Int] `compare` negate y :: Int  =  LT
-_ :: [Int] `compare` negate 1 :: Int  =  LT
-_ :: [Int] `compare` negate (id x) :: Int  =  LT
-_ :: [Int] `compare` negate (id 0) :: Int  =  LT
-_ :: [Int] `compare` negate (id (id _)) :: Int  =  LT
-_ :: [Int] `compare` negate (negate _) :: Int  =  LT
-_ :: [Int] `compare` negate (abs _) :: Int  =  LT
-_ :: [Int] `compare` negate (_ + _) :: Int  =  LT
-_ :: [Int] `compare` negate (head _) :: Int  =  LT
-_ :: [Int] `compare` negate (ord _) :: Int  =  LT
-_ :: [Int] `compare` abs y :: Int  =  LT
-_ :: [Int] `compare` abs 1 :: Int  =  LT
-_ :: [Int] `compare` abs (id x) :: Int  =  LT
-_ :: [Int] `compare` abs (id 0) :: Int  =  LT
-_ :: [Int] `compare` abs (id (id _)) :: Int  =  LT
-_ :: [Int] `compare` abs (negate _) :: Int  =  LT
-_ :: [Int] `compare` abs (abs _) :: Int  =  LT
-_ :: [Int] `compare` abs (_ + _) :: Int  =  LT
-_ :: [Int] `compare` abs (head _) :: Int  =  LT
-_ :: [Int] `compare` abs (ord _) :: Int  =  LT
-_ :: [Int] `compare` _ + y :: Int  =  LT
-_ :: [Int] `compare` _ + 1 :: Int  =  LT
-_ :: [Int] `compare` _ + id x :: Int  =  LT
-_ :: [Int] `compare` _ + id 0 :: Int  =  LT
-_ :: [Int] `compare` _ + id (id _) :: Int  =  LT
-_ :: [Int] `compare` _ + negate _ :: Int  =  LT
-_ :: [Int] `compare` _ + abs _ :: Int  =  LT
-_ :: [Int] `compare` _ + (_ + _) :: Int  =  LT
-_ :: [Int] `compare` _ + head _ :: Int  =  LT
-_ :: [Int] `compare` _ + ord _ :: Int  =  LT
-_ :: [Int] `compare` x + x :: Int  =  LT
-_ :: [Int] `compare` x + 0 :: Int  =  LT
-_ :: [Int] `compare` x + id _ :: Int  =  LT
-_ :: [Int] `compare` 0 + x :: Int  =  LT
-_ :: [Int] `compare` 0 + 0 :: Int  =  LT
-_ :: [Int] `compare` 0 + id _ :: Int  =  LT
-_ :: [Int] `compare` id _ + x :: Int  =  LT
-_ :: [Int] `compare` id _ + 0 :: Int  =  LT
-_ :: [Int] `compare` id _ + id _ :: Int  =  LT
-_ :: [Int] `compare` _ * x :: Int  =  LT
-_ :: [Int] `compare` _ * 0 :: Int  =  LT
-_ :: [Int] `compare` _ * id _ :: Int  =  LT
-_ :: [Int] `compare` f x :: Int  =  LT
-_ :: [Int] `compare` f 0 :: Int  =  LT
-_ :: [Int] `compare` f (id _) :: Int  =  LT
-_ :: [Int] `compare` y + _ :: Int  =  LT
-_ :: [Int] `compare` 1 + _ :: Int  =  LT
-_ :: [Int] `compare` id x + _ :: Int  =  LT
-_ :: [Int] `compare` id 0 + _ :: Int  =  LT
-_ :: [Int] `compare` id (id _) + _ :: Int  =  LT
-_ :: [Int] `compare` negate _ + _ :: Int  =  LT
-_ :: [Int] `compare` abs _ + _ :: Int  =  LT
-_ :: [Int] `compare` (_ + _) + _ :: Int  =  LT
-_ :: [Int] `compare` head _ + _ :: Int  =  LT
-_ :: [Int] `compare` ord _ + _ :: Int  =  LT
-_ :: [Int] `compare` x * _ :: Int  =  LT
-_ :: [Int] `compare` 0 * _ :: Int  =  LT
-_ :: [Int] `compare` id _ * _ :: Int  =  LT
-_ :: [Int] `compare` g _ :: Int  =  LT
-_ :: [Int] `compare` head ys :: Int  =  LT
-_ :: [Int] `compare` head [0] :: Int  =  LT
-_ :: [Int] `compare` head (_:xs) :: Int  =  LT
-_ :: [Int] `compare` head [_] :: Int  =  LT
-_ :: [Int] `compare` head (_:_:_) :: Int  =  LT
-_ :: [Int] `compare` head (x:_) :: Int  =  LT
-_ :: [Int] `compare` head (0:_) :: Int  =  LT
-_ :: [Int] `compare` head (id _:_) :: Int  =  LT
-_ :: [Int] `compare` head (tail _) :: Int  =  LT
-_ :: [Int] `compare` head (_ ++ _) :: Int  =  LT
-_ :: [Int] `compare` ord d :: Int  =  LT
-_ :: [Int] `compare` ord ' ' :: Int  =  LT
-_ :: [Int] `compare` r :: Bool  =  GT
-_ :: [Int] `compare` not q :: Bool  =  LT
-_ :: [Int] `compare` not (not p) :: Bool  =  LT
-_ :: [Int] `compare` not (not False) :: Bool  =  LT
-_ :: [Int] `compare` not (not True) :: Bool  =  LT
-_ :: [Int] `compare` not (not (not _)) :: Bool  =  LT
-_ :: [Int] `compare` not (_ || _) :: Bool  =  LT
-_ :: [Int] `compare` _ || p :: Bool  =  LT
-_ :: [Int] `compare` _ || False :: Bool  =  LT
-_ :: [Int] `compare` _ || True :: Bool  =  LT
-_ :: [Int] `compare` _ || not _ :: Bool  =  LT
-_ :: [Int] `compare` p || _ :: Bool  =  LT
-_ :: [Int] `compare` False || _ :: Bool  =  LT
-_ :: [Int] `compare` True || _ :: Bool  =  LT
-_ :: [Int] `compare` not _ || _ :: Bool  =  LT
-_ :: [Int] `compare` _ && _ :: Bool  =  LT
-_ :: [Int] `compare` _ == _ :: Bool  =  LT
-_ :: [Int] `compare` _ == _ :: Bool  =  LT
-_ :: [Int] `compare` odd _ :: Bool  =  LT
-_ :: [Int] `compare` even _ :: Bool  =  LT
-_ :: [Int] `compare` elem _ _ :: Bool  =  LT
-_ :: [Int] `compare` e :: Char  =  GT
-_ :: [Int] `compare` 'b' :: Char  =  LT
-_ :: [Int] `compare` zs :: [Int]  =  LT
-_ :: [Int] `compare` [0,0] :: [Int]  =  LT
-_ :: [Int] `compare` [1] :: [Int]  =  LT
-_ :: [Int] `compare` _:ys :: [Int]  =  LT
-_ :: [Int] `compare` [_,0] :: [Int]  =  LT
-_ :: [Int] `compare` _:_:xs :: [Int]  =  LT
-_ :: [Int] `compare` [_,_] :: [Int]  =  LT
-_ :: [Int] `compare` _:_:_:_ :: [Int]  =  LT
-_ :: [Int] `compare` _:x:_ :: [Int]  =  LT
-_ :: [Int] `compare` _:0:_ :: [Int]  =  LT
-_ :: [Int] `compare` _:id _:_ :: [Int]  =  LT
-_ :: [Int] `compare` _:tail _ :: [Int]  =  LT
-_ :: [Int] `compare` _:(_ ++ _) :: [Int]  =  LT
-_ :: [Int] `compare` x:xs :: [Int]  =  LT
-_ :: [Int] `compare` [x] :: [Int]  =  LT
-_ :: [Int] `compare` x:_:_ :: [Int]  =  LT
-_ :: [Int] `compare` 0:xs :: [Int]  =  LT
-_ :: [Int] `compare` [0] :: [Int]  =  LT
-_ :: [Int] `compare` 0:_:_ :: [Int]  =  LT
-_ :: [Int] `compare` id _:xs :: [Int]  =  LT
-_ :: [Int] `compare` [id _] :: [Int]  =  LT
-_ :: [Int] `compare` id _:_:_ :: [Int]  =  LT
-_ :: [Int] `compare` y:_ :: [Int]  =  LT
-_ :: [Int] `compare` 1:_ :: [Int]  =  LT
-_ :: [Int] `compare` id x:_ :: [Int]  =  LT
-_ :: [Int] `compare` id 0:_ :: [Int]  =  LT
-_ :: [Int] `compare` id (id _):_ :: [Int]  =  LT
-_ :: [Int] `compare` negate _:_ :: [Int]  =  LT
-_ :: [Int] `compare` abs _:_ :: [Int]  =  LT
-_ :: [Int] `compare` _ + _:_ :: [Int]  =  LT
-_ :: [Int] `compare` head _:_ :: [Int]  =  LT
-_ :: [Int] `compare` ord _:_ :: [Int]  =  LT
-_ :: [Int] `compare` tail xs :: [Int]  =  LT
-_ :: [Int] `compare` tail [] :: [Int]  =  LT
-_ :: [Int] `compare` tail (_:_) :: [Int]  =  LT
-_ :: [Int] `compare` _ ++ xs :: [Int]  =  LT
-_ :: [Int] `compare` _ ++ [] :: [Int]  =  LT
-_ :: [Int] `compare` _ ++ (_:_) :: [Int]  =  LT
-_ :: [Int] `compare` xs ++ _ :: [Int]  =  LT
-_ :: [Int] `compare` [] ++ _ :: [Int]  =  LT
-_ :: [Int] `compare` (_:_) ++ _ :: [Int]  =  LT
-_ :: [Int] `compare` sort _ :: [Int]  =  LT
-_ :: [Int] `compare` insert _ _ :: [Int]  =  LT
-_ :: [Int] `compare` (x +) :: Int -> Int  =  LT
-_ :: [Int] `compare` (0 +) :: Int -> Int  =  LT
-_ :: [Int] `compare` (id _ +) :: Int -> Int  =  LT
-_ :: [Int] `compare` (_ *) :: Int -> Int  =  LT
-_ :: [Int] `compare` f :: Int -> Int  =  LT
-_ :: [Int] `compare` (_ ||) :: Bool -> Bool  =  LT
-_ :: [Int] `compare` (&&) :: Bool -> Bool -> Bool  =  LT
-y :: Int `compare` z :: Int  =  LT
-y :: Int `compare` -1 :: Int  =  LT
-y :: Int `compare` id y :: Int  =  LT
-y :: Int `compare` id 1 :: Int  =  LT
-y :: Int `compare` id (id x) :: Int  =  LT
-y :: Int `compare` id (id 0) :: Int  =  LT
-y :: Int `compare` id (id (id _)) :: Int  =  LT
-y :: Int `compare` id (negate _) :: Int  =  LT
-y :: Int `compare` id (abs _) :: Int  =  LT
-y :: Int `compare` id (_ + _) :: Int  =  LT
-y :: Int `compare` id (head _) :: Int  =  LT
-y :: Int `compare` id (ord _) :: Int  =  LT
-y :: Int `compare` negate x :: Int  =  LT
-y :: Int `compare` negate 0 :: Int  =  LT
-y :: Int `compare` negate (id _) :: Int  =  LT
-y :: Int `compare` abs x :: Int  =  LT
-y :: Int `compare` abs 0 :: Int  =  LT
-y :: Int `compare` abs (id _) :: Int  =  LT
-y :: Int `compare` _ + x :: Int  =  LT
-y :: Int `compare` _ + 0 :: Int  =  LT
-y :: Int `compare` _ + id _ :: Int  =  LT
-y :: Int `compare` x + _ :: Int  =  LT
-y :: Int `compare` 0 + _ :: Int  =  LT
-y :: Int `compare` id _ + _ :: Int  =  LT
-y :: Int `compare` _ * _ :: Int  =  LT
-y :: Int `compare` f _ :: Int  =  LT
-y :: Int `compare` head xs :: Int  =  LT
-y :: Int `compare` head [] :: Int  =  LT
-y :: Int `compare` head (_:_) :: Int  =  LT
-y :: Int `compare` ord c :: Int  =  LT
-y :: Int `compare` ord 'a' :: Int  =  LT
-y :: Int `compare` q :: Bool  =  GT
-y :: Int `compare` not p :: Bool  =  LT
-y :: Int `compare` not False :: Bool  =  LT
-y :: Int `compare` not True :: Bool  =  LT
-y :: Int `compare` not (not _) :: Bool  =  LT
-y :: Int `compare` _ || _ :: Bool  =  LT
-y :: Int `compare` d :: Char  =  GT
-y :: Int `compare` ' ' :: Char  =  LT
-y :: Int `compare` ys :: [Int]  =  LT
-y :: Int `compare` [0] :: [Int]  =  LT
-y :: Int `compare` _:xs :: [Int]  =  LT
-y :: Int `compare` [_] :: [Int]  =  LT
-y :: Int `compare` _:_:_ :: [Int]  =  LT
-y :: Int `compare` x:_ :: [Int]  =  LT
-y :: Int `compare` 0:_ :: [Int]  =  LT
-y :: Int `compare` id _:_ :: [Int]  =  LT
-y :: Int `compare` tail _ :: [Int]  =  LT
-y :: Int `compare` _ ++ _ :: [Int]  =  LT
-y :: Int `compare` negate :: Int -> Int  =  LT
-y :: Int `compare` abs :: Int -> Int  =  LT
-y :: Int `compare` (_ +) :: Int -> Int  =  LT
-y :: Int `compare` (*) :: Int -> Int -> Int  =  LT
-y :: Int `compare` not :: Bool -> Bool  =  LT
-y :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
-1 :: Int `compare` z :: Int  =  GT
-1 :: Int `compare` -1 :: Int  =  LT
-1 :: Int `compare` id y :: Int  =  LT
-1 :: Int `compare` id 1 :: Int  =  LT
-1 :: Int `compare` id (id x) :: Int  =  LT
-1 :: Int `compare` id (id 0) :: Int  =  LT
-1 :: Int `compare` id (id (id _)) :: Int  =  LT
-1 :: Int `compare` id (negate _) :: Int  =  LT
-1 :: Int `compare` id (abs _) :: Int  =  LT
-1 :: Int `compare` id (_ + _) :: Int  =  LT
-1 :: Int `compare` id (head _) :: Int  =  LT
-1 :: Int `compare` id (ord _) :: Int  =  LT
-1 :: Int `compare` negate x :: Int  =  LT
-1 :: Int `compare` negate 0 :: Int  =  LT
-1 :: Int `compare` negate (id _) :: Int  =  LT
-1 :: Int `compare` abs x :: Int  =  LT
-1 :: Int `compare` abs 0 :: Int  =  LT
-1 :: Int `compare` abs (id _) :: Int  =  LT
-1 :: Int `compare` _ + x :: Int  =  LT
-1 :: Int `compare` _ + 0 :: Int  =  LT
-1 :: Int `compare` _ + id _ :: Int  =  LT
-1 :: Int `compare` x + _ :: Int  =  LT
-1 :: Int `compare` 0 + _ :: Int  =  LT
-1 :: Int `compare` id _ + _ :: Int  =  LT
-1 :: Int `compare` _ * _ :: Int  =  LT
-1 :: Int `compare` f _ :: Int  =  LT
-1 :: Int `compare` head xs :: Int  =  LT
-1 :: Int `compare` head [] :: Int  =  LT
-1 :: Int `compare` head (_:_) :: Int  =  LT
-1 :: Int `compare` ord c :: Int  =  LT
-1 :: Int `compare` ord 'a' :: Int  =  LT
-1 :: Int `compare` q :: Bool  =  GT
-1 :: Int `compare` not p :: Bool  =  LT
-1 :: Int `compare` not False :: Bool  =  LT
-1 :: Int `compare` not True :: Bool  =  LT
-1 :: Int `compare` not (not _) :: Bool  =  LT
-1 :: Int `compare` _ || _ :: Bool  =  LT
-1 :: Int `compare` d :: Char  =  GT
-1 :: Int `compare` ' ' :: Char  =  GT
-1 :: Int `compare` ys :: [Int]  =  GT
-1 :: Int `compare` [0] :: [Int]  =  LT
-1 :: Int `compare` _:xs :: [Int]  =  LT
-1 :: Int `compare` [_] :: [Int]  =  LT
-1 :: Int `compare` _:_:_ :: [Int]  =  LT
-1 :: Int `compare` x:_ :: [Int]  =  LT
-1 :: Int `compare` 0:_ :: [Int]  =  LT
-1 :: Int `compare` id _:_ :: [Int]  =  LT
-1 :: Int `compare` tail _ :: [Int]  =  LT
-1 :: Int `compare` _ ++ _ :: [Int]  =  LT
-1 :: Int `compare` negate :: Int -> Int  =  LT
-1 :: Int `compare` abs :: Int -> Int  =  LT
-1 :: Int `compare` (_ +) :: Int -> Int  =  LT
-1 :: Int `compare` (*) :: Int -> Int -> Int  =  LT
-1 :: Int `compare` not :: Bool -> Bool  =  LT
-1 :: Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
-id x :: Int `compare` z :: Int  =  GT
-id x :: Int `compare` -1 :: Int  =  GT
-id x :: Int `compare` id y :: Int  =  LT
-id x :: Int `compare` id 1 :: Int  =  LT
-id x :: Int `compare` id (id x) :: Int  =  LT
-id x :: Int `compare` id (id 0) :: Int  =  LT
-id x :: Int `compare` id (id (id _)) :: Int  =  LT
-id x :: Int `compare` id (negate _) :: Int  =  LT
-id x :: Int `compare` id (abs _) :: Int  =  LT
-id x :: Int `compare` id (_ + _) :: Int  =  LT
-id x :: Int `compare` id (head _) :: Int  =  LT
-id x :: Int `compare` id (ord _) :: Int  =  LT
-id x :: Int `compare` negate x :: Int  =  LT
-id x :: Int `compare` negate 0 :: Int  =  LT
-id x :: Int `compare` negate (id _) :: Int  =  LT
-id x :: Int `compare` abs x :: Int  =  LT
-id x :: Int `compare` abs 0 :: Int  =  LT
-id x :: Int `compare` abs (id _) :: Int  =  LT
-id x :: Int `compare` _ + x :: Int  =  LT
-id x :: Int `compare` _ + 0 :: Int  =  LT
-id x :: Int `compare` _ + id _ :: Int  =  LT
-id x :: Int `compare` x + _ :: Int  =  LT
-id x :: Int `compare` 0 + _ :: Int  =  LT
-id x :: Int `compare` id _ + _ :: Int  =  LT
-id x :: Int `compare` _ * _ :: Int  =  LT
-id x :: Int `compare` f _ :: Int  =  GT
-id x :: Int `compare` head xs :: Int  =  LT
-id x :: Int `compare` head [] :: Int  =  LT
-id x :: Int `compare` head (_:_) :: Int  =  LT
-id x :: Int `compare` ord c :: Int  =  GT
-id x :: Int `compare` ord 'a' :: Int  =  LT
-id x :: Int `compare` q :: Bool  =  GT
-id x :: Int `compare` not p :: Bool  =  GT
-id x :: Int `compare` not False :: Bool  =  LT
-id x :: Int `compare` not True :: Bool  =  LT
-id x :: Int `compare` not (not _) :: Bool  =  LT
-id x :: Int `compare` _ || _ :: Bool  =  LT
-id x :: Int `compare` d :: Char  =  GT
-id x :: Int `compare` ' ' :: Char  =  GT
-id x :: Int `compare` ys :: [Int]  =  GT
-id x :: Int `compare` [0] :: [Int]  =  GT
-id x :: Int `compare` _:xs :: [Int]  =  LT
-id x :: Int `compare` [_] :: [Int]  =  LT
-id x :: Int `compare` _:_:_ :: [Int]  =  LT
-id x :: Int `compare` x:_ :: [Int]  =  LT
-id x :: Int `compare` 0:_ :: [Int]  =  LT
-id x :: Int `compare` id _:_ :: [Int]  =  LT
-id x :: Int `compare` tail _ :: [Int]  =  LT
-id x :: Int `compare` _ ++ _ :: [Int]  =  LT
-id x :: Int `compare` negate :: Int -> Int  =  GT
-id x :: Int `compare` abs :: Int -> Int  =  GT
-id x :: Int `compare` (_ +) :: Int -> Int  =  LT
-id x :: Int `compare` (*) :: Int -> Int -> Int  =  GT
-id x :: Int `compare` not :: Bool -> Bool  =  GT
-id x :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-id 0 :: Int `compare` z :: Int  =  GT
-id 0 :: Int `compare` -1 :: Int  =  GT
-id 0 :: Int `compare` id y :: Int  =  GT
-id 0 :: Int `compare` id 1 :: Int  =  LT
-id 0 :: Int `compare` id (id x) :: Int  =  LT
-id 0 :: Int `compare` id (id 0) :: Int  =  LT
-id 0 :: Int `compare` id (id (id _)) :: Int  =  LT
-id 0 :: Int `compare` id (negate _) :: Int  =  LT
-id 0 :: Int `compare` id (abs _) :: Int  =  LT
-id 0 :: Int `compare` id (_ + _) :: Int  =  LT
-id 0 :: Int `compare` id (head _) :: Int  =  LT
-id 0 :: Int `compare` id (ord _) :: Int  =  LT
-id 0 :: Int `compare` negate x :: Int  =  GT
-id 0 :: Int `compare` negate 0 :: Int  =  LT
-id 0 :: Int `compare` negate (id _) :: Int  =  LT
-id 0 :: Int `compare` abs x :: Int  =  GT
-id 0 :: Int `compare` abs 0 :: Int  =  LT
-id 0 :: Int `compare` abs (id _) :: Int  =  LT
-id 0 :: Int `compare` _ + x :: Int  =  LT
-id 0 :: Int `compare` _ + 0 :: Int  =  LT
-id 0 :: Int `compare` _ + id _ :: Int  =  LT
-id 0 :: Int `compare` x + _ :: Int  =  LT
-id 0 :: Int `compare` 0 + _ :: Int  =  LT
-id 0 :: Int `compare` id _ + _ :: Int  =  LT
-id 0 :: Int `compare` _ * _ :: Int  =  LT
-id 0 :: Int `compare` f _ :: Int  =  GT
-id 0 :: Int `compare` head xs :: Int  =  GT
-id 0 :: Int `compare` head [] :: Int  =  LT
-id 0 :: Int `compare` head (_:_) :: Int  =  LT
-id 0 :: Int `compare` ord c :: Int  =  GT
-id 0 :: Int `compare` ord 'a' :: Int  =  GT
-id 0 :: Int `compare` q :: Bool  =  GT
-id 0 :: Int `compare` not p :: Bool  =  GT
-id 0 :: Int `compare` not False :: Bool  =  GT
-id 0 :: Int `compare` not True :: Bool  =  GT
-id 0 :: Int `compare` not (not _) :: Bool  =  LT
-id 0 :: Int `compare` _ || _ :: Bool  =  LT
-id 0 :: Int `compare` d :: Char  =  GT
-id 0 :: Int `compare` ' ' :: Char  =  GT
-id 0 :: Int `compare` ys :: [Int]  =  GT
-id 0 :: Int `compare` [0] :: [Int]  =  GT
-id 0 :: Int `compare` _:xs :: [Int]  =  LT
-id 0 :: Int `compare` [_] :: [Int]  =  LT
-id 0 :: Int `compare` _:_:_ :: [Int]  =  LT
-id 0 :: Int `compare` x:_ :: [Int]  =  LT
-id 0 :: Int `compare` 0:_ :: [Int]  =  LT
-id 0 :: Int `compare` id _:_ :: [Int]  =  LT
-id 0 :: Int `compare` tail _ :: [Int]  =  GT
-id 0 :: Int `compare` _ ++ _ :: [Int]  =  LT
-id 0 :: Int `compare` negate :: Int -> Int  =  GT
-id 0 :: Int `compare` abs :: Int -> Int  =  GT
-id 0 :: Int `compare` (_ +) :: Int -> Int  =  GT
-id 0 :: Int `compare` (*) :: Int -> Int -> Int  =  GT
-id 0 :: Int `compare` not :: Bool -> Bool  =  GT
-id 0 :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-id (id _) :: Int `compare` z :: Int  =  GT
-id (id _) :: Int `compare` -1 :: Int  =  GT
-id (id _) :: Int `compare` id y :: Int  =  GT
-id (id _) :: Int `compare` id 1 :: Int  =  GT
-id (id _) :: Int `compare` id (id x) :: Int  =  LT
-id (id _) :: Int `compare` id (id 0) :: Int  =  LT
-id (id _) :: Int `compare` id (id (id _)) :: Int  =  LT
-id (id _) :: Int `compare` id (negate _) :: Int  =  LT
-id (id _) :: Int `compare` id (abs _) :: Int  =  LT
-id (id _) :: Int `compare` id (_ + _) :: Int  =  LT
-id (id _) :: Int `compare` id (head _) :: Int  =  LT
-id (id _) :: Int `compare` id (ord _) :: Int  =  LT
-id (id _) :: Int `compare` negate x :: Int  =  GT
-id (id _) :: Int `compare` negate 0 :: Int  =  GT
-id (id _) :: Int `compare` negate (id _) :: Int  =  LT
-id (id _) :: Int `compare` abs x :: Int  =  GT
-id (id _) :: Int `compare` abs 0 :: Int  =  GT
-id (id _) :: Int `compare` abs (id _) :: Int  =  LT
-id (id _) :: Int `compare` _ + x :: Int  =  GT
-id (id _) :: Int `compare` _ + 0 :: Int  =  LT
-id (id _) :: Int `compare` _ + id _ :: Int  =  LT
-id (id _) :: Int `compare` x + _ :: Int  =  GT
-id (id _) :: Int `compare` 0 + _ :: Int  =  LT
-id (id _) :: Int `compare` id _ + _ :: Int  =  LT
-id (id _) :: Int `compare` _ * _ :: Int  =  GT
-id (id _) :: Int `compare` f _ :: Int  =  GT
-id (id _) :: Int `compare` head xs :: Int  =  GT
-id (id _) :: Int `compare` head [] :: Int  =  GT
-id (id _) :: Int `compare` head (_:_) :: Int  =  LT
-id (id _) :: Int `compare` ord c :: Int  =  GT
-id (id _) :: Int `compare` ord 'a' :: Int  =  GT
-id (id _) :: Int `compare` q :: Bool  =  GT
-id (id _) :: Int `compare` not p :: Bool  =  GT
-id (id _) :: Int `compare` not False :: Bool  =  GT
-id (id _) :: Int `compare` not True :: Bool  =  GT
-id (id _) :: Int `compare` not (not _) :: Bool  =  GT
-id (id _) :: Int `compare` _ || _ :: Bool  =  GT
-id (id _) :: Int `compare` d :: Char  =  GT
-id (id _) :: Int `compare` ' ' :: Char  =  GT
-id (id _) :: Int `compare` ys :: [Int]  =  GT
-id (id _) :: Int `compare` [0] :: [Int]  =  GT
-id (id _) :: Int `compare` _:xs :: [Int]  =  GT
-id (id _) :: Int `compare` [_] :: [Int]  =  LT
-id (id _) :: Int `compare` _:_:_ :: [Int]  =  LT
-id (id _) :: Int `compare` x:_ :: [Int]  =  GT
-id (id _) :: Int `compare` 0:_ :: [Int]  =  LT
-id (id _) :: Int `compare` id _:_ :: [Int]  =  LT
-id (id _) :: Int `compare` tail _ :: [Int]  =  GT
-id (id _) :: Int `compare` _ ++ _ :: [Int]  =  GT
-id (id _) :: Int `compare` negate :: Int -> Int  =  GT
-id (id _) :: Int `compare` abs :: Int -> Int  =  GT
-id (id _) :: Int `compare` (_ +) :: Int -> Int  =  GT
-id (id _) :: Int `compare` (*) :: Int -> Int -> Int  =  GT
-id (id _) :: Int `compare` not :: Bool -> Bool  =  GT
-id (id _) :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-negate _ :: Int `compare` z :: Int  =  GT
-negate _ :: Int `compare` -1 :: Int  =  GT
-negate _ :: Int `compare` id y :: Int  =  GT
-negate _ :: Int `compare` id 1 :: Int  =  LT
-negate _ :: Int `compare` id (id x) :: Int  =  LT
-negate _ :: Int `compare` id (id 0) :: Int  =  LT
-negate _ :: Int `compare` id (id (id _)) :: Int  =  LT
-negate _ :: Int `compare` id (negate _) :: Int  =  LT
-negate _ :: Int `compare` id (abs _) :: Int  =  LT
-negate _ :: Int `compare` id (_ + _) :: Int  =  LT
-negate _ :: Int `compare` id (head _) :: Int  =  LT
-negate _ :: Int `compare` id (ord _) :: Int  =  LT
-negate _ :: Int `compare` negate x :: Int  =  LT
-negate _ :: Int `compare` negate 0 :: Int  =  LT
-negate _ :: Int `compare` negate (id _) :: Int  =  LT
-negate _ :: Int `compare` abs x :: Int  =  GT
-negate _ :: Int `compare` abs 0 :: Int  =  LT
-negate _ :: Int `compare` abs (id _) :: Int  =  LT
-negate _ :: Int `compare` _ + x :: Int  =  LT
-negate _ :: Int `compare` _ + 0 :: Int  =  LT
-negate _ :: Int `compare` _ + id _ :: Int  =  LT
-negate _ :: Int `compare` x + _ :: Int  =  LT
-negate _ :: Int `compare` 0 + _ :: Int  =  LT
-negate _ :: Int `compare` id _ + _ :: Int  =  LT
-negate _ :: Int `compare` _ * _ :: Int  =  LT
-negate _ :: Int `compare` f _ :: Int  =  GT
-negate _ :: Int `compare` head xs :: Int  =  LT
-negate _ :: Int `compare` head [] :: Int  =  LT
-negate _ :: Int `compare` head (_:_) :: Int  =  LT
-negate _ :: Int `compare` ord c :: Int  =  GT
-negate _ :: Int `compare` ord 'a' :: Int  =  LT
-negate _ :: Int `compare` q :: Bool  =  GT
-negate _ :: Int `compare` not p :: Bool  =  GT
-negate _ :: Int `compare` not False :: Bool  =  LT
-negate _ :: Int `compare` not True :: Bool  =  LT
-negate _ :: Int `compare` not (not _) :: Bool  =  LT
-negate _ :: Int `compare` _ || _ :: Bool  =  LT
-negate _ :: Int `compare` d :: Char  =  GT
-negate _ :: Int `compare` ' ' :: Char  =  GT
-negate _ :: Int `compare` ys :: [Int]  =  GT
-negate _ :: Int `compare` [0] :: [Int]  =  GT
-negate _ :: Int `compare` _:xs :: [Int]  =  LT
-negate _ :: Int `compare` [_] :: [Int]  =  LT
-negate _ :: Int `compare` _:_:_ :: [Int]  =  LT
-negate _ :: Int `compare` x:_ :: [Int]  =  LT
-negate _ :: Int `compare` 0:_ :: [Int]  =  LT
-negate _ :: Int `compare` id _:_ :: [Int]  =  LT
-negate _ :: Int `compare` tail _ :: [Int]  =  LT
-negate _ :: Int `compare` _ ++ _ :: [Int]  =  LT
-negate _ :: Int `compare` negate :: Int -> Int  =  GT
-negate _ :: Int `compare` abs :: Int -> Int  =  GT
-negate _ :: Int `compare` (_ +) :: Int -> Int  =  LT
-negate _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
-negate _ :: Int `compare` not :: Bool -> Bool  =  GT
-negate _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-abs _ :: Int `compare` z :: Int  =  GT
-abs _ :: Int `compare` -1 :: Int  =  GT
-abs _ :: Int `compare` id y :: Int  =  GT
-abs _ :: Int `compare` id 1 :: Int  =  LT
-abs _ :: Int `compare` id (id x) :: Int  =  LT
-abs _ :: Int `compare` id (id 0) :: Int  =  LT
-abs _ :: Int `compare` id (id (id _)) :: Int  =  LT
-abs _ :: Int `compare` id (negate _) :: Int  =  LT
-abs _ :: Int `compare` id (abs _) :: Int  =  LT
-abs _ :: Int `compare` id (_ + _) :: Int  =  LT
-abs _ :: Int `compare` id (head _) :: Int  =  LT
-abs _ :: Int `compare` id (ord _) :: Int  =  LT
-abs _ :: Int `compare` negate x :: Int  =  LT
-abs _ :: Int `compare` negate 0 :: Int  =  LT
-abs _ :: Int `compare` negate (id _) :: Int  =  LT
-abs _ :: Int `compare` abs x :: Int  =  LT
-abs _ :: Int `compare` abs 0 :: Int  =  LT
-abs _ :: Int `compare` abs (id _) :: Int  =  LT
-abs _ :: Int `compare` _ + x :: Int  =  LT
-abs _ :: Int `compare` _ + 0 :: Int  =  LT
-abs _ :: Int `compare` _ + id _ :: Int  =  LT
-abs _ :: Int `compare` x + _ :: Int  =  LT
-abs _ :: Int `compare` 0 + _ :: Int  =  LT
-abs _ :: Int `compare` id _ + _ :: Int  =  LT
-abs _ :: Int `compare` _ * _ :: Int  =  LT
-abs _ :: Int `compare` f _ :: Int  =  GT
-abs _ :: Int `compare` head xs :: Int  =  LT
-abs _ :: Int `compare` head [] :: Int  =  LT
-abs _ :: Int `compare` head (_:_) :: Int  =  LT
-abs _ :: Int `compare` ord c :: Int  =  GT
-abs _ :: Int `compare` ord 'a' :: Int  =  LT
-abs _ :: Int `compare` q :: Bool  =  GT
-abs _ :: Int `compare` not p :: Bool  =  GT
-abs _ :: Int `compare` not False :: Bool  =  LT
-abs _ :: Int `compare` not True :: Bool  =  LT
-abs _ :: Int `compare` not (not _) :: Bool  =  LT
-abs _ :: Int `compare` _ || _ :: Bool  =  LT
-abs _ :: Int `compare` d :: Char  =  GT
-abs _ :: Int `compare` ' ' :: Char  =  GT
-abs _ :: Int `compare` ys :: [Int]  =  GT
-abs _ :: Int `compare` [0] :: [Int]  =  GT
-abs _ :: Int `compare` _:xs :: [Int]  =  LT
-abs _ :: Int `compare` [_] :: [Int]  =  LT
-abs _ :: Int `compare` _:_:_ :: [Int]  =  LT
-abs _ :: Int `compare` x:_ :: [Int]  =  LT
-abs _ :: Int `compare` 0:_ :: [Int]  =  LT
-abs _ :: Int `compare` id _:_ :: [Int]  =  LT
-abs _ :: Int `compare` tail _ :: [Int]  =  LT
-abs _ :: Int `compare` _ ++ _ :: [Int]  =  LT
-abs _ :: Int `compare` negate :: Int -> Int  =  GT
-abs _ :: Int `compare` abs :: Int -> Int  =  GT
-abs _ :: Int `compare` (_ +) :: Int -> Int  =  LT
-abs _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
-abs _ :: Int `compare` not :: Bool -> Bool  =  GT
-abs _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-_ + _ :: Int `compare` z :: Int  =  GT
-_ + _ :: Int `compare` -1 :: Int  =  GT
-_ + _ :: Int `compare` id y :: Int  =  GT
-_ + _ :: Int `compare` id 1 :: Int  =  GT
-_ + _ :: Int `compare` id (id x) :: Int  =  LT
-_ + _ :: Int `compare` id (id 0) :: Int  =  LT
-_ + _ :: Int `compare` id (id (id _)) :: Int  =  LT
-_ + _ :: Int `compare` id (negate _) :: Int  =  LT
-_ + _ :: Int `compare` id (abs _) :: Int  =  LT
-_ + _ :: Int `compare` id (_ + _) :: Int  =  LT
-_ + _ :: Int `compare` id (head _) :: Int  =  LT
-_ + _ :: Int `compare` id (ord _) :: Int  =  LT
-_ + _ :: Int `compare` negate x :: Int  =  GT
-_ + _ :: Int `compare` negate 0 :: Int  =  GT
-_ + _ :: Int `compare` negate (id _) :: Int  =  LT
-_ + _ :: Int `compare` abs x :: Int  =  GT
-_ + _ :: Int `compare` abs 0 :: Int  =  GT
-_ + _ :: Int `compare` abs (id _) :: Int  =  LT
-_ + _ :: Int `compare` _ + x :: Int  =  GT
-_ + _ :: Int `compare` _ + 0 :: Int  =  LT
-_ + _ :: Int `compare` _ + id _ :: Int  =  LT
-_ + _ :: Int `compare` x + _ :: Int  =  GT
-_ + _ :: Int `compare` 0 + _ :: Int  =  LT
-_ + _ :: Int `compare` id _ + _ :: Int  =  LT
-_ + _ :: Int `compare` _ * _ :: Int  =  GT
-_ + _ :: Int `compare` f _ :: Int  =  GT
-_ + _ :: Int `compare` head xs :: Int  =  GT
-_ + _ :: Int `compare` head [] :: Int  =  GT
-_ + _ :: Int `compare` head (_:_) :: Int  =  LT
-_ + _ :: Int `compare` ord c :: Int  =  GT
-_ + _ :: Int `compare` ord 'a' :: Int  =  GT
-_ + _ :: Int `compare` q :: Bool  =  GT
-_ + _ :: Int `compare` not p :: Bool  =  GT
-_ + _ :: Int `compare` not False :: Bool  =  GT
-_ + _ :: Int `compare` not True :: Bool  =  GT
-_ + _ :: Int `compare` not (not _) :: Bool  =  LT
-_ + _ :: Int `compare` _ || _ :: Bool  =  GT
-_ + _ :: Int `compare` d :: Char  =  GT
-_ + _ :: Int `compare` ' ' :: Char  =  GT
-_ + _ :: Int `compare` ys :: [Int]  =  GT
-_ + _ :: Int `compare` [0] :: [Int]  =  GT
-_ + _ :: Int `compare` _:xs :: [Int]  =  GT
-_ + _ :: Int `compare` [_] :: [Int]  =  LT
-_ + _ :: Int `compare` _:_:_ :: [Int]  =  LT
-_ + _ :: Int `compare` x:_ :: [Int]  =  GT
-_ + _ :: Int `compare` 0:_ :: [Int]  =  LT
-_ + _ :: Int `compare` id _:_ :: [Int]  =  LT
-_ + _ :: Int `compare` tail _ :: [Int]  =  GT
-_ + _ :: Int `compare` _ ++ _ :: [Int]  =  LT
-_ + _ :: Int `compare` negate :: Int -> Int  =  GT
-_ + _ :: Int `compare` abs :: Int -> Int  =  GT
-_ + _ :: Int `compare` (_ +) :: Int -> Int  =  GT
-_ + _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
-_ + _ :: Int `compare` not :: Bool -> Bool  =  GT
-_ + _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-head _ :: Int `compare` z :: Int  =  GT
-head _ :: Int `compare` -1 :: Int  =  GT
-head _ :: Int `compare` id y :: Int  =  GT
-head _ :: Int `compare` id 1 :: Int  =  LT
-head _ :: Int `compare` id (id x) :: Int  =  LT
-head _ :: Int `compare` id (id 0) :: Int  =  LT
-head _ :: Int `compare` id (id (id _)) :: Int  =  LT
-head _ :: Int `compare` id (negate _) :: Int  =  LT
-head _ :: Int `compare` id (abs _) :: Int  =  LT
-head _ :: Int `compare` id (_ + _) :: Int  =  LT
-head _ :: Int `compare` id (head _) :: Int  =  LT
-head _ :: Int `compare` id (ord _) :: Int  =  LT
-head _ :: Int `compare` negate x :: Int  =  GT
-head _ :: Int `compare` negate 0 :: Int  =  LT
-head _ :: Int `compare` negate (id _) :: Int  =  LT
-head _ :: Int `compare` abs x :: Int  =  GT
-head _ :: Int `compare` abs 0 :: Int  =  LT
-head _ :: Int `compare` abs (id _) :: Int  =  LT
-head _ :: Int `compare` _ + x :: Int  =  LT
-head _ :: Int `compare` _ + 0 :: Int  =  LT
-head _ :: Int `compare` _ + id _ :: Int  =  LT
-head _ :: Int `compare` x + _ :: Int  =  LT
-head _ :: Int `compare` 0 + _ :: Int  =  LT
-head _ :: Int `compare` id _ + _ :: Int  =  LT
-head _ :: Int `compare` _ * _ :: Int  =  LT
-head _ :: Int `compare` f _ :: Int  =  GT
-head _ :: Int `compare` head xs :: Int  =  LT
-head _ :: Int `compare` head [] :: Int  =  LT
-head _ :: Int `compare` head (_:_) :: Int  =  LT
-head _ :: Int `compare` ord c :: Int  =  GT
-head _ :: Int `compare` ord 'a' :: Int  =  LT
-head _ :: Int `compare` q :: Bool  =  GT
-head _ :: Int `compare` not p :: Bool  =  GT
-head _ :: Int `compare` not False :: Bool  =  LT
-head _ :: Int `compare` not True :: Bool  =  LT
-head _ :: Int `compare` not (not _) :: Bool  =  LT
-head _ :: Int `compare` _ || _ :: Bool  =  LT
-head _ :: Int `compare` d :: Char  =  GT
-head _ :: Int `compare` ' ' :: Char  =  GT
-head _ :: Int `compare` ys :: [Int]  =  GT
-head _ :: Int `compare` [0] :: [Int]  =  GT
-head _ :: Int `compare` _:xs :: [Int]  =  LT
-head _ :: Int `compare` [_] :: [Int]  =  LT
-head _ :: Int `compare` _:_:_ :: [Int]  =  LT
-head _ :: Int `compare` x:_ :: [Int]  =  LT
-head _ :: Int `compare` 0:_ :: [Int]  =  LT
-head _ :: Int `compare` id _:_ :: [Int]  =  LT
-head _ :: Int `compare` tail _ :: [Int]  =  LT
-head _ :: Int `compare` _ ++ _ :: [Int]  =  LT
-head _ :: Int `compare` negate :: Int -> Int  =  GT
-head _ :: Int `compare` abs :: Int -> Int  =  GT
-head _ :: Int `compare` (_ +) :: Int -> Int  =  LT
-head _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
-head _ :: Int `compare` not :: Bool -> Bool  =  GT
-head _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-ord _ :: Int `compare` z :: Int  =  GT
-ord _ :: Int `compare` -1 :: Int  =  GT
-ord _ :: Int `compare` id y :: Int  =  LT
-ord _ :: Int `compare` id 1 :: Int  =  LT
-ord _ :: Int `compare` id (id x) :: Int  =  LT
-ord _ :: Int `compare` id (id 0) :: Int  =  LT
-ord _ :: Int `compare` id (id (id _)) :: Int  =  LT
-ord _ :: Int `compare` id (negate _) :: Int  =  LT
-ord _ :: Int `compare` id (abs _) :: Int  =  LT
-ord _ :: Int `compare` id (_ + _) :: Int  =  LT
-ord _ :: Int `compare` id (head _) :: Int  =  LT
-ord _ :: Int `compare` id (ord _) :: Int  =  LT
-ord _ :: Int `compare` negate x :: Int  =  LT
-ord _ :: Int `compare` negate 0 :: Int  =  LT
-ord _ :: Int `compare` negate (id _) :: Int  =  LT
-ord _ :: Int `compare` abs x :: Int  =  LT
-ord _ :: Int `compare` abs 0 :: Int  =  LT
-ord _ :: Int `compare` abs (id _) :: Int  =  LT
-ord _ :: Int `compare` _ + x :: Int  =  LT
-ord _ :: Int `compare` _ + 0 :: Int  =  LT
-ord _ :: Int `compare` _ + id _ :: Int  =  LT
-ord _ :: Int `compare` x + _ :: Int  =  LT
-ord _ :: Int `compare` 0 + _ :: Int  =  LT
-ord _ :: Int `compare` id _ + _ :: Int  =  LT
-ord _ :: Int `compare` _ * _ :: Int  =  LT
-ord _ :: Int `compare` f _ :: Int  =  GT
-ord _ :: Int `compare` head xs :: Int  =  LT
-ord _ :: Int `compare` head [] :: Int  =  LT
-ord _ :: Int `compare` head (_:_) :: Int  =  LT
-ord _ :: Int `compare` ord c :: Int  =  LT
-ord _ :: Int `compare` ord 'a' :: Int  =  LT
-ord _ :: Int `compare` q :: Bool  =  GT
-ord _ :: Int `compare` not p :: Bool  =  GT
-ord _ :: Int `compare` not False :: Bool  =  LT
-ord _ :: Int `compare` not True :: Bool  =  LT
-ord _ :: Int `compare` not (not _) :: Bool  =  LT
-ord _ :: Int `compare` _ || _ :: Bool  =  LT
-ord _ :: Int `compare` d :: Char  =  GT
-ord _ :: Int `compare` ' ' :: Char  =  GT
-ord _ :: Int `compare` ys :: [Int]  =  GT
-ord _ :: Int `compare` [0] :: [Int]  =  GT
-ord _ :: Int `compare` _:xs :: [Int]  =  LT
-ord _ :: Int `compare` [_] :: [Int]  =  LT
-ord _ :: Int `compare` _:_:_ :: [Int]  =  LT
-ord _ :: Int `compare` x:_ :: [Int]  =  LT
-ord _ :: Int `compare` 0:_ :: [Int]  =  LT
-ord _ :: Int `compare` id _:_ :: [Int]  =  LT
-ord _ :: Int `compare` tail _ :: [Int]  =  LT
-ord _ :: Int `compare` _ ++ _ :: [Int]  =  LT
-ord _ :: Int `compare` negate :: Int -> Int  =  GT
-ord _ :: Int `compare` abs :: Int -> Int  =  GT
-ord _ :: Int `compare` (_ +) :: Int -> Int  =  LT
-ord _ :: Int `compare` (*) :: Int -> Int -> Int  =  GT
-ord _ :: Int `compare` not :: Bool -> Bool  =  GT
-ord _ :: Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-p :: Bool `compare` z :: Int  =  LT
-p :: Bool `compare` -1 :: Int  =  LT
-p :: Bool `compare` id y :: Int  =  LT
-p :: Bool `compare` id 1 :: Int  =  LT
-p :: Bool `compare` id (id x) :: Int  =  LT
-p :: Bool `compare` id (id 0) :: Int  =  LT
-p :: Bool `compare` id (id (id _)) :: Int  =  LT
-p :: Bool `compare` id (negate _) :: Int  =  LT
-p :: Bool `compare` id (abs _) :: Int  =  LT
-p :: Bool `compare` id (_ + _) :: Int  =  LT
-p :: Bool `compare` id (head _) :: Int  =  LT
-p :: Bool `compare` id (ord _) :: Int  =  LT
-p :: Bool `compare` negate x :: Int  =  LT
-p :: Bool `compare` negate 0 :: Int  =  LT
-p :: Bool `compare` negate (id _) :: Int  =  LT
-p :: Bool `compare` abs x :: Int  =  LT
-p :: Bool `compare` abs 0 :: Int  =  LT
-p :: Bool `compare` abs (id _) :: Int  =  LT
-p :: Bool `compare` _ + x :: Int  =  LT
-p :: Bool `compare` _ + 0 :: Int  =  LT
-p :: Bool `compare` _ + id _ :: Int  =  LT
-p :: Bool `compare` x + _ :: Int  =  LT
-p :: Bool `compare` 0 + _ :: Int  =  LT
-p :: Bool `compare` id _ + _ :: Int  =  LT
-p :: Bool `compare` _ * _ :: Int  =  LT
-p :: Bool `compare` f _ :: Int  =  LT
-p :: Bool `compare` head xs :: Int  =  LT
-p :: Bool `compare` head [] :: Int  =  LT
-p :: Bool `compare` head (_:_) :: Int  =  LT
-p :: Bool `compare` ord c :: Int  =  LT
-p :: Bool `compare` ord 'a' :: Int  =  LT
-p :: Bool `compare` q :: Bool  =  LT
-p :: Bool `compare` not p :: Bool  =  LT
-p :: Bool `compare` not False :: Bool  =  LT
-p :: Bool `compare` not True :: Bool  =  LT
-p :: Bool `compare` not (not _) :: Bool  =  LT
-p :: Bool `compare` _ || _ :: Bool  =  LT
-p :: Bool `compare` d :: Char  =  LT
-p :: Bool `compare` ' ' :: Char  =  LT
-p :: Bool `compare` ys :: [Int]  =  LT
-p :: Bool `compare` [0] :: [Int]  =  LT
-p :: Bool `compare` _:xs :: [Int]  =  LT
-p :: Bool `compare` [_] :: [Int]  =  LT
-p :: Bool `compare` _:_:_ :: [Int]  =  LT
-p :: Bool `compare` x:_ :: [Int]  =  LT
-p :: Bool `compare` 0:_ :: [Int]  =  LT
-p :: Bool `compare` id _:_ :: [Int]  =  LT
-p :: Bool `compare` tail _ :: [Int]  =  LT
-p :: Bool `compare` _ ++ _ :: [Int]  =  LT
-p :: Bool `compare` negate :: Int -> Int  =  LT
-p :: Bool `compare` abs :: Int -> Int  =  LT
-p :: Bool `compare` (_ +) :: Int -> Int  =  LT
-p :: Bool `compare` (*) :: Int -> Int -> Int  =  LT
-p :: Bool `compare` not :: Bool -> Bool  =  LT
-p :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  LT
-False :: Bool `compare` z :: Int  =  GT
-False :: Bool `compare` -1 :: Int  =  LT
-False :: Bool `compare` id y :: Int  =  LT
-False :: Bool `compare` id 1 :: Int  =  LT
-False :: Bool `compare` id (id x) :: Int  =  LT
-False :: Bool `compare` id (id 0) :: Int  =  LT
-False :: Bool `compare` id (id (id _)) :: Int  =  LT
-False :: Bool `compare` id (negate _) :: Int  =  LT
-False :: Bool `compare` id (abs _) :: Int  =  LT
-False :: Bool `compare` id (_ + _) :: Int  =  LT
-False :: Bool `compare` id (head _) :: Int  =  LT
-False :: Bool `compare` id (ord _) :: Int  =  LT
-False :: Bool `compare` negate x :: Int  =  LT
-False :: Bool `compare` negate 0 :: Int  =  LT
-False :: Bool `compare` negate (id _) :: Int  =  LT
-False :: Bool `compare` abs x :: Int  =  LT
-False :: Bool `compare` abs 0 :: Int  =  LT
-False :: Bool `compare` abs (id _) :: Int  =  LT
-False :: Bool `compare` _ + x :: Int  =  LT
-False :: Bool `compare` _ + 0 :: Int  =  LT
-False :: Bool `compare` _ + id _ :: Int  =  LT
-False :: Bool `compare` x + _ :: Int  =  LT
-False :: Bool `compare` 0 + _ :: Int  =  LT
-False :: Bool `compare` id _ + _ :: Int  =  LT
-False :: Bool `compare` _ * _ :: Int  =  LT
-False :: Bool `compare` f _ :: Int  =  LT
-False :: Bool `compare` head xs :: Int  =  LT
-False :: Bool `compare` head [] :: Int  =  LT
-False :: Bool `compare` head (_:_) :: Int  =  LT
-False :: Bool `compare` ord c :: Int  =  LT
-False :: Bool `compare` ord 'a' :: Int  =  LT
-False :: Bool `compare` q :: Bool  =  GT
-False :: Bool `compare` not p :: Bool  =  LT
-False :: Bool `compare` not False :: Bool  =  LT
-False :: Bool `compare` not True :: Bool  =  LT
-False :: Bool `compare` not (not _) :: Bool  =  LT
-False :: Bool `compare` _ || _ :: Bool  =  LT
-False :: Bool `compare` d :: Char  =  GT
-False :: Bool `compare` ' ' :: Char  =  LT
-False :: Bool `compare` ys :: [Int]  =  GT
-False :: Bool `compare` [0] :: [Int]  =  LT
-False :: Bool `compare` _:xs :: [Int]  =  LT
-False :: Bool `compare` [_] :: [Int]  =  LT
-False :: Bool `compare` _:_:_ :: [Int]  =  LT
-False :: Bool `compare` x:_ :: [Int]  =  LT
-False :: Bool `compare` 0:_ :: [Int]  =  LT
-False :: Bool `compare` id _:_ :: [Int]  =  LT
-False :: Bool `compare` tail _ :: [Int]  =  LT
-False :: Bool `compare` _ ++ _ :: [Int]  =  LT
-False :: Bool `compare` negate :: Int -> Int  =  LT
-False :: Bool `compare` abs :: Int -> Int  =  LT
-False :: Bool `compare` (_ +) :: Int -> Int  =  LT
-False :: Bool `compare` (*) :: Int -> Int -> Int  =  LT
-False :: Bool `compare` not :: Bool -> Bool  =  LT
-False :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  LT
-True :: Bool `compare` z :: Int  =  GT
-True :: Bool `compare` -1 :: Int  =  LT
-True :: Bool `compare` id y :: Int  =  LT
-True :: Bool `compare` id 1 :: Int  =  LT
-True :: Bool `compare` id (id x) :: Int  =  LT
-True :: Bool `compare` id (id 0) :: Int  =  LT
-True :: Bool `compare` id (id (id _)) :: Int  =  LT
-True :: Bool `compare` id (negate _) :: Int  =  LT
-True :: Bool `compare` id (abs _) :: Int  =  LT
-True :: Bool `compare` id (_ + _) :: Int  =  LT
-True :: Bool `compare` id (head _) :: Int  =  LT
-True :: Bool `compare` id (ord _) :: Int  =  LT
-True :: Bool `compare` negate x :: Int  =  LT
-True :: Bool `compare` negate 0 :: Int  =  LT
-True :: Bool `compare` negate (id _) :: Int  =  LT
-True :: Bool `compare` abs x :: Int  =  LT
-True :: Bool `compare` abs 0 :: Int  =  LT
-True :: Bool `compare` abs (id _) :: Int  =  LT
-True :: Bool `compare` _ + x :: Int  =  LT
-True :: Bool `compare` _ + 0 :: Int  =  LT
-True :: Bool `compare` _ + id _ :: Int  =  LT
-True :: Bool `compare` x + _ :: Int  =  LT
-True :: Bool `compare` 0 + _ :: Int  =  LT
-True :: Bool `compare` id _ + _ :: Int  =  LT
-True :: Bool `compare` _ * _ :: Int  =  LT
-True :: Bool `compare` f _ :: Int  =  LT
-True :: Bool `compare` head xs :: Int  =  LT
-True :: Bool `compare` head [] :: Int  =  LT
-True :: Bool `compare` head (_:_) :: Int  =  LT
-True :: Bool `compare` ord c :: Int  =  LT
-True :: Bool `compare` ord 'a' :: Int  =  LT
-True :: Bool `compare` q :: Bool  =  GT
-True :: Bool `compare` not p :: Bool  =  LT
-True :: Bool `compare` not False :: Bool  =  LT
-True :: Bool `compare` not True :: Bool  =  LT
-True :: Bool `compare` not (not _) :: Bool  =  LT
-True :: Bool `compare` _ || _ :: Bool  =  LT
-True :: Bool `compare` d :: Char  =  GT
-True :: Bool `compare` ' ' :: Char  =  LT
-True :: Bool `compare` ys :: [Int]  =  GT
-True :: Bool `compare` [0] :: [Int]  =  LT
-True :: Bool `compare` _:xs :: [Int]  =  LT
-True :: Bool `compare` [_] :: [Int]  =  LT
-True :: Bool `compare` _:_:_ :: [Int]  =  LT
-True :: Bool `compare` x:_ :: [Int]  =  LT
-True :: Bool `compare` 0:_ :: [Int]  =  LT
-True :: Bool `compare` id _:_ :: [Int]  =  LT
-True :: Bool `compare` tail _ :: [Int]  =  LT
-True :: Bool `compare` _ ++ _ :: [Int]  =  LT
-True :: Bool `compare` negate :: Int -> Int  =  LT
-True :: Bool `compare` abs :: Int -> Int  =  LT
-True :: Bool `compare` (_ +) :: Int -> Int  =  LT
-True :: Bool `compare` (*) :: Int -> Int -> Int  =  LT
-True :: Bool `compare` not :: Bool -> Bool  =  LT
-True :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  LT
-not _ :: Bool `compare` z :: Int  =  GT
-not _ :: Bool `compare` -1 :: Int  =  GT
-not _ :: Bool `compare` id y :: Int  =  LT
-not _ :: Bool `compare` id 1 :: Int  =  LT
-not _ :: Bool `compare` id (id x) :: Int  =  LT
-not _ :: Bool `compare` id (id 0) :: Int  =  LT
-not _ :: Bool `compare` id (id (id _)) :: Int  =  LT
-not _ :: Bool `compare` id (negate _) :: Int  =  LT
-not _ :: Bool `compare` id (abs _) :: Int  =  LT
-not _ :: Bool `compare` id (_ + _) :: Int  =  LT
-not _ :: Bool `compare` id (head _) :: Int  =  LT
-not _ :: Bool `compare` id (ord _) :: Int  =  LT
-not _ :: Bool `compare` negate x :: Int  =  LT
-not _ :: Bool `compare` negate 0 :: Int  =  LT
-not _ :: Bool `compare` negate (id _) :: Int  =  LT
-not _ :: Bool `compare` abs x :: Int  =  LT
-not _ :: Bool `compare` abs 0 :: Int  =  LT
-not _ :: Bool `compare` abs (id _) :: Int  =  LT
-not _ :: Bool `compare` _ + x :: Int  =  LT
-not _ :: Bool `compare` _ + 0 :: Int  =  LT
-not _ :: Bool `compare` _ + id _ :: Int  =  LT
-not _ :: Bool `compare` x + _ :: Int  =  LT
-not _ :: Bool `compare` 0 + _ :: Int  =  LT
-not _ :: Bool `compare` id _ + _ :: Int  =  LT
-not _ :: Bool `compare` _ * _ :: Int  =  LT
-not _ :: Bool `compare` f _ :: Int  =  GT
-not _ :: Bool `compare` head xs :: Int  =  LT
-not _ :: Bool `compare` head [] :: Int  =  LT
-not _ :: Bool `compare` head (_:_) :: Int  =  LT
-not _ :: Bool `compare` ord c :: Int  =  LT
-not _ :: Bool `compare` ord 'a' :: Int  =  LT
-not _ :: Bool `compare` q :: Bool  =  GT
-not _ :: Bool `compare` not p :: Bool  =  LT
-not _ :: Bool `compare` not False :: Bool  =  LT
-not _ :: Bool `compare` not True :: Bool  =  LT
-not _ :: Bool `compare` not (not _) :: Bool  =  LT
-not _ :: Bool `compare` _ || _ :: Bool  =  LT
-not _ :: Bool `compare` d :: Char  =  GT
-not _ :: Bool `compare` ' ' :: Char  =  GT
-not _ :: Bool `compare` ys :: [Int]  =  GT
-not _ :: Bool `compare` [0] :: [Int]  =  GT
-not _ :: Bool `compare` _:xs :: [Int]  =  LT
-not _ :: Bool `compare` [_] :: [Int]  =  LT
-not _ :: Bool `compare` _:_:_ :: [Int]  =  LT
-not _ :: Bool `compare` x:_ :: [Int]  =  LT
-not _ :: Bool `compare` 0:_ :: [Int]  =  LT
-not _ :: Bool `compare` id _:_ :: [Int]  =  LT
-not _ :: Bool `compare` tail _ :: [Int]  =  LT
-not _ :: Bool `compare` _ ++ _ :: [Int]  =  LT
-not _ :: Bool `compare` negate :: Int -> Int  =  GT
-not _ :: Bool `compare` abs :: Int -> Int  =  GT
-not _ :: Bool `compare` (_ +) :: Int -> Int  =  LT
-not _ :: Bool `compare` (*) :: Int -> Int -> Int  =  GT
-not _ :: Bool `compare` not :: Bool -> Bool  =  GT
-not _ :: Bool `compare` (||) :: Bool -> Bool -> Bool  =  GT
-c :: Char `compare` z :: Int  =  LT
-c :: Char `compare` -1 :: Int  =  LT
-c :: Char `compare` id y :: Int  =  LT
-c :: Char `compare` id 1 :: Int  =  LT
-c :: Char `compare` id (id x) :: Int  =  LT
-c :: Char `compare` id (id 0) :: Int  =  LT
-c :: Char `compare` id (id (id _)) :: Int  =  LT
-c :: Char `compare` id (negate _) :: Int  =  LT
-c :: Char `compare` id (abs _) :: Int  =  LT
-c :: Char `compare` id (_ + _) :: Int  =  LT
-c :: Char `compare` id (head _) :: Int  =  LT
-c :: Char `compare` id (ord _) :: Int  =  LT
-c :: Char `compare` negate x :: Int  =  LT
-c :: Char `compare` negate 0 :: Int  =  LT
-c :: Char `compare` negate (id _) :: Int  =  LT
-c :: Char `compare` abs x :: Int  =  LT
-c :: Char `compare` abs 0 :: Int  =  LT
-c :: Char `compare` abs (id _) :: Int  =  LT
-c :: Char `compare` _ + x :: Int  =  LT
-c :: Char `compare` _ + 0 :: Int  =  LT
-c :: Char `compare` _ + id _ :: Int  =  LT
-c :: Char `compare` x + _ :: Int  =  LT
-c :: Char `compare` 0 + _ :: Int  =  LT
-c :: Char `compare` id _ + _ :: Int  =  LT
-c :: Char `compare` _ * _ :: Int  =  LT
-c :: Char `compare` f _ :: Int  =  LT
-c :: Char `compare` head xs :: Int  =  LT
-c :: Char `compare` head [] :: Int  =  LT
-c :: Char `compare` head (_:_) :: Int  =  LT
-c :: Char `compare` ord c :: Int  =  LT
-c :: Char `compare` ord 'a' :: Int  =  LT
-c :: Char `compare` q :: Bool  =  GT
-c :: Char `compare` not p :: Bool  =  LT
-c :: Char `compare` not False :: Bool  =  LT
-c :: Char `compare` not True :: Bool  =  LT
-c :: Char `compare` not (not _) :: Bool  =  LT
-c :: Char `compare` _ || _ :: Bool  =  LT
-c :: Char `compare` d :: Char  =  LT
-c :: Char `compare` ' ' :: Char  =  LT
-c :: Char `compare` ys :: [Int]  =  LT
-c :: Char `compare` [0] :: [Int]  =  LT
-c :: Char `compare` _:xs :: [Int]  =  LT
-c :: Char `compare` [_] :: [Int]  =  LT
-c :: Char `compare` _:_:_ :: [Int]  =  LT
-c :: Char `compare` x:_ :: [Int]  =  LT
-c :: Char `compare` 0:_ :: [Int]  =  LT
-c :: Char `compare` id _:_ :: [Int]  =  LT
-c :: Char `compare` tail _ :: [Int]  =  LT
-c :: Char `compare` _ ++ _ :: [Int]  =  LT
-c :: Char `compare` negate :: Int -> Int  =  LT
-c :: Char `compare` abs :: Int -> Int  =  LT
-c :: Char `compare` (_ +) :: Int -> Int  =  LT
-c :: Char `compare` (*) :: Int -> Int -> Int  =  LT
-c :: Char `compare` not :: Bool -> Bool  =  LT
-c :: Char `compare` (||) :: Bool -> Bool -> Bool  =  LT
-'a' :: Char `compare` z :: Int  =  GT
-'a' :: Char `compare` -1 :: Int  =  LT
-'a' :: Char `compare` id y :: Int  =  LT
-'a' :: Char `compare` id 1 :: Int  =  LT
-'a' :: Char `compare` id (id x) :: Int  =  LT
-'a' :: Char `compare` id (id 0) :: Int  =  LT
-'a' :: Char `compare` id (id (id _)) :: Int  =  LT
-'a' :: Char `compare` id (negate _) :: Int  =  LT
-'a' :: Char `compare` id (abs _) :: Int  =  LT
-'a' :: Char `compare` id (_ + _) :: Int  =  LT
-'a' :: Char `compare` id (head _) :: Int  =  LT
-'a' :: Char `compare` id (ord _) :: Int  =  LT
-'a' :: Char `compare` negate x :: Int  =  LT
-'a' :: Char `compare` negate 0 :: Int  =  LT
-'a' :: Char `compare` negate (id _) :: Int  =  LT
-'a' :: Char `compare` abs x :: Int  =  LT
-'a' :: Char `compare` abs 0 :: Int  =  LT
-'a' :: Char `compare` abs (id _) :: Int  =  LT
-'a' :: Char `compare` _ + x :: Int  =  LT
-'a' :: Char `compare` _ + 0 :: Int  =  LT
-'a' :: Char `compare` _ + id _ :: Int  =  LT
-'a' :: Char `compare` x + _ :: Int  =  LT
-'a' :: Char `compare` 0 + _ :: Int  =  LT
-'a' :: Char `compare` id _ + _ :: Int  =  LT
-'a' :: Char `compare` _ * _ :: Int  =  LT
-'a' :: Char `compare` f _ :: Int  =  LT
-'a' :: Char `compare` head xs :: Int  =  LT
-'a' :: Char `compare` head [] :: Int  =  LT
-'a' :: Char `compare` head (_:_) :: Int  =  LT
-'a' :: Char `compare` ord c :: Int  =  LT
-'a' :: Char `compare` ord 'a' :: Int  =  LT
-'a' :: Char `compare` q :: Bool  =  GT
-'a' :: Char `compare` not p :: Bool  =  LT
-'a' :: Char `compare` not False :: Bool  =  LT
-'a' :: Char `compare` not True :: Bool  =  LT
-'a' :: Char `compare` not (not _) :: Bool  =  LT
-'a' :: Char `compare` _ || _ :: Bool  =  LT
-'a' :: Char `compare` d :: Char  =  GT
-'a' :: Char `compare` ' ' :: Char  =  GT
-'a' :: Char `compare` ys :: [Int]  =  GT
-'a' :: Char `compare` [0] :: [Int]  =  LT
-'a' :: Char `compare` _:xs :: [Int]  =  LT
-'a' :: Char `compare` [_] :: [Int]  =  LT
-'a' :: Char `compare` _:_:_ :: [Int]  =  LT
-'a' :: Char `compare` x:_ :: [Int]  =  LT
-'a' :: Char `compare` 0:_ :: [Int]  =  LT
-'a' :: Char `compare` id _:_ :: [Int]  =  LT
-'a' :: Char `compare` tail _ :: [Int]  =  LT
-'a' :: Char `compare` _ ++ _ :: [Int]  =  LT
-'a' :: Char `compare` negate :: Int -> Int  =  LT
-'a' :: Char `compare` abs :: Int -> Int  =  LT
-'a' :: Char `compare` (_ +) :: Int -> Int  =  LT
-'a' :: Char `compare` (*) :: Int -> Int -> Int  =  LT
-'a' :: Char `compare` not :: Bool -> Bool  =  LT
-'a' :: Char `compare` (||) :: Bool -> Bool -> Bool  =  LT
-xs :: [Int] `compare` z :: Int  =  GT
-xs :: [Int] `compare` -1 :: Int  =  LT
-xs :: [Int] `compare` id y :: Int  =  LT
-xs :: [Int] `compare` id 1 :: Int  =  LT
-xs :: [Int] `compare` id (id x) :: Int  =  LT
-xs :: [Int] `compare` id (id 0) :: Int  =  LT
-xs :: [Int] `compare` id (id (id _)) :: Int  =  LT
-xs :: [Int] `compare` id (negate _) :: Int  =  LT
-xs :: [Int] `compare` id (abs _) :: Int  =  LT
-xs :: [Int] `compare` id (_ + _) :: Int  =  LT
-xs :: [Int] `compare` id (head _) :: Int  =  LT
-xs :: [Int] `compare` id (ord _) :: Int  =  LT
-xs :: [Int] `compare` negate x :: Int  =  LT
-xs :: [Int] `compare` negate 0 :: Int  =  LT
-xs :: [Int] `compare` negate (id _) :: Int  =  LT
-xs :: [Int] `compare` abs x :: Int  =  LT
-xs :: [Int] `compare` abs 0 :: Int  =  LT
-xs :: [Int] `compare` abs (id _) :: Int  =  LT
-xs :: [Int] `compare` _ + x :: Int  =  LT
-xs :: [Int] `compare` _ + 0 :: Int  =  LT
-xs :: [Int] `compare` _ + id _ :: Int  =  LT
-xs :: [Int] `compare` x + _ :: Int  =  LT
-xs :: [Int] `compare` 0 + _ :: Int  =  LT
-xs :: [Int] `compare` id _ + _ :: Int  =  LT
-xs :: [Int] `compare` _ * _ :: Int  =  LT
-xs :: [Int] `compare` f _ :: Int  =  LT
-xs :: [Int] `compare` head xs :: Int  =  LT
-xs :: [Int] `compare` head [] :: Int  =  LT
-xs :: [Int] `compare` head (_:_) :: Int  =  LT
-xs :: [Int] `compare` ord c :: Int  =  LT
-xs :: [Int] `compare` ord 'a' :: Int  =  LT
-xs :: [Int] `compare` q :: Bool  =  GT
-xs :: [Int] `compare` not p :: Bool  =  LT
-xs :: [Int] `compare` not False :: Bool  =  LT
-xs :: [Int] `compare` not True :: Bool  =  LT
-xs :: [Int] `compare` not (not _) :: Bool  =  LT
-xs :: [Int] `compare` _ || _ :: Bool  =  LT
-xs :: [Int] `compare` d :: Char  =  GT
-xs :: [Int] `compare` ' ' :: Char  =  LT
-xs :: [Int] `compare` ys :: [Int]  =  LT
-xs :: [Int] `compare` [0] :: [Int]  =  LT
-xs :: [Int] `compare` _:xs :: [Int]  =  LT
-xs :: [Int] `compare` [_] :: [Int]  =  LT
-xs :: [Int] `compare` _:_:_ :: [Int]  =  LT
-xs :: [Int] `compare` x:_ :: [Int]  =  LT
-xs :: [Int] `compare` 0:_ :: [Int]  =  LT
-xs :: [Int] `compare` id _:_ :: [Int]  =  LT
-xs :: [Int] `compare` tail _ :: [Int]  =  LT
-xs :: [Int] `compare` _ ++ _ :: [Int]  =  LT
-xs :: [Int] `compare` negate :: Int -> Int  =  LT
-xs :: [Int] `compare` abs :: Int -> Int  =  LT
-xs :: [Int] `compare` (_ +) :: Int -> Int  =  LT
-xs :: [Int] `compare` (*) :: Int -> Int -> Int  =  LT
-xs :: [Int] `compare` not :: Bool -> Bool  =  LT
-xs :: [Int] `compare` (||) :: Bool -> Bool -> Bool  =  LT
-[] :: [Int] `compare` z :: Int  =  GT
-[] :: [Int] `compare` -1 :: Int  =  GT
-[] :: [Int] `compare` id y :: Int  =  LT
-[] :: [Int] `compare` id 1 :: Int  =  LT
-[] :: [Int] `compare` id (id x) :: Int  =  LT
-[] :: [Int] `compare` id (id 0) :: Int  =  LT
-[] :: [Int] `compare` id (id (id _)) :: Int  =  LT
-[] :: [Int] `compare` id (negate _) :: Int  =  LT
-[] :: [Int] `compare` id (abs _) :: Int  =  LT
-[] :: [Int] `compare` id (_ + _) :: Int  =  LT
-[] :: [Int] `compare` id (head _) :: Int  =  LT
-[] :: [Int] `compare` id (ord _) :: Int  =  LT
-[] :: [Int] `compare` negate x :: Int  =  LT
-[] :: [Int] `compare` negate 0 :: Int  =  LT
-[] :: [Int] `compare` negate (id _) :: Int  =  LT
-[] :: [Int] `compare` abs x :: Int  =  LT
-[] :: [Int] `compare` abs 0 :: Int  =  LT
-[] :: [Int] `compare` abs (id _) :: Int  =  LT
-[] :: [Int] `compare` _ + x :: Int  =  LT
-[] :: [Int] `compare` _ + 0 :: Int  =  LT
-[] :: [Int] `compare` _ + id _ :: Int  =  LT
-[] :: [Int] `compare` x + _ :: Int  =  LT
-[] :: [Int] `compare` 0 + _ :: Int  =  LT
-[] :: [Int] `compare` id _ + _ :: Int  =  LT
-[] :: [Int] `compare` _ * _ :: Int  =  LT
-[] :: [Int] `compare` f _ :: Int  =  LT
-[] :: [Int] `compare` head xs :: Int  =  LT
-[] :: [Int] `compare` head [] :: Int  =  LT
-[] :: [Int] `compare` head (_:_) :: Int  =  LT
-[] :: [Int] `compare` ord c :: Int  =  LT
-[] :: [Int] `compare` ord 'a' :: Int  =  LT
-[] :: [Int] `compare` q :: Bool  =  GT
-[] :: [Int] `compare` not p :: Bool  =  LT
-[] :: [Int] `compare` not False :: Bool  =  LT
-[] :: [Int] `compare` not True :: Bool  =  LT
-[] :: [Int] `compare` not (not _) :: Bool  =  LT
-[] :: [Int] `compare` _ || _ :: Bool  =  LT
-[] :: [Int] `compare` d :: Char  =  GT
-[] :: [Int] `compare` ' ' :: Char  =  GT
-[] :: [Int] `compare` ys :: [Int]  =  GT
-[] :: [Int] `compare` [0] :: [Int]  =  LT
-[] :: [Int] `compare` _:xs :: [Int]  =  LT
-[] :: [Int] `compare` [_] :: [Int]  =  LT
-[] :: [Int] `compare` _:_:_ :: [Int]  =  LT
-[] :: [Int] `compare` x:_ :: [Int]  =  LT
-[] :: [Int] `compare` 0:_ :: [Int]  =  LT
-[] :: [Int] `compare` id _:_ :: [Int]  =  LT
-[] :: [Int] `compare` tail _ :: [Int]  =  LT
-[] :: [Int] `compare` _ ++ _ :: [Int]  =  LT
-[] :: [Int] `compare` negate :: Int -> Int  =  LT
-[] :: [Int] `compare` abs :: Int -> Int  =  LT
-[] :: [Int] `compare` (_ +) :: Int -> Int  =  LT
-[] :: [Int] `compare` (*) :: Int -> Int -> Int  =  LT
-[] :: [Int] `compare` not :: Bool -> Bool  =  LT
-[] :: [Int] `compare` (||) :: Bool -> Bool -> Bool  =  LT
-_:_ :: [Int] `compare` z :: Int  =  GT
-_:_ :: [Int] `compare` -1 :: Int  =  GT
-_:_ :: [Int] `compare` id y :: Int  =  GT
-_:_ :: [Int] `compare` id 1 :: Int  =  GT
-_:_ :: [Int] `compare` id (id x) :: Int  =  LT
-_:_ :: [Int] `compare` id (id 0) :: Int  =  LT
-_:_ :: [Int] `compare` id (id (id _)) :: Int  =  LT
-_:_ :: [Int] `compare` id (negate _) :: Int  =  LT
-_:_ :: [Int] `compare` id (abs _) :: Int  =  LT
-_:_ :: [Int] `compare` id (_ + _) :: Int  =  LT
-_:_ :: [Int] `compare` id (head _) :: Int  =  LT
-_:_ :: [Int] `compare` id (ord _) :: Int  =  LT
-_:_ :: [Int] `compare` negate x :: Int  =  GT
-_:_ :: [Int] `compare` negate 0 :: Int  =  GT
-_:_ :: [Int] `compare` negate (id _) :: Int  =  LT
-_:_ :: [Int] `compare` abs x :: Int  =  GT
-_:_ :: [Int] `compare` abs 0 :: Int  =  GT
-_:_ :: [Int] `compare` abs (id _) :: Int  =  LT
-_:_ :: [Int] `compare` _ + x :: Int  =  GT
-_:_ :: [Int] `compare` _ + 0 :: Int  =  LT
-_:_ :: [Int] `compare` _ + id _ :: Int  =  LT
-_:_ :: [Int] `compare` x + _ :: Int  =  GT
-_:_ :: [Int] `compare` 0 + _ :: Int  =  LT
-_:_ :: [Int] `compare` id _ + _ :: Int  =  LT
-_:_ :: [Int] `compare` _ * _ :: Int  =  LT
-_:_ :: [Int] `compare` f _ :: Int  =  GT
-_:_ :: [Int] `compare` head xs :: Int  =  GT
-_:_ :: [Int] `compare` head [] :: Int  =  GT
-_:_ :: [Int] `compare` head (_:_) :: Int  =  LT
-_:_ :: [Int] `compare` ord c :: Int  =  GT
-_:_ :: [Int] `compare` ord 'a' :: Int  =  GT
-_:_ :: [Int] `compare` q :: Bool  =  GT
-_:_ :: [Int] `compare` not p :: Bool  =  GT
-_:_ :: [Int] `compare` not False :: Bool  =  GT
-_:_ :: [Int] `compare` not True :: Bool  =  GT
-_:_ :: [Int] `compare` not (not _) :: Bool  =  LT
-_:_ :: [Int] `compare` _ || _ :: Bool  =  LT
-_:_ :: [Int] `compare` d :: Char  =  GT
-_:_ :: [Int] `compare` ' ' :: Char  =  GT
-_:_ :: [Int] `compare` ys :: [Int]  =  GT
-_:_ :: [Int] `compare` [0] :: [Int]  =  GT
-_:_ :: [Int] `compare` _:xs :: [Int]  =  LT
-_:_ :: [Int] `compare` [_] :: [Int]  =  LT
-_:_ :: [Int] `compare` _:_:_ :: [Int]  =  LT
-_:_ :: [Int] `compare` x:_ :: [Int]  =  LT
-_:_ :: [Int] `compare` 0:_ :: [Int]  =  LT
-_:_ :: [Int] `compare` id _:_ :: [Int]  =  LT
-_:_ :: [Int] `compare` tail _ :: [Int]  =  GT
-_:_ :: [Int] `compare` _ ++ _ :: [Int]  =  LT
-_:_ :: [Int] `compare` negate :: Int -> Int  =  GT
-_:_ :: [Int] `compare` abs :: Int -> Int  =  GT
-_:_ :: [Int] `compare` (_ +) :: Int -> Int  =  GT
-_:_ :: [Int] `compare` (*) :: Int -> Int -> Int  =  GT
-_:_ :: [Int] `compare` not :: Bool -> Bool  =  GT
-_:_ :: [Int] `compare` (||) :: Bool -> Bool -> Bool  =  GT
-id :: Int -> Int `compare` z :: Int  =  GT
-id :: Int -> Int `compare` -1 :: Int  =  GT
-id :: Int -> Int `compare` id y :: Int  =  LT
-id :: Int -> Int `compare` id 1 :: Int  =  LT
-id :: Int -> Int `compare` id (id x) :: Int  =  LT
-id :: Int -> Int `compare` id (id 0) :: Int  =  LT
-id :: Int -> Int `compare` id (id (id _)) :: Int  =  LT
-id :: Int -> Int `compare` id (negate _) :: Int  =  LT
-id :: Int -> Int `compare` id (abs _) :: Int  =  LT
-id :: Int -> Int `compare` id (_ + _) :: Int  =  LT
-id :: Int -> Int `compare` id (head _) :: Int  =  LT
-id :: Int -> Int `compare` id (ord _) :: Int  =  LT
-id :: Int -> Int `compare` negate x :: Int  =  LT
-id :: Int -> Int `compare` negate 0 :: Int  =  LT
-id :: Int -> Int `compare` negate (id _) :: Int  =  LT
-id :: Int -> Int `compare` abs x :: Int  =  LT
-id :: Int -> Int `compare` abs 0 :: Int  =  LT
-id :: Int -> Int `compare` abs (id _) :: Int  =  LT
-id :: Int -> Int `compare` _ + x :: Int  =  LT
-id :: Int -> Int `compare` _ + 0 :: Int  =  LT
-id :: Int -> Int `compare` _ + id _ :: Int  =  LT
-id :: Int -> Int `compare` x + _ :: Int  =  LT
-id :: Int -> Int `compare` 0 + _ :: Int  =  LT
-id :: Int -> Int `compare` id _ + _ :: Int  =  LT
-id :: Int -> Int `compare` _ * _ :: Int  =  LT
-id :: Int -> Int `compare` f _ :: Int  =  LT
-id :: Int -> Int `compare` head xs :: Int  =  LT
-id :: Int -> Int `compare` head [] :: Int  =  LT
-id :: Int -> Int `compare` head (_:_) :: Int  =  LT
-id :: Int -> Int `compare` ord c :: Int  =  LT
-id :: Int -> Int `compare` ord 'a' :: Int  =  LT
-id :: Int -> Int `compare` q :: Bool  =  GT
-id :: Int -> Int `compare` not p :: Bool  =  LT
-id :: Int -> Int `compare` not False :: Bool  =  LT
-id :: Int -> Int `compare` not True :: Bool  =  LT
-id :: Int -> Int `compare` not (not _) :: Bool  =  LT
-id :: Int -> Int `compare` _ || _ :: Bool  =  LT
-id :: Int -> Int `compare` d :: Char  =  GT
-id :: Int -> Int `compare` ' ' :: Char  =  GT
-id :: Int -> Int `compare` ys :: [Int]  =  GT
-id :: Int -> Int `compare` [0] :: [Int]  =  GT
-id :: Int -> Int `compare` _:xs :: [Int]  =  LT
-id :: Int -> Int `compare` [_] :: [Int]  =  LT
-id :: Int -> Int `compare` _:_:_ :: [Int]  =  LT
-id :: Int -> Int `compare` x:_ :: [Int]  =  LT
-id :: Int -> Int `compare` 0:_ :: [Int]  =  LT
-id :: Int -> Int `compare` id _:_ :: [Int]  =  LT
-id :: Int -> Int `compare` tail _ :: [Int]  =  LT
-id :: Int -> Int `compare` _ ++ _ :: [Int]  =  LT
-id :: Int -> Int `compare` negate :: Int -> Int  =  LT
-id :: Int -> Int `compare` abs :: Int -> Int  =  LT
-id :: Int -> Int `compare` (_ +) :: Int -> Int  =  LT
-id :: Int -> Int `compare` (*) :: Int -> Int -> Int  =  LT
-id :: Int -> Int `compare` not :: Bool -> Bool  =  GT
-id :: Int -> Int `compare` (||) :: Bool -> Bool -> Bool  =  LT
-(+) :: Int -> Int -> Int `compare` z :: Int  =  GT
-(+) :: Int -> Int -> Int `compare` -1 :: Int  =  GT
-(+) :: Int -> Int -> Int `compare` id y :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id 1 :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id (id x) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id (id 0) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id (id (id _)) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id (negate _) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id (abs _) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id (_ + _) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id (head _) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id (ord _) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` negate x :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` negate 0 :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` negate (id _) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` abs x :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` abs 0 :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` abs (id _) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` _ + x :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` _ + 0 :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` _ + id _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` x + _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` 0 + _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` id _ + _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` _ * _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` f _ :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` head xs :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` head [] :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` head (_:_) :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` ord c :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` ord 'a' :: Int  =  LT
-(+) :: Int -> Int -> Int `compare` q :: Bool  =  GT
-(+) :: Int -> Int -> Int `compare` not p :: Bool  =  LT
-(+) :: Int -> Int -> Int `compare` not False :: Bool  =  LT
-(+) :: Int -> Int -> Int `compare` not True :: Bool  =  LT
-(+) :: Int -> Int -> Int `compare` not (not _) :: Bool  =  LT
-(+) :: Int -> Int -> Int `compare` _ || _ :: Bool  =  LT
-(+) :: Int -> Int -> Int `compare` d :: Char  =  GT
-(+) :: Int -> Int -> Int `compare` ' ' :: Char  =  GT
-(+) :: Int -> Int -> Int `compare` ys :: [Int]  =  GT
-(+) :: Int -> Int -> Int `compare` [0] :: [Int]  =  GT
-(+) :: Int -> Int -> Int `compare` _:xs :: [Int]  =  LT
-(+) :: Int -> Int -> Int `compare` [_] :: [Int]  =  LT
-(+) :: Int -> Int -> Int `compare` _:_:_ :: [Int]  =  LT
-(+) :: Int -> Int -> Int `compare` x:_ :: [Int]  =  LT
-(+) :: Int -> Int -> Int `compare` 0:_ :: [Int]  =  LT
-(+) :: Int -> Int -> Int `compare` id _:_ :: [Int]  =  LT
-(+) :: Int -> Int -> Int `compare` tail _ :: [Int]  =  LT
-(+) :: Int -> Int -> Int `compare` _ ++ _ :: [Int]  =  LT
-(+) :: Int -> Int -> Int `compare` negate :: Int -> Int  =  GT
-(+) :: Int -> Int -> Int `compare` abs :: Int -> Int  =  GT
-(+) :: Int -> Int -> Int `compare` (_ +) :: Int -> Int  =  LT
-(+) :: Int -> Int -> Int `compare` (*) :: Int -> Int -> Int  =  GT
-(+) :: Int -> Int -> Int `compare` not :: Bool -> Bool  =  GT
-(+) :: Int -> Int -> Int `compare` (||) :: Bool -> Bool -> Bool  =  GT
-z :: Int `compare` y :: Int  =  GT
-z :: Int `compare` 1 :: Int  =  LT
-z :: Int `compare` id x :: Int  =  LT
-z :: Int `compare` id 0 :: Int  =  LT
-z :: Int `compare` id (id _) :: Int  =  LT
-z :: Int `compare` negate _ :: Int  =  LT
-z :: Int `compare` abs _ :: Int  =  LT
-z :: Int `compare` _ + _ :: Int  =  LT
-z :: Int `compare` head _ :: Int  =  LT
-z :: Int `compare` ord _ :: Int  =  LT
-z :: Int `compare` p :: Bool  =  GT
-z :: Int `compare` False :: Bool  =  LT
-z :: Int `compare` True :: Bool  =  LT
-z :: Int `compare` not _ :: Bool  =  LT
-z :: Int `compare` c :: Char  =  GT
-z :: Int `compare` 'a' :: Char  =  LT
-z :: Int `compare` xs :: [Int]  =  LT
-z :: Int `compare` [] :: [Int]  =  LT
-z :: Int `compare` _:_ :: [Int]  =  LT
-z :: Int `compare` id :: Int -> Int  =  LT
-z :: Int `compare` (+) :: Int -> Int -> Int  =  LT
--1 :: Int `compare` y :: Int  =  GT
--1 :: Int `compare` 1 :: Int  =  GT
--1 :: Int `compare` id x :: Int  =  LT
--1 :: Int `compare` id 0 :: Int  =  LT
--1 :: Int `compare` id (id _) :: Int  =  LT
--1 :: Int `compare` negate _ :: Int  =  LT
--1 :: Int `compare` abs _ :: Int  =  LT
--1 :: Int `compare` _ + _ :: Int  =  LT
--1 :: Int `compare` head _ :: Int  =  LT
--1 :: Int `compare` ord _ :: Int  =  LT
--1 :: Int `compare` p :: Bool  =  GT
--1 :: Int `compare` False :: Bool  =  GT
--1 :: Int `compare` True :: Bool  =  GT
--1 :: Int `compare` not _ :: Bool  =  LT
--1 :: Int `compare` c :: Char  =  GT
--1 :: Int `compare` 'a' :: Char  =  GT
--1 :: Int `compare` xs :: [Int]  =  GT
--1 :: Int `compare` [] :: [Int]  =  LT
--1 :: Int `compare` _:_ :: [Int]  =  LT
--1 :: Int `compare` id :: Int -> Int  =  LT
--1 :: Int `compare` (+) :: Int -> Int -> Int  =  LT
-id y :: Int `compare` y :: Int  =  GT
-id y :: Int `compare` 1 :: Int  =  GT
-id y :: Int `compare` id x :: Int  =  GT
-id y :: Int `compare` id 0 :: Int  =  LT
-id y :: Int `compare` id (id _) :: Int  =  LT
-id y :: Int `compare` negate _ :: Int  =  LT
-id y :: Int `compare` abs _ :: Int  =  LT
-id y :: Int `compare` _ + _ :: Int  =  LT
-id y :: Int `compare` head _ :: Int  =  LT
-id y :: Int `compare` ord _ :: Int  =  GT
-id y :: Int `compare` p :: Bool  =  GT
-id y :: Int `compare` False :: Bool  =  GT
-id y :: Int `compare` True :: Bool  =  GT
-id y :: Int `compare` not _ :: Bool  =  GT
-id y :: Int `compare` c :: Char  =  GT
-id y :: Int `compare` 'a' :: Char  =  GT
-id y :: Int `compare` xs :: [Int]  =  GT
-id y :: Int `compare` [] :: [Int]  =  GT
-id y :: Int `compare` _:_ :: [Int]  =  LT
-id y :: Int `compare` id :: Int -> Int  =  GT
-id y :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id 1 :: Int `compare` y :: Int  =  GT
-id 1 :: Int `compare` 1 :: Int  =  GT
-id 1 :: Int `compare` id x :: Int  =  GT
-id 1 :: Int `compare` id 0 :: Int  =  GT
-id 1 :: Int `compare` id (id _) :: Int  =  LT
-id 1 :: Int `compare` negate _ :: Int  =  GT
-id 1 :: Int `compare` abs _ :: Int  =  GT
-id 1 :: Int `compare` _ + _ :: Int  =  LT
-id 1 :: Int `compare` head _ :: Int  =  GT
-id 1 :: Int `compare` ord _ :: Int  =  GT
-id 1 :: Int `compare` p :: Bool  =  GT
-id 1 :: Int `compare` False :: Bool  =  GT
-id 1 :: Int `compare` True :: Bool  =  GT
-id 1 :: Int `compare` not _ :: Bool  =  GT
-id 1 :: Int `compare` c :: Char  =  GT
-id 1 :: Int `compare` 'a' :: Char  =  GT
-id 1 :: Int `compare` xs :: [Int]  =  GT
-id 1 :: Int `compare` [] :: [Int]  =  GT
-id 1 :: Int `compare` _:_ :: [Int]  =  LT
-id 1 :: Int `compare` id :: Int -> Int  =  GT
-id 1 :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id (id x) :: Int `compare` y :: Int  =  GT
-id (id x) :: Int `compare` 1 :: Int  =  GT
-id (id x) :: Int `compare` id x :: Int  =  GT
-id (id x) :: Int `compare` id 0 :: Int  =  GT
-id (id x) :: Int `compare` id (id _) :: Int  =  GT
-id (id x) :: Int `compare` negate _ :: Int  =  GT
-id (id x) :: Int `compare` abs _ :: Int  =  GT
-id (id x) :: Int `compare` _ + _ :: Int  =  GT
-id (id x) :: Int `compare` head _ :: Int  =  GT
-id (id x) :: Int `compare` ord _ :: Int  =  GT
-id (id x) :: Int `compare` p :: Bool  =  GT
-id (id x) :: Int `compare` False :: Bool  =  GT
-id (id x) :: Int `compare` True :: Bool  =  GT
-id (id x) :: Int `compare` not _ :: Bool  =  GT
-id (id x) :: Int `compare` c :: Char  =  GT
-id (id x) :: Int `compare` 'a' :: Char  =  GT
-id (id x) :: Int `compare` xs :: [Int]  =  GT
-id (id x) :: Int `compare` [] :: [Int]  =  GT
-id (id x) :: Int `compare` _:_ :: [Int]  =  GT
-id (id x) :: Int `compare` id :: Int -> Int  =  GT
-id (id x) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id (id 0) :: Int `compare` y :: Int  =  GT
-id (id 0) :: Int `compare` 1 :: Int  =  GT
-id (id 0) :: Int `compare` id x :: Int  =  GT
-id (id 0) :: Int `compare` id 0 :: Int  =  GT
-id (id 0) :: Int `compare` id (id _) :: Int  =  GT
-id (id 0) :: Int `compare` negate _ :: Int  =  GT
-id (id 0) :: Int `compare` abs _ :: Int  =  GT
-id (id 0) :: Int `compare` _ + _ :: Int  =  GT
-id (id 0) :: Int `compare` head _ :: Int  =  GT
-id (id 0) :: Int `compare` ord _ :: Int  =  GT
-id (id 0) :: Int `compare` p :: Bool  =  GT
-id (id 0) :: Int `compare` False :: Bool  =  GT
-id (id 0) :: Int `compare` True :: Bool  =  GT
-id (id 0) :: Int `compare` not _ :: Bool  =  GT
-id (id 0) :: Int `compare` c :: Char  =  GT
-id (id 0) :: Int `compare` 'a' :: Char  =  GT
-id (id 0) :: Int `compare` xs :: [Int]  =  GT
-id (id 0) :: Int `compare` [] :: [Int]  =  GT
-id (id 0) :: Int `compare` _:_ :: [Int]  =  GT
-id (id 0) :: Int `compare` id :: Int -> Int  =  GT
-id (id 0) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id (id (id _)) :: Int `compare` y :: Int  =  GT
-id (id (id _)) :: Int `compare` 1 :: Int  =  GT
-id (id (id _)) :: Int `compare` id x :: Int  =  GT
-id (id (id _)) :: Int `compare` id 0 :: Int  =  GT
-id (id (id _)) :: Int `compare` id (id _) :: Int  =  GT
-id (id (id _)) :: Int `compare` negate _ :: Int  =  GT
-id (id (id _)) :: Int `compare` abs _ :: Int  =  GT
-id (id (id _)) :: Int `compare` _ + _ :: Int  =  GT
-id (id (id _)) :: Int `compare` head _ :: Int  =  GT
-id (id (id _)) :: Int `compare` ord _ :: Int  =  GT
-id (id (id _)) :: Int `compare` p :: Bool  =  GT
-id (id (id _)) :: Int `compare` False :: Bool  =  GT
-id (id (id _)) :: Int `compare` True :: Bool  =  GT
-id (id (id _)) :: Int `compare` not _ :: Bool  =  GT
-id (id (id _)) :: Int `compare` c :: Char  =  GT
-id (id (id _)) :: Int `compare` 'a' :: Char  =  GT
-id (id (id _)) :: Int `compare` xs :: [Int]  =  GT
-id (id (id _)) :: Int `compare` [] :: [Int]  =  GT
-id (id (id _)) :: Int `compare` _:_ :: [Int]  =  GT
-id (id (id _)) :: Int `compare` id :: Int -> Int  =  GT
-id (id (id _)) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id (negate _) :: Int `compare` y :: Int  =  GT
-id (negate _) :: Int `compare` 1 :: Int  =  GT
-id (negate _) :: Int `compare` id x :: Int  =  GT
-id (negate _) :: Int `compare` id 0 :: Int  =  GT
-id (negate _) :: Int `compare` id (id _) :: Int  =  GT
-id (negate _) :: Int `compare` negate _ :: Int  =  GT
-id (negate _) :: Int `compare` abs _ :: Int  =  GT
-id (negate _) :: Int `compare` _ + _ :: Int  =  GT
-id (negate _) :: Int `compare` head _ :: Int  =  GT
-id (negate _) :: Int `compare` ord _ :: Int  =  GT
-id (negate _) :: Int `compare` p :: Bool  =  GT
-id (negate _) :: Int `compare` False :: Bool  =  GT
-id (negate _) :: Int `compare` True :: Bool  =  GT
-id (negate _) :: Int `compare` not _ :: Bool  =  GT
-id (negate _) :: Int `compare` c :: Char  =  GT
-id (negate _) :: Int `compare` 'a' :: Char  =  GT
-id (negate _) :: Int `compare` xs :: [Int]  =  GT
-id (negate _) :: Int `compare` [] :: [Int]  =  GT
-id (negate _) :: Int `compare` _:_ :: [Int]  =  GT
-id (negate _) :: Int `compare` id :: Int -> Int  =  GT
-id (negate _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id (abs _) :: Int `compare` y :: Int  =  GT
-id (abs _) :: Int `compare` 1 :: Int  =  GT
-id (abs _) :: Int `compare` id x :: Int  =  GT
-id (abs _) :: Int `compare` id 0 :: Int  =  GT
-id (abs _) :: Int `compare` id (id _) :: Int  =  GT
-id (abs _) :: Int `compare` negate _ :: Int  =  GT
-id (abs _) :: Int `compare` abs _ :: Int  =  GT
-id (abs _) :: Int `compare` _ + _ :: Int  =  GT
-id (abs _) :: Int `compare` head _ :: Int  =  GT
-id (abs _) :: Int `compare` ord _ :: Int  =  GT
-id (abs _) :: Int `compare` p :: Bool  =  GT
-id (abs _) :: Int `compare` False :: Bool  =  GT
-id (abs _) :: Int `compare` True :: Bool  =  GT
-id (abs _) :: Int `compare` not _ :: Bool  =  GT
-id (abs _) :: Int `compare` c :: Char  =  GT
-id (abs _) :: Int `compare` 'a' :: Char  =  GT
-id (abs _) :: Int `compare` xs :: [Int]  =  GT
-id (abs _) :: Int `compare` [] :: [Int]  =  GT
-id (abs _) :: Int `compare` _:_ :: [Int]  =  GT
-id (abs _) :: Int `compare` id :: Int -> Int  =  GT
-id (abs _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id (_ + _) :: Int `compare` y :: Int  =  GT
-id (_ + _) :: Int `compare` 1 :: Int  =  GT
-id (_ + _) :: Int `compare` id x :: Int  =  GT
-id (_ + _) :: Int `compare` id 0 :: Int  =  GT
-id (_ + _) :: Int `compare` id (id _) :: Int  =  GT
-id (_ + _) :: Int `compare` negate _ :: Int  =  GT
-id (_ + _) :: Int `compare` abs _ :: Int  =  GT
-id (_ + _) :: Int `compare` _ + _ :: Int  =  GT
-id (_ + _) :: Int `compare` head _ :: Int  =  GT
-id (_ + _) :: Int `compare` ord _ :: Int  =  GT
-id (_ + _) :: Int `compare` p :: Bool  =  GT
-id (_ + _) :: Int `compare` False :: Bool  =  GT
-id (_ + _) :: Int `compare` True :: Bool  =  GT
-id (_ + _) :: Int `compare` not _ :: Bool  =  GT
-id (_ + _) :: Int `compare` c :: Char  =  GT
-id (_ + _) :: Int `compare` 'a' :: Char  =  GT
-id (_ + _) :: Int `compare` xs :: [Int]  =  GT
-id (_ + _) :: Int `compare` [] :: [Int]  =  GT
-id (_ + _) :: Int `compare` _:_ :: [Int]  =  GT
-id (_ + _) :: Int `compare` id :: Int -> Int  =  GT
-id (_ + _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id (head _) :: Int `compare` y :: Int  =  GT
-id (head _) :: Int `compare` 1 :: Int  =  GT
-id (head _) :: Int `compare` id x :: Int  =  GT
-id (head _) :: Int `compare` id 0 :: Int  =  GT
-id (head _) :: Int `compare` id (id _) :: Int  =  GT
-id (head _) :: Int `compare` negate _ :: Int  =  GT
-id (head _) :: Int `compare` abs _ :: Int  =  GT
-id (head _) :: Int `compare` _ + _ :: Int  =  GT
-id (head _) :: Int `compare` head _ :: Int  =  GT
-id (head _) :: Int `compare` ord _ :: Int  =  GT
-id (head _) :: Int `compare` p :: Bool  =  GT
-id (head _) :: Int `compare` False :: Bool  =  GT
-id (head _) :: Int `compare` True :: Bool  =  GT
-id (head _) :: Int `compare` not _ :: Bool  =  GT
-id (head _) :: Int `compare` c :: Char  =  GT
-id (head _) :: Int `compare` 'a' :: Char  =  GT
-id (head _) :: Int `compare` xs :: [Int]  =  GT
-id (head _) :: Int `compare` [] :: [Int]  =  GT
-id (head _) :: Int `compare` _:_ :: [Int]  =  GT
-id (head _) :: Int `compare` id :: Int -> Int  =  GT
-id (head _) :: Int `compare` (+) :: Int -> Int -> Int  =  GT
-id (ord _) :: Int `compare` y :: Int  =  GT
-id (ord _) :: Int `compare` 1 :: Int  =  GT
-id (ord _) :: Int `compare` id x :: Int  =  GT
-id (ord _) :: Int `compare` id 0 :: Int  =  GT
-id (ord _) :: Int `compare` id (id _) :: Int  =  GT
-id (ord _) :: Int `compare` negate _ :: Int  =  GT
-id (ord _) :: Int `compare` abs _ :: Int  =  GT
-id (ord _) :: Int `compare` _ + _ :: Int  =  GT
-id (ord _) :: Int `compare` head _ :: Int  =  GT
-id (ord _) :: Int `compare` ord _ :: Int  =  GT
-
diff --git a/test/model/bench/match-list.out b/test/model/bench/match-list.out
deleted file mode 100644
--- a/test/model/bench/match-list.out
+++ /dev/null
@@ -1,795 +0,0 @@
-id p  =  p
-p && p  =  p
-p || p  =  p
-p && q  =  q && p
-p || q  =  q || p
-not (not p)  =  p
-p && True  =  p
-True && p  =  p
-p && False  =  False
-False && p  =  False
-p || True  =  True
-True || p  =  True
-p || False  =  p
-False || p  =  p
-p && not p  =  False
-p || not p  =  True
-not p && p  =  False
-not p || p  =  True
-(p && q) && r  =  p && (q && r)
-(p || q) || r  =  p || (q || r)
-not (p && q)  =  not p || not q
-not (p || q)  =  not p && not q
-not False  =  True
-not True  =  False
-not (not p && not q)  =  p || q
-not (not p || not q)  =  p && q
-p && not (p && q)  =  p && not q
-id x  =  x
-abs (abs x)  =  abs x
-x + 0  =  x
-0 + x  =  x
-x * 1  =  x
-1 * x  =  x
-x * 0  =  0
-0 * x  =  0
-x + y  =  y + x
-x * y  =  y * x
-(x + y) + z  =  x + (y + z)
-(x * y) * z  =  x * (y * z)
-(x + x) * y  =  x * (y + y)
-x * (y + 1)  =  x + x * y
-(x + 1) * y  =  x + x * y
-x * (y + z)  =  x * y + x * z
-(x + y) * z  =  x * z + y * z
-negate (negate x)  =  x
-x + negate x  =  0
-negate x + x  =  0
-abs (negate x)  =  abs x
-2 * x  =  x + x
-x * 2  =  x + x
-3 * x  =  x + (x + x)
-x * 3  =  x + (x + x)
-4 * x  =  x + (x + (x + x))
-x * 4  =  x + (x + (x + x))
-abs (x * x)  =  x * x
-abs x * abs y  =  abs (x * y)
-abs x * abs x  =  abs (x + x)
-abs (abs x + abs y)  =  abs x + abs y
-abs (x + x) * y  =  abs x * y + abs x * y
-abs x * signum x  =  x
-signum x * abs x  =  x
-id xs  =  xs
-head (x:xs)  =  x
-tail (x:xs)  =  xs
-xs ++ []  =  xs
-[] ++ xs  =  xs
-[x] ++ xs  =  x:xs
-(x:xs) ++ ys  =  x:(xs ++ ys)
-(xs ++ ys) ++ zs  =  xs ++ (ys ++ zs)
-elem x (sort xs)  =  elem x xs
-elem x (insert y xs)  =  elem x (y:xs)
-sort (sort xs)  =  sort xs
-insert x []  =  [x]
-sort (xs ++ ys)  =  sort (ys ++ xs)
-sort (insert x xs)  =  insert x (sort xs)
-sort (x:xs)  =  insert x (sort xs)
-sort (xs ++ sort ys)  =  sort (xs ++ ys)
-sort (sort xs ++ ys)  =  sort (xs ++ ys)
-insert x (insert y xs)  =  insert y (insert x xs)
-insert x (x:xs)  =  x:x:xs
-insert x [y]  =  insert y [x]
-length (x:xs)  =  length (y:xs)
-length (xs ++ ys)  =  length (ys ++ xs)
-length (x:y:xs)  =  length (z:x':xs)
-length (x:(xs ++ ys))  =  length (y:(ys ++ xs))
-length (xs ++ (ys ++ zs))  =  length (xs ++ (zs ++ ys))
-not (odd x)  =  even x
-not (even x)  =  odd x
-x == x  =  True
-x /= x  =  False
-p == p  =  True
-p /= p  =  False
-f (g x)  =  (f . g) x
-map id xs  =  xs
-map (f . g) xs  =  map f (map g xs)
-f . id  =  f
-id . f  =  f
-(f . g) . h  =  f . (g . h)
-not . not  =  id
-
-(id x :: Int,[(x :: Int,_ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id _ :: Int)],x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(id x :: Int,[(x :: Int,y :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,1 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord _ :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(not False :: Bool,[],True :: Bool)
-(not True :: Bool,[],False :: Bool)
-(not (not p) :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(id x :: Int,[(x :: Int,z :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,-1 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id y :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id 1 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (ord _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + id _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,x + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,0 + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id _ + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ * _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,f _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head xs :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head [] :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (_:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord c :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord 'a' :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
-(not (not p) :: Bool,[(p :: Bool,p :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,False :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,True :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not _ :: Bool)],p :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
-(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
-(x == x :: Bool,[(x :: Int,_ :: Int)],True :: Bool)
-(p == p :: Bool,[(p :: Bool,_ :: Bool)],True :: Bool)
-(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
-(xs ++ [] :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])
-([] ++ xs :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-(id x :: Int,[(x :: Int,x' :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,2 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id z :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (-1) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id y) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id 1) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id x)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id 0)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id (id _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (negate _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (abs _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (_ + _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (head _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (ord _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate (id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs (id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (x + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (0 + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id _ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ * _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (f _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head xs) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head []) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head (_:_)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (ord c) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (ord 'a') :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate y :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate 1 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id (id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (negate _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (abs _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (_ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (head _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (ord _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs y :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs 1 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (id x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (id 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (id (id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (negate _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (abs _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (_ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (head _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (ord _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + y :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + 1 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + id x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + id 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + id (id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + negate _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + abs _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + (_ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + head _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ + ord _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,x + x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,x + 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,x + id _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,0 + x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,0 + 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,0 + id _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id _ + x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id _ + 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id _ + id _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ * x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ * 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,_ * id _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,f x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,f 0 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,f (id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,y + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,1 + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id x + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id 0 + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id _) + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate _ + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs _ + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,(_ + _) + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head _ + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord _ + _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,x * _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,0 * _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id _ * _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,g _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head ys :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head [0] :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (_:xs) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head [_] :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (_:_:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (x:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (0:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (id _:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (tail _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (_ ++ _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord d :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord ' ' :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,z :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,-1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head xs :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,head [] :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,head (_:_) :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord c :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord 'a' :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x * y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,y :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,y :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(y +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,1 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,1 :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(1 +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id x :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id x +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id 0 +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id (id _) +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(negate _ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(abs _ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,((_ + _) +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(head _ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(ord _ +) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x *) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 *) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,g :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,z :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,-1 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id y :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 1 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id x) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id 0) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id (id _)) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (negate _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (abs _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (_ + _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (head _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (ord _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate (id _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs (id _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + id _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ * _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,f _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head xs :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head [] :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head (_:_) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord c :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord 'a' :: Int)],y + x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y * x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],ys :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[0] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[_] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],x:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],0:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],id _:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],tail _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ ++ _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,y :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,1 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id 0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id (id _) :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,negate _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,abs _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ + _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,head _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,ord _ :: Int)],x :: Int)
-(not (not p) :: Bool,[(p :: Bool,q :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not p :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not False :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not True :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not (not _) :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,_ || _ :: Bool)],p :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],not p && not q :: Bool)
-(not (p && q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p || not q :: Bool)
-(not (odd x) :: Bool,[(x :: Int,_ :: Int)],even x :: Bool)
-(not (even x) :: Bool,[(x :: Int,_ :: Int)],odd x :: Bool)
-(p || q :: Bool,[(q :: Bool,q :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not (not _) :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ || _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
-(p && q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,q :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not (not _) :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ || _ :: Bool)],q || p :: Bool)
-(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q && p :: Bool)
-(tail (x:xs) :: [Int],[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],xs :: [Int])
-(xs ++ [] :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])
-([] ++ xs :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])
-(xs ++ [] :: [Int],[(xs :: [Int],[] :: [Int])],xs :: [Int])
-([] ++ xs :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],xs :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-(xs ++ [] :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_:_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x:(xs ++ ys) :: [Int])
-((xs ++ ys) ++ zs :: [Int],[(zs :: [Int],_ :: [Int]),(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int])],xs ++ (ys ++ zs) :: [Int])
-(sort (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],insert x (sort xs) :: [Int])
-(insert x [] :: [Int],[(x :: Int,_ :: Int)],[x] :: [Int])
-(insert x (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:x:xs :: [Int])
-(id x :: Int,[(x :: Int,y' :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,-2 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id x' :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id 2 :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id z) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (-1)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id y)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id 1)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id (id x))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id (id 0))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id (id (id _)))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id (negate _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id (abs _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id (_ + _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id (head _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id (ord _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (negate x)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (negate 0)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (negate (id _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (abs x)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (abs 0)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (abs (id _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (_ + x)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (_ + 0)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (_ + id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (x + _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (0 + _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id _ + _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (_ * _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (f _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (head xs)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (head [])) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (head (_:_))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (ord c)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (ord 'a')) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate y) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate 1) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate (id x)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate (id 0)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate (id (id _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate (negate _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate (abs _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate (_ + _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate (head _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate (ord _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs y) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs 1) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs (id x)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs (id 0)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs (id (id _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs (negate _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs (abs _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs (_ + _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs (head _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs (ord _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + y) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + 1) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + id x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + id 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + id (id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + negate _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + abs _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + (_ + _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + head _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ + ord _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (x + x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (x + 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (x + id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (0 + x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (0 + 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (0 + id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id _ + x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id _ + 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id _ + id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ * x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ * 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (_ * id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (f x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (f 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (f (id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (y + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (1 + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id x + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id 0 + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id (id _) + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (negate _ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (abs _ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id ((_ + _) + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head _ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (ord _ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (x * _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (0 * _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (id _ * _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (g _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head ys) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head [0]) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head (_:xs)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head [_]) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head (_:_:_)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head (x:_)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head (0:_)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head (id _:_)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head (tail _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (head (_ ++ _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (ord d) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,id (ord ' ') :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate z :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (-1) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id y) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id 1) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id (id x)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id (id 0)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id (id (id _))) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id (negate _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id (abs _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id (_ + _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id (head _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id (ord _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (negate x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (negate 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (negate (id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (abs x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (abs 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (abs (id _)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (_ + x) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (_ + 0) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (_ + id _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (x + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (0 + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (id _ + _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (_ * _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (f _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (head xs) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (head []) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (head (_:_)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (ord c) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,negate (ord 'a') :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs z :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (-1) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (id y) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (id 1) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (id (id x)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (id (id 0)) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,abs (id (id (id _))) :: Int)],x :: Int)
-
-True
diff --git a/test/model/bench/match-noop.out b/test/model/bench/match-noop.out
deleted file mode 100644
--- a/test/model/bench/match-noop.out
+++ /dev/null
@@ -1,1182 +0,0 @@
-id p  =  p
-p && p  =  p
-p || p  =  p
-p && q  =  q && p
-p || q  =  q || p
-not (not p)  =  p
-p && True  =  p
-True && p  =  p
-p && False  =  False
-False && p  =  False
-p || True  =  True
-True || p  =  True
-p || False  =  p
-False || p  =  p
-p && not p  =  False
-p || not p  =  True
-not p && p  =  False
-not p || p  =  True
-(p && q) && r  =  p && (q && r)
-(p || q) || r  =  p || (q || r)
-not (p && q)  =  not p || not q
-not (p || q)  =  not p && not q
-not False  =  True
-not True  =  False
-not (not p && not q)  =  p || q
-not (not p || not q)  =  p && q
-p && not (p && q)  =  p && not q
-id x  =  x
-abs (abs x)  =  abs x
-x + 0  =  x
-0 + x  =  x
-x * 1  =  x
-1 * x  =  x
-x * 0  =  0
-0 * x  =  0
-x + y  =  y + x
-x * y  =  y * x
-(x + y) + z  =  x + (y + z)
-(x * y) * z  =  x * (y * z)
-(x + x) * y  =  x * (y + y)
-x * (y + 1)  =  x + x * y
-(x + 1) * y  =  x + x * y
-x * (y + z)  =  x * y + x * z
-(x + y) * z  =  x * z + y * z
-negate (negate x)  =  x
-x + negate x  =  0
-negate x + x  =  0
-abs (negate x)  =  abs x
-2 * x  =  x + x
-x * 2  =  x + x
-3 * x  =  x + (x + x)
-x * 3  =  x + (x + x)
-4 * x  =  x + (x + (x + x))
-x * 4  =  x + (x + (x + x))
-abs (x * x)  =  x * x
-abs x * abs y  =  abs (x * y)
-abs x * abs x  =  abs (x + x)
-abs (abs x + abs y)  =  abs x + abs y
-abs (x + x) * y  =  abs x * y + abs x * y
-abs x * signum x  =  x
-signum x * abs x  =  x
-id xs  =  xs
-head (x:xs)  =  x
-tail (x:xs)  =  xs
-xs ++ []  =  xs
-[] ++ xs  =  xs
-[x] ++ xs  =  x:xs
-(x:xs) ++ ys  =  x:(xs ++ ys)
-(xs ++ ys) ++ zs  =  xs ++ (ys ++ zs)
-elem x (sort xs)  =  elem x xs
-elem x (insert y xs)  =  elem x (y:xs)
-sort (sort xs)  =  sort xs
-insert x []  =  [x]
-sort (xs ++ ys)  =  sort (ys ++ xs)
-sort (insert x xs)  =  insert x (sort xs)
-sort (x:xs)  =  insert x (sort xs)
-sort (xs ++ sort ys)  =  sort (xs ++ ys)
-sort (sort xs ++ ys)  =  sort (xs ++ ys)
-insert x (insert y xs)  =  insert y (insert x xs)
-insert x (x:xs)  =  x:x:xs
-insert x [y]  =  insert y [x]
-length (x:xs)  =  length (y:xs)
-length (xs ++ ys)  =  length (ys ++ xs)
-length (x:y:xs)  =  length (z:x':xs)
-length (x:(xs ++ ys))  =  length (y:(ys ++ xs))
-length (xs ++ (ys ++ zs))  =  length (xs ++ (zs ++ ys))
-not (odd x)  =  even x
-not (even x)  =  odd x
-x == x  =  True
-x /= x  =  False
-p == p  =  True
-p /= p  =  False
-f (g x)  =  (f . g) x
-map id xs  =  xs
-map (f . g) xs  =  map f (map g xs)
-f . id  =  f
-id . f  =  f
-(f . g) . h  =  f . (g . h)
-not . not  =  id
-
-(_ :: Int,[],_ :: Int)
-(x :: Int,[],x :: Int)
-(0 :: Int,[],0 :: Int)
-(id _ :: Int,[],id _ :: Int)
-(_ :: Bool,[],_ :: Bool)
-(_ :: Char,[],_ :: Char)
-(_ :: [Int],[],_ :: [Int])
-(y :: Int,[],y :: Int)
-(1 :: Int,[],1 :: Int)
-(id x :: Int,[],id x :: Int)
-(id 0 :: Int,[],id 0 :: Int)
-(id (id _) :: Int,[],id (id _) :: Int)
-(negate _ :: Int,[],negate _ :: Int)
-(abs _ :: Int,[],abs _ :: Int)
-(_ + _ :: Int,[],_ + _ :: Int)
-(head _ :: Int,[],head _ :: Int)
-(ord _ :: Int,[],ord _ :: Int)
-(p :: Bool,[],p :: Bool)
-(False :: Bool,[],False :: Bool)
-(True :: Bool,[],True :: Bool)
-(not _ :: Bool,[],not _ :: Bool)
-(c :: Char,[],c :: Char)
-('a' :: Char,[],'a' :: Char)
-(xs :: [Int],[],xs :: [Int])
-([] :: [Int],[],[] :: [Int])
-(_:_ :: [Int],[],_:_ :: [Int])
-(id :: Int -> Int,[],id :: Int -> Int)
-((+) :: Int -> Int -> Int,[],(+) :: Int -> Int -> Int)
-(z :: Int,[],z :: Int)
-(-1 :: Int,[],-1 :: Int)
-(id y :: Int,[],id y :: Int)
-(id 1 :: Int,[],id 1 :: Int)
-(id (id x) :: Int,[],id (id x) :: Int)
-(id (id 0) :: Int,[],id (id 0) :: Int)
-(id (id (id _)) :: Int,[],id (id (id _)) :: Int)
-(id (negate _) :: Int,[],id (negate _) :: Int)
-(id (abs _) :: Int,[],id (abs _) :: Int)
-(id (_ + _) :: Int,[],id (_ + _) :: Int)
-(id (head _) :: Int,[],id (head _) :: Int)
-(id (ord _) :: Int,[],id (ord _) :: Int)
-(negate x :: Int,[],negate x :: Int)
-(negate 0 :: Int,[],negate 0 :: Int)
-(negate (id _) :: Int,[],negate (id _) :: Int)
-(abs x :: Int,[],abs x :: Int)
-(abs 0 :: Int,[],abs 0 :: Int)
-(abs (id _) :: Int,[],abs (id _) :: Int)
-(_ + x :: Int,[],_ + x :: Int)
-(_ + 0 :: Int,[],_ + 0 :: Int)
-(_ + id _ :: Int,[],_ + id _ :: Int)
-(x + _ :: Int,[],x + _ :: Int)
-(0 + _ :: Int,[],0 + _ :: Int)
-(id _ + _ :: Int,[],id _ + _ :: Int)
-(_ * _ :: Int,[],_ * _ :: Int)
-(f _ :: Int,[],f _ :: Int)
-(head xs :: Int,[],head xs :: Int)
-(head [] :: Int,[],head [] :: Int)
-(head (_:_) :: Int,[],head (_:_) :: Int)
-(ord c :: Int,[],ord c :: Int)
-(ord 'a' :: Int,[],ord 'a' :: Int)
-(q :: Bool,[],q :: Bool)
-(not p :: Bool,[],not p :: Bool)
-(not False :: Bool,[],not False :: Bool)
-(not True :: Bool,[],not True :: Bool)
-(not (not _) :: Bool,[],not (not _) :: Bool)
-(_ || _ :: Bool,[],_ || _ :: Bool)
-(d :: Char,[],d :: Char)
-(' ' :: Char,[],' ' :: Char)
-(ys :: [Int],[],ys :: [Int])
-([0] :: [Int],[],[0] :: [Int])
-(_:xs :: [Int],[],_:xs :: [Int])
-([_] :: [Int],[],[_] :: [Int])
-(_:_:_ :: [Int],[],_:_:_ :: [Int])
-(x:_ :: [Int],[],x:_ :: [Int])
-(0:_ :: [Int],[],0:_ :: [Int])
-(id _:_ :: [Int],[],id _:_ :: [Int])
-(tail _ :: [Int],[],tail _ :: [Int])
-(_ ++ _ :: [Int],[],_ ++ _ :: [Int])
-(negate :: Int -> Int,[],negate :: Int -> Int)
-(abs :: Int -> Int,[],abs :: Int -> Int)
-((_ +) :: Int -> Int,[],(_ +) :: Int -> Int)
-((*) :: Int -> Int -> Int,[],(*) :: Int -> Int -> Int)
-(not :: Bool -> Bool,[],not :: Bool -> Bool)
-((||) :: Bool -> Bool -> Bool,[],(||) :: Bool -> Bool -> Bool)
-(x' :: Int,[],x' :: Int)
-(2 :: Int,[],2 :: Int)
-(id z :: Int,[],id z :: Int)
-(id (-1) :: Int,[],id (-1) :: Int)
-(id (id y) :: Int,[],id (id y) :: Int)
-(id (id 1) :: Int,[],id (id 1) :: Int)
-(id (id (id x)) :: Int,[],id (id (id x)) :: Int)
-(id (id (id 0)) :: Int,[],id (id (id 0)) :: Int)
-(id (id (id (id _))) :: Int,[],id (id (id (id _))) :: Int)
-(id (id (negate _)) :: Int,[],id (id (negate _)) :: Int)
-(id (id (abs _)) :: Int,[],id (id (abs _)) :: Int)
-(id (id (_ + _)) :: Int,[],id (id (_ + _)) :: Int)
-(id (id (head _)) :: Int,[],id (id (head _)) :: Int)
-(id (id (ord _)) :: Int,[],id (id (ord _)) :: Int)
-(id (negate x) :: Int,[],id (negate x) :: Int)
-(id (negate 0) :: Int,[],id (negate 0) :: Int)
-(id (negate (id _)) :: Int,[],id (negate (id _)) :: Int)
-(id (abs x) :: Int,[],id (abs x) :: Int)
-(id (abs 0) :: Int,[],id (abs 0) :: Int)
-(id (abs (id _)) :: Int,[],id (abs (id _)) :: Int)
-(id (_ + x) :: Int,[],id (_ + x) :: Int)
-(id (_ + 0) :: Int,[],id (_ + 0) :: Int)
-(id (_ + id _) :: Int,[],id (_ + id _) :: Int)
-(id (x + _) :: Int,[],id (x + _) :: Int)
-(id (0 + _) :: Int,[],id (0 + _) :: Int)
-(id (id _ + _) :: Int,[],id (id _ + _) :: Int)
-(id (_ * _) :: Int,[],id (_ * _) :: Int)
-(id (f _) :: Int,[],id (f _) :: Int)
-(id (head xs) :: Int,[],id (head xs) :: Int)
-(id (head []) :: Int,[],id (head []) :: Int)
-(id (head (_:_)) :: Int,[],id (head (_:_)) :: Int)
-(id (ord c) :: Int,[],id (ord c) :: Int)
-(id (ord 'a') :: Int,[],id (ord 'a') :: Int)
-(negate y :: Int,[],negate y :: Int)
-(negate 1 :: Int,[],negate 1 :: Int)
-(negate (id x) :: Int,[],negate (id x) :: Int)
-(negate (id 0) :: Int,[],negate (id 0) :: Int)
-(negate (id (id _)) :: Int,[],negate (id (id _)) :: Int)
-(negate (negate _) :: Int,[],negate (negate _) :: Int)
-(negate (abs _) :: Int,[],negate (abs _) :: Int)
-(negate (_ + _) :: Int,[],negate (_ + _) :: Int)
-(negate (head _) :: Int,[],negate (head _) :: Int)
-(negate (ord _) :: Int,[],negate (ord _) :: Int)
-(abs y :: Int,[],abs y :: Int)
-(abs 1 :: Int,[],abs 1 :: Int)
-(abs (id x) :: Int,[],abs (id x) :: Int)
-(abs (id 0) :: Int,[],abs (id 0) :: Int)
-(abs (id (id _)) :: Int,[],abs (id (id _)) :: Int)
-(abs (negate _) :: Int,[],abs (negate _) :: Int)
-(abs (abs _) :: Int,[],abs (abs _) :: Int)
-(abs (_ + _) :: Int,[],abs (_ + _) :: Int)
-(abs (head _) :: Int,[],abs (head _) :: Int)
-(abs (ord _) :: Int,[],abs (ord _) :: Int)
-(_ + y :: Int,[],_ + y :: Int)
-(_ + 1 :: Int,[],_ + 1 :: Int)
-(_ + id x :: Int,[],_ + id x :: Int)
-(_ + id 0 :: Int,[],_ + id 0 :: Int)
-(_ + id (id _) :: Int,[],_ + id (id _) :: Int)
-(_ + negate _ :: Int,[],_ + negate _ :: Int)
-(_ + abs _ :: Int,[],_ + abs _ :: Int)
-(_ + (_ + _) :: Int,[],_ + (_ + _) :: Int)
-(_ + head _ :: Int,[],_ + head _ :: Int)
-(_ + ord _ :: Int,[],_ + ord _ :: Int)
-(x + x :: Int,[],x + x :: Int)
-(x + 0 :: Int,[],x + 0 :: Int)
-(x + id _ :: Int,[],x + id _ :: Int)
-(0 + x :: Int,[],0 + x :: Int)
-(0 + 0 :: Int,[],0 + 0 :: Int)
-(0 + id _ :: Int,[],0 + id _ :: Int)
-(id _ + x :: Int,[],id _ + x :: Int)
-(id _ + 0 :: Int,[],id _ + 0 :: Int)
-(id _ + id _ :: Int,[],id _ + id _ :: Int)
-(_ * x :: Int,[],_ * x :: Int)
-(_ * 0 :: Int,[],_ * 0 :: Int)
-(_ * id _ :: Int,[],_ * id _ :: Int)
-(f x :: Int,[],f x :: Int)
-(f 0 :: Int,[],f 0 :: Int)
-(f (id _) :: Int,[],f (id _) :: Int)
-(y + _ :: Int,[],y + _ :: Int)
-(1 + _ :: Int,[],1 + _ :: Int)
-(id x + _ :: Int,[],id x + _ :: Int)
-(id 0 + _ :: Int,[],id 0 + _ :: Int)
-(id (id _) + _ :: Int,[],id (id _) + _ :: Int)
-(negate _ + _ :: Int,[],negate _ + _ :: Int)
-(abs _ + _ :: Int,[],abs _ + _ :: Int)
-((_ + _) + _ :: Int,[],(_ + _) + _ :: Int)
-(head _ + _ :: Int,[],head _ + _ :: Int)
-(ord _ + _ :: Int,[],ord _ + _ :: Int)
-(x * _ :: Int,[],x * _ :: Int)
-(0 * _ :: Int,[],0 * _ :: Int)
-(id _ * _ :: Int,[],id _ * _ :: Int)
-(g _ :: Int,[],g _ :: Int)
-(head ys :: Int,[],head ys :: Int)
-(head [0] :: Int,[],head [0] :: Int)
-(head (_:xs) :: Int,[],head (_:xs) :: Int)
-(head [_] :: Int,[],head [_] :: Int)
-(head (_:_:_) :: Int,[],head (_:_:_) :: Int)
-(head (x:_) :: Int,[],head (x:_) :: Int)
-(head (0:_) :: Int,[],head (0:_) :: Int)
-(head (id _:_) :: Int,[],head (id _:_) :: Int)
-(head (tail _) :: Int,[],head (tail _) :: Int)
-(head (_ ++ _) :: Int,[],head (_ ++ _) :: Int)
-(ord d :: Int,[],ord d :: Int)
-(ord ' ' :: Int,[],ord ' ' :: Int)
-(r :: Bool,[],r :: Bool)
-(not q :: Bool,[],not q :: Bool)
-(not (not p) :: Bool,[],not (not p) :: Bool)
-(not (not False) :: Bool,[],not (not False) :: Bool)
-(not (not True) :: Bool,[],not (not True) :: Bool)
-(not (not (not _)) :: Bool,[],not (not (not _)) :: Bool)
-(not (_ || _) :: Bool,[],not (_ || _) :: Bool)
-(_ || p :: Bool,[],_ || p :: Bool)
-(_ || False :: Bool,[],_ || False :: Bool)
-(_ || True :: Bool,[],_ || True :: Bool)
-(_ || not _ :: Bool,[],_ || not _ :: Bool)
-(p || _ :: Bool,[],p || _ :: Bool)
-(False || _ :: Bool,[],False || _ :: Bool)
-(True || _ :: Bool,[],True || _ :: Bool)
-(not _ || _ :: Bool,[],not _ || _ :: Bool)
-(_ && _ :: Bool,[],_ && _ :: Bool)
-(_ == _ :: Bool,[],_ == _ :: Bool)
-(_ == _ :: Bool,[],_ == _ :: Bool)
-(odd _ :: Bool,[],odd _ :: Bool)
-(even _ :: Bool,[],even _ :: Bool)
-(elem _ _ :: Bool,[],elem _ _ :: Bool)
-(e :: Char,[],e :: Char)
-('b' :: Char,[],'b' :: Char)
-(zs :: [Int],[],zs :: [Int])
-([0,0] :: [Int],[],[0,0] :: [Int])
-([1] :: [Int],[],[1] :: [Int])
-(_:ys :: [Int],[],_:ys :: [Int])
-([_,0] :: [Int],[],[_,0] :: [Int])
-(_:_:xs :: [Int],[],_:_:xs :: [Int])
-([_,_] :: [Int],[],[_,_] :: [Int])
-(_:_:_:_ :: [Int],[],_:_:_:_ :: [Int])
-(_:x:_ :: [Int],[],_:x:_ :: [Int])
-(_:0:_ :: [Int],[],_:0:_ :: [Int])
-(_:id _:_ :: [Int],[],_:id _:_ :: [Int])
-(_:tail _ :: [Int],[],_:tail _ :: [Int])
-(_:(_ ++ _) :: [Int],[],_:(_ ++ _) :: [Int])
-(x:xs :: [Int],[],x:xs :: [Int])
-([x] :: [Int],[],[x] :: [Int])
-(x:_:_ :: [Int],[],x:_:_ :: [Int])
-(0:xs :: [Int],[],0:xs :: [Int])
-([0] :: [Int],[],[0] :: [Int])
-(0:_:_ :: [Int],[],0:_:_ :: [Int])
-(id _:xs :: [Int],[],id _:xs :: [Int])
-([id _] :: [Int],[],[id _] :: [Int])
-(id _:_:_ :: [Int],[],id _:_:_ :: [Int])
-(y:_ :: [Int],[],y:_ :: [Int])
-(1:_ :: [Int],[],1:_ :: [Int])
-(id x:_ :: [Int],[],id x:_ :: [Int])
-(id 0:_ :: [Int],[],id 0:_ :: [Int])
-(id (id _):_ :: [Int],[],id (id _):_ :: [Int])
-(negate _:_ :: [Int],[],negate _:_ :: [Int])
-(abs _:_ :: [Int],[],abs _:_ :: [Int])
-(_ + _:_ :: [Int],[],_ + _:_ :: [Int])
-(head _:_ :: [Int],[],head _:_ :: [Int])
-(ord _:_ :: [Int],[],ord _:_ :: [Int])
-(tail xs :: [Int],[],tail xs :: [Int])
-(tail [] :: [Int],[],tail [] :: [Int])
-(tail (_:_) :: [Int],[],tail (_:_) :: [Int])
-(_ ++ xs :: [Int],[],_ ++ xs :: [Int])
-(_ ++ [] :: [Int],[],_ ++ [] :: [Int])
-(_ ++ (_:_) :: [Int],[],_ ++ (_:_) :: [Int])
-(xs ++ _ :: [Int],[],xs ++ _ :: [Int])
-([] ++ _ :: [Int],[],[] ++ _ :: [Int])
-((_:_) ++ _ :: [Int],[],(_:_) ++ _ :: [Int])
-(sort _ :: [Int],[],sort _ :: [Int])
-(insert _ _ :: [Int],[],insert _ _ :: [Int])
-((x +) :: Int -> Int,[],(x +) :: Int -> Int)
-((0 +) :: Int -> Int,[],(0 +) :: Int -> Int)
-((id _ +) :: Int -> Int,[],(id _ +) :: Int -> Int)
-((_ *) :: Int -> Int,[],(_ *) :: Int -> Int)
-(f :: Int -> Int,[],f :: Int -> Int)
-((_ ||) :: Bool -> Bool,[],(_ ||) :: Bool -> Bool)
-((&&) :: Bool -> Bool -> Bool,[],(&&) :: Bool -> Bool -> Bool)
-(y' :: Int,[],y' :: Int)
-(-2 :: Int,[],-2 :: Int)
-(id x' :: Int,[],id x' :: Int)
-(id 2 :: Int,[],id 2 :: Int)
-(id (id z) :: Int,[],id (id z) :: Int)
-(id (id (-1)) :: Int,[],id (id (-1)) :: Int)
-(id (id (id y)) :: Int,[],id (id (id y)) :: Int)
-(id (id (id 1)) :: Int,[],id (id (id 1)) :: Int)
-(id (id (id (id x))) :: Int,[],id (id (id (id x))) :: Int)
-(id (id (id (id 0))) :: Int,[],id (id (id (id 0))) :: Int)
-(id (id (id (id (id _)))) :: Int,[],id (id (id (id (id _)))) :: Int)
-(id (id (id (negate _))) :: Int,[],id (id (id (negate _))) :: Int)
-(id (id (id (abs _))) :: Int,[],id (id (id (abs _))) :: Int)
-(id (id (id (_ + _))) :: Int,[],id (id (id (_ + _))) :: Int)
-(id (id (id (head _))) :: Int,[],id (id (id (head _))) :: Int)
-(id (id (id (ord _))) :: Int,[],id (id (id (ord _))) :: Int)
-(id (id (negate x)) :: Int,[],id (id (negate x)) :: Int)
-(id (id (negate 0)) :: Int,[],id (id (negate 0)) :: Int)
-(id (id (negate (id _))) :: Int,[],id (id (negate (id _))) :: Int)
-(id (id (abs x)) :: Int,[],id (id (abs x)) :: Int)
-(id (id (abs 0)) :: Int,[],id (id (abs 0)) :: Int)
-(id (id (abs (id _))) :: Int,[],id (id (abs (id _))) :: Int)
-(id (id (_ + x)) :: Int,[],id (id (_ + x)) :: Int)
-(id (id (_ + 0)) :: Int,[],id (id (_ + 0)) :: Int)
-(id (id (_ + id _)) :: Int,[],id (id (_ + id _)) :: Int)
-(id (id (x + _)) :: Int,[],id (id (x + _)) :: Int)
-(id (id (0 + _)) :: Int,[],id (id (0 + _)) :: Int)
-(id (id (id _ + _)) :: Int,[],id (id (id _ + _)) :: Int)
-(id (id (_ * _)) :: Int,[],id (id (_ * _)) :: Int)
-(id (id (f _)) :: Int,[],id (id (f _)) :: Int)
-(id (id (head xs)) :: Int,[],id (id (head xs)) :: Int)
-(id (id (head [])) :: Int,[],id (id (head [])) :: Int)
-(id (id (head (_:_))) :: Int,[],id (id (head (_:_))) :: Int)
-(id (id (ord c)) :: Int,[],id (id (ord c)) :: Int)
-(id (id (ord 'a')) :: Int,[],id (id (ord 'a')) :: Int)
-(id (negate y) :: Int,[],id (negate y) :: Int)
-(id (negate 1) :: Int,[],id (negate 1) :: Int)
-(id (negate (id x)) :: Int,[],id (negate (id x)) :: Int)
-(id (negate (id 0)) :: Int,[],id (negate (id 0)) :: Int)
-(id (negate (id (id _))) :: Int,[],id (negate (id (id _))) :: Int)
-(id (negate (negate _)) :: Int,[],id (negate (negate _)) :: Int)
-(id (negate (abs _)) :: Int,[],id (negate (abs _)) :: Int)
-(id (negate (_ + _)) :: Int,[],id (negate (_ + _)) :: Int)
-(id (negate (head _)) :: Int,[],id (negate (head _)) :: Int)
-(id (negate (ord _)) :: Int,[],id (negate (ord _)) :: Int)
-(id (abs y) :: Int,[],id (abs y) :: Int)
-(id (abs 1) :: Int,[],id (abs 1) :: Int)
-(id (abs (id x)) :: Int,[],id (abs (id x)) :: Int)
-(id (abs (id 0)) :: Int,[],id (abs (id 0)) :: Int)
-(id (abs (id (id _))) :: Int,[],id (abs (id (id _))) :: Int)
-(id (abs (negate _)) :: Int,[],id (abs (negate _)) :: Int)
-(id (abs (abs _)) :: Int,[],id (abs (abs _)) :: Int)
-(id (abs (_ + _)) :: Int,[],id (abs (_ + _)) :: Int)
-(id (abs (head _)) :: Int,[],id (abs (head _)) :: Int)
-(id (abs (ord _)) :: Int,[],id (abs (ord _)) :: Int)
-(id (_ + y) :: Int,[],id (_ + y) :: Int)
-(id (_ + 1) :: Int,[],id (_ + 1) :: Int)
-(id (_ + id x) :: Int,[],id (_ + id x) :: Int)
-(id (_ + id 0) :: Int,[],id (_ + id 0) :: Int)
-(id (_ + id (id _)) :: Int,[],id (_ + id (id _)) :: Int)
-(id (_ + negate _) :: Int,[],id (_ + negate _) :: Int)
-(id (_ + abs _) :: Int,[],id (_ + abs _) :: Int)
-(id (_ + (_ + _)) :: Int,[],id (_ + (_ + _)) :: Int)
-(id (_ + head _) :: Int,[],id (_ + head _) :: Int)
-(id (_ + ord _) :: Int,[],id (_ + ord _) :: Int)
-(id (x + x) :: Int,[],id (x + x) :: Int)
-(id (x + 0) :: Int,[],id (x + 0) :: Int)
-(id (x + id _) :: Int,[],id (x + id _) :: Int)
-(id (0 + x) :: Int,[],id (0 + x) :: Int)
-(id (0 + 0) :: Int,[],id (0 + 0) :: Int)
-(id (0 + id _) :: Int,[],id (0 + id _) :: Int)
-(id (id _ + x) :: Int,[],id (id _ + x) :: Int)
-(id (id _ + 0) :: Int,[],id (id _ + 0) :: Int)
-(id (id _ + id _) :: Int,[],id (id _ + id _) :: Int)
-(id (_ * x) :: Int,[],id (_ * x) :: Int)
-(id (_ * 0) :: Int,[],id (_ * 0) :: Int)
-(id (_ * id _) :: Int,[],id (_ * id _) :: Int)
-(id (f x) :: Int,[],id (f x) :: Int)
-(id (f 0) :: Int,[],id (f 0) :: Int)
-(id (f (id _)) :: Int,[],id (f (id _)) :: Int)
-(id (y + _) :: Int,[],id (y + _) :: Int)
-(id (1 + _) :: Int,[],id (1 + _) :: Int)
-(id (id x + _) :: Int,[],id (id x + _) :: Int)
-(id (id 0 + _) :: Int,[],id (id 0 + _) :: Int)
-(id (id (id _) + _) :: Int,[],id (id (id _) + _) :: Int)
-(id (negate _ + _) :: Int,[],id (negate _ + _) :: Int)
-(id (abs _ + _) :: Int,[],id (abs _ + _) :: Int)
-(id ((_ + _) + _) :: Int,[],id ((_ + _) + _) :: Int)
-(id (head _ + _) :: Int,[],id (head _ + _) :: Int)
-(id (ord _ + _) :: Int,[],id (ord _ + _) :: Int)
-(id (x * _) :: Int,[],id (x * _) :: Int)
-(id (0 * _) :: Int,[],id (0 * _) :: Int)
-(id (id _ * _) :: Int,[],id (id _ * _) :: Int)
-(id (g _) :: Int,[],id (g _) :: Int)
-(id (head ys) :: Int,[],id (head ys) :: Int)
-(id (head [0]) :: Int,[],id (head [0]) :: Int)
-(id (head (_:xs)) :: Int,[],id (head (_:xs)) :: Int)
-(id (head [_]) :: Int,[],id (head [_]) :: Int)
-(id (head (_:_:_)) :: Int,[],id (head (_:_:_)) :: Int)
-(id (head (x:_)) :: Int,[],id (head (x:_)) :: Int)
-(id (head (0:_)) :: Int,[],id (head (0:_)) :: Int)
-(id (head (id _:_)) :: Int,[],id (head (id _:_)) :: Int)
-(id (head (tail _)) :: Int,[],id (head (tail _)) :: Int)
-(id (head (_ ++ _)) :: Int,[],id (head (_ ++ _)) :: Int)
-(id (ord d) :: Int,[],id (ord d) :: Int)
-(id (ord ' ') :: Int,[],id (ord ' ') :: Int)
-(negate z :: Int,[],negate z :: Int)
-(negate (-1) :: Int,[],negate (-1) :: Int)
-(negate (id y) :: Int,[],negate (id y) :: Int)
-(negate (id 1) :: Int,[],negate (id 1) :: Int)
-(negate (id (id x)) :: Int,[],negate (id (id x)) :: Int)
-(negate (id (id 0)) :: Int,[],negate (id (id 0)) :: Int)
-(negate (id (id (id _))) :: Int,[],negate (id (id (id _))) :: Int)
-(negate (id (negate _)) :: Int,[],negate (id (negate _)) :: Int)
-(negate (id (abs _)) :: Int,[],negate (id (abs _)) :: Int)
-(negate (id (_ + _)) :: Int,[],negate (id (_ + _)) :: Int)
-(negate (id (head _)) :: Int,[],negate (id (head _)) :: Int)
-(negate (id (ord _)) :: Int,[],negate (id (ord _)) :: Int)
-(negate (negate x) :: Int,[],negate (negate x) :: Int)
-(negate (negate 0) :: Int,[],negate (negate 0) :: Int)
-(negate (negate (id _)) :: Int,[],negate (negate (id _)) :: Int)
-(negate (abs x) :: Int,[],negate (abs x) :: Int)
-(negate (abs 0) :: Int,[],negate (abs 0) :: Int)
-(negate (abs (id _)) :: Int,[],negate (abs (id _)) :: Int)
-(negate (_ + x) :: Int,[],negate (_ + x) :: Int)
-(negate (_ + 0) :: Int,[],negate (_ + 0) :: Int)
-(negate (_ + id _) :: Int,[],negate (_ + id _) :: Int)
-(negate (x + _) :: Int,[],negate (x + _) :: Int)
-(negate (0 + _) :: Int,[],negate (0 + _) :: Int)
-(negate (id _ + _) :: Int,[],negate (id _ + _) :: Int)
-(negate (_ * _) :: Int,[],negate (_ * _) :: Int)
-(negate (f _) :: Int,[],negate (f _) :: Int)
-(negate (head xs) :: Int,[],negate (head xs) :: Int)
-(negate (head []) :: Int,[],negate (head []) :: Int)
-(negate (head (_:_)) :: Int,[],negate (head (_:_)) :: Int)
-(negate (ord c) :: Int,[],negate (ord c) :: Int)
-(negate (ord 'a') :: Int,[],negate (ord 'a') :: Int)
-(abs z :: Int,[],abs z :: Int)
-(abs (-1) :: Int,[],abs (-1) :: Int)
-(abs (id y) :: Int,[],abs (id y) :: Int)
-(abs (id 1) :: Int,[],abs (id 1) :: Int)
-(abs (id (id x)) :: Int,[],abs (id (id x)) :: Int)
-(abs (id (id 0)) :: Int,[],abs (id (id 0)) :: Int)
-(abs (id (id (id _))) :: Int,[],abs (id (id (id _))) :: Int)
-(abs (id (negate _)) :: Int,[],abs (id (negate _)) :: Int)
-(abs (id (abs _)) :: Int,[],abs (id (abs _)) :: Int)
-(abs (id (_ + _)) :: Int,[],abs (id (_ + _)) :: Int)
-(abs (id (head _)) :: Int,[],abs (id (head _)) :: Int)
-(abs (id (ord _)) :: Int,[],abs (id (ord _)) :: Int)
-(abs (negate x) :: Int,[],abs (negate x) :: Int)
-(abs (negate 0) :: Int,[],abs (negate 0) :: Int)
-(abs (negate (id _)) :: Int,[],abs (negate (id _)) :: Int)
-(abs (abs x) :: Int,[],abs (abs x) :: Int)
-(abs (abs 0) :: Int,[],abs (abs 0) :: Int)
-(abs (abs (id _)) :: Int,[],abs (abs (id _)) :: Int)
-(abs (_ + x) :: Int,[],abs (_ + x) :: Int)
-(abs (_ + 0) :: Int,[],abs (_ + 0) :: Int)
-(abs (_ + id _) :: Int,[],abs (_ + id _) :: Int)
-(abs (x + _) :: Int,[],abs (x + _) :: Int)
-(abs (0 + _) :: Int,[],abs (0 + _) :: Int)
-(abs (id _ + _) :: Int,[],abs (id _ + _) :: Int)
-(abs (_ * _) :: Int,[],abs (_ * _) :: Int)
-(abs (f _) :: Int,[],abs (f _) :: Int)
-(abs (head xs) :: Int,[],abs (head xs) :: Int)
-(abs (head []) :: Int,[],abs (head []) :: Int)
-(abs (head (_:_)) :: Int,[],abs (head (_:_)) :: Int)
-(abs (ord c) :: Int,[],abs (ord c) :: Int)
-(abs (ord 'a') :: Int,[],abs (ord 'a') :: Int)
-(_ + z :: Int,[],_ + z :: Int)
-(_ + (-1) :: Int,[],_ + (-1) :: Int)
-(_ + id y :: Int,[],_ + id y :: Int)
-(_ + id 1 :: Int,[],_ + id 1 :: Int)
-(_ + id (id x) :: Int,[],_ + id (id x) :: Int)
-(_ + id (id 0) :: Int,[],_ + id (id 0) :: Int)
-(_ + id (id (id _)) :: Int,[],_ + id (id (id _)) :: Int)
-(_ + id (negate _) :: Int,[],_ + id (negate _) :: Int)
-(_ + id (abs _) :: Int,[],_ + id (abs _) :: Int)
-(_ + id (_ + _) :: Int,[],_ + id (_ + _) :: Int)
-(_ + id (head _) :: Int,[],_ + id (head _) :: Int)
-(_ + id (ord _) :: Int,[],_ + id (ord _) :: Int)
-(_ + negate x :: Int,[],_ + negate x :: Int)
-(_ + negate 0 :: Int,[],_ + negate 0 :: Int)
-(_ + negate (id _) :: Int,[],_ + negate (id _) :: Int)
-(_ + abs x :: Int,[],_ + abs x :: Int)
-(_ + abs 0 :: Int,[],_ + abs 0 :: Int)
-(_ + abs (id _) :: Int,[],_ + abs (id _) :: Int)
-(_ + (_ + x) :: Int,[],_ + (_ + x) :: Int)
-(_ + (_ + 0) :: Int,[],_ + (_ + 0) :: Int)
-(_ + (_ + id _) :: Int,[],_ + (_ + id _) :: Int)
-(_ + (x + _) :: Int,[],_ + (x + _) :: Int)
-(_ + (0 + _) :: Int,[],_ + (0 + _) :: Int)
-(_ + (id _ + _) :: Int,[],_ + (id _ + _) :: Int)
-(_ + _ * _ :: Int,[],_ + _ * _ :: Int)
-(_ + f _ :: Int,[],_ + f _ :: Int)
-(_ + head xs :: Int,[],_ + head xs :: Int)
-(_ + head [] :: Int,[],_ + head [] :: Int)
-(_ + head (_:_) :: Int,[],_ + head (_:_) :: Int)
-(_ + ord c :: Int,[],_ + ord c :: Int)
-(_ + ord 'a' :: Int,[],_ + ord 'a' :: Int)
-(x + y :: Int,[],x + y :: Int)
-(x + 1 :: Int,[],x + 1 :: Int)
-(x + id x :: Int,[],x + id x :: Int)
-(x + id 0 :: Int,[],x + id 0 :: Int)
-(x + id (id _) :: Int,[],x + id (id _) :: Int)
-(x + negate _ :: Int,[],x + negate _ :: Int)
-(x + abs _ :: Int,[],x + abs _ :: Int)
-(x + (_ + _) :: Int,[],x + (_ + _) :: Int)
-(x + head _ :: Int,[],x + head _ :: Int)
-(x + ord _ :: Int,[],x + ord _ :: Int)
-(0 + y :: Int,[],0 + y :: Int)
-(0 + 1 :: Int,[],0 + 1 :: Int)
-(0 + id x :: Int,[],0 + id x :: Int)
-(0 + id 0 :: Int,[],0 + id 0 :: Int)
-(0 + id (id _) :: Int,[],0 + id (id _) :: Int)
-(0 + negate _ :: Int,[],0 + negate _ :: Int)
-(0 + abs _ :: Int,[],0 + abs _ :: Int)
-(0 + (_ + _) :: Int,[],0 + (_ + _) :: Int)
-(0 + head _ :: Int,[],0 + head _ :: Int)
-(0 + ord _ :: Int,[],0 + ord _ :: Int)
-(id _ + y :: Int,[],id _ + y :: Int)
-(id _ + 1 :: Int,[],id _ + 1 :: Int)
-(id _ + id x :: Int,[],id _ + id x :: Int)
-(id _ + id 0 :: Int,[],id _ + id 0 :: Int)
-(id _ + id (id _) :: Int,[],id _ + id (id _) :: Int)
-(id _ + negate _ :: Int,[],id _ + negate _ :: Int)
-(id _ + abs _ :: Int,[],id _ + abs _ :: Int)
-(id _ + (_ + _) :: Int,[],id _ + (_ + _) :: Int)
-(id _ + head _ :: Int,[],id _ + head _ :: Int)
-(id _ + ord _ :: Int,[],id _ + ord _ :: Int)
-(_ * y :: Int,[],_ * y :: Int)
-(_ * 1 :: Int,[],_ * 1 :: Int)
-(_ * id x :: Int,[],_ * id x :: Int)
-(_ * id 0 :: Int,[],_ * id 0 :: Int)
-(_ * id (id _) :: Int,[],_ * id (id _) :: Int)
-(_ * negate _ :: Int,[],_ * negate _ :: Int)
-(_ * abs _ :: Int,[],_ * abs _ :: Int)
-(_ * (_ + _) :: Int,[],_ * (_ + _) :: Int)
-(_ * head _ :: Int,[],_ * head _ :: Int)
-(_ * ord _ :: Int,[],_ * ord _ :: Int)
-(f y :: Int,[],f y :: Int)
-(f 1 :: Int,[],f 1 :: Int)
-(f (id x) :: Int,[],f (id x) :: Int)
-(f (id 0) :: Int,[],f (id 0) :: Int)
-(f (id (id _)) :: Int,[],f (id (id _)) :: Int)
-(f (negate _) :: Int,[],f (negate _) :: Int)
-(f (abs _) :: Int,[],f (abs _) :: Int)
-(f (_ + _) :: Int,[],f (_ + _) :: Int)
-(f (head _) :: Int,[],f (head _) :: Int)
-(f (ord _) :: Int,[],f (ord _) :: Int)
-(y + x :: Int,[],y + x :: Int)
-(y + 0 :: Int,[],y + 0 :: Int)
-(y + id _ :: Int,[],y + id _ :: Int)
-(1 + x :: Int,[],1 + x :: Int)
-(1 + 0 :: Int,[],1 + 0 :: Int)
-(1 + id _ :: Int,[],1 + id _ :: Int)
-(id x + x :: Int,[],id x + x :: Int)
-(id x + 0 :: Int,[],id x + 0 :: Int)
-(id x + id _ :: Int,[],id x + id _ :: Int)
-(id 0 + x :: Int,[],id 0 + x :: Int)
-(id 0 + 0 :: Int,[],id 0 + 0 :: Int)
-(id 0 + id _ :: Int,[],id 0 + id _ :: Int)
-(id (id _) + x :: Int,[],id (id _) + x :: Int)
-(id (id _) + 0 :: Int,[],id (id _) + 0 :: Int)
-(id (id _) + id _ :: Int,[],id (id _) + id _ :: Int)
-(negate _ + x :: Int,[],negate _ + x :: Int)
-(negate _ + 0 :: Int,[],negate _ + 0 :: Int)
-(negate _ + id _ :: Int,[],negate _ + id _ :: Int)
-(abs _ + x :: Int,[],abs _ + x :: Int)
-(abs _ + 0 :: Int,[],abs _ + 0 :: Int)
-(abs _ + id _ :: Int,[],abs _ + id _ :: Int)
-((_ + _) + x :: Int,[],(_ + _) + x :: Int)
-((_ + _) + 0 :: Int,[],(_ + _) + 0 :: Int)
-((_ + _) + id _ :: Int,[],(_ + _) + id _ :: Int)
-(head _ + x :: Int,[],head _ + x :: Int)
-(head _ + 0 :: Int,[],head _ + 0 :: Int)
-(head _ + id _ :: Int,[],head _ + id _ :: Int)
-(ord _ + x :: Int,[],ord _ + x :: Int)
-(ord _ + 0 :: Int,[],ord _ + 0 :: Int)
-(ord _ + id _ :: Int,[],ord _ + id _ :: Int)
-(x * x :: Int,[],x * x :: Int)
-(x * 0 :: Int,[],x * 0 :: Int)
-(x * id _ :: Int,[],x * id _ :: Int)
-(0 * x :: Int,[],0 * x :: Int)
-(0 * 0 :: Int,[],0 * 0 :: Int)
-(0 * id _ :: Int,[],0 * id _ :: Int)
-(id _ * x :: Int,[],id _ * x :: Int)
-(id _ * 0 :: Int,[],id _ * 0 :: Int)
-(id _ * id _ :: Int,[],id _ * id _ :: Int)
-(g x :: Int,[],g x :: Int)
-(g 0 :: Int,[],g 0 :: Int)
-(g (id _) :: Int,[],g (id _) :: Int)
-(z + _ :: Int,[],z + _ :: Int)
-((-1) + _ :: Int,[],(-1) + _ :: Int)
-(id y + _ :: Int,[],id y + _ :: Int)
-(id 1 + _ :: Int,[],id 1 + _ :: Int)
-(id (id x) + _ :: Int,[],id (id x) + _ :: Int)
-(id (id 0) + _ :: Int,[],id (id 0) + _ :: Int)
-(id (id (id _)) + _ :: Int,[],id (id (id _)) + _ :: Int)
-(id (negate _) + _ :: Int,[],id (negate _) + _ :: Int)
-(id (abs _) + _ :: Int,[],id (abs _) + _ :: Int)
-(id (_ + _) + _ :: Int,[],id (_ + _) + _ :: Int)
-(id (head _) + _ :: Int,[],id (head _) + _ :: Int)
-(id (ord _) + _ :: Int,[],id (ord _) + _ :: Int)
-(negate x + _ :: Int,[],negate x + _ :: Int)
-(negate 0 + _ :: Int,[],negate 0 + _ :: Int)
-(negate (id _) + _ :: Int,[],negate (id _) + _ :: Int)
-(abs x + _ :: Int,[],abs x + _ :: Int)
-(abs 0 + _ :: Int,[],abs 0 + _ :: Int)
-(abs (id _) + _ :: Int,[],abs (id _) + _ :: Int)
-((_ + x) + _ :: Int,[],(_ + x) + _ :: Int)
-((_ + 0) + _ :: Int,[],(_ + 0) + _ :: Int)
-((_ + id _) + _ :: Int,[],(_ + id _) + _ :: Int)
-((x + _) + _ :: Int,[],(x + _) + _ :: Int)
-((0 + _) + _ :: Int,[],(0 + _) + _ :: Int)
-((id _ + _) + _ :: Int,[],(id _ + _) + _ :: Int)
-(_ * _ + _ :: Int,[],_ * _ + _ :: Int)
-(f _ + _ :: Int,[],f _ + _ :: Int)
-(head xs + _ :: Int,[],head xs + _ :: Int)
-(head [] + _ :: Int,[],head [] + _ :: Int)
-(head (_:_) + _ :: Int,[],head (_:_) + _ :: Int)
-(ord c + _ :: Int,[],ord c + _ :: Int)
-(ord 'a' + _ :: Int,[],ord 'a' + _ :: Int)
-(y * _ :: Int,[],y * _ :: Int)
-(1 * _ :: Int,[],1 * _ :: Int)
-(id x * _ :: Int,[],id x * _ :: Int)
-(id 0 * _ :: Int,[],id 0 * _ :: Int)
-(id (id _) * _ :: Int,[],id (id _) * _ :: Int)
-(negate _ * _ :: Int,[],negate _ * _ :: Int)
-(abs _ * _ :: Int,[],abs _ * _ :: Int)
-((_ + _) * _ :: Int,[],(_ + _) * _ :: Int)
-(head _ * _ :: Int,[],head _ * _ :: Int)
-(ord _ * _ :: Int,[],ord _ * _ :: Int)
-(h _ :: Int,[],h _ :: Int)
-(head zs :: Int,[],head zs :: Int)
-(head [0,0] :: Int,[],head [0,0] :: Int)
-(head [1] :: Int,[],head [1] :: Int)
-(head (_:ys) :: Int,[],head (_:ys) :: Int)
-(head [_,0] :: Int,[],head [_,0] :: Int)
-(head (_:_:xs) :: Int,[],head (_:_:xs) :: Int)
-(head [_,_] :: Int,[],head [_,_] :: Int)
-(head (_:_:_:_) :: Int,[],head (_:_:_:_) :: Int)
-(head (_:x:_) :: Int,[],head (_:x:_) :: Int)
-(head (_:0:_) :: Int,[],head (_:0:_) :: Int)
-(head (_:id _:_) :: Int,[],head (_:id _:_) :: Int)
-(head (_:tail _) :: Int,[],head (_:tail _) :: Int)
-(head (_:(_ ++ _)) :: Int,[],head (_:(_ ++ _)) :: Int)
-(head (x:xs) :: Int,[],head (x:xs) :: Int)
-(head [x] :: Int,[],head [x] :: Int)
-(head (x:_:_) :: Int,[],head (x:_:_) :: Int)
-(head (0:xs) :: Int,[],head (0:xs) :: Int)
-(head [0] :: Int,[],head [0] :: Int)
-(head (0:_:_) :: Int,[],head (0:_:_) :: Int)
-(head (id _:xs) :: Int,[],head (id _:xs) :: Int)
-(head [id _] :: Int,[],head [id _] :: Int)
-(head (id _:_:_) :: Int,[],head (id _:_:_) :: Int)
-(head (y:_) :: Int,[],head (y:_) :: Int)
-(head (1:_) :: Int,[],head (1:_) :: Int)
-(head (id x:_) :: Int,[],head (id x:_) :: Int)
-(head (id 0:_) :: Int,[],head (id 0:_) :: Int)
-(head (id (id _):_) :: Int,[],head (id (id _):_) :: Int)
-(head (negate _:_) :: Int,[],head (negate _:_) :: Int)
-(head (abs _:_) :: Int,[],head (abs _:_) :: Int)
-(head (_ + _:_) :: Int,[],head (_ + _:_) :: Int)
-(head (head _:_) :: Int,[],head (head _:_) :: Int)
-(head (ord _:_) :: Int,[],head (ord _:_) :: Int)
-(head (tail xs) :: Int,[],head (tail xs) :: Int)
-(head (tail []) :: Int,[],head (tail []) :: Int)
-(head (tail (_:_)) :: Int,[],head (tail (_:_)) :: Int)
-(head (_ ++ xs) :: Int,[],head (_ ++ xs) :: Int)
-(head (_ ++ []) :: Int,[],head (_ ++ []) :: Int)
-(head (_ ++ (_:_)) :: Int,[],head (_ ++ (_:_)) :: Int)
-(head (xs ++ _) :: Int,[],head (xs ++ _) :: Int)
-(head ([] ++ _) :: Int,[],head ([] ++ _) :: Int)
-(head ((_:_) ++ _) :: Int,[],head ((_:_) ++ _) :: Int)
-(head (sort _) :: Int,[],head (sort _) :: Int)
-(head (insert _ _) :: Int,[],head (insert _ _) :: Int)
-(ord e :: Int,[],ord e :: Int)
-(ord 'b' :: Int,[],ord 'b' :: Int)
-(p' :: Bool,[],p' :: Bool)
-(not r :: Bool,[],not r :: Bool)
-(not (not q) :: Bool,[],not (not q) :: Bool)
-(not (not (not p)) :: Bool,[],not (not (not p)) :: Bool)
-(not (not (not False)) :: Bool,[],not (not (not False)) :: Bool)
-(not (not (not True)) :: Bool,[],not (not (not True)) :: Bool)
-(not (not (not (not _))) :: Bool,[],not (not (not (not _))) :: Bool)
-(not (not (_ || _)) :: Bool,[],not (not (_ || _)) :: Bool)
-(not (_ || p) :: Bool,[],not (_ || p) :: Bool)
-(not (_ || False) :: Bool,[],not (_ || False) :: Bool)
-(not (_ || True) :: Bool,[],not (_ || True) :: Bool)
-(not (_ || not _) :: Bool,[],not (_ || not _) :: Bool)
-(not (p || _) :: Bool,[],not (p || _) :: Bool)
-(not (False || _) :: Bool,[],not (False || _) :: Bool)
-(not (True || _) :: Bool,[],not (True || _) :: Bool)
-(not (not _ || _) :: Bool,[],not (not _ || _) :: Bool)
-(not (_ && _) :: Bool,[],not (_ && _) :: Bool)
-(not (_ == _) :: Bool,[],not (_ == _) :: Bool)
-(not (_ == _) :: Bool,[],not (_ == _) :: Bool)
-(not (odd _) :: Bool,[],not (odd _) :: Bool)
-(not (even _) :: Bool,[],not (even _) :: Bool)
-(not (elem _ _) :: Bool,[],not (elem _ _) :: Bool)
-(_ || q :: Bool,[],_ || q :: Bool)
-(_ || not p :: Bool,[],_ || not p :: Bool)
-(_ || not False :: Bool,[],_ || not False :: Bool)
-(_ || not True :: Bool,[],_ || not True :: Bool)
-(_ || not (not _) :: Bool,[],_ || not (not _) :: Bool)
-(_ || (_ || _) :: Bool,[],_ || (_ || _) :: Bool)
-(p || p :: Bool,[],p || p :: Bool)
-(p || False :: Bool,[],p || False :: Bool)
-(p || True :: Bool,[],p || True :: Bool)
-(p || not _ :: Bool,[],p || not _ :: Bool)
-(False || p :: Bool,[],False || p :: Bool)
-(False || False :: Bool,[],False || False :: Bool)
-(False || True :: Bool,[],False || True :: Bool)
-(False || not _ :: Bool,[],False || not _ :: Bool)
-(True || p :: Bool,[],True || p :: Bool)
-(True || False :: Bool,[],True || False :: Bool)
-(True || True :: Bool,[],True || True :: Bool)
-(True || not _ :: Bool,[],True || not _ :: Bool)
-(not _ || p :: Bool,[],not _ || p :: Bool)
-(not _ || False :: Bool,[],not _ || False :: Bool)
-(not _ || True :: Bool,[],not _ || True :: Bool)
-(not _ || not _ :: Bool,[],not _ || not _ :: Bool)
-(_ && p :: Bool,[],_ && p :: Bool)
-(_ && False :: Bool,[],_ && False :: Bool)
-(_ && True :: Bool,[],_ && True :: Bool)
-(_ && not _ :: Bool,[],_ && not _ :: Bool)
-(q || _ :: Bool,[],q || _ :: Bool)
-(not p || _ :: Bool,[],not p || _ :: Bool)
-(not False || _ :: Bool,[],not False || _ :: Bool)
-(not True || _ :: Bool,[],not True || _ :: Bool)
-(not (not _) || _ :: Bool,[],not (not _) || _ :: Bool)
-((_ || _) || _ :: Bool,[],(_ || _) || _ :: Bool)
-(p && _ :: Bool,[],p && _ :: Bool)
-(False && _ :: Bool,[],False && _ :: Bool)
-(True && _ :: Bool,[],True && _ :: Bool)
-(not _ && _ :: Bool,[],not _ && _ :: Bool)
-(_ ==> _ :: Bool,[],_ ==> _ :: Bool)
-(_ == x :: Bool,[],_ == x :: Bool)
-(_ == 0 :: Bool,[],_ == 0 :: Bool)
-(_ == id _ :: Bool,[],_ == id _ :: Bool)
-(x == _ :: Bool,[],x == _ :: Bool)
-(0 == _ :: Bool,[],0 == _ :: Bool)
-(id _ == _ :: Bool,[],id _ == _ :: Bool)
-(_ == p :: Bool,[],_ == p :: Bool)
-(_ == False :: Bool,[],_ == False :: Bool)
-(_ == True :: Bool,[],_ == True :: Bool)
-(_ == not _ :: Bool,[],_ == not _ :: Bool)
-(p == _ :: Bool,[],p == _ :: Bool)
-(False == _ :: Bool,[],False == _ :: Bool)
-(True == _ :: Bool,[],True == _ :: Bool)
-(not _ == _ :: Bool,[],not _ == _ :: Bool)
-(_ <= _ :: Bool,[],_ <= _ :: Bool)
-(_ <= _ :: Bool,[],_ <= _ :: Bool)
-(odd x :: Bool,[],odd x :: Bool)
-(odd 0 :: Bool,[],odd 0 :: Bool)
-(odd (id _) :: Bool,[],odd (id _) :: Bool)
-(even x :: Bool,[],even x :: Bool)
-(even 0 :: Bool,[],even 0 :: Bool)
-(even (id _) :: Bool,[],even (id _) :: Bool)
-(elem _ xs :: Bool,[],elem _ xs :: Bool)
-(elem _ [] :: Bool,[],elem _ [] :: Bool)
-(elem _ (_:_) :: Bool,[],elem _ (_:_) :: Bool)
-(elem x _ :: Bool,[],elem x _ :: Bool)
-(elem 0 _ :: Bool,[],elem 0 _ :: Bool)
-(elem (id _) _ :: Bool,[],elem (id _) _ :: Bool)
-(c' :: Char,[],c' :: Char)
-('A' :: Char,[],'A' :: Char)
-(xs' :: [Int],[],xs' :: [Int])
-([0,0,0] :: [Int],[],[0,0,0] :: [Int])
-([0,1] :: [Int],[],[0,1] :: [Int])
-([1,0] :: [Int],[],[1,0] :: [Int])
-([-1] :: [Int],[],[-1] :: [Int])
-(_:zs :: [Int],[],_:zs :: [Int])
-([_,0,0] :: [Int],[],[_,0,0] :: [Int])
-([_,1] :: [Int],[],[_,1] :: [Int])
-(_:_:ys :: [Int],[],_:_:ys :: [Int])
-([_,_,0] :: [Int],[],[_,_,0] :: [Int])
-(_:_:_:xs :: [Int],[],_:_:_:xs :: [Int])
-([_,_,_] :: [Int],[],[_,_,_] :: [Int])
-(_:_:_:_:_ :: [Int],[],_:_:_:_:_ :: [Int])
-(_:_:x:_ :: [Int],[],_:_:x:_ :: [Int])
-(_:_:0:_ :: [Int],[],_:_:0:_ :: [Int])
-(_:_:id _:_ :: [Int],[],_:_:id _:_ :: [Int])
-(_:_:tail _ :: [Int],[],_:_:tail _ :: [Int])
-(_:_:(_ ++ _) :: [Int],[],_:_:(_ ++ _) :: [Int])
-(_:x:xs :: [Int],[],_:x:xs :: [Int])
-([_,x] :: [Int],[],[_,x] :: [Int])
-(_:x:_:_ :: [Int],[],_:x:_:_ :: [Int])
-(_:0:xs :: [Int],[],_:0:xs :: [Int])
-([_,0] :: [Int],[],[_,0] :: [Int])
-(_:0:_:_ :: [Int],[],_:0:_:_ :: [Int])
-(_:id _:xs :: [Int],[],_:id _:xs :: [Int])
-([_,id _] :: [Int],[],[_,id _] :: [Int])
-(_:id _:_:_ :: [Int],[],_:id _:_:_ :: [Int])
-(_:y:_ :: [Int],[],_:y:_ :: [Int])
-(_:1:_ :: [Int],[],_:1:_ :: [Int])
-(_:id x:_ :: [Int],[],_:id x:_ :: [Int])
-(_:id 0:_ :: [Int],[],_:id 0:_ :: [Int])
-(_:id (id _):_ :: [Int],[],_:id (id _):_ :: [Int])
-(_:negate _:_ :: [Int],[],_:negate _:_ :: [Int])
-(_:abs _:_ :: [Int],[],_:abs _:_ :: [Int])
-(_:_ + _:_ :: [Int],[],_:_ + _:_ :: [Int])
-(_:head _:_ :: [Int],[],_:head _:_ :: [Int])
-(_:ord _:_ :: [Int],[],_:ord _:_ :: [Int])
-(_:tail xs :: [Int],[],_:tail xs :: [Int])
-(_:tail [] :: [Int],[],_:tail [] :: [Int])
-(_:tail (_:_) :: [Int],[],_:tail (_:_) :: [Int])
-(_:(_ ++ xs) :: [Int],[],_:(_ ++ xs) :: [Int])
-(_:(_ ++ []) :: [Int],[],_:(_ ++ []) :: [Int])
-(_:(_ ++ (_:_)) :: [Int],[],_:(_ ++ (_:_)) :: [Int])
-(_:(xs ++ _) :: [Int],[],_:(xs ++ _) :: [Int])
-(_:([] ++ _) :: [Int],[],_:([] ++ _) :: [Int])
-(_:((_:_) ++ _) :: [Int],[],_:((_:_) ++ _) :: [Int])
-(_:sort _ :: [Int],[],_:sort _ :: [Int])
-(_:insert _ _ :: [Int],[],_:insert _ _ :: [Int])
-(x:ys :: [Int],[],x:ys :: [Int])
-([x,0] :: [Int],[],[x,0] :: [Int])
-(x:_:xs :: [Int],[],x:_:xs :: [Int])
-([x,_] :: [Int],[],[x,_] :: [Int])
-(x:_:_:_ :: [Int],[],x:_:_:_ :: [Int])
-(x:x:_ :: [Int],[],x:x:_ :: [Int])
-(x:0:_ :: [Int],[],x:0:_ :: [Int])
-(x:id _:_ :: [Int],[],x:id _:_ :: [Int])
-(x:tail _ :: [Int],[],x:tail _ :: [Int])
-(x:(_ ++ _) :: [Int],[],x:(_ ++ _) :: [Int])
-(0:ys :: [Int],[],0:ys :: [Int])
-([0,0] :: [Int],[],[0,0] :: [Int])
-(0:_:xs :: [Int],[],0:_:xs :: [Int])
-([0,_] :: [Int],[],[0,_] :: [Int])
-(0:_:_:_ :: [Int],[],0:_:_:_ :: [Int])
-(0:x:_ :: [Int],[],0:x:_ :: [Int])
-(0:0:_ :: [Int],[],0:0:_ :: [Int])
-(0:id _:_ :: [Int],[],0:id _:_ :: [Int])
-(0:tail _ :: [Int],[],0:tail _ :: [Int])
-(0:(_ ++ _) :: [Int],[],0:(_ ++ _) :: [Int])
-(id _:ys :: [Int],[],id _:ys :: [Int])
-([id _,0] :: [Int],[],[id _,0] :: [Int])
-(id _:_:xs :: [Int],[],id _:_:xs :: [Int])
-([id _,_] :: [Int],[],[id _,_] :: [Int])
-(id _:_:_:_ :: [Int],[],id _:_:_:_ :: [Int])
-(id _:x:_ :: [Int],[],id _:x:_ :: [Int])
-(id _:0:_ :: [Int],[],id _:0:_ :: [Int])
-(id _:id _:_ :: [Int],[],id _:id _:_ :: [Int])
-(id _:tail _ :: [Int],[],id _:tail _ :: [Int])
-(id _:(_ ++ _) :: [Int],[],id _:(_ ++ _) :: [Int])
-(y:xs :: [Int],[],y:xs :: [Int])
-([y] :: [Int],[],[y] :: [Int])
-(y:_:_ :: [Int],[],y:_:_ :: [Int])
-(1:xs :: [Int],[],1:xs :: [Int])
-([1] :: [Int],[],[1] :: [Int])
-(1:_:_ :: [Int],[],1:_:_ :: [Int])
-(id x:xs :: [Int],[],id x:xs :: [Int])
-([id x] :: [Int],[],[id x] :: [Int])
-(id x:_:_ :: [Int],[],id x:_:_ :: [Int])
-(id 0:xs :: [Int],[],id 0:xs :: [Int])
-([id 0] :: [Int],[],[id 0] :: [Int])
-(id 0:_:_ :: [Int],[],id 0:_:_ :: [Int])
-(id (id _):xs :: [Int],[],id (id _):xs :: [Int])
-([id (id _)] :: [Int],[],[id (id _)] :: [Int])
-(id (id _):_:_ :: [Int],[],id (id _):_:_ :: [Int])
-(negate _:xs :: [Int],[],negate _:xs :: [Int])
-([negate _] :: [Int],[],[negate _] :: [Int])
-(negate _:_:_ :: [Int],[],negate _:_:_ :: [Int])
-(abs _:xs :: [Int],[],abs _:xs :: [Int])
-([abs _] :: [Int],[],[abs _] :: [Int])
-(abs _:_:_ :: [Int],[],abs _:_:_ :: [Int])
-(_ + _:xs :: [Int],[],_ + _:xs :: [Int])
-([_ + _] :: [Int],[],[_ + _] :: [Int])
-(_ + _:_:_ :: [Int],[],_ + _:_:_ :: [Int])
-(head _:xs :: [Int],[],head _:xs :: [Int])
-([head _] :: [Int],[],[head _] :: [Int])
-(head _:_:_ :: [Int],[],head _:_:_ :: [Int])
-(ord _:xs :: [Int],[],ord _:xs :: [Int])
-([ord _] :: [Int],[],[ord _] :: [Int])
-(ord _:_:_ :: [Int],[],ord _:_:_ :: [Int])
-(z:_ :: [Int],[],z:_ :: [Int])
-((-1):_ :: [Int],[],(-1):_ :: [Int])
-(id y:_ :: [Int],[],id y:_ :: [Int])
-(id 1:_ :: [Int],[],id 1:_ :: [Int])
-(id (id x):_ :: [Int],[],id (id x):_ :: [Int])
-(id (id 0):_ :: [Int],[],id (id 0):_ :: [Int])
-(id (id (id _)):_ :: [Int],[],id (id (id _)):_ :: [Int])
-(id (negate _):_ :: [Int],[],id (negate _):_ :: [Int])
-(id (abs _):_ :: [Int],[],id (abs _):_ :: [Int])
-(id (_ + _):_ :: [Int],[],id (_ + _):_ :: [Int])
-(id (head _):_ :: [Int],[],id (head _):_ :: [Int])
-(id (ord _):_ :: [Int],[],id (ord _):_ :: [Int])
-(negate x:_ :: [Int],[],negate x:_ :: [Int])
-(negate 0:_ :: [Int],[],negate 0:_ :: [Int])
-(negate (id _):_ :: [Int],[],negate (id _):_ :: [Int])
-(abs x:_ :: [Int],[],abs x:_ :: [Int])
-(abs 0:_ :: [Int],[],abs 0:_ :: [Int])
-(abs (id _):_ :: [Int],[],abs (id _):_ :: [Int])
-(_ + x:_ :: [Int],[],_ + x:_ :: [Int])
-(_ + 0:_ :: [Int],[],_ + 0:_ :: [Int])
-(_ + id _:_ :: [Int],[],_ + id _:_ :: [Int])
-(x + _:_ :: [Int],[],x + _:_ :: [Int])
-(0 + _:_ :: [Int],[],0 + _:_ :: [Int])
-(id _ + _:_ :: [Int],[],id _ + _:_ :: [Int])
-(_ * _:_ :: [Int],[],_ * _:_ :: [Int])
-(f _:_ :: [Int],[],f _:_ :: [Int])
-(head xs:_ :: [Int],[],head xs:_ :: [Int])
-(head []:_ :: [Int],[],head []:_ :: [Int])
-(head (_:_):_ :: [Int],[],head (_:_):_ :: [Int])
-(ord c:_ :: [Int],[],ord c:_ :: [Int])
-(ord 'a':_ :: [Int],[],ord 'a':_ :: [Int])
-(tail ys :: [Int],[],tail ys :: [Int])
-(tail [0] :: [Int],[],tail [0] :: [Int])
-(tail (_:xs) :: [Int],[],tail (_:xs) :: [Int])
-(tail [_] :: [Int],[],tail [_] :: [Int])
-(tail (_:_:_) :: [Int],[],tail (_:_:_) :: [Int])
-(tail (x:_) :: [Int],[],tail (x:_) :: [Int])
-(tail (0:_) :: [Int],[],tail (0:_) :: [Int])
-(tail (id _:_) :: [Int],[],tail (id _:_) :: [Int])
-(tail (tail _) :: [Int],[],tail (tail _) :: [Int])
-(tail (_ ++ _) :: [Int],[],tail (_ ++ _) :: [Int])
-(_ ++ ys :: [Int],[],_ ++ ys :: [Int])
-(_ ++ [0] :: [Int],[],_ ++ [0] :: [Int])
-(_ ++ (_:xs) :: [Int],[],_ ++ (_:xs) :: [Int])
-(_ ++ [_] :: [Int],[],_ ++ [_] :: [Int])
-(_ ++ (_:_:_) :: [Int],[],_ ++ (_:_:_) :: [Int])
-(_ ++ (x:_) :: [Int],[],_ ++ (x:_) :: [Int])
-(_ ++ (0:_) :: [Int],[],_ ++ (0:_) :: [Int])
-(_ ++ (id _:_) :: [Int],[],_ ++ (id _:_) :: [Int])
-(_ ++ tail _ :: [Int],[],_ ++ tail _ :: [Int])
-(_ ++ (_ ++ _) :: [Int],[],_ ++ (_ ++ _) :: [Int])
-(xs ++ xs :: [Int],[],xs ++ xs :: [Int])
-(xs ++ [] :: [Int],[],xs ++ [] :: [Int])
-(xs ++ (_:_) :: [Int],[],xs ++ (_:_) :: [Int])
-([] ++ xs :: [Int],[],[] ++ xs :: [Int])
-([] ++ [] :: [Int],[],[] ++ [] :: [Int])
-([] ++ (_:_) :: [Int],[],[] ++ (_:_) :: [Int])
-((_:_) ++ xs :: [Int],[],(_:_) ++ xs :: [Int])
-((_:_) ++ [] :: [Int],[],(_:_) ++ [] :: [Int])
-((_:_) ++ (_:_) :: [Int],[],(_:_) ++ (_:_) :: [Int])
-(ys ++ _ :: [Int],[],ys ++ _ :: [Int])
-([0] ++ _ :: [Int],[],[0] ++ _ :: [Int])
-((_:xs) ++ _ :: [Int],[],(_:xs) ++ _ :: [Int])
-([_] ++ _ :: [Int],[],[_] ++ _ :: [Int])
-((_:_:_) ++ _ :: [Int],[],(_:_:_) ++ _ :: [Int])
-((x:_) ++ _ :: [Int],[],(x:_) ++ _ :: [Int])
-((0:_) ++ _ :: [Int],[],(0:_) ++ _ :: [Int])
-((id _:_) ++ _ :: [Int],[],(id _:_) ++ _ :: [Int])
-(tail _ ++ _ :: [Int],[],tail _ ++ _ :: [Int])
-((_ ++ _) ++ _ :: [Int],[],(_ ++ _) ++ _ :: [Int])
-(sort xs :: [Int],[],sort xs :: [Int])
-(sort [] :: [Int],[],sort [] :: [Int])
-(sort (_:_) :: [Int],[],sort (_:_) :: [Int])
-(insert _ xs :: [Int],[],insert _ xs :: [Int])
-(insert _ [] :: [Int],[],insert _ [] :: [Int])
-(insert _ (_:_) :: [Int],[],insert _ (_:_) :: [Int])
-(insert x _ :: [Int],[],insert x _ :: [Int])
-(insert 0 _ :: [Int],[],insert 0 _ :: [Int])
-(insert (id _) _ :: [Int],[],insert (id _) _ :: [Int])
-((y +) :: Int -> Int,[],(y +) :: Int -> Int)
-((1 +) :: Int -> Int,[],(1 +) :: Int -> Int)
-((id x +) :: Int -> Int,[],(id x +) :: Int -> Int)
-((id 0 +) :: Int -> Int,[],(id 0 +) :: Int -> Int)
-((id (id _) +) :: Int -> Int,[],(id (id _) +) :: Int -> Int)
-((negate _ +) :: Int -> Int,[],(negate _ +) :: Int -> Int)
-((abs _ +) :: Int -> Int,[],(abs _ +) :: Int -> Int)
-(((_ + _) +) :: Int -> Int,[],((_ + _) +) :: Int -> Int)
-((head _ +) :: Int -> Int,[],(head _ +) :: Int -> Int)
-((ord _ +) :: Int -> Int,[],(ord _ +) :: Int -> Int)
-((x *) :: Int -> Int,[],(x *) :: Int -> Int)
-((0 *) :: Int -> Int,[],(0 *) :: Int -> Int)
-((id _ *) :: Int -> Int,[],(id _ *) :: Int -> Int)
-(g :: Int -> Int,[],g :: Int -> Int)
-((p ||) :: Bool -> Bool,[],(p ||) :: Bool -> Bool)
-((False ||) :: Bool -> Bool,[],(False ||) :: Bool -> Bool)
-((True ||) :: Bool -> Bool,[],(True ||) :: Bool -> Bool)
-((not _ ||) :: Bool -> Bool,[],(not _ ||) :: Bool -> Bool)
-((_ &&) :: Bool -> Bool,[],(_ &&) :: Bool -> Bool)
-((==>) :: Bool -> Bool -> Bool,[],(==>) :: Bool -> Bool -> Bool)
-(z' :: Int,[],z' :: Int)
-(3 :: Int,[],3 :: Int)
-(id y' :: Int,[],id y' :: Int)
-(id (-2) :: Int,[],id (-2) :: Int)
-(id (id x') :: Int,[],id (id x') :: Int)
-(id (id 2) :: Int,[],id (id 2) :: Int)
-(id (id (id z)) :: Int,[],id (id (id z)) :: Int)
-(id (id (id (-1))) :: Int,[],id (id (id (-1))) :: Int)
-(id (id (id (id y))) :: Int,[],id (id (id (id y))) :: Int)
-(id (id (id (id 1))) :: Int,[],id (id (id (id 1))) :: Int)
-(id (id (id (id (id x)))) :: Int,[],id (id (id (id (id x)))) :: Int)
-(id (id (id (id (id 0)))) :: Int,[],id (id (id (id (id 0)))) :: Int)
-(id (id (id (id (id (id _))))) :: Int,[],id (id (id (id (id (id _))))) :: Int)
-(id (id (id (id (negate _)))) :: Int,[],id (id (id (id (negate _)))) :: Int)
-(id (id (id (id (abs _)))) :: Int,[],id (id (id (id (abs _)))) :: Int)
-(id (id (id (id (_ + _)))) :: Int,[],id (id (id (id (_ + _)))) :: Int)
-(id (id (id (id (head _)))) :: Int,[],id (id (id (id (head _)))) :: Int)
-(id (id (id (id (ord _)))) :: Int,[],id (id (id (id (ord _)))) :: Int)
-(id (id (id (negate x))) :: Int,[],id (id (id (negate x))) :: Int)
-(id (id (id (negate 0))) :: Int,[],id (id (id (negate 0))) :: Int)
-(id (id (id (negate (id _)))) :: Int,[],id (id (id (negate (id _)))) :: Int)
-(id (id (id (abs x))) :: Int,[],id (id (id (abs x))) :: Int)
-(id (id (id (abs 0))) :: Int,[],id (id (id (abs 0))) :: Int)
-(id (id (id (abs (id _)))) :: Int,[],id (id (id (abs (id _)))) :: Int)
-(id (id (id (_ + x))) :: Int,[],id (id (id (_ + x))) :: Int)
-(id (id (id (_ + 0))) :: Int,[],id (id (id (_ + 0))) :: Int)
-(id (id (id (_ + id _))) :: Int,[],id (id (id (_ + id _))) :: Int)
-(id (id (id (x + _))) :: Int,[],id (id (id (x + _))) :: Int)
-(id (id (id (0 + _))) :: Int,[],id (id (id (0 + _))) :: Int)
-(id (id (id (id _ + _))) :: Int,[],id (id (id (id _ + _))) :: Int)
-(id (id (id (_ * _))) :: Int,[],id (id (id (_ * _))) :: Int)
-(id (id (id (f _))) :: Int,[],id (id (id (f _))) :: Int)
-(id (id (id (head xs))) :: Int,[],id (id (id (head xs))) :: Int)
-(id (id (id (head []))) :: Int,[],id (id (id (head []))) :: Int)
-(id (id (id (head (_:_)))) :: Int,[],id (id (id (head (_:_)))) :: Int)
-(id (id (id (ord c))) :: Int,[],id (id (id (ord c))) :: Int)
-(id (id (id (ord 'a'))) :: Int,[],id (id (id (ord 'a'))) :: Int)
-(id (id (negate y)) :: Int,[],id (id (negate y)) :: Int)
-(id (id (negate 1)) :: Int,[],id (id (negate 1)) :: Int)
-(id (id (negate (id x))) :: Int,[],id (id (negate (id x))) :: Int)
-(id (id (negate (id 0))) :: Int,[],id (id (negate (id 0))) :: Int)
-(id (id (negate (id (id _)))) :: Int,[],id (id (negate (id (id _)))) :: Int)
-(id (id (negate (negate _))) :: Int,[],id (id (negate (negate _))) :: Int)
-(id (id (negate (abs _))) :: Int,[],id (id (negate (abs _))) :: Int)
-(id (id (negate (_ + _))) :: Int,[],id (id (negate (_ + _))) :: Int)
-(id (id (negate (head _))) :: Int,[],id (id (negate (head _))) :: Int)
-(id (id (negate (ord _))) :: Int,[],id (id (negate (ord _))) :: Int)
-(id (id (abs y)) :: Int,[],id (id (abs y)) :: Int)
-(id (id (abs 1)) :: Int,[],id (id (abs 1)) :: Int)
-(id (id (abs (id x))) :: Int,[],id (id (abs (id x))) :: Int)
-(id (id (abs (id 0))) :: Int,[],id (id (abs (id 0))) :: Int)
-(id (id (abs (id (id _)))) :: Int,[],id (id (abs (id (id _)))) :: Int)
-(id (id (abs (negate _))) :: Int,[],id (id (abs (negate _))) :: Int)
-(id (id (abs (abs _))) :: Int,[],id (id (abs (abs _))) :: Int)
-(id (id (abs (_ + _))) :: Int,[],id (id (abs (_ + _))) :: Int)
-(id (id (abs (head _))) :: Int,[],id (id (abs (head _))) :: Int)
-(id (id (abs (ord _))) :: Int,[],id (id (abs (ord _))) :: Int)
-(id (id (_ + y)) :: Int,[],id (id (_ + y)) :: Int)
-(id (id (_ + 1)) :: Int,[],id (id (_ + 1)) :: Int)
-(id (id (_ + id x)) :: Int,[],id (id (_ + id x)) :: Int)
-(id (id (_ + id 0)) :: Int,[],id (id (_ + id 0)) :: Int)
-(id (id (_ + id (id _))) :: Int,[],id (id (_ + id (id _))) :: Int)
-(id (id (_ + negate _)) :: Int,[],id (id (_ + negate _)) :: Int)
-(id (id (_ + abs _)) :: Int,[],id (id (_ + abs _)) :: Int)
-(id (id (_ + (_ + _))) :: Int,[],id (id (_ + (_ + _))) :: Int)
-(id (id (_ + head _)) :: Int,[],id (id (_ + head _)) :: Int)
-(id (id (_ + ord _)) :: Int,[],id (id (_ + ord _)) :: Int)
-(id (id (x + x)) :: Int,[],id (id (x + x)) :: Int)
-(id (id (x + 0)) :: Int,[],id (id (x + 0)) :: Int)
-(id (id (x + id _)) :: Int,[],id (id (x + id _)) :: Int)
-(id (id (0 + x)) :: Int,[],id (id (0 + x)) :: Int)
-(id (id (0 + 0)) :: Int,[],id (id (0 + 0)) :: Int)
-(id (id (0 + id _)) :: Int,[],id (id (0 + id _)) :: Int)
-(id (id (id _ + x)) :: Int,[],id (id (id _ + x)) :: Int)
-(id (id (id _ + 0)) :: Int,[],id (id (id _ + 0)) :: Int)
-(id (id (id _ + id _)) :: Int,[],id (id (id _ + id _)) :: Int)
-(id (id (_ * x)) :: Int,[],id (id (_ * x)) :: Int)
-(id (id (_ * 0)) :: Int,[],id (id (_ * 0)) :: Int)
-(id (id (_ * id _)) :: Int,[],id (id (_ * id _)) :: Int)
-(id (id (f x)) :: Int,[],id (id (f x)) :: Int)
-(id (id (f 0)) :: Int,[],id (id (f 0)) :: Int)
-(id (id (f (id _))) :: Int,[],id (id (f (id _))) :: Int)
-(id (id (y + _)) :: Int,[],id (id (y + _)) :: Int)
-(id (id (1 + _)) :: Int,[],id (id (1 + _)) :: Int)
-(id (id (id x + _)) :: Int,[],id (id (id x + _)) :: Int)
-(id (id (id 0 + _)) :: Int,[],id (id (id 0 + _)) :: Int)
-(id (id (id (id _) + _)) :: Int,[],id (id (id (id _) + _)) :: Int)
-(id (id (negate _ + _)) :: Int,[],id (id (negate _ + _)) :: Int)
-(id (id (abs _ + _)) :: Int,[],id (id (abs _ + _)) :: Int)
-(id (id ((_ + _) + _)) :: Int,[],id (id ((_ + _) + _)) :: Int)
-(id (id (head _ + _)) :: Int,[],id (id (head _ + _)) :: Int)
-(id (id (ord _ + _)) :: Int,[],id (id (ord _ + _)) :: Int)
-(id (id (x * _)) :: Int,[],id (id (x * _)) :: Int)
-(id (id (0 * _)) :: Int,[],id (id (0 * _)) :: Int)
-(id (id (id _ * _)) :: Int,[],id (id (id _ * _)) :: Int)
-(id (id (g _)) :: Int,[],id (id (g _)) :: Int)
-(id (id (head ys)) :: Int,[],id (id (head ys)) :: Int)
-(id (id (head [0])) :: Int,[],id (id (head [0])) :: Int)
-(id (id (head (_:xs))) :: Int,[],id (id (head (_:xs))) :: Int)
-(id (id (head [_])) :: Int,[],id (id (head [_])) :: Int)
-(id (id (head (_:_:_))) :: Int,[],id (id (head (_:_:_))) :: Int)
-(id (id (head (x:_))) :: Int,[],id (id (head (x:_))) :: Int)
-(id (id (head (0:_))) :: Int,[],id (id (head (0:_))) :: Int)
-(id (id (head (id _:_))) :: Int,[],id (id (head (id _:_))) :: Int)
-(id (id (head (tail _))) :: Int,[],id (id (head (tail _))) :: Int)
-(id (id (head (_ ++ _))) :: Int,[],id (id (head (_ ++ _))) :: Int)
-(id (id (ord d)) :: Int,[],id (id (ord d)) :: Int)
-(id (id (ord ' ')) :: Int,[],id (id (ord ' ')) :: Int)
-(id (negate z) :: Int,[],id (negate z) :: Int)
-(id (negate (-1)) :: Int,[],id (negate (-1)) :: Int)
-(id (negate (id y)) :: Int,[],id (negate (id y)) :: Int)
-(id (negate (id 1)) :: Int,[],id (negate (id 1)) :: Int)
-(id (negate (id (id x))) :: Int,[],id (negate (id (id x))) :: Int)
-(id (negate (id (id 0))) :: Int,[],id (negate (id (id 0))) :: Int)
-(id (negate (id (id (id _)))) :: Int,[],id (negate (id (id (id _)))) :: Int)
-(id (negate (id (negate _))) :: Int,[],id (negate (id (negate _))) :: Int)
-(id (negate (id (abs _))) :: Int,[],id (negate (id (abs _))) :: Int)
-(id (negate (id (_ + _))) :: Int,[],id (negate (id (_ + _))) :: Int)
-(id (negate (id (head _))) :: Int,[],id (negate (id (head _))) :: Int)
-(id (negate (id (ord _))) :: Int,[],id (negate (id (ord _))) :: Int)
-(id (negate (negate x)) :: Int,[],id (negate (negate x)) :: Int)
-(id (negate (negate 0)) :: Int,[],id (negate (negate 0)) :: Int)
-(id (negate (negate (id _))) :: Int,[],id (negate (negate (id _))) :: Int)
-(id (negate (abs x)) :: Int,[],id (negate (abs x)) :: Int)
-(id (negate (abs 0)) :: Int,[],id (negate (abs 0)) :: Int)
-(id (negate (abs (id _))) :: Int,[],id (negate (abs (id _))) :: Int)
-(id (negate (_ + x)) :: Int,[],id (negate (_ + x)) :: Int)
-(id (negate (_ + 0)) :: Int,[],id (negate (_ + 0)) :: Int)
-(id (negate (_ + id _)) :: Int,[],id (negate (_ + id _)) :: Int)
-(id (negate (x + _)) :: Int,[],id (negate (x + _)) :: Int)
-(id (negate (0 + _)) :: Int,[],id (negate (0 + _)) :: Int)
-(id (negate (id _ + _)) :: Int,[],id (negate (id _ + _)) :: Int)
-(id (negate (_ * _)) :: Int,[],id (negate (_ * _)) :: Int)
-(id (negate (f _)) :: Int,[],id (negate (f _)) :: Int)
-(id (negate (head xs)) :: Int,[],id (negate (head xs)) :: Int)
-(id (negate (head [])) :: Int,[],id (negate (head [])) :: Int)
-(id (negate (head (_:_))) :: Int,[],id (negate (head (_:_))) :: Int)
-(id (negate (ord c)) :: Int,[],id (negate (ord c)) :: Int)
-(id (negate (ord 'a')) :: Int,[],id (negate (ord 'a')) :: Int)
-(id (abs z) :: Int,[],id (abs z) :: Int)
-(id (abs (-1)) :: Int,[],id (abs (-1)) :: Int)
-(id (abs (id y)) :: Int,[],id (abs (id y)) :: Int)
-(id (abs (id 1)) :: Int,[],id (abs (id 1)) :: Int)
-(id (abs (id (id x))) :: Int,[],id (abs (id (id x))) :: Int)
-(id (abs (id (id 0))) :: Int,[],id (abs (id (id 0))) :: Int)
-(id (abs (id (id (id _)))) :: Int,[],id (abs (id (id (id _)))) :: Int)
-
-True
diff --git a/test/model/bench/match-triexpr.out b/test/model/bench/match-triexpr.out
deleted file mode 100644
--- a/test/model/bench/match-triexpr.out
+++ /dev/null
@@ -1,795 +0,0 @@
-id p  =  p
-p && p  =  p
-p || p  =  p
-p && q  =  q && p
-p || q  =  q || p
-not (not p)  =  p
-p && True  =  p
-True && p  =  p
-p && False  =  False
-False && p  =  False
-p || True  =  True
-True || p  =  True
-p || False  =  p
-False || p  =  p
-p && not p  =  False
-p || not p  =  True
-not p && p  =  False
-not p || p  =  True
-(p && q) && r  =  p && (q && r)
-(p || q) || r  =  p || (q || r)
-not (p && q)  =  not p || not q
-not (p || q)  =  not p && not q
-not False  =  True
-not True  =  False
-not (not p && not q)  =  p || q
-not (not p || not q)  =  p && q
-p && not (p && q)  =  p && not q
-id x  =  x
-abs (abs x)  =  abs x
-x + 0  =  x
-0 + x  =  x
-x * 1  =  x
-1 * x  =  x
-x * 0  =  0
-0 * x  =  0
-x + y  =  y + x
-x * y  =  y * x
-(x + y) + z  =  x + (y + z)
-(x * y) * z  =  x * (y * z)
-(x + x) * y  =  x * (y + y)
-x * (y + 1)  =  x + x * y
-(x + 1) * y  =  x + x * y
-x * (y + z)  =  x * y + x * z
-(x + y) * z  =  x * z + y * z
-negate (negate x)  =  x
-x + negate x  =  0
-negate x + x  =  0
-abs (negate x)  =  abs x
-2 * x  =  x + x
-x * 2  =  x + x
-3 * x  =  x + (x + x)
-x * 3  =  x + (x + x)
-4 * x  =  x + (x + (x + x))
-x * 4  =  x + (x + (x + x))
-abs (x * x)  =  x * x
-abs x * abs y  =  abs (x * y)
-abs x * abs x  =  abs (x + x)
-abs (abs x + abs y)  =  abs x + abs y
-abs (x + x) * y  =  abs x * y + abs x * y
-abs x * signum x  =  x
-signum x * abs x  =  x
-id xs  =  xs
-head (x:xs)  =  x
-tail (x:xs)  =  xs
-xs ++ []  =  xs
-[] ++ xs  =  xs
-[x] ++ xs  =  x:xs
-(x:xs) ++ ys  =  x:(xs ++ ys)
-(xs ++ ys) ++ zs  =  xs ++ (ys ++ zs)
-elem x (sort xs)  =  elem x xs
-elem x (insert y xs)  =  elem x (y:xs)
-sort (sort xs)  =  sort xs
-insert x []  =  [x]
-sort (xs ++ ys)  =  sort (ys ++ xs)
-sort (insert x xs)  =  insert x (sort xs)
-sort (x:xs)  =  insert x (sort xs)
-sort (xs ++ sort ys)  =  sort (xs ++ ys)
-sort (sort xs ++ ys)  =  sort (xs ++ ys)
-insert x (insert y xs)  =  insert y (insert x xs)
-insert x (x:xs)  =  x:x:xs
-insert x [y]  =  insert y [x]
-length (x:xs)  =  length (y:xs)
-length (xs ++ ys)  =  length (ys ++ xs)
-length (x:y:xs)  =  length (z:x':xs)
-length (x:(xs ++ ys))  =  length (y:(ys ++ xs))
-length (xs ++ (ys ++ zs))  =  length (xs ++ (zs ++ ys))
-not (odd x)  =  even x
-not (even x)  =  odd x
-x == x  =  True
-x /= x  =  False
-p == p  =  True
-p /= p  =  False
-f (g x)  =  (f . g) x
-map id xs  =  xs
-map (f . g) xs  =  map f (map g xs)
-f . id  =  f
-id . f  =  f
-(f . g) . h  =  f . (g . h)
-not . not  =  id
-
-(id x :: Int,[(x :: Int,_ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,x :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,0 :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(id x :: Int,[(x :: Int,y :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,1 :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(id x :: Int,[(x :: Int,head _ :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord _ :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(not False :: Bool,[],True :: Bool)
-(not True :: Bool,[],False :: Bool)
-(not (not p) :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)
-(p || p :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)
-(id x :: Int,[(x :: Int,z :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,-1 :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(id x :: Int,[(x :: Int,head xs :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head [] :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (_:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord c :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord 'a' :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
-(not (not p) :: Bool,[(p :: Bool,p :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,False :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,True :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not _ :: Bool)],p :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
-(p && p :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)
-(x == x :: Bool,[(x :: Int,_ :: Int)],True :: Bool)
-(p == p :: Bool,[(p :: Bool,_ :: Bool)],True :: Bool)
-(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
-(xs ++ [] :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])
-([] ++ xs :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-(id x :: Int,[(x :: Int,x' :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,2 :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,z :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,-1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (negate _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (abs _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (head _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (ord _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,f _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head xs :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head [] :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head (_:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord c :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord 'a' :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(y +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(1 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id 0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id (id _) +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(negate _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(abs _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,((_ + _) +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(head _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(ord _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,g :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(id x :: Int,[(x :: Int,head ys :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head [0] :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (_:xs) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head [_] :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (_:_:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (x:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (0:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (id _:_) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (tail _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,head (_ ++ _) :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord d :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,ord ' ' :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,z :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,-1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head xs :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,head [] :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,head (_:_) :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord c :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord 'a' :: Int),(x :: Int,_ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)
-(x * y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,y :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,y :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(y +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,1 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,1 :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(1 +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id x :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id x +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id 0 +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id (id _) +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(negate _ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(abs _ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,((_ + _) +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,head _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(head _ +) :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(ord _ +) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x *) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 *) :: Int -> Int)],(f . g) x :: Int)
-(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y * x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ *) :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,g :: Int -> Int)],(f . g) x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,z :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,-1 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id y :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 1 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id x) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id 0) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id (id _)) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (negate _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (abs _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (_ + _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (head _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (ord _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate (id _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs (id _) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + x :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + 0 :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + id _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ + _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ * _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,f _ :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head xs :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head [] :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head (_:_) :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord c :: Int)],y + x :: Int)
-(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord 'a' :: Int)],y + x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y * x :: Int)
-(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y * x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],ys :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[0] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[_] :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],x:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],0:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],id _:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],tail _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ ++ _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,y :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,1 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id x :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id 0 :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id (id _) :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,negate _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,abs _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ + _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,head _ :: Int)],x :: Int)
-(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,ord _ :: Int)],x :: Int)
-(not (not p) :: Bool,[(p :: Bool,q :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not p :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not False :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not True :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,not (not _) :: Bool)],p :: Bool)
-(not (not p) :: Bool,[(p :: Bool,_ || _ :: Bool)],p :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],not p && not q :: Bool)
-(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],not p && not q :: Bool)
-(not (p && q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p || not q :: Bool)
-(not (odd x) :: Bool,[(x :: Int,_ :: Int)],even x :: Bool)
-(not (even x) :: Bool,[(x :: Int,_ :: Int)],odd x :: Bool)
-(p || q :: Bool,[(q :: Bool,q :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not (not _) :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ || _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)
-(p || p :: Bool,[(p :: Bool,p :: Bool)],p :: Bool)
-(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
-(p || p :: Bool,[(p :: Bool,False :: Bool)],p :: Bool)
-(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
-(p || p :: Bool,[(p :: Bool,True :: Bool)],p :: Bool)
-(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)
-(p || p :: Bool,[(p :: Bool,not _ :: Bool)],p :: Bool)
-(p && q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,q :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not p :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not False :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not True :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not (not _) :: Bool)],q || p :: Bool)
-(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ || _ :: Bool)],q || p :: Bool)
-(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q && p :: Bool)
-(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q && p :: Bool)
-(tail (x:xs) :: [Int],[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],xs :: [Int])
-(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],xs :: [Int])
-(xs ++ [] :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])
-([] ++ xs :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])
-(xs ++ [] :: [Int],[(xs :: [Int],[] :: [Int])],xs :: [Int])
-([] ++ xs :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],xs :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-(xs ++ [] :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_:_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x:(xs ++ ys) :: [Int])
-((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x:(xs ++ ys) :: [Int])
-((xs ++ ys) ++ zs :: [Int],[(zs :: [Int],_ :: [Int]),(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int])],xs ++ (ys ++ zs) :: [Int])
-(sort (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],insert x (sort xs) :: [Int])
-(insert x [] :: [Int],[(x :: Int,_ :: Int)],[x] :: [Int])
-(insert x (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:x:xs :: [Int])
-(id x :: Int,[(x :: Int,y' :: Int)],x :: Int)
-(id x :: Int,[(x :: Int,-2 :: Int)],x :: Int)
-(f (g x) :: Int,[(x :: Int,x' :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,2 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id z :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (-1) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id y) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id 1) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (id x)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (id 0)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (id (id _))) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (negate _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (abs _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (_ + _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (head _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (ord _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (negate x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (negate 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (negate (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (abs x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (abs 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (abs (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (_ + x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (_ + 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (_ + id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (x + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (0 + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (_ * _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (f _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (head xs) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (head []) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (head (_:_)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (ord c) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (ord 'a') :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (id x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (id 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (id (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (negate _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (abs _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (head _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (ord _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (id x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (id 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (id (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (negate _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (abs _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (head _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (ord _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ * x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ * 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ * id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,f x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,f 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,f (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,y + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,1 + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id x + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 0 + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id _) + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,(_ + _) + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,g _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head ys :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head [0] :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head (_:xs) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head [_] :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head (_:_:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head (x:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head (0:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head (id _:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head (tail _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head (_ ++ _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord d :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord ' ' :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,z :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,-1 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id y :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 1 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id x) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id 0) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (id _)) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (negate _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (abs _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (_ + _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (head _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (ord _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,negate (id _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,abs (id _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ + id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,x + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,0 + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id _ + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,_ * _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,f _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head xs :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head [] :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,head (_:_) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord c :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,ord 'a' :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,z :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,-1 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id y :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id 1 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id x) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id 0) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-(f (g x) :: Int,[(x :: Int,id (id (id _)) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)
-
-True
diff --git a/test/model/bench/pairs.out b/test/model/bench/pairs.out
deleted file mode 100644
--- a/test/model/bench/pairs.out
+++ /dev/null
@@ -1,1001 +0,0 @@
-(_ :: Int,_ :: Int)
-(_ :: Int,x :: Int)
-(_ :: Int,0 :: Int)
-(_ :: Int,id _ :: Int)
-(_ :: Int,_ :: Bool)
-(_ :: Int,_ :: Char)
-(_ :: Int,_ :: [Int])
-(x :: Int,_ :: Int)
-(0 :: Int,_ :: Int)
-(id _ :: Int,_ :: Int)
-(_ :: Bool,_ :: Int)
-(_ :: Char,_ :: Int)
-(_ :: [Int],_ :: Int)
-(_ :: Int,y :: Int)
-(_ :: Int,1 :: Int)
-(_ :: Int,id x :: Int)
-(_ :: Int,id 0 :: Int)
-(_ :: Int,id (id _) :: Int)
-(_ :: Int,negate _ :: Int)
-(_ :: Int,abs _ :: Int)
-(_ :: Int,_ + _ :: Int)
-(_ :: Int,head _ :: Int)
-(_ :: Int,ord _ :: Int)
-(_ :: Int,p :: Bool)
-(_ :: Int,False :: Bool)
-(_ :: Int,True :: Bool)
-(_ :: Int,not _ :: Bool)
-(_ :: Int,c :: Char)
-(_ :: Int,'a' :: Char)
-(_ :: Int,xs :: [Int])
-(_ :: Int,[] :: [Int])
-(_ :: Int,_:_ :: [Int])
-(_ :: Int,id :: Int -> Int)
-(_ :: Int,(+) :: Int -> Int -> Int)
-(x :: Int,x :: Int)
-(x :: Int,0 :: Int)
-(x :: Int,id _ :: Int)
-(x :: Int,_ :: Bool)
-(x :: Int,_ :: Char)
-(x :: Int,_ :: [Int])
-(0 :: Int,x :: Int)
-(0 :: Int,0 :: Int)
-(0 :: Int,id _ :: Int)
-(0 :: Int,_ :: Bool)
-(0 :: Int,_ :: Char)
-(0 :: Int,_ :: [Int])
-(id _ :: Int,x :: Int)
-(id _ :: Int,0 :: Int)
-(id _ :: Int,id _ :: Int)
-(id _ :: Int,_ :: Bool)
-(id _ :: Int,_ :: Char)
-(id _ :: Int,_ :: [Int])
-(_ :: Bool,x :: Int)
-(_ :: Bool,0 :: Int)
-(_ :: Bool,id _ :: Int)
-(_ :: Bool,_ :: Bool)
-(_ :: Bool,_ :: Char)
-(_ :: Bool,_ :: [Int])
-(_ :: Char,x :: Int)
-(_ :: Char,0 :: Int)
-(_ :: Char,id _ :: Int)
-(_ :: Char,_ :: Bool)
-(_ :: Char,_ :: Char)
-(_ :: Char,_ :: [Int])
-(_ :: [Int],x :: Int)
-(_ :: [Int],0 :: Int)
-(_ :: [Int],id _ :: Int)
-(_ :: [Int],_ :: Bool)
-(_ :: [Int],_ :: Char)
-(_ :: [Int],_ :: [Int])
-(y :: Int,_ :: Int)
-(1 :: Int,_ :: Int)
-(id x :: Int,_ :: Int)
-(id 0 :: Int,_ :: Int)
-(id (id _) :: Int,_ :: Int)
-(negate _ :: Int,_ :: Int)
-(abs _ :: Int,_ :: Int)
-(_ + _ :: Int,_ :: Int)
-(head _ :: Int,_ :: Int)
-(ord _ :: Int,_ :: Int)
-(p :: Bool,_ :: Int)
-(False :: Bool,_ :: Int)
-(True :: Bool,_ :: Int)
-(not _ :: Bool,_ :: Int)
-(c :: Char,_ :: Int)
-('a' :: Char,_ :: Int)
-(xs :: [Int],_ :: Int)
-([] :: [Int],_ :: Int)
-(_:_ :: [Int],_ :: Int)
-(id :: Int -> Int,_ :: Int)
-((+) :: Int -> Int -> Int,_ :: Int)
-(_ :: Int,z :: Int)
-(_ :: Int,-1 :: Int)
-(_ :: Int,id y :: Int)
-(_ :: Int,id 1 :: Int)
-(_ :: Int,id (id x) :: Int)
-(_ :: Int,id (id 0) :: Int)
-(_ :: Int,id (id (id _)) :: Int)
-(_ :: Int,id (negate _) :: Int)
-(_ :: Int,id (abs _) :: Int)
-(_ :: Int,id (_ + _) :: Int)
-(_ :: Int,id (head _) :: Int)
-(_ :: Int,id (ord _) :: Int)
-(_ :: Int,negate x :: Int)
-(_ :: Int,negate 0 :: Int)
-(_ :: Int,negate (id _) :: Int)
-(_ :: Int,abs x :: Int)
-(_ :: Int,abs 0 :: Int)
-(_ :: Int,abs (id _) :: Int)
-(_ :: Int,_ + x :: Int)
-(_ :: Int,_ + 0 :: Int)
-(_ :: Int,_ + id _ :: Int)
-(_ :: Int,x + _ :: Int)
-(_ :: Int,0 + _ :: Int)
-(_ :: Int,id _ + _ :: Int)
-(_ :: Int,_ * _ :: Int)
-(_ :: Int,f _ :: Int)
-(_ :: Int,head xs :: Int)
-(_ :: Int,head [] :: Int)
-(_ :: Int,head (_:_) :: Int)
-(_ :: Int,ord c :: Int)
-(_ :: Int,ord 'a' :: Int)
-(_ :: Int,q :: Bool)
-(_ :: Int,not p :: Bool)
-(_ :: Int,not False :: Bool)
-(_ :: Int,not True :: Bool)
-(_ :: Int,not (not _) :: Bool)
-(_ :: Int,_ || _ :: Bool)
-(_ :: Int,d :: Char)
-(_ :: Int,' ' :: Char)
-(_ :: Int,ys :: [Int])
-(_ :: Int,[0] :: [Int])
-(_ :: Int,_:xs :: [Int])
-(_ :: Int,[_] :: [Int])
-(_ :: Int,_:_:_ :: [Int])
-(_ :: Int,x:_ :: [Int])
-(_ :: Int,0:_ :: [Int])
-(_ :: Int,id _:_ :: [Int])
-(_ :: Int,tail _ :: [Int])
-(_ :: Int,_ ++ _ :: [Int])
-(_ :: Int,negate :: Int -> Int)
-(_ :: Int,abs :: Int -> Int)
-(_ :: Int,(_ +) :: Int -> Int)
-(_ :: Int,(*) :: Int -> Int -> Int)
-(_ :: Int,not :: Bool -> Bool)
-(_ :: Int,(||) :: Bool -> Bool -> Bool)
-(x :: Int,y :: Int)
-(x :: Int,1 :: Int)
-(x :: Int,id x :: Int)
-(x :: Int,id 0 :: Int)
-(x :: Int,id (id _) :: Int)
-(x :: Int,negate _ :: Int)
-(x :: Int,abs _ :: Int)
-(x :: Int,_ + _ :: Int)
-(x :: Int,head _ :: Int)
-(x :: Int,ord _ :: Int)
-(x :: Int,p :: Bool)
-(x :: Int,False :: Bool)
-(x :: Int,True :: Bool)
-(x :: Int,not _ :: Bool)
-(x :: Int,c :: Char)
-(x :: Int,'a' :: Char)
-(x :: Int,xs :: [Int])
-(x :: Int,[] :: [Int])
-(x :: Int,_:_ :: [Int])
-(x :: Int,id :: Int -> Int)
-(x :: Int,(+) :: Int -> Int -> Int)
-(0 :: Int,y :: Int)
-(0 :: Int,1 :: Int)
-(0 :: Int,id x :: Int)
-(0 :: Int,id 0 :: Int)
-(0 :: Int,id (id _) :: Int)
-(0 :: Int,negate _ :: Int)
-(0 :: Int,abs _ :: Int)
-(0 :: Int,_ + _ :: Int)
-(0 :: Int,head _ :: Int)
-(0 :: Int,ord _ :: Int)
-(0 :: Int,p :: Bool)
-(0 :: Int,False :: Bool)
-(0 :: Int,True :: Bool)
-(0 :: Int,not _ :: Bool)
-(0 :: Int,c :: Char)
-(0 :: Int,'a' :: Char)
-(0 :: Int,xs :: [Int])
-(0 :: Int,[] :: [Int])
-(0 :: Int,_:_ :: [Int])
-(0 :: Int,id :: Int -> Int)
-(0 :: Int,(+) :: Int -> Int -> Int)
-(id _ :: Int,y :: Int)
-(id _ :: Int,1 :: Int)
-(id _ :: Int,id x :: Int)
-(id _ :: Int,id 0 :: Int)
-(id _ :: Int,id (id _) :: Int)
-(id _ :: Int,negate _ :: Int)
-(id _ :: Int,abs _ :: Int)
-(id _ :: Int,_ + _ :: Int)
-(id _ :: Int,head _ :: Int)
-(id _ :: Int,ord _ :: Int)
-(id _ :: Int,p :: Bool)
-(id _ :: Int,False :: Bool)
-(id _ :: Int,True :: Bool)
-(id _ :: Int,not _ :: Bool)
-(id _ :: Int,c :: Char)
-(id _ :: Int,'a' :: Char)
-(id _ :: Int,xs :: [Int])
-(id _ :: Int,[] :: [Int])
-(id _ :: Int,_:_ :: [Int])
-(id _ :: Int,id :: Int -> Int)
-(id _ :: Int,(+) :: Int -> Int -> Int)
-(_ :: Bool,y :: Int)
-(_ :: Bool,1 :: Int)
-(_ :: Bool,id x :: Int)
-(_ :: Bool,id 0 :: Int)
-(_ :: Bool,id (id _) :: Int)
-(_ :: Bool,negate _ :: Int)
-(_ :: Bool,abs _ :: Int)
-(_ :: Bool,_ + _ :: Int)
-(_ :: Bool,head _ :: Int)
-(_ :: Bool,ord _ :: Int)
-(_ :: Bool,p :: Bool)
-(_ :: Bool,False :: Bool)
-(_ :: Bool,True :: Bool)
-(_ :: Bool,not _ :: Bool)
-(_ :: Bool,c :: Char)
-(_ :: Bool,'a' :: Char)
-(_ :: Bool,xs :: [Int])
-(_ :: Bool,[] :: [Int])
-(_ :: Bool,_:_ :: [Int])
-(_ :: Bool,id :: Int -> Int)
-(_ :: Bool,(+) :: Int -> Int -> Int)
-(_ :: Char,y :: Int)
-(_ :: Char,1 :: Int)
-(_ :: Char,id x :: Int)
-(_ :: Char,id 0 :: Int)
-(_ :: Char,id (id _) :: Int)
-(_ :: Char,negate _ :: Int)
-(_ :: Char,abs _ :: Int)
-(_ :: Char,_ + _ :: Int)
-(_ :: Char,head _ :: Int)
-(_ :: Char,ord _ :: Int)
-(_ :: Char,p :: Bool)
-(_ :: Char,False :: Bool)
-(_ :: Char,True :: Bool)
-(_ :: Char,not _ :: Bool)
-(_ :: Char,c :: Char)
-(_ :: Char,'a' :: Char)
-(_ :: Char,xs :: [Int])
-(_ :: Char,[] :: [Int])
-(_ :: Char,_:_ :: [Int])
-(_ :: Char,id :: Int -> Int)
-(_ :: Char,(+) :: Int -> Int -> Int)
-(_ :: [Int],y :: Int)
-(_ :: [Int],1 :: Int)
-(_ :: [Int],id x :: Int)
-(_ :: [Int],id 0 :: Int)
-(_ :: [Int],id (id _) :: Int)
-(_ :: [Int],negate _ :: Int)
-(_ :: [Int],abs _ :: Int)
-(_ :: [Int],_ + _ :: Int)
-(_ :: [Int],head _ :: Int)
-(_ :: [Int],ord _ :: Int)
-(_ :: [Int],p :: Bool)
-(_ :: [Int],False :: Bool)
-(_ :: [Int],True :: Bool)
-(_ :: [Int],not _ :: Bool)
-(_ :: [Int],c :: Char)
-(_ :: [Int],'a' :: Char)
-(_ :: [Int],xs :: [Int])
-(_ :: [Int],[] :: [Int])
-(_ :: [Int],_:_ :: [Int])
-(_ :: [Int],id :: Int -> Int)
-(_ :: [Int],(+) :: Int -> Int -> Int)
-(y :: Int,x :: Int)
-(y :: Int,0 :: Int)
-(y :: Int,id _ :: Int)
-(y :: Int,_ :: Bool)
-(y :: Int,_ :: Char)
-(y :: Int,_ :: [Int])
-(1 :: Int,x :: Int)
-(1 :: Int,0 :: Int)
-(1 :: Int,id _ :: Int)
-(1 :: Int,_ :: Bool)
-(1 :: Int,_ :: Char)
-(1 :: Int,_ :: [Int])
-(id x :: Int,x :: Int)
-(id x :: Int,0 :: Int)
-(id x :: Int,id _ :: Int)
-(id x :: Int,_ :: Bool)
-(id x :: Int,_ :: Char)
-(id x :: Int,_ :: [Int])
-(id 0 :: Int,x :: Int)
-(id 0 :: Int,0 :: Int)
-(id 0 :: Int,id _ :: Int)
-(id 0 :: Int,_ :: Bool)
-(id 0 :: Int,_ :: Char)
-(id 0 :: Int,_ :: [Int])
-(id (id _) :: Int,x :: Int)
-(id (id _) :: Int,0 :: Int)
-(id (id _) :: Int,id _ :: Int)
-(id (id _) :: Int,_ :: Bool)
-(id (id _) :: Int,_ :: Char)
-(id (id _) :: Int,_ :: [Int])
-(negate _ :: Int,x :: Int)
-(negate _ :: Int,0 :: Int)
-(negate _ :: Int,id _ :: Int)
-(negate _ :: Int,_ :: Bool)
-(negate _ :: Int,_ :: Char)
-(negate _ :: Int,_ :: [Int])
-(abs _ :: Int,x :: Int)
-(abs _ :: Int,0 :: Int)
-(abs _ :: Int,id _ :: Int)
-(abs _ :: Int,_ :: Bool)
-(abs _ :: Int,_ :: Char)
-(abs _ :: Int,_ :: [Int])
-(_ + _ :: Int,x :: Int)
-(_ + _ :: Int,0 :: Int)
-(_ + _ :: Int,id _ :: Int)
-(_ + _ :: Int,_ :: Bool)
-(_ + _ :: Int,_ :: Char)
-(_ + _ :: Int,_ :: [Int])
-(head _ :: Int,x :: Int)
-(head _ :: Int,0 :: Int)
-(head _ :: Int,id _ :: Int)
-(head _ :: Int,_ :: Bool)
-(head _ :: Int,_ :: Char)
-(head _ :: Int,_ :: [Int])
-(ord _ :: Int,x :: Int)
-(ord _ :: Int,0 :: Int)
-(ord _ :: Int,id _ :: Int)
-(ord _ :: Int,_ :: Bool)
-(ord _ :: Int,_ :: Char)
-(ord _ :: Int,_ :: [Int])
-(p :: Bool,x :: Int)
-(p :: Bool,0 :: Int)
-(p :: Bool,id _ :: Int)
-(p :: Bool,_ :: Bool)
-(p :: Bool,_ :: Char)
-(p :: Bool,_ :: [Int])
-(False :: Bool,x :: Int)
-(False :: Bool,0 :: Int)
-(False :: Bool,id _ :: Int)
-(False :: Bool,_ :: Bool)
-(False :: Bool,_ :: Char)
-(False :: Bool,_ :: [Int])
-(True :: Bool,x :: Int)
-(True :: Bool,0 :: Int)
-(True :: Bool,id _ :: Int)
-(True :: Bool,_ :: Bool)
-(True :: Bool,_ :: Char)
-(True :: Bool,_ :: [Int])
-(not _ :: Bool,x :: Int)
-(not _ :: Bool,0 :: Int)
-(not _ :: Bool,id _ :: Int)
-(not _ :: Bool,_ :: Bool)
-(not _ :: Bool,_ :: Char)
-(not _ :: Bool,_ :: [Int])
-(c :: Char,x :: Int)
-(c :: Char,0 :: Int)
-(c :: Char,id _ :: Int)
-(c :: Char,_ :: Bool)
-(c :: Char,_ :: Char)
-(c :: Char,_ :: [Int])
-('a' :: Char,x :: Int)
-('a' :: Char,0 :: Int)
-('a' :: Char,id _ :: Int)
-('a' :: Char,_ :: Bool)
-('a' :: Char,_ :: Char)
-('a' :: Char,_ :: [Int])
-(xs :: [Int],x :: Int)
-(xs :: [Int],0 :: Int)
-(xs :: [Int],id _ :: Int)
-(xs :: [Int],_ :: Bool)
-(xs :: [Int],_ :: Char)
-(xs :: [Int],_ :: [Int])
-([] :: [Int],x :: Int)
-([] :: [Int],0 :: Int)
-([] :: [Int],id _ :: Int)
-([] :: [Int],_ :: Bool)
-([] :: [Int],_ :: Char)
-([] :: [Int],_ :: [Int])
-(_:_ :: [Int],x :: Int)
-(_:_ :: [Int],0 :: Int)
-(_:_ :: [Int],id _ :: Int)
-(_:_ :: [Int],_ :: Bool)
-(_:_ :: [Int],_ :: Char)
-(_:_ :: [Int],_ :: [Int])
-(id :: Int -> Int,x :: Int)
-(id :: Int -> Int,0 :: Int)
-(id :: Int -> Int,id _ :: Int)
-(id :: Int -> Int,_ :: Bool)
-(id :: Int -> Int,_ :: Char)
-(id :: Int -> Int,_ :: [Int])
-((+) :: Int -> Int -> Int,x :: Int)
-((+) :: Int -> Int -> Int,0 :: Int)
-((+) :: Int -> Int -> Int,id _ :: Int)
-((+) :: Int -> Int -> Int,_ :: Bool)
-((+) :: Int -> Int -> Int,_ :: Char)
-((+) :: Int -> Int -> Int,_ :: [Int])
-(z :: Int,_ :: Int)
-(-1 :: Int,_ :: Int)
-(id y :: Int,_ :: Int)
-(id 1 :: Int,_ :: Int)
-(id (id x) :: Int,_ :: Int)
-(id (id 0) :: Int,_ :: Int)
-(id (id (id _)) :: Int,_ :: Int)
-(id (negate _) :: Int,_ :: Int)
-(id (abs _) :: Int,_ :: Int)
-(id (_ + _) :: Int,_ :: Int)
-(id (head _) :: Int,_ :: Int)
-(id (ord _) :: Int,_ :: Int)
-(negate x :: Int,_ :: Int)
-(negate 0 :: Int,_ :: Int)
-(negate (id _) :: Int,_ :: Int)
-(abs x :: Int,_ :: Int)
-(abs 0 :: Int,_ :: Int)
-(abs (id _) :: Int,_ :: Int)
-(_ + x :: Int,_ :: Int)
-(_ + 0 :: Int,_ :: Int)
-(_ + id _ :: Int,_ :: Int)
-(x + _ :: Int,_ :: Int)
-(0 + _ :: Int,_ :: Int)
-(id _ + _ :: Int,_ :: Int)
-(_ * _ :: Int,_ :: Int)
-(f _ :: Int,_ :: Int)
-(head xs :: Int,_ :: Int)
-(head [] :: Int,_ :: Int)
-(head (_:_) :: Int,_ :: Int)
-(ord c :: Int,_ :: Int)
-(ord 'a' :: Int,_ :: Int)
-(q :: Bool,_ :: Int)
-(not p :: Bool,_ :: Int)
-(not False :: Bool,_ :: Int)
-(not True :: Bool,_ :: Int)
-(not (not _) :: Bool,_ :: Int)
-(_ || _ :: Bool,_ :: Int)
-(d :: Char,_ :: Int)
-(' ' :: Char,_ :: Int)
-(ys :: [Int],_ :: Int)
-([0] :: [Int],_ :: Int)
-(_:xs :: [Int],_ :: Int)
-([_] :: [Int],_ :: Int)
-(_:_:_ :: [Int],_ :: Int)
-(x:_ :: [Int],_ :: Int)
-(0:_ :: [Int],_ :: Int)
-(id _:_ :: [Int],_ :: Int)
-(tail _ :: [Int],_ :: Int)
-(_ ++ _ :: [Int],_ :: Int)
-(negate :: Int -> Int,_ :: Int)
-(abs :: Int -> Int,_ :: Int)
-((_ +) :: Int -> Int,_ :: Int)
-((*) :: Int -> Int -> Int,_ :: Int)
-(not :: Bool -> Bool,_ :: Int)
-((||) :: Bool -> Bool -> Bool,_ :: Int)
-(_ :: Int,x' :: Int)
-(_ :: Int,2 :: Int)
-(_ :: Int,id z :: Int)
-(_ :: Int,id (-1) :: Int)
-(_ :: Int,id (id y) :: Int)
-(_ :: Int,id (id 1) :: Int)
-(_ :: Int,id (id (id x)) :: Int)
-(_ :: Int,id (id (id 0)) :: Int)
-(_ :: Int,id (id (id (id _))) :: Int)
-(_ :: Int,id (id (negate _)) :: Int)
-(_ :: Int,id (id (abs _)) :: Int)
-(_ :: Int,id (id (_ + _)) :: Int)
-(_ :: Int,id (id (head _)) :: Int)
-(_ :: Int,id (id (ord _)) :: Int)
-(_ :: Int,id (negate x) :: Int)
-(_ :: Int,id (negate 0) :: Int)
-(_ :: Int,id (negate (id _)) :: Int)
-(_ :: Int,id (abs x) :: Int)
-(_ :: Int,id (abs 0) :: Int)
-(_ :: Int,id (abs (id _)) :: Int)
-(_ :: Int,id (_ + x) :: Int)
-(_ :: Int,id (_ + 0) :: Int)
-(_ :: Int,id (_ + id _) :: Int)
-(_ :: Int,id (x + _) :: Int)
-(_ :: Int,id (0 + _) :: Int)
-(_ :: Int,id (id _ + _) :: Int)
-(_ :: Int,id (_ * _) :: Int)
-(_ :: Int,id (f _) :: Int)
-(_ :: Int,id (head xs) :: Int)
-(_ :: Int,id (head []) :: Int)
-(_ :: Int,id (head (_:_)) :: Int)
-(_ :: Int,id (ord c) :: Int)
-(_ :: Int,id (ord 'a') :: Int)
-(_ :: Int,negate y :: Int)
-(_ :: Int,negate 1 :: Int)
-(_ :: Int,negate (id x) :: Int)
-(_ :: Int,negate (id 0) :: Int)
-(_ :: Int,negate (id (id _)) :: Int)
-(_ :: Int,negate (negate _) :: Int)
-(_ :: Int,negate (abs _) :: Int)
-(_ :: Int,negate (_ + _) :: Int)
-(_ :: Int,negate (head _) :: Int)
-(_ :: Int,negate (ord _) :: Int)
-(_ :: Int,abs y :: Int)
-(_ :: Int,abs 1 :: Int)
-(_ :: Int,abs (id x) :: Int)
-(_ :: Int,abs (id 0) :: Int)
-(_ :: Int,abs (id (id _)) :: Int)
-(_ :: Int,abs (negate _) :: Int)
-(_ :: Int,abs (abs _) :: Int)
-(_ :: Int,abs (_ + _) :: Int)
-(_ :: Int,abs (head _) :: Int)
-(_ :: Int,abs (ord _) :: Int)
-(_ :: Int,_ + y :: Int)
-(_ :: Int,_ + 1 :: Int)
-(_ :: Int,_ + id x :: Int)
-(_ :: Int,_ + id 0 :: Int)
-(_ :: Int,_ + id (id _) :: Int)
-(_ :: Int,_ + negate _ :: Int)
-(_ :: Int,_ + abs _ :: Int)
-(_ :: Int,_ + (_ + _) :: Int)
-(_ :: Int,_ + head _ :: Int)
-(_ :: Int,_ + ord _ :: Int)
-(_ :: Int,x + x :: Int)
-(_ :: Int,x + 0 :: Int)
-(_ :: Int,x + id _ :: Int)
-(_ :: Int,0 + x :: Int)
-(_ :: Int,0 + 0 :: Int)
-(_ :: Int,0 + id _ :: Int)
-(_ :: Int,id _ + x :: Int)
-(_ :: Int,id _ + 0 :: Int)
-(_ :: Int,id _ + id _ :: Int)
-(_ :: Int,_ * x :: Int)
-(_ :: Int,_ * 0 :: Int)
-(_ :: Int,_ * id _ :: Int)
-(_ :: Int,f x :: Int)
-(_ :: Int,f 0 :: Int)
-(_ :: Int,f (id _) :: Int)
-(_ :: Int,y + _ :: Int)
-(_ :: Int,1 + _ :: Int)
-(_ :: Int,id x + _ :: Int)
-(_ :: Int,id 0 + _ :: Int)
-(_ :: Int,id (id _) + _ :: Int)
-(_ :: Int,negate _ + _ :: Int)
-(_ :: Int,abs _ + _ :: Int)
-(_ :: Int,(_ + _) + _ :: Int)
-(_ :: Int,head _ + _ :: Int)
-(_ :: Int,ord _ + _ :: Int)
-(_ :: Int,x * _ :: Int)
-(_ :: Int,0 * _ :: Int)
-(_ :: Int,id _ * _ :: Int)
-(_ :: Int,g _ :: Int)
-(_ :: Int,head ys :: Int)
-(_ :: Int,head [0] :: Int)
-(_ :: Int,head (_:xs) :: Int)
-(_ :: Int,head [_] :: Int)
-(_ :: Int,head (_:_:_) :: Int)
-(_ :: Int,head (x:_) :: Int)
-(_ :: Int,head (0:_) :: Int)
-(_ :: Int,head (id _:_) :: Int)
-(_ :: Int,head (tail _) :: Int)
-(_ :: Int,head (_ ++ _) :: Int)
-(_ :: Int,ord d :: Int)
-(_ :: Int,ord ' ' :: Int)
-(_ :: Int,r :: Bool)
-(_ :: Int,not q :: Bool)
-(_ :: Int,not (not p) :: Bool)
-(_ :: Int,not (not False) :: Bool)
-(_ :: Int,not (not True) :: Bool)
-(_ :: Int,not (not (not _)) :: Bool)
-(_ :: Int,not (_ || _) :: Bool)
-(_ :: Int,_ || p :: Bool)
-(_ :: Int,_ || False :: Bool)
-(_ :: Int,_ || True :: Bool)
-(_ :: Int,_ || not _ :: Bool)
-(_ :: Int,p || _ :: Bool)
-(_ :: Int,False || _ :: Bool)
-(_ :: Int,True || _ :: Bool)
-(_ :: Int,not _ || _ :: Bool)
-(_ :: Int,_ && _ :: Bool)
-(_ :: Int,_ == _ :: Bool)
-(_ :: Int,_ == _ :: Bool)
-(_ :: Int,odd _ :: Bool)
-(_ :: Int,even _ :: Bool)
-(_ :: Int,elem _ _ :: Bool)
-(_ :: Int,e :: Char)
-(_ :: Int,'b' :: Char)
-(_ :: Int,zs :: [Int])
-(_ :: Int,[0,0] :: [Int])
-(_ :: Int,[1] :: [Int])
-(_ :: Int,_:ys :: [Int])
-(_ :: Int,[_,0] :: [Int])
-(_ :: Int,_:_:xs :: [Int])
-(_ :: Int,[_,_] :: [Int])
-(_ :: Int,_:_:_:_ :: [Int])
-(_ :: Int,_:x:_ :: [Int])
-(_ :: Int,_:0:_ :: [Int])
-(_ :: Int,_:id _:_ :: [Int])
-(_ :: Int,_:tail _ :: [Int])
-(_ :: Int,_:(_ ++ _) :: [Int])
-(_ :: Int,x:xs :: [Int])
-(_ :: Int,[x] :: [Int])
-(_ :: Int,x:_:_ :: [Int])
-(_ :: Int,0:xs :: [Int])
-(_ :: Int,[0] :: [Int])
-(_ :: Int,0:_:_ :: [Int])
-(_ :: Int,id _:xs :: [Int])
-(_ :: Int,[id _] :: [Int])
-(_ :: Int,id _:_:_ :: [Int])
-(_ :: Int,y:_ :: [Int])
-(_ :: Int,1:_ :: [Int])
-(_ :: Int,id x:_ :: [Int])
-(_ :: Int,id 0:_ :: [Int])
-(_ :: Int,id (id _):_ :: [Int])
-(_ :: Int,negate _:_ :: [Int])
-(_ :: Int,abs _:_ :: [Int])
-(_ :: Int,_ + _:_ :: [Int])
-(_ :: Int,head _:_ :: [Int])
-(_ :: Int,ord _:_ :: [Int])
-(_ :: Int,tail xs :: [Int])
-(_ :: Int,tail [] :: [Int])
-(_ :: Int,tail (_:_) :: [Int])
-(_ :: Int,_ ++ xs :: [Int])
-(_ :: Int,_ ++ [] :: [Int])
-(_ :: Int,_ ++ (_:_) :: [Int])
-(_ :: Int,xs ++ _ :: [Int])
-(_ :: Int,[] ++ _ :: [Int])
-(_ :: Int,(_:_) ++ _ :: [Int])
-(_ :: Int,sort _ :: [Int])
-(_ :: Int,insert _ _ :: [Int])
-(_ :: Int,(x +) :: Int -> Int)
-(_ :: Int,(0 +) :: Int -> Int)
-(_ :: Int,(id _ +) :: Int -> Int)
-(_ :: Int,(_ *) :: Int -> Int)
-(_ :: Int,f :: Int -> Int)
-(_ :: Int,(_ ||) :: Bool -> Bool)
-(_ :: Int,(&&) :: Bool -> Bool -> Bool)
-(x :: Int,z :: Int)
-(x :: Int,-1 :: Int)
-(x :: Int,id y :: Int)
-(x :: Int,id 1 :: Int)
-(x :: Int,id (id x) :: Int)
-(x :: Int,id (id 0) :: Int)
-(x :: Int,id (id (id _)) :: Int)
-(x :: Int,id (negate _) :: Int)
-(x :: Int,id (abs _) :: Int)
-(x :: Int,id (_ + _) :: Int)
-(x :: Int,id (head _) :: Int)
-(x :: Int,id (ord _) :: Int)
-(x :: Int,negate x :: Int)
-(x :: Int,negate 0 :: Int)
-(x :: Int,negate (id _) :: Int)
-(x :: Int,abs x :: Int)
-(x :: Int,abs 0 :: Int)
-(x :: Int,abs (id _) :: Int)
-(x :: Int,_ + x :: Int)
-(x :: Int,_ + 0 :: Int)
-(x :: Int,_ + id _ :: Int)
-(x :: Int,x + _ :: Int)
-(x :: Int,0 + _ :: Int)
-(x :: Int,id _ + _ :: Int)
-(x :: Int,_ * _ :: Int)
-(x :: Int,f _ :: Int)
-(x :: Int,head xs :: Int)
-(x :: Int,head [] :: Int)
-(x :: Int,head (_:_) :: Int)
-(x :: Int,ord c :: Int)
-(x :: Int,ord 'a' :: Int)
-(x :: Int,q :: Bool)
-(x :: Int,not p :: Bool)
-(x :: Int,not False :: Bool)
-(x :: Int,not True :: Bool)
-(x :: Int,not (not _) :: Bool)
-(x :: Int,_ || _ :: Bool)
-(x :: Int,d :: Char)
-(x :: Int,' ' :: Char)
-(x :: Int,ys :: [Int])
-(x :: Int,[0] :: [Int])
-(x :: Int,_:xs :: [Int])
-(x :: Int,[_] :: [Int])
-(x :: Int,_:_:_ :: [Int])
-(x :: Int,x:_ :: [Int])
-(x :: Int,0:_ :: [Int])
-(x :: Int,id _:_ :: [Int])
-(x :: Int,tail _ :: [Int])
-(x :: Int,_ ++ _ :: [Int])
-(x :: Int,negate :: Int -> Int)
-(x :: Int,abs :: Int -> Int)
-(x :: Int,(_ +) :: Int -> Int)
-(x :: Int,(*) :: Int -> Int -> Int)
-(x :: Int,not :: Bool -> Bool)
-(x :: Int,(||) :: Bool -> Bool -> Bool)
-(0 :: Int,z :: Int)
-(0 :: Int,-1 :: Int)
-(0 :: Int,id y :: Int)
-(0 :: Int,id 1 :: Int)
-(0 :: Int,id (id x) :: Int)
-(0 :: Int,id (id 0) :: Int)
-(0 :: Int,id (id (id _)) :: Int)
-(0 :: Int,id (negate _) :: Int)
-(0 :: Int,id (abs _) :: Int)
-(0 :: Int,id (_ + _) :: Int)
-(0 :: Int,id (head _) :: Int)
-(0 :: Int,id (ord _) :: Int)
-(0 :: Int,negate x :: Int)
-(0 :: Int,negate 0 :: Int)
-(0 :: Int,negate (id _) :: Int)
-(0 :: Int,abs x :: Int)
-(0 :: Int,abs 0 :: Int)
-(0 :: Int,abs (id _) :: Int)
-(0 :: Int,_ + x :: Int)
-(0 :: Int,_ + 0 :: Int)
-(0 :: Int,_ + id _ :: Int)
-(0 :: Int,x + _ :: Int)
-(0 :: Int,0 + _ :: Int)
-(0 :: Int,id _ + _ :: Int)
-(0 :: Int,_ * _ :: Int)
-(0 :: Int,f _ :: Int)
-(0 :: Int,head xs :: Int)
-(0 :: Int,head [] :: Int)
-(0 :: Int,head (_:_) :: Int)
-(0 :: Int,ord c :: Int)
-(0 :: Int,ord 'a' :: Int)
-(0 :: Int,q :: Bool)
-(0 :: Int,not p :: Bool)
-(0 :: Int,not False :: Bool)
-(0 :: Int,not True :: Bool)
-(0 :: Int,not (not _) :: Bool)
-(0 :: Int,_ || _ :: Bool)
-(0 :: Int,d :: Char)
-(0 :: Int,' ' :: Char)
-(0 :: Int,ys :: [Int])
-(0 :: Int,[0] :: [Int])
-(0 :: Int,_:xs :: [Int])
-(0 :: Int,[_] :: [Int])
-(0 :: Int,_:_:_ :: [Int])
-(0 :: Int,x:_ :: [Int])
-(0 :: Int,0:_ :: [Int])
-(0 :: Int,id _:_ :: [Int])
-(0 :: Int,tail _ :: [Int])
-(0 :: Int,_ ++ _ :: [Int])
-(0 :: Int,negate :: Int -> Int)
-(0 :: Int,abs :: Int -> Int)
-(0 :: Int,(_ +) :: Int -> Int)
-(0 :: Int,(*) :: Int -> Int -> Int)
-(0 :: Int,not :: Bool -> Bool)
-(0 :: Int,(||) :: Bool -> Bool -> Bool)
-(id _ :: Int,z :: Int)
-(id _ :: Int,-1 :: Int)
-(id _ :: Int,id y :: Int)
-(id _ :: Int,id 1 :: Int)
-(id _ :: Int,id (id x) :: Int)
-(id _ :: Int,id (id 0) :: Int)
-(id _ :: Int,id (id (id _)) :: Int)
-(id _ :: Int,id (negate _) :: Int)
-(id _ :: Int,id (abs _) :: Int)
-(id _ :: Int,id (_ + _) :: Int)
-(id _ :: Int,id (head _) :: Int)
-(id _ :: Int,id (ord _) :: Int)
-(id _ :: Int,negate x :: Int)
-(id _ :: Int,negate 0 :: Int)
-(id _ :: Int,negate (id _) :: Int)
-(id _ :: Int,abs x :: Int)
-(id _ :: Int,abs 0 :: Int)
-(id _ :: Int,abs (id _) :: Int)
-(id _ :: Int,_ + x :: Int)
-(id _ :: Int,_ + 0 :: Int)
-(id _ :: Int,_ + id _ :: Int)
-(id _ :: Int,x + _ :: Int)
-(id _ :: Int,0 + _ :: Int)
-(id _ :: Int,id _ + _ :: Int)
-(id _ :: Int,_ * _ :: Int)
-(id _ :: Int,f _ :: Int)
-(id _ :: Int,head xs :: Int)
-(id _ :: Int,head [] :: Int)
-(id _ :: Int,head (_:_) :: Int)
-(id _ :: Int,ord c :: Int)
-(id _ :: Int,ord 'a' :: Int)
-(id _ :: Int,q :: Bool)
-(id _ :: Int,not p :: Bool)
-(id _ :: Int,not False :: Bool)
-(id _ :: Int,not True :: Bool)
-(id _ :: Int,not (not _) :: Bool)
-(id _ :: Int,_ || _ :: Bool)
-(id _ :: Int,d :: Char)
-(id _ :: Int,' ' :: Char)
-(id _ :: Int,ys :: [Int])
-(id _ :: Int,[0] :: [Int])
-(id _ :: Int,_:xs :: [Int])
-(id _ :: Int,[_] :: [Int])
-(id _ :: Int,_:_:_ :: [Int])
-(id _ :: Int,x:_ :: [Int])
-(id _ :: Int,0:_ :: [Int])
-(id _ :: Int,id _:_ :: [Int])
-(id _ :: Int,tail _ :: [Int])
-(id _ :: Int,_ ++ _ :: [Int])
-(id _ :: Int,negate :: Int -> Int)
-(id _ :: Int,abs :: Int -> Int)
-(id _ :: Int,(_ +) :: Int -> Int)
-(id _ :: Int,(*) :: Int -> Int -> Int)
-(id _ :: Int,not :: Bool -> Bool)
-(id _ :: Int,(||) :: Bool -> Bool -> Bool)
-(_ :: Bool,z :: Int)
-(_ :: Bool,-1 :: Int)
-(_ :: Bool,id y :: Int)
-(_ :: Bool,id 1 :: Int)
-(_ :: Bool,id (id x) :: Int)
-(_ :: Bool,id (id 0) :: Int)
-(_ :: Bool,id (id (id _)) :: Int)
-(_ :: Bool,id (negate _) :: Int)
-(_ :: Bool,id (abs _) :: Int)
-(_ :: Bool,id (_ + _) :: Int)
-(_ :: Bool,id (head _) :: Int)
-(_ :: Bool,id (ord _) :: Int)
-(_ :: Bool,negate x :: Int)
-(_ :: Bool,negate 0 :: Int)
-(_ :: Bool,negate (id _) :: Int)
-(_ :: Bool,abs x :: Int)
-(_ :: Bool,abs 0 :: Int)
-(_ :: Bool,abs (id _) :: Int)
-(_ :: Bool,_ + x :: Int)
-(_ :: Bool,_ + 0 :: Int)
-(_ :: Bool,_ + id _ :: Int)
-(_ :: Bool,x + _ :: Int)
-(_ :: Bool,0 + _ :: Int)
-(_ :: Bool,id _ + _ :: Int)
-(_ :: Bool,_ * _ :: Int)
-(_ :: Bool,f _ :: Int)
-(_ :: Bool,head xs :: Int)
-(_ :: Bool,head [] :: Int)
-(_ :: Bool,head (_:_) :: Int)
-(_ :: Bool,ord c :: Int)
-(_ :: Bool,ord 'a' :: Int)
-(_ :: Bool,q :: Bool)
-(_ :: Bool,not p :: Bool)
-(_ :: Bool,not False :: Bool)
-(_ :: Bool,not True :: Bool)
-(_ :: Bool,not (not _) :: Bool)
-(_ :: Bool,_ || _ :: Bool)
-(_ :: Bool,d :: Char)
-(_ :: Bool,' ' :: Char)
-(_ :: Bool,ys :: [Int])
-(_ :: Bool,[0] :: [Int])
-(_ :: Bool,_:xs :: [Int])
-(_ :: Bool,[_] :: [Int])
-(_ :: Bool,_:_:_ :: [Int])
-(_ :: Bool,x:_ :: [Int])
-(_ :: Bool,0:_ :: [Int])
-(_ :: Bool,id _:_ :: [Int])
-(_ :: Bool,tail _ :: [Int])
-(_ :: Bool,_ ++ _ :: [Int])
-(_ :: Bool,negate :: Int -> Int)
-(_ :: Bool,abs :: Int -> Int)
-(_ :: Bool,(_ +) :: Int -> Int)
-(_ :: Bool,(*) :: Int -> Int -> Int)
-(_ :: Bool,not :: Bool -> Bool)
-(_ :: Bool,(||) :: Bool -> Bool -> Bool)
-(_ :: Char,z :: Int)
-(_ :: Char,-1 :: Int)
-(_ :: Char,id y :: Int)
-(_ :: Char,id 1 :: Int)
-(_ :: Char,id (id x) :: Int)
-(_ :: Char,id (id 0) :: Int)
-(_ :: Char,id (id (id _)) :: Int)
-(_ :: Char,id (negate _) :: Int)
-(_ :: Char,id (abs _) :: Int)
-(_ :: Char,id (_ + _) :: Int)
-(_ :: Char,id (head _) :: Int)
-(_ :: Char,id (ord _) :: Int)
-(_ :: Char,negate x :: Int)
-(_ :: Char,negate 0 :: Int)
-(_ :: Char,negate (id _) :: Int)
-(_ :: Char,abs x :: Int)
-(_ :: Char,abs 0 :: Int)
-(_ :: Char,abs (id _) :: Int)
-(_ :: Char,_ + x :: Int)
-(_ :: Char,_ + 0 :: Int)
-(_ :: Char,_ + id _ :: Int)
-(_ :: Char,x + _ :: Int)
-(_ :: Char,0 + _ :: Int)
-(_ :: Char,id _ + _ :: Int)
-(_ :: Char,_ * _ :: Int)
-(_ :: Char,f _ :: Int)
-(_ :: Char,head xs :: Int)
-(_ :: Char,head [] :: Int)
-(_ :: Char,head (_:_) :: Int)
-(_ :: Char,ord c :: Int)
-(_ :: Char,ord 'a' :: Int)
-(_ :: Char,q :: Bool)
-(_ :: Char,not p :: Bool)
-(_ :: Char,not False :: Bool)
-(_ :: Char,not True :: Bool)
-(_ :: Char,not (not _) :: Bool)
-(_ :: Char,_ || _ :: Bool)
-(_ :: Char,d :: Char)
-(_ :: Char,' ' :: Char)
-(_ :: Char,ys :: [Int])
-(_ :: Char,[0] :: [Int])
-(_ :: Char,_:xs :: [Int])
-(_ :: Char,[_] :: [Int])
-(_ :: Char,_:_:_ :: [Int])
-(_ :: Char,x:_ :: [Int])
-(_ :: Char,0:_ :: [Int])
-(_ :: Char,id _:_ :: [Int])
-(_ :: Char,tail _ :: [Int])
-(_ :: Char,_ ++ _ :: [Int])
-(_ :: Char,negate :: Int -> Int)
-(_ :: Char,abs :: Int -> Int)
-(_ :: Char,(_ +) :: Int -> Int)
-(_ :: Char,(*) :: Int -> Int -> Int)
-(_ :: Char,not :: Bool -> Bool)
-(_ :: Char,(||) :: Bool -> Bool -> Bool)
-(_ :: [Int],z :: Int)
-(_ :: [Int],-1 :: Int)
-(_ :: [Int],id y :: Int)
-(_ :: [Int],id 1 :: Int)
-(_ :: [Int],id (id x) :: Int)
-(_ :: [Int],id (id 0) :: Int)
-(_ :: [Int],id (id (id _)) :: Int)
-(_ :: [Int],id (negate _) :: Int)
-(_ :: [Int],id (abs _) :: Int)
-(_ :: [Int],id (_ + _) :: Int)
-(_ :: [Int],id (head _) :: Int)
-(_ :: [Int],id (ord _) :: Int)
-(_ :: [Int],negate x :: Int)
-(_ :: [Int],negate 0 :: Int)
-(_ :: [Int],negate (id _) :: Int)
-(_ :: [Int],abs x :: Int)
-(_ :: [Int],abs 0 :: Int)
-(_ :: [Int],abs (id _) :: Int)
-(_ :: [Int],_ + x :: Int)
-(_ :: [Int],_ + 0 :: Int)
-(_ :: [Int],_ + id _ :: Int)
-(_ :: [Int],x + _ :: Int)
-(_ :: [Int],0 + _ :: Int)
-(_ :: [Int],id _ + _ :: Int)
-(_ :: [Int],_ * _ :: Int)
-(_ :: [Int],f _ :: Int)
-(_ :: [Int],head xs :: Int)
-(_ :: [Int],head [] :: Int)
-(_ :: [Int],head (_:_) :: Int)
-(_ :: [Int],ord c :: Int)
-(_ :: [Int],ord 'a' :: Int)
-(_ :: [Int],q :: Bool)
-(_ :: [Int],not p :: Bool)
-(_ :: [Int],not False :: Bool)
-(_ :: [Int],not True :: Bool)
-(_ :: [Int],not (not _) :: Bool)
-(_ :: [Int],_ || _ :: Bool)
-(_ :: [Int],d :: Char)
-(_ :: [Int],' ' :: Char)
-(_ :: [Int],ys :: [Int])
-(_ :: [Int],[0] :: [Int])
-(_ :: [Int],_:xs :: [Int])
-(_ :: [Int],[_] :: [Int])
-(_ :: [Int],_:_:_ :: [Int])
-(_ :: [Int],x:_ :: [Int])
-(_ :: [Int],0:_ :: [Int])
-(_ :: [Int],id _:_ :: [Int])
-(_ :: [Int],tail _ :: [Int])
-(_ :: [Int],_ ++ _ :: [Int])
-(_ :: [Int],negate :: Int -> Int)
-(_ :: [Int],abs :: Int -> Int)
-(_ :: [Int],(_ +) :: Int -> Int)
-(_ :: [Int],(*) :: Int -> Int -> Int)
-(_ :: [Int],not :: Bool -> Bool)
-(_ :: [Int],(||) :: Bool -> Bool -> Bool)
-(y :: Int,y :: Int)
-(y :: Int,1 :: Int)
-(y :: Int,id x :: Int)
-(y :: Int,id 0 :: Int)
-(y :: Int,id (id _) :: Int)
-(y :: Int,negate _ :: Int)
-(y :: Int,abs _ :: Int)
-(y :: Int,_ + _ :: Int)
-(y :: Int,head _ :: Int)
-(y :: Int,ord _ :: Int)
-(y :: Int,p :: Bool)
-(y :: Int,False :: Bool)
-(y :: Int,True :: Bool)
-(y :: Int,not _ :: Bool)
-(y :: Int,c :: Char)
-(y :: Int,'a' :: Char)
-(y :: Int,xs :: [Int])
-(y :: Int,[] :: [Int])
-(y :: Int,_:_ :: [Int])
-(y :: Int,id :: Int -> Int)
-(y :: Int,(+) :: Int -> Int -> Int)
-(1 :: Int,y :: Int)
-(1 :: Int,1 :: Int)
-(1 :: Int,id x :: Int)
-(1 :: Int,id 0 :: Int)
-(1 :: Int,id (id _) :: Int)
-(1 :: Int,negate _ :: Int)
-(1 :: Int,abs _ :: Int)
-(1 :: Int,_ + _ :: Int)
-(1 :: Int,head _ :: Int)
-(1 :: Int,ord _ :: Int)
-(1 :: Int,p :: Bool)
-(1 :: Int,False :: Bool)
-(1 :: Int,True :: Bool)
-(1 :: Int,not _ :: Bool)
-(1 :: Int,c :: Char)
-(1 :: Int,'a' :: Char)
-(1 :: Int,xs :: [Int])
-(1 :: Int,[] :: [Int])
-(1 :: Int,_:_ :: [Int])
-
diff --git a/test/model/bench/sort.out b/test/model/bench/sort.out
deleted file mode 100644
--- a/test/model/bench/sort.out
+++ /dev/null
@@ -1,15129 +0,0 @@
-sort $ take 5040 $ list  ::  [ Expr ]  =
-  [ _ :: Bool
-  , p :: Bool
-  , q :: Bool
-  , r :: Bool
-  , p' :: Bool
-  , q' :: Bool
-  , _ :: Char
-  , c :: Char
-  , d :: Char
-  , e :: Char
-  , c' :: Char
-  , d' :: Char
-  , _ :: Int
-  , x :: Int
-  , y :: Int
-  , z :: Int
-  , x' :: Int
-  , y' :: Int
-  , z' :: Int
-  , x'' :: Int
-  , _ :: [Int]
-  , xs :: [Int]
-  , ys :: [Int]
-  , zs :: [Int]
-  , xs' :: [Int]
-  , ys' :: [Int]
-  , f :: Int -> Int
-  , g :: Int -> Int
-  , h :: Int -> Int
-  , False :: Bool
-  , True :: Bool
-  , ' ' :: Char
-  , 'A' :: Char
-  , 'a' :: Char
-  , 'b' :: Char
-  , 'c' :: Char
-  , 0 :: Int
-  , 1 :: Int
-  , 2 :: Int
-  , 3 :: Int
-  , -1 :: Int
-  , -2 :: Int
-  , -3 :: Int
-  , [] :: [Int]
-  , [0] :: [Int]
-  , [1] :: [Int]
-  , [2] :: [Int]
-  , [-1] :: [Int]
-  , [0,0] :: [Int]
-  , [0,1] :: [Int]
-  , [1,0] :: [Int]
-  , [1,1] :: [Int]
-  , [-1,0] :: [Int]
-  , [0,-1] :: [Int]
-  , [0,0,0] :: [Int]
-  , [0,0,1] :: [Int]
-  , [0,1,0] :: [Int]
-  , [1,0,0] :: [Int]
-  , [0,0,0,0] :: [Int]
-  , not :: Bool -> Bool
-  , id :: Int -> Int
-  , abs :: Int -> Int
-  , negate :: Int -> Int
-  , (&&) :: Bool -> Bool -> Bool
-  , (||) :: Bool -> Bool -> Bool
-  , (==>) :: Bool -> Bool -> Bool
-  , (*) :: Int -> Int -> Int
-  , (+) :: Int -> Int -> Int
-  , f _ :: Int
-  , f x :: Int
-  , f y :: Int
-  , f z :: Int
-  , g _ :: Int
-  , g x :: Int
-  , g y :: Int
-  , h _ :: Int
-  , h x :: Int
-  , f' _ :: Int
-  , f 0 :: Int
-  , f 1 :: Int
-  , f (-1) :: Int
-  , g 0 :: Int
-  , g 1 :: Int
-  , h 0 :: Int
-  , not _ :: Bool
-  , not p :: Bool
-  , not q :: Bool
-  , not r :: Bool
-  , not p' :: Bool
-  , ord _ :: Int
-  , ord c :: Int
-  , ord d :: Int
-  , ord e :: Int
-  , ord c' :: Int
-  , odd _ :: Bool
-  , odd x :: Bool
-  , odd y :: Bool
-  , even _ :: Bool
-  , even x :: Bool
-  , even y :: Bool
-  , id _ :: Int
-  , id x :: Int
-  , id y :: Int
-  , id z :: Int
-  , id x' :: Int
-  , id y' :: Int
-  , id z' :: Int
-  , abs _ :: Int
-  , abs x :: Int
-  , abs y :: Int
-  , abs z :: Int
-  , abs x' :: Int
-  , negate _ :: Int
-  , negate x :: Int
-  , negate y :: Int
-  , negate z :: Int
-  , negate x' :: Int
-  , head _ :: Int
-  , head xs :: Int
-  , head ys :: Int
-  , head zs :: Int
-  , head xs' :: Int
-  , sort _ :: [Int]
-  , sort xs :: [Int]
-  , sort ys :: [Int]
-  , tail _ :: [Int]
-  , tail xs :: [Int]
-  , tail ys :: [Int]
-  , tail zs :: [Int]
-  , (_ &&) :: Bool -> Bool
-  , (p &&) :: Bool -> Bool
-  , (_ ||) :: Bool -> Bool
-  , (p ||) :: Bool -> Bool
-  , (q ||) :: Bool -> Bool
-  , (_ ==>) :: Bool -> Bool
-  , (_ *) :: Int -> Int
-  , (x *) :: Int -> Int
-  , (y *) :: Int -> Int
-  , (_ +) :: Int -> Int
-  , (x +) :: Int -> Int
-  , (y +) :: Int -> Int
-  , (z +) :: Int -> Int
-  , not False :: Bool
-  , not True :: Bool
-  , ord ' ' :: Int
-  , ord 'A' :: Int
-  , ord 'a' :: Int
-  , ord 'b' :: Int
-  , odd 0 :: Bool
-  , odd 1 :: Bool
-  , even 0 :: Bool
-  , even 1 :: Bool
-  , id 0 :: Int
-  , id 1 :: Int
-  , id 2 :: Int
-  , id 3 :: Int
-  , id (-1) :: Int
-  , id (-2) :: Int
-  , abs 0 :: Int
-  , abs 1 :: Int
-  , abs 2 :: Int
-  , abs (-1) :: Int
-  , negate 0 :: Int
-  , negate 1 :: Int
-  , negate 2 :: Int
-  , negate (-1) :: Int
-  , head [] :: Int
-  , head [0] :: Int
-  , head [1] :: Int
-  , head [-1] :: Int
-  , head [0,0] :: Int
-  , head [0,1] :: Int
-  , head [1,0] :: Int
-  , head [0,0,0] :: Int
-  , sort [] :: [Int]
-  , sort [0] :: [Int]
-  , tail [] :: [Int]
-  , tail [0] :: [Int]
-  , tail [1] :: [Int]
-  , tail [0,0] :: [Int]
-  , (False &&) :: Bool -> Bool
-  , (True &&) :: Bool -> Bool
-  , (False ||) :: Bool -> Bool
-  , (True ||) :: Bool -> Bool
-  , (0 *) :: Int -> Int
-  , (1 *) :: Int -> Int
-  , (0 +) :: Int -> Int
-  , (1 +) :: Int -> Int
-  , ((-1) +) :: Int -> Int
-  , f (f _) :: Int
-  , f (ord _) :: Int
-  , f (ord c) :: Int
-  , f (id _) :: Int
-  , f (id x) :: Int
-  , f (id y) :: Int
-  , f (abs _) :: Int
-  , f (abs x) :: Int
-  , f (negate _) :: Int
-  , f (negate x) :: Int
-  , f (head _) :: Int
-  , f (head xs) :: Int
-  , g (ord _) :: Int
-  , g (id _) :: Int
-  , g (id x) :: Int
-  , g (abs _) :: Int
-  , g (negate _) :: Int
-  , g (head _) :: Int
-  , h (id _) :: Int
-  , id (f _) :: Int
-  , id (f x) :: Int
-  , id (f y) :: Int
-  , id (f z) :: Int
-  , id (g _) :: Int
-  , id (g x) :: Int
-  , id (g y) :: Int
-  , id (h _) :: Int
-  , id (h x) :: Int
-  , id (f' _) :: Int
-  , abs (f _) :: Int
-  , abs (f x) :: Int
-  , abs (g _) :: Int
-  , negate (f _) :: Int
-  , negate (f x) :: Int
-  , negate (g _) :: Int
-  , (f _ +) :: Int -> Int
-  , _ && p :: Bool
-  , _ && q :: Bool
-  , p && _ :: Bool
-  , q && _ :: Bool
-  , _ <= p :: Bool
-  , p <= _ :: Bool
-  , _ == p :: Bool
-  , _ == q :: Bool
-  , p == _ :: Bool
-  , q == _ :: Bool
-  , _ || p :: Bool
-  , _ || q :: Bool
-  , _ || r :: Bool
-  , p || _ :: Bool
-  , p || q :: Bool
-  , q || _ :: Bool
-  , q || p :: Bool
-  , r || _ :: Bool
-  , _ ==> p :: Bool
-  , p ==> _ :: Bool
-  , _ <= x :: Bool
-  , x <= _ :: Bool
-  , _ == x :: Bool
-  , _ == y :: Bool
-  , x == _ :: Bool
-  , y == _ :: Bool
-  , _ * x :: Int
-  , _ * y :: Int
-  , _ * z :: Int
-  , x * _ :: Int
-  , x * y :: Int
-  , y * _ :: Int
-  , y * x :: Int
-  , z * _ :: Int
-  , _ + x :: Int
-  , _ + y :: Int
-  , _ + z :: Int
-  , _ + x' :: Int
-  , x + _ :: Int
-  , x + y :: Int
-  , x + z :: Int
-  , y + _ :: Int
-  , y + x :: Int
-  , z + _ :: Int
-  , z + x :: Int
-  , x' + _ :: Int
-  , elem _ _ :: Bool
-  , elem _ xs :: Bool
-  , elem _ ys :: Bool
-  , elem x _ :: Bool
-  , elem x xs :: Bool
-  , elem y _ :: Bool
-  , _:_ :: [Int]
-  , _:xs :: [Int]
-  , _:ys :: [Int]
-  , _:zs :: [Int]
-  , _:xs' :: [Int]
-  , x:_ :: [Int]
-  , x:xs :: [Int]
-  , x:ys :: [Int]
-  , x:zs :: [Int]
-  , y:_ :: [Int]
-  , y:xs :: [Int]
-  , y:ys :: [Int]
-  , z:_ :: [Int]
-  , z:xs :: [Int]
-  , x':_ :: [Int]
-  , insert _ _ :: [Int]
-  , insert _ xs :: [Int]
-  , insert _ ys :: [Int]
-  , insert x _ :: [Int]
-  , insert x xs :: [Int]
-  , insert y _ :: [Int]
-  , _ ++ xs :: [Int]
-  , _ ++ ys :: [Int]
-  , _ ++ zs :: [Int]
-  , xs ++ _ :: [Int]
-  , xs ++ ys :: [Int]
-  , ys ++ _ :: [Int]
-  , ys ++ xs :: [Int]
-  , zs ++ _ :: [Int]
-  , _ < _ :: Bool
-  , _ && _ :: Bool
-  , p && p :: Bool
-  , _ <= _ :: Bool
-  , _ == _ :: Bool
-  , p == p :: Bool
-  , _ || _ :: Bool
-  , p || p :: Bool
-  , _ ==> _ :: Bool
-  , _ < _ :: Bool
-  , _ <= _ :: Bool
-  , _ == _ :: Bool
-  , x == x :: Bool
-  , _ * _ :: Int
-  , x * x :: Int
-  , _ + _ :: Int
-  , x + x :: Int
-  , y + y :: Int
-  , _ ++ _ :: [Int]
-  , xs ++ xs :: [Int]
-  , not (not _) :: Bool
-  , not (not p) :: Bool
-  , not (not q) :: Bool
-  , not (not r) :: Bool
-  , id (id _) :: Int
-  , id (id x) :: Int
-  , id (id y) :: Int
-  , id (id z) :: Int
-  , id (id x') :: Int
-  , id (id y') :: Int
-  , abs (abs _) :: Int
-  , abs (abs x) :: Int
-  , abs (abs y) :: Int
-  , negate (negate _) :: Int
-  , negate (negate x) :: Int
-  , negate (negate y) :: Int
-  , tail (tail _) :: [Int]
-  , tail (tail xs) :: [Int]
-  , f (ord 'a') :: Int
-  , f (id 0) :: Int
-  , f (id 1) :: Int
-  , f (abs 0) :: Int
-  , f (negate 0) :: Int
-  , f (head []) :: Int
-  , g (id 0) :: Int
-  , not (odd _) :: Bool
-  , not (odd x) :: Bool
-  , not (even _) :: Bool
-  , not (even x) :: Bool
-  , odd (ord _) :: Bool
-  , odd (id _) :: Bool
-  , odd (id x) :: Bool
-  , odd (abs _) :: Bool
-  , odd (negate _) :: Bool
-  , odd (head _) :: Bool
-  , even (ord _) :: Bool
-  , even (id _) :: Bool
-  , even (id x) :: Bool
-  , even (abs _) :: Bool
-  , even (negate _) :: Bool
-  , even (head _) :: Bool
-  , id (f 0) :: Int
-  , id (f 1) :: Int
-  , id (f (-1)) :: Int
-  , id (g 0) :: Int
-  , id (g 1) :: Int
-  , id (h 0) :: Int
-  , id (ord _) :: Int
-  , id (ord c) :: Int
-  , id (ord d) :: Int
-  , id (ord e) :: Int
-  , id (abs _) :: Int
-  , id (abs x) :: Int
-  , id (abs y) :: Int
-  , id (abs z) :: Int
-  , id (abs x') :: Int
-  , id (negate _) :: Int
-  , id (negate x) :: Int
-  , id (negate y) :: Int
-  , id (negate z) :: Int
-  , id (negate x') :: Int
-  , id (head _) :: Int
-  , id (head xs) :: Int
-  , id (head ys) :: Int
-  , id (head zs) :: Int
-  , id (head xs') :: Int
-  , abs (f 0) :: Int
-  , abs (ord _) :: Int
-  , abs (ord c) :: Int
-  , abs (ord d) :: Int
-  , abs (id _) :: Int
-  , abs (id x) :: Int
-  , abs (id y) :: Int
-  , abs (id z) :: Int
-  , abs (negate _) :: Int
-  , abs (negate x) :: Int
-  , abs (negate y) :: Int
-  , abs (head _) :: Int
-  , abs (head xs) :: Int
-  , abs (head ys) :: Int
-  , negate (f 0) :: Int
-  , negate (ord _) :: Int
-  , negate (ord c) :: Int
-  , negate (ord d) :: Int
-  , negate (id _) :: Int
-  , negate (id x) :: Int
-  , negate (id y) :: Int
-  , negate (id z) :: Int
-  , negate (abs _) :: Int
-  , negate (abs x) :: Int
-  , negate (abs y) :: Int
-  , negate (head _) :: Int
-  , negate (head xs) :: Int
-  , negate (head ys) :: Int
-  , head (sort _) :: Int
-  , head (sort xs) :: Int
-  , head (tail _) :: Int
-  , head (tail xs) :: Int
-  , head (tail ys) :: Int
-  , sort (tail _) :: [Int]
-  , tail (sort _) :: [Int]
-  , (not _ &&) :: Bool -> Bool
-  , (not _ ||) :: Bool -> Bool
-  , (not p ||) :: Bool -> Bool
-  , (ord _ *) :: Int -> Int
-  , (id _ *) :: Int -> Int
-  , (id x *) :: Int -> Int
-  , (abs _ *) :: Int -> Int
-  , (negate _ *) :: Int -> Int
-  , (head _ *) :: Int -> Int
-  , (ord _ +) :: Int -> Int
-  , (ord c +) :: Int -> Int
-  , (id _ +) :: Int -> Int
-  , (id x +) :: Int -> Int
-  , (id y +) :: Int -> Int
-  , (abs _ +) :: Int -> Int
-  , (abs x +) :: Int -> Int
-  , (negate _ +) :: Int -> Int
-  , (negate x +) :: Int -> Int
-  , (head _ +) :: Int -> Int
-  , (head xs +) :: Int -> Int
-  , _ && False :: Bool
-  , _ && True :: Bool
-  , p && False :: Bool
-  , p && True :: Bool
-  , False && _ :: Bool
-  , False && p :: Bool
-  , True && _ :: Bool
-  , True && p :: Bool
-  , _ <= False :: Bool
-  , _ <= True :: Bool
-  , False <= _ :: Bool
-  , True <= _ :: Bool
-  , _ == False :: Bool
-  , _ == True :: Bool
-  , p == False :: Bool
-  , p == True :: Bool
-  , False == _ :: Bool
-  , False == p :: Bool
-  , True == _ :: Bool
-  , True == p :: Bool
-  , _ || False :: Bool
-  , _ || True :: Bool
-  , p || False :: Bool
-  , p || True :: Bool
-  , q || False :: Bool
-  , q || True :: Bool
-  , False || _ :: Bool
-  , False || p :: Bool
-  , False || q :: Bool
-  , True || _ :: Bool
-  , True || p :: Bool
-  , True || q :: Bool
-  , _ ==> False :: Bool
-  , _ ==> True :: Bool
-  , False ==> _ :: Bool
-  , True ==> _ :: Bool
-  , _ <= 0 :: Bool
-  , 0 <= _ :: Bool
-  , _ == 0 :: Bool
-  , _ == 1 :: Bool
-  , x == 0 :: Bool
-  , 0 == _ :: Bool
-  , 0 == x :: Bool
-  , 1 == _ :: Bool
-  , _ * 0 :: Int
-  , _ * 1 :: Int
-  , _ * (-1) :: Int
-  , x * 0 :: Int
-  , x * 1 :: Int
-  , y * 0 :: Int
-  , 0 * _ :: Int
-  , 0 * x :: Int
-  , 0 * y :: Int
-  , 1 * _ :: Int
-  , 1 * x :: Int
-  , (-1) * _ :: Int
-  , _ + 0 :: Int
-  , _ + 1 :: Int
-  , _ + 2 :: Int
-  , _ + (-1) :: Int
-  , x + 0 :: Int
-  , x + 1 :: Int
-  , x + (-1) :: Int
-  , y + 0 :: Int
-  , y + 1 :: Int
-  , z + 0 :: Int
-  , 0 + _ :: Int
-  , 0 + x :: Int
-  , 0 + y :: Int
-  , 0 + z :: Int
-  , 1 + _ :: Int
-  , 1 + x :: Int
-  , 1 + y :: Int
-  , 2 + _ :: Int
-  , (-1) + _ :: Int
-  , (-1) + x :: Int
-  , elem _ [] :: Bool
-  , elem _ [0] :: Bool
-  , elem x [] :: Bool
-  , elem 0 _ :: Bool
-  , elem 0 xs :: Bool
-  , elem 1 _ :: Bool
-  , [_] :: [Int]
-  , [_,0] :: [Int]
-  , [_,1] :: [Int]
-  , [_,-1] :: [Int]
-  , [_,0,0] :: [Int]
-  , [_,0,1] :: [Int]
-  , [_,1,0] :: [Int]
-  , [_,0,0,0] :: [Int]
-  , [x] :: [Int]
-  , [x,0] :: [Int]
-  , [x,1] :: [Int]
-  , [x,0,0] :: [Int]
-  , [y] :: [Int]
-  , [y,0] :: [Int]
-  , [z] :: [Int]
-  , 0:_ :: [Int]
-  , 0:xs :: [Int]
-  , 0:ys :: [Int]
-  , 0:zs :: [Int]
-  , 1:_ :: [Int]
-  , 1:xs :: [Int]
-  , 1:ys :: [Int]
-  , 2:_ :: [Int]
-  , (-1):_ :: [Int]
-  , (-1):xs :: [Int]
-  , insert _ [] :: [Int]
-  , insert _ [0] :: [Int]
-  , insert x [] :: [Int]
-  , insert 0 _ :: [Int]
-  , insert 0 xs :: [Int]
-  , insert 1 _ :: [Int]
-  , _ ++ [] :: [Int]
-  , _ ++ [0] :: [Int]
-  , _ ++ [1] :: [Int]
-  , _ ++ [0,0] :: [Int]
-  , xs ++ [] :: [Int]
-  , xs ++ [0] :: [Int]
-  , ys ++ [] :: [Int]
-  , [] ++ _ :: [Int]
-  , [] ++ xs :: [Int]
-  , [] ++ ys :: [Int]
-  , [0] ++ _ :: [Int]
-  , [0] ++ xs :: [Int]
-  , [1] ++ _ :: [Int]
-  , [0,0] ++ _ :: [Int]
-  , not (not False) :: Bool
-  , not (not True) :: Bool
-  , id (id 0) :: Int
-  , id (id 1) :: Int
-  , id (id 2) :: Int
-  , id (id (-1)) :: Int
-  , id (id (-2)) :: Int
-  , abs (abs 0) :: Int
-  , abs (abs 1) :: Int
-  , negate (negate 0) :: Int
-  , negate (negate 1) :: Int
-  , tail (tail []) :: [Int]
-  , False && False :: Bool
-  , True && True :: Bool
-  , False == False :: Bool
-  , True == True :: Bool
-  , False || False :: Bool
-  , True || True :: Bool
-  , 0 == 0 :: Bool
-  , 0 * 0 :: Int
-  , 0 + 0 :: Int
-  , 1 + 1 :: Int
-  , [] ++ [] :: [Int]
-  , not (odd 0) :: Bool
-  , not (even 0) :: Bool
-  , odd (id 0) :: Bool
-  , even (id 0) :: Bool
-  , id (ord ' ') :: Int
-  , id (ord 'a') :: Int
-  , id (ord 'b') :: Int
-  , id (abs 0) :: Int
-  , id (abs 1) :: Int
-  , id (abs 2) :: Int
-  , id (abs (-1)) :: Int
-  , id (negate 0) :: Int
-  , id (negate 1) :: Int
-  , id (negate 2) :: Int
-  , id (negate (-1)) :: Int
-  , id (head []) :: Int
-  , id (head [0]) :: Int
-  , id (head [1]) :: Int
-  , id (head [-1]) :: Int
-  , id (head [0,0]) :: Int
-  , id (head [0,1]) :: Int
-  , id (head [1,0]) :: Int
-  , id (head [0,0,0]) :: Int
-  , abs (ord ' ') :: Int
-  , abs (ord 'a') :: Int
-  , abs (id 0) :: Int
-  , abs (id 1) :: Int
-  , abs (id (-1)) :: Int
-  , abs (negate 0) :: Int
-  , abs (negate 1) :: Int
-  , abs (head []) :: Int
-  , abs (head [0]) :: Int
-  , negate (ord ' ') :: Int
-  , negate (ord 'a') :: Int
-  , negate (id 0) :: Int
-  , negate (id 1) :: Int
-  , negate (id (-1)) :: Int
-  , negate (abs 0) :: Int
-  , negate (abs 1) :: Int
-  , negate (head []) :: Int
-  , negate (head [0]) :: Int
-  , head (sort []) :: Int
-  , head (tail []) :: Int
-  , head (tail [0]) :: Int
-  , (not False ||) :: Bool -> Bool
-  , (not True ||) :: Bool -> Bool
-  , (id 0 *) :: Int -> Int
-  , (ord 'a' +) :: Int -> Int
-  , (id 0 +) :: Int -> Int
-  , (id 1 +) :: Int -> Int
-  , (abs 0 +) :: Int -> Int
-  , (negate 0 +) :: Int -> Int
-  , (head [] +) :: Int -> Int
-  , False && True :: Bool
-  , True && False :: Bool
-  , False == True :: Bool
-  , True == False :: Bool
-  , False || True :: Bool
-  , True || False :: Bool
-  , 0 * 1 :: Int
-  , 1 * 0 :: Int
-  , 0 + 1 :: Int
-  , 0 + (-1) :: Int
-  , 1 + 0 :: Int
-  , (-1) + 0 :: Int
-  , elem 0 [] :: Bool
-  , [0] :: [Int]
-  , [0,0] :: [Int]
-  , [0,1] :: [Int]
-  , [0,0,0] :: [Int]
-  , [1] :: [Int]
-  , [1,0] :: [Int]
-  , [-1] :: [Int]
-  , insert 0 [] :: [Int]
-  , [] ++ [0] :: [Int]
-  , [0] ++ [] :: [Int]
-  , f (_ + x) :: Int
-  , f (x + _) :: Int
-  , _ + f x :: Int
-  , x + f _ :: Int
-  , f _ + x :: Int
-  , f x + _ :: Int
-  , f _:_ :: [Int]
-  , f _:xs :: [Int]
-  , f x:_ :: [Int]
-  , g _:_ :: [Int]
-  , f (_ * _) :: Int
-  , f (_ + _) :: Int
-  , g (_ + _) :: Int
-  , id (f (f _)) :: Int
-  , _ * f _ :: Int
-  , f _ * _ :: Int
-  , _ + f _ :: Int
-  , _ + g _ :: Int
-  , f _ + _ :: Int
-  , g _ + _ :: Int
-  , f (id (id _)) :: Int
-  , f (id (id x)) :: Int
-  , g (id (id _)) :: Int
-  , id (f (id _)) :: Int
-  , id (f (id x)) :: Int
-  , id (f (id y)) :: Int
-  , id (g (id _)) :: Int
-  , id (g (id x)) :: Int
-  , id (h (id _)) :: Int
-  , id (id (f _)) :: Int
-  , id (id (f x)) :: Int
-  , id (id (f y)) :: Int
-  , id (id (g _)) :: Int
-  , id (id (g x)) :: Int
-  , id (id (h _)) :: Int
-  , ((_ + x) +) :: Int -> Int
-  , ((x + _) +) :: Int -> Int
-  , f (id (ord _)) :: Int
-  , f (id (abs _)) :: Int
-  , f (id (negate _)) :: Int
-  , f (id (head _)) :: Int
-  , f (abs (id _)) :: Int
-  , f (negate (id _)) :: Int
-  , f (_ + 0) :: Int
-  , f (0 + _) :: Int
-  , not (_ && p) :: Bool
-  , not (p && _) :: Bool
-  , not (_ == p) :: Bool
-  , not (p == _) :: Bool
-  , not (_ || p) :: Bool
-  , not (_ || q) :: Bool
-  , not (p || _) :: Bool
-  , not (q || _) :: Bool
-  , not (_ == x) :: Bool
-  , not (x == _) :: Bool
-  , not (elem _ _) :: Bool
-  , not (elem _ xs) :: Bool
-  , not (elem x _) :: Bool
-  , id (f (ord _)) :: Int
-  , id (f (ord c)) :: Int
-  , id (f (abs _)) :: Int
-  , id (f (abs x)) :: Int
-  , id (f (negate _)) :: Int
-  , id (f (negate x)) :: Int
-  , id (f (head _)) :: Int
-  , id (f (head xs)) :: Int
-  , id (g (ord _)) :: Int
-  , id (g (abs _)) :: Int
-  , id (g (negate _)) :: Int
-  , id (g (head _)) :: Int
-  , id (abs (f _)) :: Int
-  , id (abs (f x)) :: Int
-  , id (abs (g _)) :: Int
-  , id (negate (f _)) :: Int
-  , id (negate (f x)) :: Int
-  , id (negate (g _)) :: Int
-  , id (_ * x) :: Int
-  , id (_ * y) :: Int
-  , id (_ * z) :: Int
-  , id (x * _) :: Int
-  , id (x * y) :: Int
-  , id (y * _) :: Int
-  , id (y * x) :: Int
-  , id (z * _) :: Int
-  , id (_ + x) :: Int
-  , id (_ + y) :: Int
-  , id (_ + z) :: Int
-  , id (_ + x') :: Int
-  , id (x + _) :: Int
-  , id (x + y) :: Int
-  , id (x + z) :: Int
-  , id (y + _) :: Int
-  , id (y + x) :: Int
-  , id (z + _) :: Int
-  , id (z + x) :: Int
-  , id (x' + _) :: Int
-  , abs (f (id _)) :: Int
-  , abs (id (f _)) :: Int
-  , abs (_ * x) :: Int
-  , abs (x * _) :: Int
-  , abs (_ + x) :: Int
-  , abs (_ + y) :: Int
-  , abs (x + _) :: Int
-  , abs (y + _) :: Int
-  , negate (f (id _)) :: Int
-  , negate (id (f _)) :: Int
-  , negate (_ * x) :: Int
-  , negate (x * _) :: Int
-  , negate (_ + x) :: Int
-  , negate (_ + y) :: Int
-  , negate (x + _) :: Int
-  , negate (y + _) :: Int
-  , head (_:_) :: Int
-  , head (_:xs) :: Int
-  , head (_:ys) :: Int
-  , head (_:zs) :: Int
-  , head (x:_) :: Int
-  , head (x:xs) :: Int
-  , head (x:ys) :: Int
-  , head (y:_) :: Int
-  , head (y:xs) :: Int
-  , head (z:_) :: Int
-  , head (insert _ _) :: Int
-  , head (insert _ xs) :: Int
-  , head (insert x _) :: Int
-  , head (_ ++ xs) :: Int
-  , head (_ ++ ys) :: Int
-  , head (xs ++ _) :: Int
-  , head (ys ++ _) :: Int
-  , sort (_:_) :: [Int]
-  , sort (_:xs) :: [Int]
-  , sort (x:_) :: [Int]
-  , tail (_:_) :: [Int]
-  , tail (_:xs) :: [Int]
-  , tail (_:ys) :: [Int]
-  , tail (x:_) :: [Int]
-  , tail (x:xs) :: [Int]
-  , tail (y:_) :: [Int]
-  , tail (insert _ _) :: [Int]
-  , tail (_ ++ xs) :: [Int]
-  , tail (xs ++ _) :: [Int]
-  , _ && not p :: Bool
-  , p && not _ :: Bool
-  , not _ && p :: Bool
-  , not p && _ :: Bool
-  , _ == not p :: Bool
-  , p == not _ :: Bool
-  , not _ == p :: Bool
-  , not p == _ :: Bool
-  , _ || not p :: Bool
-  , _ || not q :: Bool
-  , _ || odd _ :: Bool
-  , _ || even _ :: Bool
-  , p || not _ :: Bool
-  , q || not _ :: Bool
-  , not _ || p :: Bool
-  , not _ || q :: Bool
-  , not p || _ :: Bool
-  , not q || _ :: Bool
-  , odd _ || _ :: Bool
-  , even _ || _ :: Bool
-  , _ == ord _ :: Bool
-  , _ == id x :: Bool
-  , _ == head _ :: Bool
-  , x == id _ :: Bool
-  , ord _ == _ :: Bool
-  , id _ == x :: Bool
-  , id x == _ :: Bool
-  , head _ == _ :: Bool
-  , _ * ord _ :: Int
-  , _ * ord c :: Int
-  , _ * id x :: Int
-  , _ * id y :: Int
-  , _ * abs x :: Int
-  , _ * negate x :: Int
-  , _ * head _ :: Int
-  , _ * head xs :: Int
-  , x * ord _ :: Int
-  , x * id _ :: Int
-  , x * abs _ :: Int
-  , x * negate _ :: Int
-  , x * head _ :: Int
-  , y * id _ :: Int
-  , ord _ * _ :: Int
-  , ord _ * x :: Int
-  , ord c * _ :: Int
-  , id _ * x :: Int
-  , id _ * y :: Int
-  , id x * _ :: Int
-  , id y * _ :: Int
-  , abs _ * x :: Int
-  , abs x * _ :: Int
-  , negate _ * x :: Int
-  , negate x * _ :: Int
-  , head _ * _ :: Int
-  , head _ * x :: Int
-  , head xs * _ :: Int
-  , _ + f 0 :: Int
-  , _ + ord _ :: Int
-  , _ + ord c :: Int
-  , _ + ord d :: Int
-  , _ + id x :: Int
-  , _ + id y :: Int
-  , _ + id z :: Int
-  , _ + abs x :: Int
-  , _ + abs y :: Int
-  , _ + negate x :: Int
-  , _ + negate y :: Int
-  , _ + head _ :: Int
-  , _ + head xs :: Int
-  , _ + head ys :: Int
-  , x + ord _ :: Int
-  , x + ord c :: Int
-  , x + id _ :: Int
-  , x + id y :: Int
-  , x + abs _ :: Int
-  , x + negate _ :: Int
-  , x + head _ :: Int
-  , x + head xs :: Int
-  , y + ord _ :: Int
-  , y + id _ :: Int
-  , y + id x :: Int
-  , y + abs _ :: Int
-  , y + negate _ :: Int
-  , y + head _ :: Int
-  , z + id _ :: Int
-  , 0 + f _ :: Int
-  , f _ + 0 :: Int
-  , f 0 + _ :: Int
-  , ord _ + _ :: Int
-  , ord _ + x :: Int
-  , ord _ + y :: Int
-  , ord c + _ :: Int
-  , ord c + x :: Int
-  , ord d + _ :: Int
-  , id _ + x :: Int
-  , id _ + y :: Int
-  , id _ + z :: Int
-  , id x + _ :: Int
-  , id x + y :: Int
-  , id y + _ :: Int
-  , id y + x :: Int
-  , id z + _ :: Int
-  , abs _ + x :: Int
-  , abs _ + y :: Int
-  , abs x + _ :: Int
-  , abs y + _ :: Int
-  , negate _ + x :: Int
-  , negate _ + y :: Int
-  , negate x + _ :: Int
-  , negate y + _ :: Int
-  , head _ + _ :: Int
-  , head _ + x :: Int
-  , head _ + y :: Int
-  , head xs + _ :: Int
-  , head xs + x :: Int
-  , head ys + _ :: Int
-  , elem _ (tail _) :: Bool
-  , elem (ord _) _ :: Bool
-  , elem (id _) _ :: Bool
-  , elem (id _) xs :: Bool
-  , elem (id x) _ :: Bool
-  , elem (abs _) _ :: Bool
-  , elem (negate _) _ :: Bool
-  , _:sort _ :: [Int]
-  , _:sort xs :: [Int]
-  , _:tail _ :: [Int]
-  , _:tail xs :: [Int]
-  , _:tail ys :: [Int]
-  , x:sort _ :: [Int]
-  , x:tail _ :: [Int]
-  , x:tail xs :: [Int]
-  , y:tail _ :: [Int]
-  , [f _] :: [Int]
-  , f 0:_ :: [Int]
-  , ord _:_ :: [Int]
-  , ord _:xs :: [Int]
-  , ord _:ys :: [Int]
-  , ord c:_ :: [Int]
-  , ord c:xs :: [Int]
-  , ord d:_ :: [Int]
-  , id _:_ :: [Int]
-  , id _:xs :: [Int]
-  , id _:ys :: [Int]
-  , id _:zs :: [Int]
-  , id x:_ :: [Int]
-  , id x:xs :: [Int]
-  , id x:ys :: [Int]
-  , id y:_ :: [Int]
-  , id y:xs :: [Int]
-  , id z:_ :: [Int]
-  , abs _:_ :: [Int]
-  , abs _:xs :: [Int]
-  , abs _:ys :: [Int]
-  , abs x:_ :: [Int]
-  , abs x:xs :: [Int]
-  , abs y:_ :: [Int]
-  , negate _:_ :: [Int]
-  , negate _:xs :: [Int]
-  , negate _:ys :: [Int]
-  , negate x:_ :: [Int]
-  , negate x:xs :: [Int]
-  , negate y:_ :: [Int]
-  , head _:xs :: [Int]
-  , head _:ys :: [Int]
-  , head xs:_ :: [Int]
-  , head ys:_ :: [Int]
-  , insert _ (tail _) :: [Int]
-  , insert (ord _) _ :: [Int]
-  , insert (id _) _ :: [Int]
-  , insert (id _) xs :: [Int]
-  , insert (id x) _ :: [Int]
-  , insert (abs _) _ :: [Int]
-  , insert (negate _) _ :: [Int]
-  , _ ++ tail xs :: [Int]
-  , xs ++ tail _ :: [Int]
-  , tail _ ++ xs :: [Int]
-  , tail xs ++ _ :: [Int]
-  , ((_ || _) ||) :: Bool -> Bool
-  , ((_ + _) +) :: Int -> Int
-  , not (_ && _) :: Bool
-  , not (_ <= _) :: Bool
-  , not (_ == _) :: Bool
-  , not (_ || _) :: Bool
-  , not (p || p) :: Bool
-  , not (_ ==> _) :: Bool
-  , not (_ <= _) :: Bool
-  , not (_ == _) :: Bool
-  , odd (_ + _) :: Bool
-  , even (_ + _) :: Bool
-  , id (_ * _) :: Int
-  , id (x * x) :: Int
-  , id (_ + _) :: Int
-  , id (x + x) :: Int
-  , id (y + y) :: Int
-  , abs (_ * _) :: Int
-  , abs (_ + _) :: Int
-  , abs (x + x) :: Int
-  , negate (_ * _) :: Int
-  , negate (_ + _) :: Int
-  , negate (x + x) :: Int
-  , head (_ ++ _) :: Int
-  , head (xs ++ xs) :: Int
-  , sort (_ ++ _) :: [Int]
-  , tail (_ ++ _) :: [Int]
-  , ((_ + _) *) :: Int -> Int
-  , (_ * _ +) :: Int -> Int
-  , _ && not _ :: Bool
-  , not _ && _ :: Bool
-  , _ <= not _ :: Bool
-  , not _ <= _ :: Bool
-  , _ == not _ :: Bool
-  , not _ == _ :: Bool
-  , _ || not _ :: Bool
-  , p || not p :: Bool
-  , not _ || _ :: Bool
-  , not p || p :: Bool
-  , _ ==> not _ :: Bool
-  , not _ ==> _ :: Bool
-  , _ <= id _ :: Bool
-  , id _ <= _ :: Bool
-  , _ == id _ :: Bool
-  , _ == abs _ :: Bool
-  , _ == negate _ :: Bool
-  , id _ == _ :: Bool
-  , abs _ == _ :: Bool
-  , negate _ == _ :: Bool
-  , _ * id _ :: Int
-  , _ * abs _ :: Int
-  , _ * negate _ :: Int
-  , x * id x :: Int
-  , id _ * _ :: Int
-  , id x * x :: Int
-  , abs _ * _ :: Int
-  , negate _ * _ :: Int
-  , _ + id _ :: Int
-  , _ + abs _ :: Int
-  , _ + negate _ :: Int
-  , x + id x :: Int
-  , x + abs x :: Int
-  , x + negate x :: Int
-  , id _ + _ :: Int
-  , id x + x :: Int
-  , abs _ + _ :: Int
-  , abs x + x :: Int
-  , negate _ + _ :: Int
-  , negate x + x :: Int
-  , elem (head _) _ :: Bool
-  , head _:_ :: [Int]
-  , head xs:xs :: [Int]
-  , insert (head _) _ :: [Int]
-  , _ ++ sort _ :: [Int]
-  , _ ++ tail _ :: [Int]
-  , sort _ ++ _ :: [Int]
-  , tail _ ++ _ :: [Int]
-  , not (not (not _)) :: Bool
-  , not (not (not p)) :: Bool
-  , not (not (not q)) :: Bool
-  , id (id (id _)) :: Int
-  , id (id (id x)) :: Int
-  , id (id (id y)) :: Int
-  , id (id (id z)) :: Int
-  , id (id (id x')) :: Int
-  , abs (abs (abs _)) :: Int
-  , negate (negate (negate _)) :: Int
-  , f (id (id 0)) :: Int
-  , not (not (odd _)) :: Bool
-  , not (not (even _)) :: Bool
-  , odd (id (id _)) :: Bool
-  , even (id (id _)) :: Bool
-  , id (f (id 0)) :: Int
-  , id (f (id 1)) :: Int
-  , id (g (id 0)) :: Int
-  , id (id (f 0)) :: Int
-  , id (id (f 1)) :: Int
-  , id (id (g 0)) :: Int
-  , id (id (ord _)) :: Int
-  , id (id (ord c)) :: Int
-  , id (id (ord d)) :: Int
-  , id (id (ord e)) :: Int
-  , id (id (abs _)) :: Int
-  , id (id (abs x)) :: Int
-  , id (id (abs y)) :: Int
-  , id (id (abs z)) :: Int
-  , id (id (negate _)) :: Int
-  , id (id (negate x)) :: Int
-  , id (id (negate y)) :: Int
-  , id (id (negate z)) :: Int
-  , id (id (head _)) :: Int
-  , id (id (head xs)) :: Int
-  , id (id (head ys)) :: Int
-  , id (id (head zs)) :: Int
-  , id (abs (id _)) :: Int
-  , id (abs (id x)) :: Int
-  , id (abs (id y)) :: Int
-  , id (abs (id z)) :: Int
-  , id (abs (abs _)) :: Int
-  , id (abs (abs x)) :: Int
-  , id (abs (abs y)) :: Int
-  , id (negate (id _)) :: Int
-  , id (negate (id x)) :: Int
-  , id (negate (id y)) :: Int
-  , id (negate (id z)) :: Int
-  , id (negate (negate _)) :: Int
-  , id (negate (negate x)) :: Int
-  , id (negate (negate y)) :: Int
-  , abs (id (id _)) :: Int
-  , abs (id (id x)) :: Int
-  , abs (id (id y)) :: Int
-  , abs (id (abs _)) :: Int
-  , abs (id (abs x)) :: Int
-  , abs (abs (ord _)) :: Int
-  , abs (abs (id _)) :: Int
-  , abs (abs (id x)) :: Int
-  , abs (abs (negate _)) :: Int
-  , abs (abs (head _)) :: Int
-  , abs (negate (abs _)) :: Int
-  , abs (negate (negate _)) :: Int
-  , negate (id (id _)) :: Int
-  , negate (id (id x)) :: Int
-  , negate (id (id y)) :: Int
-  , negate (id (negate _)) :: Int
-  , negate (id (negate x)) :: Int
-  , negate (abs (abs _)) :: Int
-  , negate (abs (negate _)) :: Int
-  , negate (negate (ord _)) :: Int
-  , negate (negate (id _)) :: Int
-  , negate (negate (id x)) :: Int
-  , negate (negate (abs _)) :: Int
-  , negate (negate (head _)) :: Int
-  , head (tail (tail _)) :: Int
-  , (not (not _) ||) :: Bool -> Bool
-  , (id (id _) *) :: Int -> Int
-  , (id (id _) +) :: Int -> Int
-  , (id (id x) +) :: Int -> Int
-  , ((_ + 0) +) :: Int -> Int
-  , ((0 + _) +) :: Int -> Int
-  , not (odd (id _)) :: Bool
-  , not (even (id _)) :: Bool
-  , not (_ && False) :: Bool
-  , not (_ && True) :: Bool
-  , not (False && _) :: Bool
-  , not (True && _) :: Bool
-  , not (_ == False) :: Bool
-  , not (_ == True) :: Bool
-  , not (False == _) :: Bool
-  , not (True == _) :: Bool
-  , not (_ || False) :: Bool
-  , not (_ || True) :: Bool
-  , not (p || False) :: Bool
-  , not (p || True) :: Bool
-  , not (False || _) :: Bool
-  , not (False || p) :: Bool
-  , not (True || _) :: Bool
-  , not (True || p) :: Bool
-  , not (_ == 0) :: Bool
-  , not (0 == _) :: Bool
-  , not (elem _ []) :: Bool
-  , not (elem 0 _) :: Bool
-  , id (f (ord 'a')) :: Int
-  , id (f (abs 0)) :: Int
-  , id (f (negate 0)) :: Int
-  , id (f (head [])) :: Int
-  , id (abs (f 0)) :: Int
-  , id (abs (ord _)) :: Int
-  , id (abs (ord c)) :: Int
-  , id (abs (ord d)) :: Int
-  , id (abs (negate _)) :: Int
-  , id (abs (negate x)) :: Int
-  , id (abs (negate y)) :: Int
-  , id (abs (head _)) :: Int
-  , id (abs (head xs)) :: Int
-  , id (abs (head ys)) :: Int
-  , id (negate (f 0)) :: Int
-  , id (negate (ord _)) :: Int
-  , id (negate (ord c)) :: Int
-  , id (negate (ord d)) :: Int
-  , id (negate (abs _)) :: Int
-  , id (negate (abs x)) :: Int
-  , id (negate (abs y)) :: Int
-  , id (negate (head _)) :: Int
-  , id (negate (head xs)) :: Int
-  , id (negate (head ys)) :: Int
-  , id (head (sort _)) :: Int
-  , id (head (tail _)) :: Int
-  , id (head (tail xs)) :: Int
-  , id (head (tail ys)) :: Int
-  , id (_ * 0) :: Int
-  , id (_ * 1) :: Int
-  , id (_ * (-1)) :: Int
-  , id (x * 0) :: Int
-  , id (x * 1) :: Int
-  , id (y * 0) :: Int
-  , id (0 * _) :: Int
-  , id (0 * x) :: Int
-  , id (0 * y) :: Int
-  , id (1 * _) :: Int
-  , id (1 * x) :: Int
-  , id ((-1) * _) :: Int
-  , id (_ + 0) :: Int
-  , id (_ + 1) :: Int
-  , id (_ + 2) :: Int
-  , id (_ + (-1)) :: Int
-  , id (x + 0) :: Int
-  , id (x + 1) :: Int
-  , id (x + (-1)) :: Int
-  , id (y + 0) :: Int
-  , id (y + 1) :: Int
-  , id (z + 0) :: Int
-  , id (0 + _) :: Int
-  , id (0 + x) :: Int
-  , id (0 + y) :: Int
-  , id (0 + z) :: Int
-  , id (1 + _) :: Int
-  , id (1 + x) :: Int
-  , id (1 + y) :: Int
-  , id (2 + _) :: Int
-  , id ((-1) + _) :: Int
-  , id ((-1) + x) :: Int
-  , abs (id (ord _)) :: Int
-  , abs (id (ord c)) :: Int
-  , abs (id (negate _)) :: Int
-  , abs (id (negate x)) :: Int
-  , abs (id (head _)) :: Int
-  , abs (id (head xs)) :: Int
-  , abs (negate (ord _)) :: Int
-  , abs (negate (id _)) :: Int
-  , abs (negate (id x)) :: Int
-  , abs (negate (head _)) :: Int
-  , abs (head (tail _)) :: Int
-  , abs (_ * 0) :: Int
-  , abs (0 * _) :: Int
-  , abs (_ + 0) :: Int
-  , abs (_ + 1) :: Int
-  , abs (x + 0) :: Int
-  , abs (0 + _) :: Int
-  , abs (0 + x) :: Int
-  , abs (1 + _) :: Int
-  , negate (id (ord _)) :: Int
-  , negate (id (ord c)) :: Int
-  , negate (id (abs _)) :: Int
-  , negate (id (abs x)) :: Int
-  , negate (id (head _)) :: Int
-  , negate (id (head xs)) :: Int
-  , negate (abs (ord _)) :: Int
-  , negate (abs (id _)) :: Int
-  , negate (abs (id x)) :: Int
-  , negate (abs (head _)) :: Int
-  , negate (head (tail _)) :: Int
-  , negate (_ * 0) :: Int
-  , negate (0 * _) :: Int
-  , negate (_ + 0) :: Int
-  , negate (_ + 1) :: Int
-  , negate (x + 0) :: Int
-  , negate (0 + _) :: Int
-  , negate (0 + x) :: Int
-  , negate (1 + _) :: Int
-  , head [_] :: Int
-  , head [_,0] :: Int
-  , head [_,1] :: Int
-  , head [_,0,0] :: Int
-  , head [x] :: Int
-  , head [x,0] :: Int
-  , head [y] :: Int
-  , head (0:_) :: Int
-  , head (0:xs) :: Int
-  , head (0:ys) :: Int
-  , head (1:_) :: Int
-  , head (1:xs) :: Int
-  , head ((-1):_) :: Int
-  , head (insert _ []) :: Int
-  , head (insert 0 _) :: Int
-  , head (_ ++ []) :: Int
-  , head (_ ++ [0]) :: Int
-  , head (xs ++ []) :: Int
-  , head ([] ++ _) :: Int
-  , head ([] ++ xs) :: Int
-  , head ([0] ++ _) :: Int
-  , sort [_] :: [Int]
-  , sort (0:_) :: [Int]
-  , tail [_] :: [Int]
-  , tail [_,0] :: [Int]
-  , tail [x] :: [Int]
-  , tail (0:_) :: [Int]
-  , tail (0:xs) :: [Int]
-  , tail (1:_) :: [Int]
-  , tail (_ ++ []) :: [Int]
-  , tail ([] ++ _) :: [Int]
-  , (id (ord _) +) :: Int -> Int
-  , (id (abs _) +) :: Int -> Int
-  , (id (negate _) +) :: Int -> Int
-  , (id (head _) +) :: Int -> Int
-  , (abs (id _) +) :: Int -> Int
-  , (negate (id _) +) :: Int -> Int
-  , _ && not False :: Bool
-  , _ && not True :: Bool
-  , False && not _ :: Bool
-  , True && not _ :: Bool
-  , not _ && False :: Bool
-  , not _ && True :: Bool
-  , not False && _ :: Bool
-  , not True && _ :: Bool
-  , _ == not False :: Bool
-  , _ == not True :: Bool
-  , False == not _ :: Bool
-  , True == not _ :: Bool
-  , not _ == False :: Bool
-  , not _ == True :: Bool
-  , not False == _ :: Bool
-  , not True == _ :: Bool
-  , _ || not False :: Bool
-  , _ || not True :: Bool
-  , p || not False :: Bool
-  , p || not True :: Bool
-  , False || not _ :: Bool
-  , False || not p :: Bool
-  , True || not _ :: Bool
-  , True || not p :: Bool
-  , not _ || False :: Bool
-  , not _ || True :: Bool
-  , not p || False :: Bool
-  , not p || True :: Bool
-  , not False || _ :: Bool
-  , not False || p :: Bool
-  , not True || _ :: Bool
-  , not True || p :: Bool
-  , _ == id 0 :: Bool
-  , 0 == id _ :: Bool
-  , id _ == 0 :: Bool
-  , id 0 == _ :: Bool
-  , _ * ord 'a' :: Int
-  , _ * id 0 :: Int
-  , _ * id 1 :: Int
-  , _ * abs 0 :: Int
-  , _ * negate 0 :: Int
-  , _ * head [] :: Int
-  , x * id 0 :: Int
-  , 0 * ord _ :: Int
-  , 0 * id _ :: Int
-  , 0 * id x :: Int
-  , 0 * abs _ :: Int
-  , 0 * negate _ :: Int
-  , 0 * head _ :: Int
-  , 1 * id _ :: Int
-  , ord _ * 0 :: Int
-  , ord 'a' * _ :: Int
-  , id _ * 0 :: Int
-  , id _ * 1 :: Int
-  , id x * 0 :: Int
-  , id 0 * _ :: Int
-  , id 0 * x :: Int
-  , id 1 * _ :: Int
-  , abs _ * 0 :: Int
-  , abs 0 * _ :: Int
-  , negate _ * 0 :: Int
-  , negate 0 * _ :: Int
-  , head _ * 0 :: Int
-  , head [] * _ :: Int
-  , _ + ord ' ' :: Int
-  , _ + ord 'a' :: Int
-  , _ + id 0 :: Int
-  , _ + id 1 :: Int
-  , _ + id (-1) :: Int
-  , _ + abs 0 :: Int
-  , _ + abs 1 :: Int
-  , _ + negate 0 :: Int
-  , _ + negate 1 :: Int
-  , _ + head [] :: Int
-  , _ + head [0] :: Int
-  , x + ord 'a' :: Int
-  , x + id 0 :: Int
-  , x + id 1 :: Int
-  , x + abs 0 :: Int
-  , x + negate 0 :: Int
-  , x + head [] :: Int
-  , y + id 0 :: Int
-  , 0 + ord _ :: Int
-  , 0 + ord c :: Int
-  , 0 + id _ :: Int
-  , 0 + id x :: Int
-  , 0 + id y :: Int
-  , 0 + abs _ :: Int
-  , 0 + abs x :: Int
-  , 0 + negate _ :: Int
-  , 0 + negate x :: Int
-  , 0 + head _ :: Int
-  , 0 + head xs :: Int
-  , 1 + ord _ :: Int
-  , 1 + id _ :: Int
-  , 1 + id x :: Int
-  , 1 + abs _ :: Int
-  , 1 + negate _ :: Int
-  , 1 + head _ :: Int
-  , (-1) + id _ :: Int
-  , ord _ + 0 :: Int
-  , ord _ + 1 :: Int
-  , ord c + 0 :: Int
-  , ord ' ' + _ :: Int
-  , ord 'a' + _ :: Int
-  , ord 'a' + x :: Int
-  , id _ + 0 :: Int
-  , id _ + 1 :: Int
-  , id _ + (-1) :: Int
-  , id x + 0 :: Int
-  , id x + 1 :: Int
-  , id y + 0 :: Int
-  , id 0 + _ :: Int
-  , id 0 + x :: Int
-  , id 0 + y :: Int
-  , id 1 + _ :: Int
-  , id 1 + x :: Int
-  , id (-1) + _ :: Int
-  , abs _ + 0 :: Int
-  , abs _ + 1 :: Int
-  , abs x + 0 :: Int
-  , abs 0 + _ :: Int
-  , abs 0 + x :: Int
-  , abs 1 + _ :: Int
-  , negate _ + 0 :: Int
-  , negate _ + 1 :: Int
-  , negate x + 0 :: Int
-  , negate 0 + _ :: Int
-  , negate 0 + x :: Int
-  , negate 1 + _ :: Int
-  , head _ + 0 :: Int
-  , head _ + 1 :: Int
-  , head xs + 0 :: Int
-  , head [] + _ :: Int
-  , head [] + x :: Int
-  , head [0] + _ :: Int
-  , elem (id _) [] :: Bool
-  , elem (id 0) _ :: Bool
-  , _:sort [] :: [Int]
-  , _:tail [] :: [Int]
-  , _:tail [0] :: [Int]
-  , x:tail [] :: [Int]
-  , 0:sort _ :: [Int]
-  , 0:tail _ :: [Int]
-  , 0:tail xs :: [Int]
-  , 1:tail _ :: [Int]
-  , [ord _] :: [Int]
-  , [ord _,0] :: [Int]
-  , [ord c] :: [Int]
-  , ord ' ':_ :: [Int]
-  , ord 'a':_ :: [Int]
-  , ord 'a':xs :: [Int]
-  , [id _] :: [Int]
-  , [id _,0] :: [Int]
-  , [id _,1] :: [Int]
-  , [id _,0,0] :: [Int]
-  , [id x] :: [Int]
-  , [id x,0] :: [Int]
-  , [id y] :: [Int]
-  , id 0:_ :: [Int]
-  , id 0:xs :: [Int]
-  , id 0:ys :: [Int]
-  , id 1:_ :: [Int]
-  , id 1:xs :: [Int]
-  , id (-1):_ :: [Int]
-  , [abs _] :: [Int]
-  , [abs _,0] :: [Int]
-  , [abs x] :: [Int]
-  , abs 0:_ :: [Int]
-  , abs 0:xs :: [Int]
-  , abs 1:_ :: [Int]
-  , [negate _] :: [Int]
-  , [negate _,0] :: [Int]
-  , [negate x] :: [Int]
-  , negate 0:_ :: [Int]
-  , negate 0:xs :: [Int]
-  , negate 1:_ :: [Int]
-  , [head _] :: [Int]
-  , [head _,0] :: [Int]
-  , [head xs] :: [Int]
-  , head []:_ :: [Int]
-  , head []:xs :: [Int]
-  , head [0]:_ :: [Int]
-  , insert (id _) [] :: [Int]
-  , insert (id 0) _ :: [Int]
-  , _ ++ tail [] :: [Int]
-  , [] ++ tail _ :: [Int]
-  , tail _ ++ [] :: [Int]
-  , tail [] ++ _ :: [Int]
-  , not (not (not False)) :: Bool
-  , not (not (not True)) :: Bool
-  , id (id (id 0)) :: Int
-  , id (id (id 1)) :: Int
-  , id (id (id 2)) :: Int
-  , id (id (id (-1))) :: Int
-  , not (False || False) :: Bool
-  , not (True || True) :: Bool
-  , id (id (ord ' ')) :: Int
-  , id (id (ord 'a')) :: Int
-  , id (id (ord 'b')) :: Int
-  , id (id (abs 0)) :: Int
-  , id (id (abs 1)) :: Int
-  , id (id (abs (-1))) :: Int
-  , id (id (negate 0)) :: Int
-  , id (id (negate 1)) :: Int
-  , id (id (negate (-1))) :: Int
-  , id (id (head [])) :: Int
-  , id (id (head [0])) :: Int
-  , id (id (head [1])) :: Int
-  , id (id (head [0,0])) :: Int
-  , id (abs (id 0)) :: Int
-  , id (abs (id 1)) :: Int
-  , id (abs (id (-1))) :: Int
-  , id (abs (abs 0)) :: Int
-  , id (abs (abs 1)) :: Int
-  , id (negate (id 0)) :: Int
-  , id (negate (id 1)) :: Int
-  , id (negate (id (-1))) :: Int
-  , id (negate (negate 0)) :: Int
-  , id (negate (negate 1)) :: Int
-  , id (0 * 0) :: Int
-  , id (0 + 0) :: Int
-  , id (1 + 1) :: Int
-  , abs (id (id 0)) :: Int
-  , abs (id (id 1)) :: Int
-  , abs (id (abs 0)) :: Int
-  , abs (abs (id 0)) :: Int
-  , abs (0 + 0) :: Int
-  , negate (id (id 0)) :: Int
-  , negate (id (id 1)) :: Int
-  , negate (id (negate 0)) :: Int
-  , negate (negate (id 0)) :: Int
-  , negate (0 + 0) :: Int
-  , head ([] ++ []) :: Int
-  , (id (id 0) +) :: Int -> Int
-  , False || not False :: Bool
-  , True || not True :: Bool
-  , not False || False :: Bool
-  , not True || True :: Bool
-  , 0 * id 0 :: Int
-  , id 0 * 0 :: Int
-  , 0 + id 0 :: Int
-  , 0 + abs 0 :: Int
-  , 0 + negate 0 :: Int
-  , id 0 + 0 :: Int
-  , abs 0 + 0 :: Int
-  , negate 0 + 0 :: Int
-  , [head []] :: [Int]
-  , not (False || True) :: Bool
-  , not (True || False) :: Bool
-  , id (abs (ord ' ')) :: Int
-  , id (abs (ord 'a')) :: Int
-  , id (abs (negate 0)) :: Int
-  , id (abs (negate 1)) :: Int
-  , id (abs (head [])) :: Int
-  , id (abs (head [0])) :: Int
-  , id (negate (ord ' ')) :: Int
-  , id (negate (ord 'a')) :: Int
-  , id (negate (abs 0)) :: Int
-  , id (negate (abs 1)) :: Int
-  , id (negate (head [])) :: Int
-  , id (negate (head [0])) :: Int
-  , id (head (tail [])) :: Int
-  , id (head (tail [0])) :: Int
-  , id (0 * 1) :: Int
-  , id (1 * 0) :: Int
-  , id (0 + 1) :: Int
-  , id (0 + (-1)) :: Int
-  , id (1 + 0) :: Int
-  , id ((-1) + 0) :: Int
-  , abs (id (ord 'a')) :: Int
-  , abs (id (negate 0)) :: Int
-  , abs (id (head [])) :: Int
-  , abs (negate (id 0)) :: Int
-  , negate (id (ord 'a')) :: Int
-  , negate (id (abs 0)) :: Int
-  , negate (id (head [])) :: Int
-  , negate (abs (id 0)) :: Int
-  , head [0] :: Int
-  , head [0,0] :: Int
-  , head [1] :: Int
-  , tail [0] :: [Int]
-  , False || not True :: Bool
-  , True || not False :: Bool
-  , not False || True :: Bool
-  , not True || False :: Bool
-  , 0 + ord 'a' :: Int
-  , 0 + id 1 :: Int
-  , 0 + head [] :: Int
-  , 1 + id 0 :: Int
-  , ord 'a' + 0 :: Int
-  , id 0 + 1 :: Int
-  , id 1 + 0 :: Int
-  , head [] + 0 :: Int
-  , 0:tail [] :: [Int]
-  , [ord 'a'] :: [Int]
-  , [id 0] :: [Int]
-  , [id 0,0] :: [Int]
-  , [id 1] :: [Int]
-  , [abs 0] :: [Int]
-  , [negate 0] :: [Int]
-  , _:x:_ :: [Int]
-  , _:x:xs :: [Int]
-  , _:x:ys :: [Int]
-  , _:y:_ :: [Int]
-  , _:y:xs :: [Int]
-  , _:z:_ :: [Int]
-  , x:_:_ :: [Int]
-  , x:_:xs :: [Int]
-  , x:_:ys :: [Int]
-  , x:y:_ :: [Int]
-  , y:_:_ :: [Int]
-  , y:_:xs :: [Int]
-  , y:x:_ :: [Int]
-  , z:_:_ :: [Int]
-  , f (head (_:_)) :: Int
-  , id (f (_ + x)) :: Int
-  , id (f (x + _)) :: Int
-  , id (_ + f x) :: Int
-  , id (x + f _) :: Int
-  , id (f _ + x) :: Int
-  , id (f x + _) :: Int
-  , head (f _:_) :: Int
-  , _ || elem _ _ :: Bool
-  , elem _ _ || _ :: Bool
-  , elem _ (x:_) :: Bool
-  , elem x (_:_) :: Bool
-  , _:insert x _ :: [Int]
-  , _:(_ ++ xs) :: [Int]
-  , _:(_ ++ ys) :: [Int]
-  , _:(xs ++ _) :: [Int]
-  , _:(ys ++ _) :: [Int]
-  , x:insert _ _ :: [Int]
-  , x:(_ ++ xs) :: [Int]
-  , x:(xs ++ _) :: [Int]
-  , f (id _):_ :: [Int]
-  , id (f _):_ :: [Int]
-  , _ * x:_ :: [Int]
-  , x * _:_ :: [Int]
-  , _ + x:_ :: [Int]
-  , _ + x:xs :: [Int]
-  , _ + y:_ :: [Int]
-  , x + _:_ :: [Int]
-  , x + _:xs :: [Int]
-  , y + _:_ :: [Int]
-  , insert _ (x:_) :: [Int]
-  , insert x (_:_) :: [Int]
-  , _ ++ (_:xs) :: [Int]
-  , _ ++ (_:ys) :: [Int]
-  , _ ++ (x:xs) :: [Int]
-  , xs ++ (_:_) :: [Int]
-  , xs ++ (x:_) :: [Int]
-  , ys ++ (_:_) :: [Int]
-  , (_:_) ++ xs :: [Int]
-  , (_:_) ++ ys :: [Int]
-  , (_:xs) ++ _ :: [Int]
-  , (_:ys) ++ _ :: [Int]
-  , (x:_) ++ xs :: [Int]
-  , (x:xs) ++ _ :: [Int]
-  , _ || (_ || p) :: Bool
-  , _ || (p || _) :: Bool
-  , p || (_ || _) :: Bool
-  , (_ || _) || p :: Bool
-  , (_ || p) || _ :: Bool
-  , (p || _) || _ :: Bool
-  , _ + (_ + x) :: Int
-  , _ + (_ + y) :: Int
-  , _ + (x + _) :: Int
-  , _ + (x + x) :: Int
-  , _ + (y + _) :: Int
-  , x + (_ + _) :: Int
-  , x + (_ + x) :: Int
-  , x + (x + _) :: Int
-  , y + (_ + _) :: Int
-  , (_ + _) + x :: Int
-  , (_ + _) + y :: Int
-  , (_ + x) + _ :: Int
-  , (_ + x) + x :: Int
-  , (_ + y) + _ :: Int
-  , (x + _) + _ :: Int
-  , (x + _) + x :: Int
-  , (x + x) + _ :: Int
-  , (y + _) + _ :: Int
-  , _:_:_ :: [Int]
-  , _:_:xs :: [Int]
-  , _:_:ys :: [Int]
-  , _:_:zs :: [Int]
-  , x:x:_ :: [Int]
-  , x:x:xs :: [Int]
-  , _ ++ (_ ++ xs) :: [Int]
-  , _ ++ (xs ++ _) :: [Int]
-  , xs ++ (_ ++ _) :: [Int]
-  , (_ ++ _) ++ xs :: [Int]
-  , (_ ++ xs) ++ _ :: [Int]
-  , (xs ++ _) ++ _ :: [Int]
-  , f (id (_ + _)) :: Int
-  , f (_ + id _) :: Int
-  , f (id _ + _) :: Int
-  , id (f (_ * _)) :: Int
-  , id (f (_ + _)) :: Int
-  , id (g (_ + _)) :: Int
-  , id (_ * f _) :: Int
-  , id (f _ * _) :: Int
-  , id (_ + f _) :: Int
-  , id (_ + g _) :: Int
-  , id (f _ + _) :: Int
-  , id (g _ + _) :: Int
-  , _ || _ == _ :: Bool
-  , _ == _ || _ :: Bool
-  , _ * (_ + x) :: Int
-  , _ * (x + _) :: Int
-  , x * (_ + _) :: Int
-  , (_ + _) * x :: Int
-  , (_ + x) * _ :: Int
-  , (x + _) * _ :: Int
-  , _ + f (id _) :: Int
-  , _ + id (f _) :: Int
-  , _ + _ * x :: Int
-  , _ + x * _ :: Int
-  , x + _ * _ :: Int
-  , f _ + id _ :: Int
-  , f (id _) + _ :: Int
-  , id _ + f _ :: Int
-  , id (f _) + _ :: Int
-  , _ * _ + x :: Int
-  , _ * x + _ :: Int
-  , x * _ + _ :: Int
-  , elem _ (_:_) :: Bool
-  , elem _ (_:xs) :: Bool
-  , elem _ (_ ++ _) :: Bool
-  , elem (_ + _) _ :: Bool
-  , _:insert _ _ :: [Int]
-  , _:insert _ xs :: [Int]
-  , _:(_ ++ _) :: [Int]
-  , _:(xs ++ xs) :: [Int]
-  , x:(_ ++ _) :: [Int]
-  , y:(_ ++ _) :: [Int]
-  , _ * _:_ :: [Int]
-  , _ * _:xs :: [Int]
-  , _ + _:_ :: [Int]
-  , _ + _:xs :: [Int]
-  , _ + _:ys :: [Int]
-  , x + x:_ :: [Int]
-  , insert _ (_:_) :: [Int]
-  , insert _ (_:xs) :: [Int]
-  , insert _ (_ ++ _) :: [Int]
-  , insert (_ + _) _ :: [Int]
-  , _ ++ (_:_) :: [Int]
-  , _ ++ (x:_) :: [Int]
-  , _ ++ (y:_) :: [Int]
-  , _ ++ insert _ _ :: [Int]
-  , xs ++ (_:xs) :: [Int]
-  , (_:_) ++ _ :: [Int]
-  , (_:xs) ++ xs :: [Int]
-  , (x:_) ++ _ :: [Int]
-  , (y:_) ++ _ :: [Int]
-  , insert _ _ ++ _ :: [Int]
-  , f (id (id (id _))) :: Int
-  , id (f (id (id _))) :: Int
-  , id (f (id (id x))) :: Int
-  , id (g (id (id _))) :: Int
-  , id (id (f (id _))) :: Int
-  , id (id (f (id x))) :: Int
-  , id (id (g (id _))) :: Int
-  , id (id (id (f _))) :: Int
-  , id (id (id (f x))) :: Int
-  , id (id (id (g _))) :: Int
-  , not (not (_ || p)) :: Bool
-  , not (not (p || _)) :: Bool
-  , not (not (elem _ _)) :: Bool
-  , not (_ || not p) :: Bool
-  , not (p || not _) :: Bool
-  , not (not _ || p) :: Bool
-  , not (not p || _) :: Bool
-  , id (f (id (ord _))) :: Int
-  , id (f (id (abs _))) :: Int
-  , id (f (id (negate _))) :: Int
-  , id (f (id (head _))) :: Int
-  , id (f (abs (id _))) :: Int
-  , id (f (negate (id _))) :: Int
-  , id (id (f (ord _))) :: Int
-  , id (id (f (abs _))) :: Int
-  , id (id (f (negate _))) :: Int
-  , id (id (f (head _))) :: Int
-  , id (id (abs (f _))) :: Int
-  , id (id (negate (f _))) :: Int
-  , id (id (_ * x)) :: Int
-  , id (id (_ * y)) :: Int
-  , id (id (x * _)) :: Int
-  , id (id (y * _)) :: Int
-  , id (id (_ + x)) :: Int
-  , id (id (_ + y)) :: Int
-  , id (id (_ + z)) :: Int
-  , id (id (x + _)) :: Int
-  , id (id (x + y)) :: Int
-  , id (id (y + _)) :: Int
-  , id (id (y + x)) :: Int
-  , id (id (z + _)) :: Int
-  , id (abs (f (id _))) :: Int
-  , id (abs (id (f _))) :: Int
-  , id (negate (f (id _))) :: Int
-  , id (negate (id (f _))) :: Int
-  , id (_ * id x) :: Int
-  , id (_ * id y) :: Int
-  , id (x * id _) :: Int
-  , id (y * id _) :: Int
-  , id (id _ * x) :: Int
-  , id (id _ * y) :: Int
-  , id (id x * _) :: Int
-  , id (id y * _) :: Int
-  , id (_ + id x) :: Int
-  , id (_ + id y) :: Int
-  , id (_ + id z) :: Int
-  , id (x + id _) :: Int
-  , id (x + id y) :: Int
-  , id (y + id _) :: Int
-  , id (y + id x) :: Int
-  , id (z + id _) :: Int
-  , id (id _ + x) :: Int
-  , id (id _ + y) :: Int
-  , id (id _ + z) :: Int
-  , id (id x + _) :: Int
-  , id (id x + y) :: Int
-  , id (id y + _) :: Int
-  , id (id y + x) :: Int
-  , id (id z + _) :: Int
-  , head (head _:xs) :: Int
-  , head (head xs:_) :: Int
-  , tail (tail (_:_)) :: [Int]
-  , tail (_:tail _) :: [Int]
-  , _ || not (not p) :: Bool
-  , p || not (not _) :: Bool
-  , not _ || not p :: Bool
-  , not p || not _ :: Bool
-  , not (not _) || p :: Bool
-  , not (not p) || _ :: Bool
-  , _ * id (id x) :: Int
-  , x * id (id _) :: Int
-  , id _ * id x :: Int
-  , id x * id _ :: Int
-  , id (id _) * x :: Int
-  , id (id x) * _ :: Int
-  , _ + id (id x) :: Int
-  , _ + id (id y) :: Int
-  , _ + (x + 0) :: Int
-  , _ + (0 + x) :: Int
-  , x + id (id _) :: Int
-  , x + (_ + 0) :: Int
-  , x + (0 + _) :: Int
-  , y + id (id _) :: Int
-  , 0 + (_ + x) :: Int
-  , 0 + (x + _) :: Int
-  , id _ + id x :: Int
-  , id _ + id y :: Int
-  , id x + id _ :: Int
-  , id y + id _ :: Int
-  , id (id _) + x :: Int
-  , id (id _) + y :: Int
-  , id (id x) + _ :: Int
-  , id (id y) + _ :: Int
-  , (_ + x) + 0 :: Int
-  , (_ + 0) + x :: Int
-  , (x + _) + 0 :: Int
-  , (x + 0) + _ :: Int
-  , (0 + _) + x :: Int
-  , (0 + x) + _ :: Int
-  , elem (id (id _)) _ :: Bool
-  , _:tail (tail _) :: [Int]
-  , [_,x] :: [Int]
-  , [_,x,0] :: [Int]
-  , [_,y] :: [Int]
-  , _:0:_ :: [Int]
-  , _:0:xs :: [Int]
-  , _:0:ys :: [Int]
-  , _:1:_ :: [Int]
-  , _:1:xs :: [Int]
-  , _:(-1):_ :: [Int]
-  , [x,_] :: [Int]
-  , [x,_,0] :: [Int]
-  , x:0:_ :: [Int]
-  , x:0:xs :: [Int]
-  , x:1:_ :: [Int]
-  , [y,_] :: [Int]
-  , y:0:_ :: [Int]
-  , 0:_:_ :: [Int]
-  , 0:_:xs :: [Int]
-  , 0:_:ys :: [Int]
-  , 0:x:_ :: [Int]
-  , 0:x:xs :: [Int]
-  , 0:y:_ :: [Int]
-  , 1:_:_ :: [Int]
-  , 1:_:xs :: [Int]
-  , 1:x:_ :: [Int]
-  , (-1):_:_ :: [Int]
-  , id (id _):_ :: [Int]
-  , id (id _):xs :: [Int]
-  , id (id _):ys :: [Int]
-  , id (id x):_ :: [Int]
-  , id (id x):xs :: [Int]
-  , id (id y):_ :: [Int]
-  , abs (abs _):_ :: [Int]
-  , negate (negate _):_ :: [Int]
-  , insert (id (id _)) _ :: [Int]
-  , not (elem (id _) _) :: Bool
-  , id (f (_ + 0)) :: Int
-  , id (f (0 + _)) :: Int
-  , id (abs (_ * x)) :: Int
-  , id (abs (x * _)) :: Int
-  , id (abs (_ + x)) :: Int
-  , id (abs (_ + y)) :: Int
-  , id (abs (x + _)) :: Int
-  , id (abs (y + _)) :: Int
-  , id (negate (_ * x)) :: Int
-  , id (negate (x * _)) :: Int
-  , id (negate (_ + x)) :: Int
-  , id (negate (_ + y)) :: Int
-  , id (negate (x + _)) :: Int
-  , id (negate (y + _)) :: Int
-  , id (head (_:_)) :: Int
-  , id (head (_:xs)) :: Int
-  , id (head (_:ys)) :: Int
-  , id (head (_:zs)) :: Int
-  , id (head (x:_)) :: Int
-  , id (head (x:xs)) :: Int
-  , id (head (x:ys)) :: Int
-  , id (head (y:_)) :: Int
-  , id (head (y:xs)) :: Int
-  , id (head (z:_)) :: Int
-  , id (head (insert _ _)) :: Int
-  , id (head (_ ++ xs)) :: Int
-  , id (head (_ ++ ys)) :: Int
-  , id (head (xs ++ _)) :: Int
-  , id (head (ys ++ _)) :: Int
-  , id (_ * ord _) :: Int
-  , id (_ * ord c) :: Int
-  , id (_ * abs x) :: Int
-  , id (_ * negate x) :: Int
-  , id (_ * head _) :: Int
-  , id (_ * head xs) :: Int
-  , id (x * ord _) :: Int
-  , id (x * abs _) :: Int
-  , id (x * negate _) :: Int
-  , id (x * head _) :: Int
-  , id (ord _ * _) :: Int
-  , id (ord _ * x) :: Int
-  , id (ord c * _) :: Int
-  , id (abs _ * x) :: Int
-  , id (abs x * _) :: Int
-  , id (negate _ * x) :: Int
-  , id (negate x * _) :: Int
-  , id (head _ * _) :: Int
-  , id (head _ * x) :: Int
-  , id (head xs * _) :: Int
-  , id (_ + f 0) :: Int
-  , id (_ + ord _) :: Int
-  , id (_ + ord c) :: Int
-  , id (_ + ord d) :: Int
-  , id (_ + abs x) :: Int
-  , id (_ + abs y) :: Int
-  , id (_ + negate x) :: Int
-  , id (_ + negate y) :: Int
-  , id (_ + head _) :: Int
-  , id (_ + head xs) :: Int
-  , id (_ + head ys) :: Int
-  , id (x + ord _) :: Int
-  , id (x + ord c) :: Int
-  , id (x + abs _) :: Int
-  , id (x + negate _) :: Int
-  , id (x + head _) :: Int
-  , id (x + head xs) :: Int
-  , id (y + ord _) :: Int
-  , id (y + abs _) :: Int
-  , id (y + negate _) :: Int
-  , id (y + head _) :: Int
-  , id (0 + f _) :: Int
-  , id (f _ + 0) :: Int
-  , id (f 0 + _) :: Int
-  , id (ord _ + _) :: Int
-  , id (ord _ + x) :: Int
-  , id (ord _ + y) :: Int
-  , id (ord c + _) :: Int
-  , id (ord c + x) :: Int
-  , id (ord d + _) :: Int
-  , id (abs _ + x) :: Int
-  , id (abs _ + y) :: Int
-  , id (abs x + _) :: Int
-  , id (abs y + _) :: Int
-  , id (negate _ + x) :: Int
-  , id (negate _ + y) :: Int
-  , id (negate x + _) :: Int
-  , id (negate y + _) :: Int
-  , id (head _ + _) :: Int
-  , id (head _ + x) :: Int
-  , id (head _ + y) :: Int
-  , id (head xs + _) :: Int
-  , id (head xs + x) :: Int
-  , id (head ys + _) :: Int
-  , abs (id (_ + x)) :: Int
-  , abs (id (x + _)) :: Int
-  , abs (head (_:_)) :: Int
-  , abs (head (_:xs)) :: Int
-  , abs (head (x:_)) :: Int
-  , abs (_ + ord _) :: Int
-  , abs (_ + id x) :: Int
-  , abs (_ + head _) :: Int
-  , abs (x + id _) :: Int
-  , abs (ord _ + _) :: Int
-  , abs (id _ + x) :: Int
-  , abs (id x + _) :: Int
-  , abs (head _ + _) :: Int
-  , negate (id (_ + x)) :: Int
-  , negate (id (x + _)) :: Int
-  , negate (head (_:_)) :: Int
-  , negate (head (_:xs)) :: Int
-  , negate (head (x:_)) :: Int
-  , negate (_ + ord _) :: Int
-  , negate (_ + id x) :: Int
-  , negate (_ + head _) :: Int
-  , negate (x + id _) :: Int
-  , negate (ord _ + _) :: Int
-  , negate (id _ + x) :: Int
-  , negate (id x + _) :: Int
-  , negate (head _ + _) :: Int
-  , head (sort (_:_)) :: Int
-  , head (tail (_:_)) :: Int
-  , head (tail (_:xs)) :: Int
-  , head (tail (x:_)) :: Int
-  , head (_:sort _) :: Int
-  , head (_:tail _) :: Int
-  , head (_:tail xs) :: Int
-  , head (x:tail _) :: Int
-  , head (ord _:_) :: Int
-  , head (ord _:xs) :: Int
-  , head (ord c:_) :: Int
-  , head (id _:_) :: Int
-  , head (id _:xs) :: Int
-  , head (id _:ys) :: Int
-  , head (id x:_) :: Int
-  , head (id x:xs) :: Int
-  , head (id y:_) :: Int
-  , head (abs _:_) :: Int
-  , head (abs _:xs) :: Int
-  , head (abs x:_) :: Int
-  , head (negate _:_) :: Int
-  , head (negate _:xs) :: Int
-  , head (negate x:_) :: Int
-  , head (insert (id _) _) :: Int
-  , sort (id _:_) :: [Int]
-  , tail (ord _:_) :: [Int]
-  , tail (id _:_) :: [Int]
-  , tail (id _:xs) :: [Int]
-  , tail (id x:_) :: [Int]
-  , tail (abs _:_) :: [Int]
-  , tail (negate _:_) :: [Int]
-  , (head (_:_) +) :: Int -> Int
-  , _ * id (ord _) :: Int
-  , _ * id (head _) :: Int
-  , ord _ * id _ :: Int
-  , id _ * ord _ :: Int
-  , id _ * head _ :: Int
-  , id (ord _) * _ :: Int
-  , id (head _) * _ :: Int
-  , head _ * id _ :: Int
-  , _ + id (ord _) :: Int
-  , _ + id (ord c) :: Int
-  , _ + id (abs x) :: Int
-  , _ + id (negate x) :: Int
-  , _ + id (head _) :: Int
-  , _ + id (head xs) :: Int
-  , _ + abs (ord _) :: Int
-  , _ + abs (id x) :: Int
-  , _ + abs (head _) :: Int
-  , _ + negate (ord _) :: Int
-  , _ + negate (id x) :: Int
-  , _ + negate (head _) :: Int
-  , _ + head (tail _) :: Int
-  , x + id (ord _) :: Int
-  , x + id (abs _) :: Int
-  , x + id (negate _) :: Int
-  , x + id (head _) :: Int
-  , x + abs (id _) :: Int
-  , x + negate (id _) :: Int
-  , ord _ + id _ :: Int
-  , ord _ + id x :: Int
-  , ord _ + abs _ :: Int
-  , ord _ + negate _ :: Int
-  , ord _ + head _ :: Int
-  , ord c + id _ :: Int
-  , id _ + ord _ :: Int
-  , id _ + ord c :: Int
-  , id _ + abs x :: Int
-  , id _ + negate x :: Int
-  , id _ + head _ :: Int
-  , id _ + head xs :: Int
-  , id x + ord _ :: Int
-  , id x + abs _ :: Int
-  , id x + negate _ :: Int
-  , id x + head _ :: Int
-  , id (ord _) + _ :: Int
-  , id (ord _) + x :: Int
-  , id (ord c) + _ :: Int
-  , id (abs _) + x :: Int
-  , id (abs x) + _ :: Int
-  , id (negate _) + x :: Int
-  , id (negate x) + _ :: Int
-  , id (head _) + _ :: Int
-  , id (head _) + x :: Int
-  , id (head xs) + _ :: Int
-  , abs _ + ord _ :: Int
-  , abs _ + id x :: Int
-  , abs _ + head _ :: Int
-  , abs x + id _ :: Int
-  , abs (ord _) + _ :: Int
-  , abs (id _) + x :: Int
-  , abs (id x) + _ :: Int
-  , abs (head _) + _ :: Int
-  , negate _ + ord _ :: Int
-  , negate _ + id x :: Int
-  , negate _ + head _ :: Int
-  , negate x + id _ :: Int
-  , negate (ord _) + _ :: Int
-  , negate (id _) + x :: Int
-  , negate (id x) + _ :: Int
-  , negate (head _) + _ :: Int
-  , head _ + ord _ :: Int
-  , head _ + id _ :: Int
-  , head _ + id x :: Int
-  , head _ + abs _ :: Int
-  , head _ + negate _ :: Int
-  , head xs + id _ :: Int
-  , head (tail _) + _ :: Int
-  , elem _ (0:_) :: Bool
-  , elem 0 (_:_) :: Bool
-  , _:insert 0 _ :: [Int]
-  , _:(_ ++ []) :: [Int]
-  , _:(_ ++ [0]) :: [Int]
-  , _:(xs ++ []) :: [Int]
-  , _:([] ++ _) :: [Int]
-  , _:([] ++ xs) :: [Int]
-  , _:([0] ++ _) :: [Int]
-  , x:(_ ++ []) :: [Int]
-  , x:([] ++ _) :: [Int]
-  , 0:insert _ _ :: [Int]
-  , 0:(_ ++ xs) :: [Int]
-  , 0:(xs ++ _) :: [Int]
-  , ord _:tail _ :: [Int]
-  , id _:sort _ :: [Int]
-  , id _:tail _ :: [Int]
-  , id _:tail xs :: [Int]
-  , id x:tail _ :: [Int]
-  , id (ord _):_ :: [Int]
-  , id (ord _):xs :: [Int]
-  , id (ord c):_ :: [Int]
-  , id (abs _):_ :: [Int]
-  , id (abs _):xs :: [Int]
-  , id (abs x):_ :: [Int]
-  , id (negate _):_ :: [Int]
-  , id (negate _):xs :: [Int]
-  , id (negate x):_ :: [Int]
-  , id (head _):xs :: [Int]
-  , id (head xs):_ :: [Int]
-  , abs _:tail _ :: [Int]
-  , abs (ord _):_ :: [Int]
-  , abs (id _):_ :: [Int]
-  , abs (id _):xs :: [Int]
-  , abs (id x):_ :: [Int]
-  , abs (negate _):_ :: [Int]
-  , negate _:tail _ :: [Int]
-  , negate (ord _):_ :: [Int]
-  , negate (id _):_ :: [Int]
-  , negate (id _):xs :: [Int]
-  , negate (id x):_ :: [Int]
-  , negate (abs _):_ :: [Int]
-  , _ * 0:_ :: [Int]
-  , 0 * _:_ :: [Int]
-  , [_ + x] :: [Int]
-  , _ + 0:_ :: [Int]
-  , _ + 0:xs :: [Int]
-  , _ + 1:_ :: [Int]
-  , [x + _] :: [Int]
-  , x + 0:_ :: [Int]
-  , 0 + _:_ :: [Int]
-  , 0 + _:xs :: [Int]
-  , 0 + x:_ :: [Int]
-  , 1 + _:_ :: [Int]
-  , insert _ (0:_) :: [Int]
-  , insert 0 (_:_) :: [Int]
-  , _ ++ [_] :: [Int]
-  , _ ++ [_,0] :: [Int]
-  , _ ++ [x] :: [Int]
-  , _ ++ (0:xs) :: [Int]
-  , xs ++ [_] :: [Int]
-  , xs ++ (0:_) :: [Int]
-  , [] ++ (_:_) :: [Int]
-  , [] ++ (_:xs) :: [Int]
-  , [] ++ (x:_) :: [Int]
-  , [0] ++ (_:_) :: [Int]
-  , (_:_) ++ [] :: [Int]
-  , (_:_) ++ [0] :: [Int]
-  , (_:xs) ++ [] :: [Int]
-  , [_] ++ _ :: [Int]
-  , [_] ++ xs :: [Int]
-  , [_,0] ++ _ :: [Int]
-  , (x:_) ++ [] :: [Int]
-  , [x] ++ _ :: [Int]
-  , (0:_) ++ xs :: [Int]
-  , (0:xs) ++ _ :: [Int]
-  , _ || (_ || _) :: Bool
-  , (_ || _) || _ :: Bool
-  , _ * (_ * _) :: Int
-  , (_ * _) * _ :: Int
-  , _ + (_ + _) :: Int
-  , (_ + _) + _ :: Int
-  , _ ++ (_ ++ _) :: [Int]
-  , (_ ++ _) ++ _ :: [Int]
-  , _ && (_ || _) :: Bool
-  , (_ || _) && _ :: Bool
-  , _ == (_ || _) :: Bool
-  , (_ || _) == _ :: Bool
-  , _ || _ && _ :: Bool
-  , _ || _ == _ :: Bool
-  , _ && _ || _ :: Bool
-  , _ == _ || _ :: Bool
-  , _ == _ + _ :: Bool
-  , _ + _ == _ :: Bool
-  , _ * (_ + _) :: Int
-  , (_ + _) * _ :: Int
-  , _ + _ * _ :: Int
-  , _ * _ + _ :: Int
-  , not (not (_ && _)) :: Bool
-  , not (not (_ == _)) :: Bool
-  , not (not (_ || _)) :: Bool
-  , not (not (_ == _)) :: Bool
-  , not (_ && not _) :: Bool
-  , not (not _ && _) :: Bool
-  , not (_ == not _) :: Bool
-  , not (not _ == _) :: Bool
-  , not (_ || not _) :: Bool
-  , not (not _ || _) :: Bool
-  , id (id (_ * _)) :: Int
-  , id (id (x * x)) :: Int
-  , id (id (_ + _)) :: Int
-  , id (id (x + x)) :: Int
-  , id (_ * id _) :: Int
-  , id (x * id x) :: Int
-  , id (id _ * _) :: Int
-  , id (id x * x) :: Int
-  , id (_ + id _) :: Int
-  , id (x + id x) :: Int
-  , id (id _ + _) :: Int
-  , id (id x + x) :: Int
-  , abs (abs (_ + _)) :: Int
-  , abs (_ + abs _) :: Int
-  , abs (abs _ + _) :: Int
-  , negate (negate (_ + _)) :: Int
-  , negate (_ + negate _) :: Int
-  , negate (negate _ + _) :: Int
-  , head (head _:_) :: Int
-  , (id (_ + _) +) :: Int -> Int
-  , ((_ + id _) +) :: Int -> Int
-  , ((id _ + _) +) :: Int -> Int
-  , _ && not (not _) :: Bool
-  , not _ && not _ :: Bool
-  , not (not _) && _ :: Bool
-  , _ == not (not _) :: Bool
-  , not _ == not _ :: Bool
-  , not (not _) == _ :: Bool
-  , _ || not (not _) :: Bool
-  , _ || (_ || False) :: Bool
-  , _ || (_ || True) :: Bool
-  , _ || (False || _) :: Bool
-  , _ || (True || _) :: Bool
-  , False || (_ || _) :: Bool
-  , True || (_ || _) :: Bool
-  , not _ || not _ :: Bool
-  , not (not _) || _ :: Bool
-  , (_ || _) || False :: Bool
-  , (_ || _) || True :: Bool
-  , (_ || False) || _ :: Bool
-  , (_ || True) || _ :: Bool
-  , (False || _) || _ :: Bool
-  , (True || _) || _ :: Bool
-  , _ == id (id _) :: Bool
-  , id _ == id _ :: Bool
-  , id (id _) == _ :: Bool
-  , _ * id (id _) :: Int
-  , id _ * id _ :: Int
-  , id (id _) * _ :: Int
-  , _ + id (id _) :: Int
-  , _ + abs (abs _) :: Int
-  , _ + negate (negate _) :: Int
-  , _ + (_ + 0) :: Int
-  , _ + (_ + 1) :: Int
-  , _ + (0 + _) :: Int
-  , _ + (1 + _) :: Int
-  , x + id (id x) :: Int
-  , 0 + (_ + _) :: Int
-  , 1 + (_ + _) :: Int
-  , ord _ + ord _ :: Int
-  , id _ + id _ :: Int
-  , id x + id x :: Int
-  , id (id _) + _ :: Int
-  , id (id x) + x :: Int
-  , abs _ + abs _ :: Int
-  , abs (abs _) + _ :: Int
-  , negate _ + negate _ :: Int
-  , negate (negate _) + _ :: Int
-  , head _ + head _ :: Int
-  , (_ + _) + 0 :: Int
-  , (_ + _) + 1 :: Int
-  , (_ + 0) + _ :: Int
-  , (_ + 1) + _ :: Int
-  , (0 + _) + _ :: Int
-  , (1 + _) + _ :: Int
-  , [_,_] :: [Int]
-  , [_,_,0] :: [Int]
-  , [_,_,1] :: [Int]
-  , [_,_,0,0] :: [Int]
-  , [x,x] :: [Int]
-  , _ ++ (_ ++ []) :: [Int]
-  , _ ++ ([] ++ _) :: [Int]
-  , [] ++ (_ ++ _) :: [Int]
-  , (_ ++ _) ++ [] :: [Int]
-  , (_ ++ []) ++ _ :: [Int]
-  , ([] ++ _) ++ _ :: [Int]
-  , not (_ == id _) :: Bool
-  , not (id _ == _) :: Bool
-  , id (abs (_ * _)) :: Int
-  , id (abs (_ + _)) :: Int
-  , id (abs (x + x)) :: Int
-  , id (negate (_ * _)) :: Int
-  , id (negate (_ + _)) :: Int
-  , id (negate (x + x)) :: Int
-  , id (head (_ ++ _)) :: Int
-  , id (head (xs ++ xs)) :: Int
-  , id (_ * abs _) :: Int
-  , id (_ * negate _) :: Int
-  , id (abs _ * _) :: Int
-  , id (negate _ * _) :: Int
-  , id (_ + abs _) :: Int
-  , id (_ + negate _) :: Int
-  , id (x + abs x) :: Int
-  , id (x + negate x) :: Int
-  , id (abs _ + _) :: Int
-  , id (abs x + x) :: Int
-  , id (negate _ + _) :: Int
-  , id (negate x + x) :: Int
-  , abs (id (_ * _)) :: Int
-  , abs (id (_ + _)) :: Int
-  , abs (negate (_ + _)) :: Int
-  , abs (head (_ ++ _)) :: Int
-  , abs (_ * id _) :: Int
-  , abs (id _ * _) :: Int
-  , abs (_ + id _) :: Int
-  , abs (_ + negate _) :: Int
-  , abs (id _ + _) :: Int
-  , abs (negate _ + _) :: Int
-  , negate (id (_ * _)) :: Int
-  , negate (id (_ + _)) :: Int
-  , negate (abs (_ + _)) :: Int
-  , negate (head (_ ++ _)) :: Int
-  , negate (_ * id _) :: Int
-  , negate (id _ * _) :: Int
-  , negate (_ + id _) :: Int
-  , negate (_ + abs _) :: Int
-  , negate (id _ + _) :: Int
-  , negate (abs _ + _) :: Int
-  , head (tail (_ ++ _)) :: Int
-  , head (_ ++ tail _) :: Int
-  , head (tail _ ++ _) :: Int
-  , tail (head _:_) :: [Int]
-  , _ * id (abs _) :: Int
-  , _ * id (negate _) :: Int
-  , _ * abs (id _) :: Int
-  , _ * negate (id _) :: Int
-  , _ * (_ + 0) :: Int
-  , _ * (0 + _) :: Int
-  , 0 * (_ + _) :: Int
-  , id _ * abs _ :: Int
-  , id _ * negate _ :: Int
-  , id (abs _) * _ :: Int
-  , id (negate _) * _ :: Int
-  , abs _ * id _ :: Int
-  , abs (id _) * _ :: Int
-  , negate _ * id _ :: Int
-  , negate (id _) * _ :: Int
-  , (_ + _) * 0 :: Int
-  , (_ + 0) * _ :: Int
-  , (0 + _) * _ :: Int
-  , _ + id (abs _) :: Int
-  , _ + id (negate _) :: Int
-  , _ + abs (id _) :: Int
-  , _ + abs (negate _) :: Int
-  , _ + negate (id _) :: Int
-  , _ + negate (abs _) :: Int
-  , _ + _ * 0 :: Int
-  , _ + 0 * _ :: Int
-  , 0 + _ * _ :: Int
-  , id _ + abs _ :: Int
-  , id _ + negate _ :: Int
-  , id (abs _) + _ :: Int
-  , id (negate _) + _ :: Int
-  , abs _ + id _ :: Int
-  , abs _ + negate _ :: Int
-  , abs (id _) + _ :: Int
-  , abs (negate _) + _ :: Int
-  , negate _ + id _ :: Int
-  , negate _ + abs _ :: Int
-  , negate (id _) + _ :: Int
-  , negate (abs _) + _ :: Int
-  , _ * _ + 0 :: Int
-  , _ * 0 + _ :: Int
-  , 0 * _ + _ :: Int
-  , elem _ [_] :: Bool
-  , _:insert _ [] :: [Int]
-  , 0:(_ ++ _) :: [Int]
-  , 1:(_ ++ _) :: [Int]
-  , id (head _):_ :: [Int]
-  , abs (head _):_ :: [Int]
-  , negate (head _):_ :: [Int]
-  , head _:tail _ :: [Int]
-  , head (tail _):_ :: [Int]
-  , [_ * _] :: [Int]
-  , [_ + _] :: [Int]
-  , [_ + _,0] :: [Int]
-  , insert _ [_] :: [Int]
-  , _ ++ (0:_) :: [Int]
-  , _ ++ (1:_) :: [Int]
-  , (0:_) ++ _ :: [Int]
-  , (1:_) ++ _ :: [Int]
-  , not (not (not (not _))) :: Bool
-  , not (not (not (not p))) :: Bool
-  , id (id (id (id _))) :: Int
-  , id (id (id (id x))) :: Int
-  , id (id (id (id y))) :: Int
-  , id (id (id (id z))) :: Int
-  , id (f (id (id 0))) :: Int
-  , id (id (f (id 0))) :: Int
-  , id (id (id (f 0))) :: Int
-  , id (id (id (ord _))) :: Int
-  , id (id (id (ord c))) :: Int
-  , id (id (id (ord d))) :: Int
-  , id (id (id (abs _))) :: Int
-  , id (id (id (abs x))) :: Int
-  , id (id (id (abs y))) :: Int
-  , id (id (id (negate _))) :: Int
-  , id (id (id (negate x))) :: Int
-  , id (id (id (negate y))) :: Int
-  , id (id (id (head _))) :: Int
-  , id (id (id (head xs))) :: Int
-  , id (id (id (head ys))) :: Int
-  , id (id (abs (id _))) :: Int
-  , id (id (abs (id x))) :: Int
-  , id (id (abs (id y))) :: Int
-  , id (id (abs (abs _))) :: Int
-  , id (id (abs (abs x))) :: Int
-  , id (id (negate (id _))) :: Int
-  , id (id (negate (id x))) :: Int
-  , id (id (negate (id y))) :: Int
-  , id (id (negate (negate _))) :: Int
-  , id (id (negate (negate x))) :: Int
-  , id (abs (id (id _))) :: Int
-  , id (abs (id (id x))) :: Int
-  , id (abs (id (id y))) :: Int
-  , id (abs (id (abs _))) :: Int
-  , id (abs (id (abs x))) :: Int
-  , id (abs (abs (id _))) :: Int
-  , id (abs (abs (id x))) :: Int
-  , id (abs (abs (abs _))) :: Int
-  , id (negate (id (id _))) :: Int
-  , id (negate (id (id x))) :: Int
-  , id (negate (id (id y))) :: Int
-  , id (negate (id (negate _))) :: Int
-  , id (negate (id (negate x))) :: Int
-  , id (negate (negate (id _))) :: Int
-  , id (negate (negate (id x))) :: Int
-  , id (negate (negate (negate _))) :: Int
-  , abs (id (id (id _))) :: Int
-  , abs (id (id (id x))) :: Int
-  , abs (id (id (abs _))) :: Int
-  , abs (id (abs (id _))) :: Int
-  , abs (abs (id (id _))) :: Int
-  , negate (id (id (id _))) :: Int
-  , negate (id (id (id x))) :: Int
-  , negate (id (id (negate _))) :: Int
-  , negate (id (negate (id _))) :: Int
-  , negate (negate (id (id _))) :: Int
-  , (id (id (id _)) +) :: Int -> Int
-  , _ + (0 + 0) :: Int
-  , 0 + (_ + 0) :: Int
-  , 0 + (0 + _) :: Int
-  , (_ + 0) + 0 :: Int
-  , (0 + _) + 0 :: Int
-  , (0 + 0) + _ :: Int
-  , 0:0:_ :: [Int]
-  , 0:0:xs :: [Int]
-  , not (not (_ || False)) :: Bool
-  , not (not (_ || True)) :: Bool
-  , not (not (False || _)) :: Bool
-  , not (not (True || _)) :: Bool
-  , not (_ || not False) :: Bool
-  , not (_ || not True) :: Bool
-  , not (False || not _) :: Bool
-  , not (True || not _) :: Bool
-  , not (not _ || False) :: Bool
-  , not (not _ || True) :: Bool
-  , not (not False || _) :: Bool
-  , not (not True || _) :: Bool
-  , id (id (abs (ord _))) :: Int
-  , id (id (abs (ord c))) :: Int
-  , id (id (abs (negate _))) :: Int
-  , id (id (abs (negate x))) :: Int
-  , id (id (abs (head _))) :: Int
-  , id (id (abs (head xs))) :: Int
-  , id (id (negate (ord _))) :: Int
-  , id (id (negate (ord c))) :: Int
-  , id (id (negate (abs _))) :: Int
-  , id (id (negate (abs x))) :: Int
-  , id (id (negate (head _))) :: Int
-  , id (id (negate (head xs))) :: Int
-  , id (id (head (sort _))) :: Int
-  , id (id (head (tail _))) :: Int
-  , id (id (head (tail xs))) :: Int
-  , id (id (_ * 0)) :: Int
-  , id (id (_ * 1)) :: Int
-  , id (id (x * 0)) :: Int
-  , id (id (0 * _)) :: Int
-  , id (id (0 * x)) :: Int
-  , id (id (1 * _)) :: Int
-  , id (id (_ + 0)) :: Int
-  , id (id (_ + 1)) :: Int
-  , id (id (_ + (-1))) :: Int
-  , id (id (x + 0)) :: Int
-  , id (id (x + 1)) :: Int
-  , id (id (y + 0)) :: Int
-  , id (id (0 + _)) :: Int
-  , id (id (0 + x)) :: Int
-  , id (id (0 + y)) :: Int
-  , id (id (1 + _)) :: Int
-  , id (id (1 + x)) :: Int
-  , id (id ((-1) + _)) :: Int
-  , id (abs (id (ord _))) :: Int
-  , id (abs (id (ord c))) :: Int
-  , id (abs (id (negate _))) :: Int
-  , id (abs (id (negate x))) :: Int
-  , id (abs (id (head _))) :: Int
-  , id (abs (id (head xs))) :: Int
-  , id (abs (abs (ord _))) :: Int
-  , id (abs (abs (negate _))) :: Int
-  , id (abs (abs (head _))) :: Int
-  , id (abs (negate (id _))) :: Int
-  , id (abs (negate (id x))) :: Int
-  , id (abs (negate (abs _))) :: Int
-  , id (abs (negate (negate _))) :: Int
-  , id (negate (id (ord _))) :: Int
-  , id (negate (id (ord c))) :: Int
-  , id (negate (id (abs _))) :: Int
-  , id (negate (id (abs x))) :: Int
-  , id (negate (id (head _))) :: Int
-  , id (negate (id (head xs))) :: Int
-  , id (negate (abs (id _))) :: Int
-  , id (negate (abs (id x))) :: Int
-  , id (negate (abs (abs _))) :: Int
-  , id (negate (abs (negate _))) :: Int
-  , id (negate (negate (ord _))) :: Int
-  , id (negate (negate (abs _))) :: Int
-  , id (negate (negate (head _))) :: Int
-  , id (head (tail (tail _))) :: Int
-  , id (_ * id 0) :: Int
-  , id (_ * id 1) :: Int
-  , id (x * id 0) :: Int
-  , id (0 * id _) :: Int
-  , id (0 * id x) :: Int
-  , id (1 * id _) :: Int
-  , id (id _ * 0) :: Int
-  , id (id _ * 1) :: Int
-  , id (id x * 0) :: Int
-  , id (id 0 * _) :: Int
-  , id (id 0 * x) :: Int
-  , id (id 1 * _) :: Int
-  , id (_ + id 0) :: Int
-  , id (_ + id 1) :: Int
-  , id (_ + id (-1)) :: Int
-  , id (x + id 0) :: Int
-  , id (x + id 1) :: Int
-  , id (y + id 0) :: Int
-  , id (0 + id _) :: Int
-  , id (0 + id x) :: Int
-  , id (0 + id y) :: Int
-  , id (1 + id _) :: Int
-  , id (1 + id x) :: Int
-  , id ((-1) + id _) :: Int
-  , id (id _ + 0) :: Int
-  , id (id _ + 1) :: Int
-  , id (id _ + (-1)) :: Int
-  , id (id x + 0) :: Int
-  , id (id x + 1) :: Int
-  , id (id y + 0) :: Int
-  , id (id 0 + _) :: Int
-  , id (id 0 + x) :: Int
-  , id (id 0 + y) :: Int
-  , id (id 1 + _) :: Int
-  , id (id 1 + x) :: Int
-  , id (id (-1) + _) :: Int
-  , abs (id (id (ord _))) :: Int
-  , abs (id (id (negate _))) :: Int
-  , abs (id (id (head _))) :: Int
-  , abs (id (negate (id _))) :: Int
-  , abs (negate (id (id _))) :: Int
-  , negate (id (id (ord _))) :: Int
-  , negate (id (id (abs _))) :: Int
-  , negate (id (id (head _))) :: Int
-  , negate (id (abs (id _))) :: Int
-  , negate (abs (id (id _))) :: Int
-  , head [head _] :: Int
-  , head (head []:_) :: Int
-  , _ || not (not False) :: Bool
-  , _ || not (not True) :: Bool
-  , False || not (not _) :: Bool
-  , True || not (not _) :: Bool
-  , not _ || not False :: Bool
-  , not _ || not True :: Bool
-  , not False || not _ :: Bool
-  , not True || not _ :: Bool
-  , not (not _) || False :: Bool
-  , not (not _) || True :: Bool
-  , not (not False) || _ :: Bool
-  , not (not True) || _ :: Bool
-  , _ * id (id 0) :: Int
-  , 0 * id (id _) :: Int
-  , id _ * id 0 :: Int
-  , id 0 * id _ :: Int
-  , id (id _) * 0 :: Int
-  , id (id 0) * _ :: Int
-  , _ + id (id 0) :: Int
-  , _ + id (id 1) :: Int
-  , x + id (id 0) :: Int
-  , 0 + id (id _) :: Int
-  , 0 + id (id x) :: Int
-  , 1 + id (id _) :: Int
-  , id _ + id 0 :: Int
-  , id _ + id 1 :: Int
-  , id x + id 0 :: Int
-  , id 0 + id _ :: Int
-  , id 0 + id x :: Int
-  , id 1 + id _ :: Int
-  , id (id _) + 0 :: Int
-  , id (id _) + 1 :: Int
-  , id (id x) + 0 :: Int
-  , id (id 0) + _ :: Int
-  , id (id 0) + x :: Int
-  , id (id 1) + _ :: Int
-  , [_,0] :: [Int]
-  , [_,0,0] :: [Int]
-  , [_,1] :: [Int]
-  , _:([] ++ []) :: [Int]
-  , [x,0] :: [Int]
-  , [0,_] :: [Int]
-  , [0,_,0] :: [Int]
-  , [0,x] :: [Int]
-  , 0:1:_ :: [Int]
-  , [1,_] :: [Int]
-  , 1:0:_ :: [Int]
-  , [id (id _)] :: [Int]
-  , [id (id _),0] :: [Int]
-  , [id (id x)] :: [Int]
-  , id (id 0):_ :: [Int]
-  , id (id 0):xs :: [Int]
-  , id (id 1):_ :: [Int]
-  , 0 + 0:_ :: [Int]
-  , [] ++ [_] :: [Int]
-  , [_] ++ [] :: [Int]
-  , id (abs (negate (ord _))) :: Int
-  , id (abs (negate (head _))) :: Int
-  , id (abs (head (tail _))) :: Int
-  , id (abs (_ * 0)) :: Int
-  , id (abs (0 * _)) :: Int
-  , id (abs (_ + 0)) :: Int
-  , id (abs (_ + 1)) :: Int
-  , id (abs (x + 0)) :: Int
-  , id (abs (0 + _)) :: Int
-  , id (abs (0 + x)) :: Int
-  , id (abs (1 + _)) :: Int
-  , id (negate (abs (ord _))) :: Int
-  , id (negate (abs (head _))) :: Int
-  , id (negate (head (tail _))) :: Int
-  , id (negate (_ * 0)) :: Int
-  , id (negate (0 * _)) :: Int
-  , id (negate (_ + 0)) :: Int
-  , id (negate (_ + 1)) :: Int
-  , id (negate (x + 0)) :: Int
-  , id (negate (0 + _)) :: Int
-  , id (negate (0 + x)) :: Int
-  , id (negate (1 + _)) :: Int
-  , id (head [_]) :: Int
-  , id (head [_,0]) :: Int
-  , id (head [_,1]) :: Int
-  , id (head [_,0,0]) :: Int
-  , id (head [x]) :: Int
-  , id (head [x,0]) :: Int
-  , id (head [y]) :: Int
-  , id (head (0:_)) :: Int
-  , id (head (0:xs)) :: Int
-  , id (head (0:ys)) :: Int
-  , id (head (1:_)) :: Int
-  , id (head (1:xs)) :: Int
-  , id (head ((-1):_)) :: Int
-  , id (head (_ ++ [])) :: Int
-  , id (head (_ ++ [0])) :: Int
-  , id (head (xs ++ [])) :: Int
-  , id (head ([] ++ _)) :: Int
-  , id (head ([] ++ xs)) :: Int
-  , id (head ([0] ++ _)) :: Int
-  , id (_ * ord 'a') :: Int
-  , id (_ * abs 0) :: Int
-  , id (_ * negate 0) :: Int
-  , id (_ * head []) :: Int
-  , id (0 * ord _) :: Int
-  , id (0 * abs _) :: Int
-  , id (0 * negate _) :: Int
-  , id (0 * head _) :: Int
-  , id (ord _ * 0) :: Int
-  , id (ord 'a' * _) :: Int
-  , id (abs _ * 0) :: Int
-  , id (abs 0 * _) :: Int
-  , id (negate _ * 0) :: Int
-  , id (negate 0 * _) :: Int
-  , id (head _ * 0) :: Int
-  , id (head [] * _) :: Int
-  , id (_ + ord ' ') :: Int
-  , id (_ + ord 'a') :: Int
-  , id (_ + abs 0) :: Int
-  , id (_ + abs 1) :: Int
-  , id (_ + negate 0) :: Int
-  , id (_ + negate 1) :: Int
-  , id (_ + head []) :: Int
-  , id (_ + head [0]) :: Int
-  , id (x + ord 'a') :: Int
-  , id (x + abs 0) :: Int
-  , id (x + negate 0) :: Int
-  , id (x + head []) :: Int
-  , id (0 + ord _) :: Int
-  , id (0 + ord c) :: Int
-  , id (0 + abs _) :: Int
-  , id (0 + abs x) :: Int
-  , id (0 + negate _) :: Int
-  , id (0 + negate x) :: Int
-  , id (0 + head _) :: Int
-  , id (0 + head xs) :: Int
-  , id (1 + ord _) :: Int
-  , id (1 + abs _) :: Int
-  , id (1 + negate _) :: Int
-  , id (1 + head _) :: Int
-  , id (ord _ + 0) :: Int
-  , id (ord _ + 1) :: Int
-  , id (ord c + 0) :: Int
-  , id (ord ' ' + _) :: Int
-  , id (ord 'a' + _) :: Int
-  , id (ord 'a' + x) :: Int
-  , id (abs _ + 0) :: Int
-  , id (abs _ + 1) :: Int
-  , id (abs x + 0) :: Int
-  , id (abs 0 + _) :: Int
-  , id (abs 0 + x) :: Int
-  , id (abs 1 + _) :: Int
-  , id (negate _ + 0) :: Int
-  , id (negate _ + 1) :: Int
-  , id (negate x + 0) :: Int
-  , id (negate 0 + _) :: Int
-  , id (negate 0 + x) :: Int
-  , id (negate 1 + _) :: Int
-  , id (head _ + 0) :: Int
-  , id (head _ + 1) :: Int
-  , id (head xs + 0) :: Int
-  , id (head [] + _) :: Int
-  , id (head [] + x) :: Int
-  , id (head [0] + _) :: Int
-  , abs (id (_ + 0)) :: Int
-  , abs (id (0 + _)) :: Int
-  , abs (head [_]) :: Int
-  , abs (head (0:_)) :: Int
-  , abs (_ + id 0) :: Int
-  , abs (0 + id _) :: Int
-  , abs (id _ + 0) :: Int
-  , abs (id 0 + _) :: Int
-  , negate (id (_ + 0)) :: Int
-  , negate (id (0 + _)) :: Int
-  , negate (head [_]) :: Int
-  , negate (head (0:_)) :: Int
-  , negate (_ + id 0) :: Int
-  , negate (0 + id _) :: Int
-  , negate (id _ + 0) :: Int
-  , negate (id 0 + _) :: Int
-  , head (tail [_]) :: Int
-  , head (tail (0:_)) :: Int
-  , head (_:tail []) :: Int
-  , head (0:tail _) :: Int
-  , head [ord _] :: Int
-  , head (ord 'a':_) :: Int
-  , head [id _] :: Int
-  , head [id _,0] :: Int
-  , head [id x] :: Int
-  , head (id 0:_) :: Int
-  , head (id 0:xs) :: Int
-  , head (id 1:_) :: Int
-  , head [abs _] :: Int
-  , head (abs 0:_) :: Int
-  , head [negate _] :: Int
-  , head (negate 0:_) :: Int
-  , tail [id _] :: [Int]
-  , tail (id 0:_) :: [Int]
-  , _ + id (ord 'a') :: Int
-  , _ + id (abs 0) :: Int
-  , _ + id (negate 0) :: Int
-  , _ + id (head []) :: Int
-  , _ + abs (id 0) :: Int
-  , _ + negate (id 0) :: Int
-  , 0 + id (ord _) :: Int
-  , 0 + id (abs _) :: Int
-  , 0 + id (negate _) :: Int
-  , 0 + id (head _) :: Int
-  , 0 + abs (id _) :: Int
-  , 0 + negate (id _) :: Int
-  , ord _ + id 0 :: Int
-  , ord 'a' + id _ :: Int
-  , id _ + ord 'a' :: Int
-  , id _ + abs 0 :: Int
-  , id _ + negate 0 :: Int
-  , id _ + head [] :: Int
-  , id 0 + ord _ :: Int
-  , id 0 + abs _ :: Int
-  , id 0 + negate _ :: Int
-  , id 0 + head _ :: Int
-  , id (ord _) + 0 :: Int
-  , id (ord 'a') + _ :: Int
-  , id (abs _) + 0 :: Int
-  , id (abs 0) + _ :: Int
-  , id (negate _) + 0 :: Int
-  , id (negate 0) + _ :: Int
-  , id (head _) + 0 :: Int
-  , id (head []) + _ :: Int
-  , abs _ + id 0 :: Int
-  , abs 0 + id _ :: Int
-  , abs (id _) + 0 :: Int
-  , abs (id 0) + _ :: Int
-  , negate _ + id 0 :: Int
-  , negate 0 + id _ :: Int
-  , negate (id _) + 0 :: Int
-  , negate (id 0) + _ :: Int
-  , head _ + id 0 :: Int
-  , head [] + id _ :: Int
-  , 0:(_ ++ []) :: [Int]
-  , 0:([] ++ _) :: [Int]
-  , id _:tail [] :: [Int]
-  , id 0:tail _ :: [Int]
-  , [id (ord _)] :: [Int]
-  , id (ord 'a'):_ :: [Int]
-  , [id (abs _)] :: [Int]
-  , id (abs 0):_ :: [Int]
-  , [id (negate _)] :: [Int]
-  , id (negate 0):_ :: [Int]
-  , [id (head _)] :: [Int]
-  , id (head []):_ :: [Int]
-  , [abs (id _)] :: [Int]
-  , abs (id 0):_ :: [Int]
-  , [negate (id _)] :: [Int]
-  , negate (id 0):_ :: [Int]
-  , [_ + 0] :: [Int]
-  , [0 + _] :: [Int]
-  , _ ++ [0] :: [Int]
-  , [] ++ (0:_) :: [Int]
-  , (0:_) ++ [] :: [Int]
-  , [0] ++ _ :: [Int]
-  , not (not (not (not False))) :: Bool
-  , not (not (not (not True))) :: Bool
-  , id (id (id (id 0))) :: Int
-  , id (id (id (id 1))) :: Int
-  , id (id (id (id (-1)))) :: Int
-  , id (id (id (ord ' '))) :: Int
-  , id (id (id (ord 'a'))) :: Int
-  , id (id (id (abs 0))) :: Int
-  , id (id (id (abs 1))) :: Int
-  , id (id (id (negate 0))) :: Int
-  , id (id (id (negate 1))) :: Int
-  , id (id (id (head []))) :: Int
-  , id (id (id (head [0]))) :: Int
-  , id (id (abs (id 0))) :: Int
-  , id (id (abs (id 1))) :: Int
-  , id (id (abs (abs 0))) :: Int
-  , id (id (negate (id 0))) :: Int
-  , id (id (negate (id 1))) :: Int
-  , id (id (negate (negate 0))) :: Int
-  , id (id (0 * 0)) :: Int
-  , id (id (0 + 0)) :: Int
-  , id (abs (id (id 0))) :: Int
-  , id (abs (id (id 1))) :: Int
-  , id (abs (id (abs 0))) :: Int
-  , id (abs (abs (id 0))) :: Int
-  , id (negate (id (id 0))) :: Int
-  , id (negate (id (id 1))) :: Int
-  , id (negate (id (negate 0))) :: Int
-  , id (negate (negate (id 0))) :: Int
-  , id (0 * id 0) :: Int
-  , id (id 0 * 0) :: Int
-  , id (0 + id 0) :: Int
-  , id (id 0 + 0) :: Int
-  , abs (id (id (id 0))) :: Int
-  , negate (id (id (id 0))) :: Int
-  , 0 + id (id 0) :: Int
-  , id 0 + id 0 :: Int
-  , id (id 0) + 0 :: Int
-  , [0,0] :: [Int]
-  , id (id (abs (ord 'a'))) :: Int
-  , id (id (abs (negate 0))) :: Int
-  , id (id (abs (head []))) :: Int
-  , id (id (negate (ord 'a'))) :: Int
-  , id (id (negate (abs 0))) :: Int
-  , id (id (negate (head []))) :: Int
-  , id (id (head (tail []))) :: Int
-  , id (id (0 + 1)) :: Int
-  , id (id (1 + 0)) :: Int
-  , id (abs (id (ord 'a'))) :: Int
-  , id (abs (id (negate 0))) :: Int
-  , id (abs (id (head []))) :: Int
-  , id (abs (negate (id 0))) :: Int
-  , id (abs (0 + 0)) :: Int
-  , id (negate (id (ord 'a'))) :: Int
-  , id (negate (id (abs 0))) :: Int
-  , id (negate (id (head []))) :: Int
-  , id (negate (abs (id 0))) :: Int
-  , id (negate (0 + 0)) :: Int
-  , id (head ([] ++ [])) :: Int
-  , id (0 + id 1) :: Int
-  , id (0 + abs 0) :: Int
-  , id (0 + negate 0) :: Int
-  , id (1 + id 0) :: Int
-  , id (id 0 + 1) :: Int
-  , id (id 1 + 0) :: Int
-  , id (abs 0 + 0) :: Int
-  , id (negate 0 + 0) :: Int
-  , [id (id 0)] :: [Int]
-  , id (head [0]) :: Int
-  , id (head [0,0]) :: Int
-  , id (head [1]) :: Int
-  , id (0 + ord 'a') :: Int
-  , id (0 + head []) :: Int
-  , id (ord 'a' + 0) :: Int
-  , id (head [] + 0) :: Int
-  , head [id 0] :: Int
-  , _:f _:_ :: [Int]
-  , f _:_:_ :: [Int]
-  , head (_:x:_) :: Int
-  , head (_:x:xs) :: Int
-  , head (_:y:_) :: Int
-  , head (x:_:_) :: Int
-  , head (x:_:xs) :: Int
-  , head (y:_:_) :: Int
-  , tail (_:x:_) :: [Int]
-  , tail (x:_:_) :: [Int]
-  , _:tail (x:_) :: [Int]
-  , _:x:tail _ :: [Int]
-  , _:ord _:_ :: [Int]
-  , _:ord _:xs :: [Int]
-  , _:ord c:_ :: [Int]
-  , _:id x:_ :: [Int]
-  , _:id x:xs :: [Int]
-  , _:id y:_ :: [Int]
-  , _:abs x:_ :: [Int]
-  , _:negate x:_ :: [Int]
-  , _:head _:xs :: [Int]
-  , _:head xs:_ :: [Int]
-  , x:tail (_:_) :: [Int]
-  , x:_:tail _ :: [Int]
-  , x:ord _:_ :: [Int]
-  , x:id _:_ :: [Int]
-  , x:id _:xs :: [Int]
-  , x:abs _:_ :: [Int]
-  , x:negate _:_ :: [Int]
-  , y:id _:_ :: [Int]
-  , ord _:_:_ :: [Int]
-  , ord _:_:xs :: [Int]
-  , ord _:x:_ :: [Int]
-  , ord c:_:_ :: [Int]
-  , id _:x:_ :: [Int]
-  , id _:x:xs :: [Int]
-  , id _:y:_ :: [Int]
-  , id x:_:_ :: [Int]
-  , id x:_:xs :: [Int]
-  , id y:_:_ :: [Int]
-  , abs _:x:_ :: [Int]
-  , abs x:_:_ :: [Int]
-  , negate _:x:_ :: [Int]
-  , negate x:_:_ :: [Int]
-  , head _:_:xs :: [Int]
-  , head xs:_:_ :: [Int]
-  , head (_:_):xs :: [Int]
-  , head (_:xs):_ :: [Int]
-  , id (f (head (_:_))) :: Int
-  , id (head (f _:_)) :: Int
-  , head (_:(_ ++ xs)) :: Int
-  , head (_:(xs ++ _)) :: Int
-  , head (_ + x:_) :: Int
-  , head (x + _:_) :: Int
-  , head (_ ++ (_:xs)) :: Int
-  , head (xs ++ (_:_)) :: Int
-  , head ((_:_) ++ xs) :: Int
-  , head ((_:xs) ++ _) :: Int
-  , _ + head (x:_) :: Int
-  , x + head (_:_) :: Int
-  , head (_:_) + x :: Int
-  , head (x:_) + _ :: Int
-  , id _:(_ ++ xs) :: [Int]
-  , id _:(xs ++ _) :: [Int]
-  , id (_ + x):_ :: [Int]
-  , id (x + _):_ :: [Int]
-  , _ + ord _:_ :: [Int]
-  , _ + id x:_ :: [Int]
-  , x + id _:_ :: [Int]
-  , ord _ + _:_ :: [Int]
-  , id _ + x:_ :: [Int]
-  , id x + _:_ :: [Int]
-  , _ ++ (id _:xs) :: [Int]
-  , xs ++ (id _:_) :: [Int]
-  , (id _:_) ++ xs :: [Int]
-  , (id _:xs) ++ _ :: [Int]
-  , id (f (id (_ + _))) :: Int
-  , id (f (_ + id _)) :: Int
-  , id (f (id _ + _)) :: Int
-  , id (id (f (_ + _))) :: Int
-  , id (id (_ + f _)) :: Int
-  , id (id (f _ + _)) :: Int
-  , id (_ + f (id _)) :: Int
-  , id (_ + id (f _)) :: Int
-  , id (_ + (_ + x)) :: Int
-  , id (_ + (_ + y)) :: Int
-  , id (_ + (x + _)) :: Int
-  , id (_ + (x + x)) :: Int
-  , id (_ + (y + _)) :: Int
-  , id (x + (_ + _)) :: Int
-  , id (x + (_ + x)) :: Int
-  , id (x + (x + _)) :: Int
-  , id (y + (_ + _)) :: Int
-  , id (f _ + id _) :: Int
-  , id (f (id _) + _) :: Int
-  , id (id _ + f _) :: Int
-  , id (id (f _) + _) :: Int
-  , id ((_ + _) + x) :: Int
-  , id ((_ + _) + y) :: Int
-  , id ((_ + x) + _) :: Int
-  , id ((_ + x) + x) :: Int
-  , id ((_ + y) + _) :: Int
-  , id ((x + _) + _) :: Int
-  , id ((x + _) + x) :: Int
-  , id ((x + x) + _) :: Int
-  , id ((y + _) + _) :: Int
-  , head (_:_:_) :: Int
-  , head (_:_:xs) :: Int
-  , head (_:_:ys) :: Int
-  , head (x:x:_) :: Int
-  , sort (_:_:_) :: [Int]
-  , tail (_:_:_) :: [Int]
-  , tail (_:_:xs) :: [Int]
-  , _ + id (_ + x) :: Int
-  , _ + id (x + _) :: Int
-  , _ + (_ + ord _) :: Int
-  , _ + (_ + id x) :: Int
-  , _ + (_ + head _) :: Int
-  , _ + (x + id _) :: Int
-  , _ + (ord _ + _) :: Int
-  , _ + (id _ + x) :: Int
-  , _ + (id x + _) :: Int
-  , _ + (head _ + _) :: Int
-  , x + id (_ + _) :: Int
-  , x + (_ + id _) :: Int
-  , x + (id _ + _) :: Int
-  , ord _ + (_ + _) :: Int
-  , id _ + (_ + x) :: Int
-  , id _ + (x + _) :: Int
-  , id x + (_ + _) :: Int
-  , id (_ + _) + x :: Int
-  , id (_ + x) + _ :: Int
-  , id (x + _) + _ :: Int
-  , head _ + (_ + _) :: Int
-  , (_ + _) + ord _ :: Int
-  , (_ + _) + id x :: Int
-  , (_ + _) + head _ :: Int
-  , (_ + x) + id _ :: Int
-  , (_ + ord _) + _ :: Int
-  , (_ + id _) + x :: Int
-  , (_ + id x) + _ :: Int
-  , (_ + head _) + _ :: Int
-  , (x + _) + id _ :: Int
-  , (x + id _) + _ :: Int
-  , (ord _ + _) + _ :: Int
-  , (id _ + _) + x :: Int
-  , (id _ + x) + _ :: Int
-  , (id x + _) + _ :: Int
-  , (head _ + _) + _ :: Int
-  , _:sort (_:_) :: [Int]
-  , _:tail (_:_) :: [Int]
-  , _:tail (_:xs) :: [Int]
-  , _:_:sort _ :: [Int]
-  , _:_:tail _ :: [Int]
-  , _:_:tail xs :: [Int]
-  , _:id _:_ :: [Int]
-  , _:id _:xs :: [Int]
-  , _:id _:ys :: [Int]
-  , _:abs _:_ :: [Int]
-  , _:abs _:xs :: [Int]
-  , _:negate _:_ :: [Int]
-  , _:negate _:xs :: [Int]
-  , _:head _:_ :: [Int]
-  , x:id x:_ :: [Int]
-  , x:head _:_ :: [Int]
-  , id _:_:_ :: [Int]
-  , id _:_:xs :: [Int]
-  , id _:_:ys :: [Int]
-  , id x:x:_ :: [Int]
-  , abs _:_:_ :: [Int]
-  , abs _:_:xs :: [Int]
-  , negate _:_:_ :: [Int]
-  , negate _:_:xs :: [Int]
-  , head _:_:_ :: [Int]
-  , head _:x:_ :: [Int]
-  , head (_:_):_ :: [Int]
-  , head (x:_):_ :: [Int]
-  , not (elem _ (_:_)) :: Bool
-  , id (_ * (_ + x)) :: Int
-  , id (_ * (x + _)) :: Int
-  , id (x * (_ + _)) :: Int
-  , id ((_ + _) * x) :: Int
-  , id ((_ + x) * _) :: Int
-  , id ((x + _) * _) :: Int
-  , id (_ + _ * x) :: Int
-  , id (_ + x * _) :: Int
-  , id (x + _ * _) :: Int
-  , id (_ * _ + x) :: Int
-  , id (_ * x + _) :: Int
-  , id (x * _ + _) :: Int
-  , head (_:insert _ _) :: Int
-  , head (_:(_ ++ _)) :: Int
-  , head (x:(_ ++ _)) :: Int
-  , head (_ * _:_) :: Int
-  , head (_ + _:_) :: Int
-  , head (_ + _:xs) :: Int
-  , head (insert _ (_:_)) :: Int
-  , head (_ ++ (_:_)) :: Int
-  , head (_ ++ (x:_)) :: Int
-  , head ((_:_) ++ _) :: Int
-  , head ((x:_) ++ _) :: Int
-  , tail (_:(_ ++ _)) :: [Int]
-  , tail (_ + _:_) :: [Int]
-  , tail (_ ++ (_:_)) :: [Int]
-  , tail ((_:_) ++ _) :: [Int]
-  , _ * head (_:_) :: Int
-  , head (_:_) * _ :: Int
-  , _ + head (_:_) :: Int
-  , _ + head (_:xs) :: Int
-  , _ + head (_ ++ _) :: Int
-  , head (_:_) + _ :: Int
-  , head (_:xs) + _ :: Int
-  , head (_ ++ _) + _ :: Int
-  , elem _ (id _:_) :: Bool
-  , elem (id _) (_:_) :: Bool
-  , _:tail (_ ++ _) :: [Int]
-  , _:insert (id _) _ :: [Int]
-  , _:(_ ++ tail _) :: [Int]
-  , _:(tail _ ++ _) :: [Int]
-  , ord _:(_ ++ _) :: [Int]
-  , id _:insert _ _ :: [Int]
-  , id _:(_ ++ _) :: [Int]
-  , id x:(_ ++ _) :: [Int]
-  , id (_ * _):_ :: [Int]
-  , id (_ + _):_ :: [Int]
-  , id (_ + _):xs :: [Int]
-  , abs _:(_ ++ _) :: [Int]
-  , abs (_ + _):_ :: [Int]
-  , negate _:(_ ++ _) :: [Int]
-  , negate (_ + _):_ :: [Int]
-  , _ * id _:_ :: [Int]
-  , id _ * _:_ :: [Int]
-  , _ + _:tail _ :: [Int]
-  , _ + id _:_ :: [Int]
-  , _ + id _:xs :: [Int]
-  , _ + abs _:_ :: [Int]
-  , _ + negate _:_ :: [Int]
-  , _ + head _:_ :: [Int]
-  , id _ + _:_ :: [Int]
-  , id _ + _:xs :: [Int]
-  , abs _ + _:_ :: [Int]
-  , negate _ + _:_ :: [Int]
-  , head _ + _:_ :: [Int]
-  , insert _ (id _:_) :: [Int]
-  , insert (id _) (_:_) :: [Int]
-  , _ ++ tail (_:_) :: [Int]
-  , _ ++ (_:tail _) :: [Int]
-  , _ ++ (ord _:_) :: [Int]
-  , _ ++ (id _:_) :: [Int]
-  , _ ++ (id x:_) :: [Int]
-  , _ ++ (abs _:_) :: [Int]
-  , _ ++ (negate _:_) :: [Int]
-  , tail _ ++ (_:_) :: [Int]
-  , tail (_:_) ++ _ :: [Int]
-  , (_:_) ++ tail _ :: [Int]
-  , (_:tail _) ++ _ :: [Int]
-  , (ord _:_) ++ _ :: [Int]
-  , (id _:_) ++ _ :: [Int]
-  , (id x:_) ++ _ :: [Int]
-  , (abs _:_) ++ _ :: [Int]
-  , (negate _:_) ++ _ :: [Int]
-  , id (f (id (id (id _)))) :: Int
-  , id (id (f (id (id _)))) :: Int
-  , id (id (id (f (id _)))) :: Int
-  , id (id (id (id (f _)))) :: Int
-  , id (id (id (_ * x))) :: Int
-  , id (id (id (x * _))) :: Int
-  , id (id (id (_ + x))) :: Int
-  , id (id (id (_ + y))) :: Int
-  , id (id (id (x + _))) :: Int
-  , id (id (id (y + _))) :: Int
-  , id (id (_ * id x)) :: Int
-  , id (id (x * id _)) :: Int
-  , id (id (id _ * x)) :: Int
-  , id (id (id x * _)) :: Int
-  , id (id (_ + id x)) :: Int
-  , id (id (_ + id y)) :: Int
-  , id (id (x + id _)) :: Int
-  , id (id (y + id _)) :: Int
-  , id (id (id _ + x)) :: Int
-  , id (id (id _ + y)) :: Int
-  , id (id (id x + _)) :: Int
-  , id (id (id y + _)) :: Int
-  , id (_ * id (id x)) :: Int
-  , id (x * id (id _)) :: Int
-  , id (id _ * id x) :: Int
-  , id (id x * id _) :: Int
-  , id (id (id _) * x) :: Int
-  , id (id (id x) * _) :: Int
-  , id (_ + id (id x)) :: Int
-  , id (_ + id (id y)) :: Int
-  , id (x + id (id _)) :: Int
-  , id (y + id (id _)) :: Int
-  , id (id _ + id x) :: Int
-  , id (id _ + id y) :: Int
-  , id (id x + id _) :: Int
-  , id (id y + id _) :: Int
-  , id (id (id _) + x) :: Int
-  , id (id (id _) + y) :: Int
-  , id (id (id x) + _) :: Int
-  , id (id (id y) + _) :: Int
-  , _ + id (id (id x)) :: Int
-  , x + id (id (id _)) :: Int
-  , id _ + id (id x) :: Int
-  , id x + id (id _) :: Int
-  , id (id _) + id x :: Int
-  , id (id x) + id _ :: Int
-  , id (id (id _)) + x :: Int
-  , id (id (id x)) + _ :: Int
-  , id (id (id _)):_ :: [Int]
-  , id (id (id _)):xs :: [Int]
-  , id (id (id x)):_ :: [Int]
-  , id (id (abs (_ + x))) :: Int
-  , id (id (abs (x + _))) :: Int
-  , id (id (negate (_ + x))) :: Int
-  , id (id (negate (x + _))) :: Int
-  , id (id (head (_:_))) :: Int
-  , id (id (head (_:xs))) :: Int
-  , id (id (head (_:ys))) :: Int
-  , id (id (head (x:_))) :: Int
-  , id (id (head (x:xs))) :: Int
-  , id (id (head (y:_))) :: Int
-  , id (id (head (insert _ _))) :: Int
-  , id (id (head (_ ++ xs))) :: Int
-  , id (id (head (xs ++ _))) :: Int
-  , id (id (_ * ord _)) :: Int
-  , id (id (_ * head _)) :: Int
-  , id (id (ord _ * _)) :: Int
-  , id (id (head _ * _)) :: Int
-  , id (id (_ + ord _)) :: Int
-  , id (id (_ + ord c)) :: Int
-  , id (id (_ + abs x)) :: Int
-  , id (id (_ + negate x)) :: Int
-  , id (id (_ + head _)) :: Int
-  , id (id (_ + head xs)) :: Int
-  , id (id (x + ord _)) :: Int
-  , id (id (x + abs _)) :: Int
-  , id (id (x + negate _)) :: Int
-  , id (id (x + head _)) :: Int
-  , id (id (ord _ + _)) :: Int
-  , id (id (ord _ + x)) :: Int
-  , id (id (ord c + _)) :: Int
-  , id (id (abs _ + x)) :: Int
-  , id (id (abs x + _)) :: Int
-  , id (id (negate _ + x)) :: Int
-  , id (id (negate x + _)) :: Int
-  , id (id (head _ + _)) :: Int
-  , id (id (head _ + x)) :: Int
-  , id (id (head xs + _)) :: Int
-  , id (abs (id (_ + x))) :: Int
-  , id (abs (id (x + _))) :: Int
-  , id (abs (_ + id x)) :: Int
-  , id (abs (x + id _)) :: Int
-  , id (abs (id _ + x)) :: Int
-  , id (abs (id x + _)) :: Int
-  , id (negate (id (_ + x))) :: Int
-  , id (negate (id (x + _))) :: Int
-  , id (negate (_ + id x)) :: Int
-  , id (negate (x + id _)) :: Int
-  , id (negate (id _ + x)) :: Int
-  , id (negate (id x + _)) :: Int
-  , id (head (id _:_)) :: Int
-  , id (head (id _:xs)) :: Int
-  , id (head (id _:ys)) :: Int
-  , id (head (id x:_)) :: Int
-  , id (head (id x:xs)) :: Int
-  , id (head (id y:_)) :: Int
-  , id (head (head _:xs)) :: Int
-  , id (head (head xs:_)) :: Int
-  , id (_ * id (ord _)) :: Int
-  , id (_ * id (head _)) :: Int
-  , id (ord _ * id _) :: Int
-  , id (id _ * ord _) :: Int
-  , id (id _ * head _) :: Int
-  , id (id (ord _) * _) :: Int
-  , id (id (head _) * _) :: Int
-  , id (head _ * id _) :: Int
-  , id (_ + id (ord _)) :: Int
-  , id (_ + id (ord c)) :: Int
-  , id (_ + id (abs x)) :: Int
-  , id (_ + id (negate x)) :: Int
-  , id (_ + id (head _)) :: Int
-  , id (_ + id (head xs)) :: Int
-  , id (_ + abs (id x)) :: Int
-  , id (_ + negate (id x)) :: Int
-  , id (_ + (x + 0)) :: Int
-  , id (_ + (0 + x)) :: Int
-  , id (x + id (ord _)) :: Int
-  , id (x + id (abs _)) :: Int
-  , id (x + id (negate _)) :: Int
-  , id (x + id (head _)) :: Int
-  , id (x + abs (id _)) :: Int
-  , id (x + negate (id _)) :: Int
-  , id (x + (_ + 0)) :: Int
-  , id (x + (0 + _)) :: Int
-  , id (0 + (_ + x)) :: Int
-  , id (0 + (x + _)) :: Int
-  , id (ord _ + id _) :: Int
-  , id (ord _ + id x) :: Int
-  , id (ord c + id _) :: Int
-  , id (id _ + ord _) :: Int
-  , id (id _ + ord c) :: Int
-  , id (id _ + abs x) :: Int
-  , id (id _ + negate x) :: Int
-  , id (id _ + head _) :: Int
-  , id (id _ + head xs) :: Int
-  , id (id x + ord _) :: Int
-  , id (id x + abs _) :: Int
-  , id (id x + negate _) :: Int
-  , id (id x + head _) :: Int
-  , id (id (ord _) + _) :: Int
-  , id (id (ord _) + x) :: Int
-  , id (id (ord c) + _) :: Int
-  , id (id (abs _) + x) :: Int
-  , id (id (abs x) + _) :: Int
-  , id (id (negate _) + x) :: Int
-  , id (id (negate x) + _) :: Int
-  , id (id (head _) + _) :: Int
-  , id (id (head _) + x) :: Int
-  , id (id (head xs) + _) :: Int
-  , id (abs _ + id x) :: Int
-  , id (abs x + id _) :: Int
-  , id (abs (id _) + x) :: Int
-  , id (abs (id x) + _) :: Int
-  , id (negate _ + id x) :: Int
-  , id (negate x + id _) :: Int
-  , id (negate (id _) + x) :: Int
-  , id (negate (id x) + _) :: Int
-  , id (head _ + id _) :: Int
-  , id (head _ + id x) :: Int
-  , id (head xs + id _) :: Int
-  , id ((_ + x) + 0) :: Int
-  , id ((_ + 0) + x) :: Int
-  , id ((x + _) + 0) :: Int
-  , id ((x + 0) + _) :: Int
-  , id ((0 + _) + x) :: Int
-  , id ((0 + x) + _) :: Int
-  , head [_,x] :: Int
-  , head (_:0:_) :: Int
-  , head (_:0:xs) :: Int
-  , head (_:1:_) :: Int
-  , head [x,_] :: Int
-  , head (x:0:_) :: Int
-  , head (0:_:_) :: Int
-  , head (0:_:xs) :: Int
-  , head (0:x:_) :: Int
-  , head (1:_:_) :: Int
-  , head (id (id _):_) :: Int
-  , head (id (id _):xs) :: Int
-  , head (id (id x):_) :: Int
-  , tail (_:0:_) :: [Int]
-  , tail (0:_:_) :: [Int]
-  , tail (id (id _):_) :: [Int]
-  , _ + id (id (ord _)) :: Int
-  , _ + id (id (head _)) :: Int
-  , ord _ + id (id _) :: Int
-  , id _ + id (ord _) :: Int
-  , id _ + id (head _) :: Int
-  , id (ord _) + id _ :: Int
-  , id (id _) + ord _ :: Int
-  , id (id _) + head _ :: Int
-  , id (id (ord _)) + _ :: Int
-  , id (id (head _)) + _ :: Int
-  , id (head _) + id _ :: Int
-  , head _ + id (id _) :: Int
-  , _:tail (0:_) :: [Int]
-  , _:0:tail _ :: [Int]
-  , [_,ord _] :: [Int]
-  , _:ord 'a':_ :: [Int]
-  , [_,id x] :: [Int]
-  , _:id 0:_ :: [Int]
-  , _:id 0:xs :: [Int]
-  , _:id 1:_ :: [Int]
-  , _:abs 0:_ :: [Int]
-  , _:negate 0:_ :: [Int]
-  , [_,head _] :: [Int]
-  , _:head []:_ :: [Int]
-  , [x,id _] :: [Int]
-  , x:id 0:_ :: [Int]
-  , 0:tail (_:_) :: [Int]
-  , 0:_:tail _ :: [Int]
-  , 0:ord _:_ :: [Int]
-  , 0:id _:_ :: [Int]
-  , 0:id _:xs :: [Int]
-  , 0:id x:_ :: [Int]
-  , 0:abs _:_ :: [Int]
-  , 0:negate _:_ :: [Int]
-  , 1:id _:_ :: [Int]
-  , [ord _,_] :: [Int]
-  , ord _:0:_ :: [Int]
-  , ord 'a':_:_ :: [Int]
-  , [id _,x] :: [Int]
-  , id _:0:_ :: [Int]
-  , id _:0:xs :: [Int]
-  , id _:1:_ :: [Int]
-  , [id x,_] :: [Int]
-  , id x:0:_ :: [Int]
-  , id 0:_:_ :: [Int]
-  , id 0:_:xs :: [Int]
-  , id 0:x:_ :: [Int]
-  , id 1:_:_ :: [Int]
-  , id (id _):tail _ :: [Int]
-  , id (id (ord _)):_ :: [Int]
-  , id (id (abs _)):_ :: [Int]
-  , id (id (negate _)):_ :: [Int]
-  , id (abs (id _)):_ :: [Int]
-  , id (negate (id _)):_ :: [Int]
-  , abs _:0:_ :: [Int]
-  , abs 0:_:_ :: [Int]
-  , abs (id (id _)):_ :: [Int]
-  , negate _:0:_ :: [Int]
-  , negate 0:_:_ :: [Int]
-  , negate (id (id _)):_ :: [Int]
-  , [head _,_] :: [Int]
-  , head []:_:_ :: [Int]
-  , [head (_:_)] :: [Int]
-  , head [_]:_ :: [Int]
-  , id (abs (head (_:_))) :: Int
-  , id (abs (head (_:xs))) :: Int
-  , id (abs (head (x:_))) :: Int
-  , id (abs (_ + ord _)) :: Int
-  , id (abs (_ + head _)) :: Int
-  , id (abs (ord _ + _)) :: Int
-  , id (abs (head _ + _)) :: Int
-  , id (negate (head (_:_))) :: Int
-  , id (negate (head (_:xs))) :: Int
-  , id (negate (head (x:_))) :: Int
-  , id (negate (_ + ord _)) :: Int
-  , id (negate (_ + head _)) :: Int
-  , id (negate (ord _ + _)) :: Int
-  , id (negate (head _ + _)) :: Int
-  , id (head (tail (_:_))) :: Int
-  , id (head (tail (_:xs))) :: Int
-  , id (head (tail (x:_))) :: Int
-  , id (head (_:sort _)) :: Int
-  , id (head (_:tail _)) :: Int
-  , id (head (_:tail xs)) :: Int
-  , id (head (x:tail _)) :: Int
-  , id (head (ord _:_)) :: Int
-  , id (head (ord _:xs)) :: Int
-  , id (head (ord c:_)) :: Int
-  , id (head (abs _:_)) :: Int
-  , id (head (abs _:xs)) :: Int
-  , id (head (abs x:_)) :: Int
-  , id (head (negate _:_)) :: Int
-  , id (head (negate _:xs)) :: Int
-  , id (head (negate x:_)) :: Int
-  , id (_ + abs (ord _)) :: Int
-  , id (_ + abs (head _)) :: Int
-  , id (_ + negate (ord _)) :: Int
-  , id (_ + negate (head _)) :: Int
-  , id (_ + head (tail _)) :: Int
-  , id (ord _ + abs _) :: Int
-  , id (ord _ + negate _) :: Int
-  , id (ord _ + head _) :: Int
-  , id (abs _ + ord _) :: Int
-  , id (abs _ + head _) :: Int
-  , id (abs (ord _) + _) :: Int
-  , id (abs (head _) + _) :: Int
-  , id (negate _ + ord _) :: Int
-  , id (negate _ + head _) :: Int
-  , id (negate (ord _) + _) :: Int
-  , id (negate (head _) + _) :: Int
-  , id (head _ + ord _) :: Int
-  , id (head _ + abs _) :: Int
-  , id (head _ + negate _) :: Int
-  , id (head (tail _) + _) :: Int
-  , abs (id (head (_:_))) :: Int
-  , abs (head (id _:_)) :: Int
-  , negate (id (head (_:_))) :: Int
-  , negate (head (id _:_)) :: Int
-  , head (tail (id _:_)) :: Int
-  , head (_:(_ ++ [])) :: Int
-  , head (_:([] ++ _)) :: Int
-  , head (id _:tail _) :: Int
-  , head (id (ord _):_) :: Int
-  , head (id (abs _):_) :: Int
-  , head (id (negate _):_) :: Int
-  , head (abs (id _):_) :: Int
-  , head (negate (id _):_) :: Int
-  , head (_ + 0:_) :: Int
-  , head (0 + _:_) :: Int
-  , head (_ ++ [_]) :: Int
-  , head ([] ++ (_:_)) :: Int
-  , head ((_:_) ++ []) :: Int
-  , head ([_] ++ _) :: Int
-  , _ + head (0:_) :: Int
-  , 0 + head (_:_) :: Int
-  , head (_:_) + 0 :: Int
-  , head (0:_) + _ :: Int
-  , id _:(_ ++ []) :: [Int]
-  , id _:([] ++ _) :: [Int]
-  , id (_ + 0):_ :: [Int]
-  , id (0 + _):_ :: [Int]
-  , _ + id 0:_ :: [Int]
-  , 0 + id _:_ :: [Int]
-  , id _ + 0:_ :: [Int]
-  , id 0 + _:_ :: [Int]
-  , _ ++ [id _] :: [Int]
-  , [] ++ (id _:_) :: [Int]
-  , (id _:_) ++ [] :: [Int]
-  , [id _] ++ _ :: [Int]
-  , not (_ || (_ || _)) :: Bool
-  , not ((_ || _) || _) :: Bool
-  , id (_ * (_ * _)) :: Int
-  , id ((_ * _) * _) :: Int
-  , id (_ + (_ + _)) :: Int
-  , id ((_ + _) + _) :: Int
-  , abs (_ + (_ + _)) :: Int
-  , abs ((_ + _) + _) :: Int
-  , negate (_ + (_ + _)) :: Int
-  , negate ((_ + _) + _) :: Int
-  , head (_ ++ (_ ++ _)) :: Int
-  , head ((_ ++ _) ++ _) :: Int
-  , _ || not (_ || _) :: Bool
-  , _ || (_ || not _) :: Bool
-  , _ || (not _ || _) :: Bool
-  , not _ || (_ || _) :: Bool
-  , not (_ || _) || _ :: Bool
-  , (_ || _) || not _ :: Bool
-  , (_ || not _) || _ :: Bool
-  , (not _ || _) || _ :: Bool
-  , _ + id (_ + _) :: Int
-  , _ + abs (_ + _) :: Int
-  , _ + negate (_ + _) :: Int
-  , _ + (_ + id _) :: Int
-  , _ + (_ + abs _) :: Int
-  , _ + (_ + negate _) :: Int
-  , _ + (id _ + _) :: Int
-  , _ + (abs _ + _) :: Int
-  , _ + (negate _ + _) :: Int
-  , id _ + (_ + _) :: Int
-  , id (_ + _) + _ :: Int
-  , abs _ + (_ + _) :: Int
-  , abs (_ + _) + _ :: Int
-  , negate _ + (_ + _) :: Int
-  , negate (_ + _) + _ :: Int
-  , (_ + _) + id _ :: Int
-  , (_ + _) + abs _ :: Int
-  , (_ + _) + negate _ :: Int
-  , (_ + id _) + _ :: Int
-  , (_ + abs _) + _ :: Int
-  , (_ + negate _) + _ :: Int
-  , (id _ + _) + _ :: Int
-  , (abs _ + _) + _ :: Int
-  , (negate _ + _) + _ :: Int
-  , id (_ * (_ + _)) :: Int
-  , id ((_ + _) * _) :: Int
-  , id (_ + _ * _) :: Int
-  , id (_ * _ + _) :: Int
-  , _ * id (_ + _) :: Int
-  , _ * (_ + id _) :: Int
-  , _ * (id _ + _) :: Int
-  , id _ * (_ + _) :: Int
-  , id (_ + _) * _ :: Int
-  , (_ + _) * id _ :: Int
-  , (_ + id _) * _ :: Int
-  , (id _ + _) * _ :: Int
-  , _ + id (_ * _) :: Int
-  , _ + _ * id _ :: Int
-  , _ + id _ * _ :: Int
-  , id _ + _ * _ :: Int
-  , id (_ * _) + _ :: Int
-  , _ * _ + id _ :: Int
-  , _ * id _ + _ :: Int
-  , id _ * _ + _ :: Int
-  , head _:(_ ++ _) :: [Int]
-  , head (_ ++ _):_ :: [Int]
-  , _ ++ (head _:_) :: [Int]
-  , (head _:_) ++ _ :: [Int]
-  , not (not (not (_ || _))) :: Bool
-  , not (not (_ || not _)) :: Bool
-  , not (not (not _ || _)) :: Bool
-  , not (_ || not (not _)) :: Bool
-  , not (not _ || not _) :: Bool
-  , not (not (not _) || _) :: Bool
-  , id (id (id (_ * _))) :: Int
-  , id (id (id (_ + _))) :: Int
-  , id (id (id (x + x))) :: Int
-  , id (id (_ * id _)) :: Int
-  , id (id (id _ * _)) :: Int
-  , id (id (_ + id _)) :: Int
-  , id (id (x + id x)) :: Int
-  , id (id (id _ + _)) :: Int
-  , id (id (id x + x)) :: Int
-  , id (_ * id (id _)) :: Int
-  , id (id _ * id _) :: Int
-  , id (id (id _) * _) :: Int
-  , id (_ + id (id _)) :: Int
-  , id (x + id (id x)) :: Int
-  , id (id _ + id _) :: Int
-  , id (id x + id x) :: Int
-  , id (id (id _) + _) :: Int
-  , id (id (id x) + x) :: Int
-  , _ || not (not (not _)) :: Bool
-  , not _ || not (not _) :: Bool
-  , not (not _) || not _ :: Bool
-  , not (not (not _)) || _ :: Bool
-  , _ * id (id (id _)) :: Int
-  , id _ * id (id _) :: Int
-  , id (id _) * id _ :: Int
-  , id (id (id _)) * _ :: Int
-  , _ + id (id (id _)) :: Int
-  , id _ + id (id _) :: Int
-  , id (id _) + id _ :: Int
-  , id (id (id _)) + _ :: Int
-  , id (id (abs (_ * _))) :: Int
-  , id (id (abs (_ + _))) :: Int
-  , id (id (negate (_ * _))) :: Int
-  , id (id (negate (_ + _))) :: Int
-  , id (id (head (_ ++ _))) :: Int
-  , id (id (_ * abs _)) :: Int
-  , id (id (_ * negate _)) :: Int
-  , id (id (abs _ * _)) :: Int
-  , id (id (negate _ * _)) :: Int
-  , id (id (_ + abs _)) :: Int
-  , id (id (_ + negate _)) :: Int
-  , id (id (abs _ + _)) :: Int
-  , id (id (negate _ + _)) :: Int
-  , id (abs (id (_ * _))) :: Int
-  , id (abs (id (_ + _))) :: Int
-  , id (abs (abs (_ + _))) :: Int
-  , id (abs (_ * id _)) :: Int
-  , id (abs (id _ * _)) :: Int
-  , id (abs (_ + id _)) :: Int
-  , id (abs (_ + abs _)) :: Int
-  , id (abs (id _ + _)) :: Int
-  , id (abs (abs _ + _)) :: Int
-  , id (negate (id (_ * _))) :: Int
-  , id (negate (id (_ + _))) :: Int
-  , id (negate (negate (_ + _))) :: Int
-  , id (negate (_ * id _)) :: Int
-  , id (negate (id _ * _)) :: Int
-  , id (negate (_ + id _)) :: Int
-  , id (negate (_ + negate _)) :: Int
-  , id (negate (id _ + _)) :: Int
-  , id (negate (negate _ + _)) :: Int
-  , id (head (head _:_)) :: Int
-  , id (_ * id (abs _)) :: Int
-  , id (_ * id (negate _)) :: Int
-  , id (_ * abs (id _)) :: Int
-  , id (_ * negate (id _)) :: Int
-  , id (id _ * abs _) :: Int
-  , id (id _ * negate _) :: Int
-  , id (id (abs _) * _) :: Int
-  , id (id (negate _) * _) :: Int
-  , id (abs _ * id _) :: Int
-  , id (abs (id _) * _) :: Int
-  , id (negate _ * id _) :: Int
-  , id (negate (id _) * _) :: Int
-  , id (_ + id (abs _)) :: Int
-  , id (_ + id (negate _)) :: Int
-  , id (_ + abs (id _)) :: Int
-  , id (_ + abs (abs _)) :: Int
-  , id (_ + negate (id _)) :: Int
-  , id (_ + negate (negate _)) :: Int
-  , id (_ + (_ + 0)) :: Int
-  , id (_ + (_ + 1)) :: Int
-  , id (_ + (0 + _)) :: Int
-  , id (_ + (1 + _)) :: Int
-  , id (0 + (_ + _)) :: Int
-  , id (1 + (_ + _)) :: Int
-  , id (ord _ + ord _) :: Int
-  , id (id _ + abs _) :: Int
-  , id (id _ + negate _) :: Int
-  , id (id (abs _) + _) :: Int
-  , id (id (negate _) + _) :: Int
-  , id (abs _ + id _) :: Int
-  , id (abs _ + abs _) :: Int
-  , id (abs (id _) + _) :: Int
-  , id (abs (abs _) + _) :: Int
-  , id (negate _ + id _) :: Int
-  , id (negate _ + negate _) :: Int
-  , id (negate (id _) + _) :: Int
-  , id (negate (negate _) + _) :: Int
-  , id (head _ + head _) :: Int
-  , id ((_ + _) + 0) :: Int
-  , id ((_ + _) + 1) :: Int
-  , id ((_ + 0) + _) :: Int
-  , id ((_ + 1) + _) :: Int
-  , id ((0 + _) + _) :: Int
-  , id ((1 + _) + _) :: Int
-  , abs (id (id (_ + _))) :: Int
-  , abs (id (_ + id _)) :: Int
-  , abs (id (id _ + _)) :: Int
-  , abs (_ + id (id _)) :: Int
-  , abs (id _ + id _) :: Int
-  , abs (id (id _) + _) :: Int
-  , negate (id (id (_ + _))) :: Int
-  , negate (id (_ + id _)) :: Int
-  , negate (id (id _ + _)) :: Int
-  , negate (_ + id (id _)) :: Int
-  , negate (id _ + id _) :: Int
-  , negate (id (id _) + _) :: Int
-  , head [_,_] :: Int
-  , head [_,_,0] :: Int
-  , head (id (head _):_) :: Int
-  , tail [_,_] :: [Int]
-  , _ + id (id (abs _)) :: Int
-  , _ + id (id (negate _)) :: Int
-  , _ + id (abs (id _)) :: Int
-  , _ + id (negate (id _)) :: Int
-  , _ + id (_ + 0) :: Int
-  , _ + id (0 + _) :: Int
-  , _ + abs (id (id _)) :: Int
-  , _ + negate (id (id _)) :: Int
-  , _ + (_ + id 0) :: Int
-  , _ + (0 + id _) :: Int
-  , _ + (id _ + 0) :: Int
-  , _ + (id 0 + _) :: Int
-  , 0 + id (_ + _) :: Int
-  , 0 + (_ + id _) :: Int
-  , 0 + (id _ + _) :: Int
-  , id _ + id (abs _) :: Int
-  , id _ + id (negate _) :: Int
-  , id _ + abs (id _) :: Int
-  , id _ + negate (id _) :: Int
-  , id _ + (_ + 0) :: Int
-  , id _ + (0 + _) :: Int
-  , id 0 + (_ + _) :: Int
-  , id (id _) + abs _ :: Int
-  , id (id _) + negate _ :: Int
-  , id (id (abs _)) + _ :: Int
-  , id (id (negate _)) + _ :: Int
-  , id (abs _) + id _ :: Int
-  , id (abs (id _)) + _ :: Int
-  , id (negate _) + id _ :: Int
-  , id (negate (id _)) + _ :: Int
-  , id (_ + _) + 0 :: Int
-  , id (_ + 0) + _ :: Int
-  , id (0 + _) + _ :: Int
-  , abs _ + id (id _) :: Int
-  , abs (id _) + id _ :: Int
-  , abs (id (id _)) + _ :: Int
-  , negate _ + id (id _) :: Int
-  , negate (id _) + id _ :: Int
-  , negate (id (id _)) + _ :: Int
-  , (_ + _) + id 0 :: Int
-  , (_ + 0) + id _ :: Int
-  , (_ + id _) + 0 :: Int
-  , (_ + id 0) + _ :: Int
-  , (0 + _) + id _ :: Int
-  , (0 + id _) + _ :: Int
-  , (id _ + _) + 0 :: Int
-  , (id _ + 0) + _ :: Int
-  , (id 0 + _) + _ :: Int
-  , _:tail [_] :: [Int]
-  , _:_:tail [] :: [Int]
-  , [_,id _] :: [Int]
-  , [_,id _,0] :: [Int]
-  , [_,abs _] :: [Int]
-  , [_,negate _] :: [Int]
-  , 0:head _:_ :: [Int]
-  , [id _,_] :: [Int]
-  , [id _,_,0] :: [Int]
-  , id (id (head _)):_ :: [Int]
-  , [abs _,_] :: [Int]
-  , [negate _,_] :: [Int]
-  , head _:0:_ :: [Int]
-  , head (0:_):_ :: [Int]
-  , id (abs (negate (_ + _))) :: Int
-  , id (abs (head (_ ++ _))) :: Int
-  , id (abs (_ + negate _)) :: Int
-  , id (abs (negate _ + _)) :: Int
-  , id (negate (abs (_ + _))) :: Int
-  , id (negate (head (_ ++ _))) :: Int
-  , id (negate (_ + abs _)) :: Int
-  , id (negate (abs _ + _)) :: Int
-  , id (head (tail (_ ++ _))) :: Int
-  , id (head (_ ++ tail _)) :: Int
-  , id (_ * (_ + 0)) :: Int
-  , id (_ * (0 + _)) :: Int
-  , id (0 * (_ + _)) :: Int
-  , id ((_ + _) * 0) :: Int
-  , id ((_ + 0) * _) :: Int
-  , id ((0 + _) * _) :: Int
-  , id (_ + abs (negate _)) :: Int
-  , id (_ + negate (abs _)) :: Int
-  , id (_ + _ * 0) :: Int
-  , id (_ + 0 * _) :: Int
-  , id (0 + _ * _) :: Int
-  , id (abs _ + negate _) :: Int
-  , id (abs (negate _) + _) :: Int
-  , id (negate _ + abs _) :: Int
-  , id (negate (abs _) + _) :: Int
-  , id (_ * _ + 0) :: Int
-  , id (_ * 0 + _) :: Int
-  , id (0 * _ + _) :: Int
-  , head (0:(_ ++ _)) :: Int
-  , head [_ + _] :: Int
-  , head (_ ++ (0:_)) :: Int
-  , head ((0:_) ++ _) :: Int
-  , _ + head [_] :: Int
-  , head [_] + _ :: Int
-  , id 0:(_ ++ _) :: [Int]
-  , [id (_ + _)] :: [Int]
-  , [_ + id _] :: [Int]
-  , [id _ + _] :: [Int]
-  , _ ++ (id 0:_) :: [Int]
-  , (id 0:_) ++ _ :: [Int]
-  , not (not (not (not (not _)))) :: Bool
-  , id (id (id (id (id _)))) :: Int
-  , id (id (id (id (id x)))) :: Int
-  , id (id (id (id (id y)))) :: Int
-  , id (id (id (id (ord _)))) :: Int
-  , id (id (id (id (ord c)))) :: Int
-  , id (id (id (id (abs _)))) :: Int
-  , id (id (id (id (abs x)))) :: Int
-  , id (id (id (id (negate _)))) :: Int
-  , id (id (id (id (negate x)))) :: Int
-  , id (id (id (id (head _)))) :: Int
-  , id (id (id (id (head xs)))) :: Int
-  , id (id (id (abs (id _)))) :: Int
-  , id (id (id (abs (id x)))) :: Int
-  , id (id (id (abs (abs _)))) :: Int
-  , id (id (id (negate (id _)))) :: Int
-  , id (id (id (negate (id x)))) :: Int
-  , id (id (id (negate (negate _)))) :: Int
-  , id (id (abs (id (id _)))) :: Int
-  , id (id (abs (id (id x)))) :: Int
-  , id (id (abs (id (abs _)))) :: Int
-  , id (id (abs (abs (id _)))) :: Int
-  , id (id (negate (id (id _)))) :: Int
-  , id (id (negate (id (id x)))) :: Int
-  , id (id (negate (id (negate _)))) :: Int
-  , id (id (negate (negate (id _)))) :: Int
-  , id (abs (id (id (id _)))) :: Int
-  , id (abs (id (id (id x)))) :: Int
-  , id (abs (id (id (abs _)))) :: Int
-  , id (abs (id (abs (id _)))) :: Int
-  , id (abs (abs (id (id _)))) :: Int
-  , id (negate (id (id (id _)))) :: Int
-  , id (negate (id (id (id x)))) :: Int
-  , id (negate (id (id (negate _)))) :: Int
-  , id (negate (id (negate (id _)))) :: Int
-  , id (negate (negate (id (id _)))) :: Int
-  , abs (id (id (id (id _)))) :: Int
-  , negate (id (id (id (id _)))) :: Int
-  , id (id (id (abs (ord _)))) :: Int
-  , id (id (id (abs (negate _)))) :: Int
-  , id (id (id (abs (head _)))) :: Int
-  , id (id (id (negate (ord _)))) :: Int
-  , id (id (id (negate (abs _)))) :: Int
-  , id (id (id (negate (head _)))) :: Int
-  , id (id (id (head (tail _)))) :: Int
-  , id (id (id (_ * 0))) :: Int
-  , id (id (id (0 * _))) :: Int
-  , id (id (id (_ + 0))) :: Int
-  , id (id (id (_ + 1))) :: Int
-  , id (id (id (x + 0))) :: Int
-  , id (id (id (0 + _))) :: Int
-  , id (id (id (0 + x))) :: Int
-  , id (id (id (1 + _))) :: Int
-  , id (id (abs (id (ord _)))) :: Int
-  , id (id (abs (id (negate _)))) :: Int
-  , id (id (abs (id (head _)))) :: Int
-  , id (id (abs (negate (id _)))) :: Int
-  , id (id (negate (id (ord _)))) :: Int
-  , id (id (negate (id (abs _)))) :: Int
-  , id (id (negate (id (head _)))) :: Int
-  , id (id (negate (abs (id _)))) :: Int
-  , id (id (_ * id 0)) :: Int
-  , id (id (0 * id _)) :: Int
-  , id (id (id _ * 0)) :: Int
-  , id (id (id 0 * _)) :: Int
-  , id (id (_ + id 0)) :: Int
-  , id (id (_ + id 1)) :: Int
-  , id (id (x + id 0)) :: Int
-  , id (id (0 + id _)) :: Int
-  , id (id (0 + id x)) :: Int
-  , id (id (1 + id _)) :: Int
-  , id (id (id _ + 0)) :: Int
-  , id (id (id _ + 1)) :: Int
-  , id (id (id x + 0)) :: Int
-  , id (id (id 0 + _)) :: Int
-  , id (id (id 0 + x)) :: Int
-  , id (id (id 1 + _)) :: Int
-  , id (abs (id (id (ord _)))) :: Int
-  , id (abs (id (id (negate _)))) :: Int
-  , id (abs (id (id (head _)))) :: Int
-  , id (abs (id (negate (id _)))) :: Int
-  , id (abs (negate (id (id _)))) :: Int
-  , id (negate (id (id (ord _)))) :: Int
-  , id (negate (id (id (abs _)))) :: Int
-  , id (negate (id (id (head _)))) :: Int
-  , id (negate (id (abs (id _)))) :: Int
-  , id (negate (abs (id (id _)))) :: Int
-  , id (_ * id (id 0)) :: Int
-  , id (0 * id (id _)) :: Int
-  , id (id _ * id 0) :: Int
-  , id (id 0 * id _) :: Int
-  , id (id (id _) * 0) :: Int
-  , id (id (id 0) * _) :: Int
-  , id (_ + id (id 0)) :: Int
-  , id (_ + id (id 1)) :: Int
-  , id (_ + (0 + 0)) :: Int
-  , id (x + id (id 0)) :: Int
-  , id (0 + id (id _)) :: Int
-  , id (0 + id (id x)) :: Int
-  , id (0 + (_ + 0)) :: Int
-  , id (0 + (0 + _)) :: Int
-  , id (1 + id (id _)) :: Int
-  , id (id _ + id 0) :: Int
-  , id (id _ + id 1) :: Int
-  , id (id x + id 0) :: Int
-  , id (id 0 + id _) :: Int
-  , id (id 0 + id x) :: Int
-  , id (id 1 + id _) :: Int
-  , id (id (id _) + 0) :: Int
-  , id (id (id _) + 1) :: Int
-  , id (id (id x) + 0) :: Int
-  , id (id (id 0) + _) :: Int
-  , id (id (id 0) + x) :: Int
-  , id (id (id 1) + _) :: Int
-  , id ((_ + 0) + 0) :: Int
-  , id ((0 + _) + 0) :: Int
-  , id ((0 + 0) + _) :: Int
-  , head (0:0:_) :: Int
-  , _ + id (id (id 0)) :: Int
-  , 0 + id (id (id _)) :: Int
-  , id _ + id (id 0) :: Int
-  , id 0 + id (id _) :: Int
-  , id (id _) + id 0 :: Int
-  , id (id 0) + id _ :: Int
-  , id (id (id _)) + 0 :: Int
-  , id (id (id 0)) + _ :: Int
-  , 0:id 0:_ :: [Int]
-  , id 0:0:_ :: [Int]
-  , [id (id (id _))] :: [Int]
-  , id (id (id 0)):_ :: [Int]
-  , id (id (abs (_ + 0))) :: Int
-  , id (id (abs (0 + _))) :: Int
-  , id (id (negate (_ + 0))) :: Int
-  , id (id (negate (0 + _))) :: Int
-  , id (id (head [_])) :: Int
-  , id (id (head [_,0])) :: Int
-  , id (id (head [x])) :: Int
-  , id (id (head (0:_))) :: Int
-  , id (id (head (0:xs))) :: Int
-  , id (id (head (1:_))) :: Int
-  , id (id (head (_ ++ []))) :: Int
-  , id (id (head ([] ++ _))) :: Int
-  , id (id (_ + ord 'a')) :: Int
-  , id (id (_ + abs 0)) :: Int
-  , id (id (_ + negate 0)) :: Int
-  , id (id (_ + head [])) :: Int
-  , id (id (0 + ord _)) :: Int
-  , id (id (0 + abs _)) :: Int
-  , id (id (0 + negate _)) :: Int
-  , id (id (0 + head _)) :: Int
-  , id (id (ord _ + 0)) :: Int
-  , id (id (ord 'a' + _)) :: Int
-  , id (id (abs _ + 0)) :: Int
-  , id (id (abs 0 + _)) :: Int
-  , id (id (negate _ + 0)) :: Int
-  , id (id (negate 0 + _)) :: Int
-  , id (id (head _ + 0)) :: Int
-  , id (id (head [] + _)) :: Int
-  , id (abs (id (_ + 0))) :: Int
-  , id (abs (id (0 + _))) :: Int
-  , id (abs (_ + id 0)) :: Int
-  , id (abs (0 + id _)) :: Int
-  , id (abs (id _ + 0)) :: Int
-  , id (abs (id 0 + _)) :: Int
-  , id (negate (id (_ + 0))) :: Int
-  , id (negate (id (0 + _))) :: Int
-  , id (negate (_ + id 0)) :: Int
-  , id (negate (0 + id _)) :: Int
-  , id (negate (id _ + 0)) :: Int
-  , id (negate (id 0 + _)) :: Int
-  , id (head [id _]) :: Int
-  , id (head [id _,0]) :: Int
-  , id (head [id x]) :: Int
-  , id (head (id 0:_)) :: Int
-  , id (head (id 0:xs)) :: Int
-  , id (head (id 1:_)) :: Int
-  , id (head [head _]) :: Int
-  , id (head (head []:_)) :: Int
-  , id (_ + id (ord 'a')) :: Int
-  , id (_ + id (abs 0)) :: Int
-  , id (_ + id (negate 0)) :: Int
-  , id (_ + id (head [])) :: Int
-  , id (_ + abs (id 0)) :: Int
-  , id (_ + negate (id 0)) :: Int
-  , id (0 + id (ord _)) :: Int
-  , id (0 + id (abs _)) :: Int
-  , id (0 + id (negate _)) :: Int
-  , id (0 + id (head _)) :: Int
-  , id (0 + abs (id _)) :: Int
-  , id (0 + negate (id _)) :: Int
-  , id (ord _ + id 0) :: Int
-  , id (ord 'a' + id _) :: Int
-  , id (id _ + ord 'a') :: Int
-  , id (id _ + abs 0) :: Int
-  , id (id _ + negate 0) :: Int
-  , id (id _ + head []) :: Int
-  , id (id 0 + ord _) :: Int
-  , id (id 0 + abs _) :: Int
-  , id (id 0 + negate _) :: Int
-  , id (id 0 + head _) :: Int
-  , id (id (ord _) + 0) :: Int
-  , id (id (ord 'a') + _) :: Int
-  , id (id (abs _) + 0) :: Int
-  , id (id (abs 0) + _) :: Int
-  , id (id (negate _) + 0) :: Int
-  , id (id (negate 0) + _) :: Int
-  , id (id (head _) + 0) :: Int
-  , id (id (head []) + _) :: Int
-  , id (abs _ + id 0) :: Int
-  , id (abs 0 + id _) :: Int
-  , id (abs (id _) + 0) :: Int
-  , id (abs (id 0) + _) :: Int
-  , id (negate _ + id 0) :: Int
-  , id (negate 0 + id _) :: Int
-  , id (negate (id _) + 0) :: Int
-  , id (negate (id 0) + _) :: Int
-  , id (head _ + id 0) :: Int
-  , id (head [] + id _) :: Int
-  , head [_,0] :: Int
-  , head [0,_] :: Int
-  , head [id (id _)] :: Int
-  , head (id (id 0):_) :: Int
-  , [_,id 0] :: [Int]
-  , [0,id _] :: [Int]
-  , [id _,0] :: [Int]
-  , [id 0,_] :: [Int]
-  , id (abs (head [_])) :: Int
-  , id (abs (head (0:_))) :: Int
-  , id (negate (head [_])) :: Int
-  , id (negate (head (0:_))) :: Int
-  , id (head (tail [_])) :: Int
-  , id (head (tail (0:_))) :: Int
-  , id (head (_:tail [])) :: Int
-  , id (head (0:tail _)) :: Int
-  , id (head [ord _]) :: Int
-  , id (head (ord 'a':_)) :: Int
-  , id (head [abs _]) :: Int
-  , id (head (abs 0:_)) :: Int
-  , id (head [negate _]) :: Int
-  , id (head (negate 0:_)) :: Int
-  , id (id (id (id (id 0)))) :: Int
-  , id (id (id (id (id 1)))) :: Int
-  , id (id (id (id (ord 'a')))) :: Int
-  , id (id (id (id (abs 0)))) :: Int
-  , id (id (id (id (negate 0)))) :: Int
-  , id (id (id (id (head [])))) :: Int
-  , id (id (id (abs (id 0)))) :: Int
-  , id (id (id (negate (id 0)))) :: Int
-  , id (id (id (0 + 0))) :: Int
-  , id (id (abs (id (id 0)))) :: Int
-  , id (id (negate (id (id 0)))) :: Int
-  , id (id (0 + id 0)) :: Int
-  , id (id (id 0 + 0)) :: Int
-  , id (abs (id (id (id 0)))) :: Int
-  , id (negate (id (id (id 0)))) :: Int
-  , id (0 + id (id 0)) :: Int
-  , id (id 0 + id 0) :: Int
-  , id (id (id 0) + 0) :: Int
-  , id (id (head [0])) :: Int
-  , id (head [id 0]) :: Int
-  , _:_:x:_ :: [Int]
-  , _:_:x:xs :: [Int]
-  , _:_:y:_ :: [Int]
-  , _:x:_:_ :: [Int]
-  , _:x:_:xs :: [Int]
-  , _:x:x:_ :: [Int]
-  , _:y:_:_ :: [Int]
-  , x:_:_:_ :: [Int]
-  , x:_:_:xs :: [Int]
-  , x:_:x:_ :: [Int]
-  , x:x:_:_ :: [Int]
-  , y:_:_:_ :: [Int]
-  , _:_:(_ ++ xs) :: [Int]
-  , _:_:(xs ++ _) :: [Int]
-  , _:x:(_ ++ _) :: [Int]
-  , _:_ + x:_ :: [Int]
-  , _:x + _:_ :: [Int]
-  , _:(_ ++ (_:xs)) :: [Int]
-  , _:(_ ++ (x:_)) :: [Int]
-  , _:(xs ++ (_:_)) :: [Int]
-  , _:((_:_) ++ xs) :: [Int]
-  , _:((_:xs) ++ _) :: [Int]
-  , _:((x:_) ++ _) :: [Int]
-  , x:_:(_ ++ _) :: [Int]
-  , x:_ + _:_ :: [Int]
-  , x:(_ ++ (_:_)) :: [Int]
-  , x:((_:_) ++ _) :: [Int]
-  , _ + _:x:_ :: [Int]
-  , _ + x:_:_ :: [Int]
-  , x + _:_:_ :: [Int]
-  , _ ++ (_:_:xs) :: [Int]
-  , _ ++ (_:x:_) :: [Int]
-  , _ ++ (x:_:_) :: [Int]
-  , xs ++ (_:_:_) :: [Int]
-  , (_:_) ++ (_:xs) :: [Int]
-  , (_:_) ++ (x:_) :: [Int]
-  , (_:xs) ++ (_:_) :: [Int]
-  , (_:_:_) ++ xs :: [Int]
-  , (_:_:xs) ++ _ :: [Int]
-  , (_:x:_) ++ _ :: [Int]
-  , (x:_) ++ (_:_) :: [Int]
-  , (x:_:_) ++ _ :: [Int]
-  , _:x:0:_ :: [Int]
-  , _:0:x:_ :: [Int]
-  , _:id (id x):_ :: [Int]
-  , x:_:0:_ :: [Int]
-  , x:0:_:_ :: [Int]
-  , x:id (id _):_ :: [Int]
-  , 0:_:x:_ :: [Int]
-  , 0:x:_:_ :: [Int]
-  , id _:id x:_ :: [Int]
-  , id x:id _:_ :: [Int]
-  , id (id _):x:_ :: [Int]
-  , id (id x):_:_ :: [Int]
-  , id (head (_:x:_)) :: Int
-  , id (head (_:x:xs)) :: Int
-  , id (head (_:y:_)) :: Int
-  , id (head (x:_:_)) :: Int
-  , id (head (x:_:xs)) :: Int
-  , id (head (y:_:_)) :: Int
-  , head (_:ord _:_) :: Int
-  , head (_:id x:_) :: Int
-  , head (x:id _:_) :: Int
-  , head (ord _:_:_) :: Int
-  , head (id _:x:_) :: Int
-  , head (id x:_:_) :: Int
-  , _:id (ord _):_ :: [Int]
-  , ord _:id _:_ :: [Int]
-  , id _:ord _:_ :: [Int]
-  , id (ord _):_:_ :: [Int]
-  , id (head (_:(_ ++ xs))) :: Int
-  , id (head (_:(xs ++ _))) :: Int
-  , id (head (_ + x:_)) :: Int
-  , id (head (x + _:_)) :: Int
-  , id (head (_ ++ (_:xs))) :: Int
-  , id (head (xs ++ (_:_))) :: Int
-  , id (head ((_:_) ++ xs)) :: Int
-  , id (head ((_:xs) ++ _)) :: Int
-  , id (_ + head (x:_)) :: Int
-  , id (x + head (_:_)) :: Int
-  , id (head (_:_) + x) :: Int
-  , id (head (x:_) + _) :: Int
-  , _:_:_:_ :: [Int]
-  , _:_:_:xs :: [Int]
-  , _:_:_:ys :: [Int]
-  , elem _ (_:_:_) :: Bool
-  , _:_:insert _ _ :: [Int]
-  , _:_:(_ ++ _) :: [Int]
-  , _:_ * _:_ :: [Int]
-  , _:_ + _:_ :: [Int]
-  , _:_ + _:xs :: [Int]
-  , _:insert _ (_:_) :: [Int]
-  , _:(_ ++ (_:_)) :: [Int]
-  , _:(_ ++ (_ ++ _)) :: [Int]
-  , _:((_:_) ++ _) :: [Int]
-  , _:((_ ++ _) ++ _) :: [Int]
-  , _ * _:_:_ :: [Int]
-  , _ + _:_:_ :: [Int]
-  , _ + _:_:xs :: [Int]
-  , _ + (_ + _):_ :: [Int]
-  , (_ + _) + _:_ :: [Int]
-  , insert _ (_:_:_) :: [Int]
-  , _ ++ (_:_:_) :: [Int]
-  , _ ++ (_:(_ ++ _)) :: [Int]
-  , _ ++ (_ ++ (_:_)) :: [Int]
-  , _ ++ ((_:_) ++ _) :: [Int]
-  , (_:_) ++ (_:_) :: [Int]
-  , (_:_) ++ (_ ++ _) :: [Int]
-  , (_:_:_) ++ _ :: [Int]
-  , (_:(_ ++ _)) ++ _ :: [Int]
-  , (_ ++ _) ++ (_:_) :: [Int]
-  , (_ ++ (_:_)) ++ _ :: [Int]
-  , ((_:_) ++ _) ++ _ :: [Int]
-  , _ + _:(_ ++ _) :: [Int]
-  , _ ++ (_ + _:_) :: [Int]
-  , (_ + _:_) ++ _ :: [Int]
-  , id (id (_ + (_ + x))) :: Int
-  , id (id (_ + (x + _))) :: Int
-  , id (id (x + (_ + _))) :: Int
-  , id (id ((_ + _) + x)) :: Int
-  , id (id ((_ + x) + _)) :: Int
-  , id (id ((x + _) + _)) :: Int
-  , id (_ + id (_ + x)) :: Int
-  , id (_ + id (x + _)) :: Int
-  , id (_ + (_ + id x)) :: Int
-  , id (_ + (x + id _)) :: Int
-  , id (_ + (id _ + x)) :: Int
-  , id (_ + (id x + _)) :: Int
-  , id (x + id (_ + _)) :: Int
-  , id (x + (_ + id _)) :: Int
-  , id (x + (id _ + _)) :: Int
-  , id (id _ + (_ + x)) :: Int
-  , id (id _ + (x + _)) :: Int
-  , id (id x + (_ + _)) :: Int
-  , id (id (_ + _) + x) :: Int
-  , id (id (_ + x) + _) :: Int
-  , id (id (x + _) + _) :: Int
-  , id ((_ + _) + id x) :: Int
-  , id ((_ + x) + id _) :: Int
-  , id ((_ + id _) + x) :: Int
-  , id ((_ + id x) + _) :: Int
-  , id ((x + _) + id _) :: Int
-  , id ((x + id _) + _) :: Int
-  , id ((id _ + _) + x) :: Int
-  , id ((id _ + x) + _) :: Int
-  , id ((id x + _) + _) :: Int
-  , head (_:head _:_) :: Int
-  , head (head _:_:_) :: Int
-  , head (head (_:_):_) :: Int
-  , [_,_,x] :: [Int]
-  , _:_:0:_ :: [Int]
-  , _:_:0:xs :: [Int]
-  , _:_:1:_ :: [Int]
-  , [_,x,_] :: [Int]
-  , _:0:_:_ :: [Int]
-  , _:0:_:xs :: [Int]
-  , _:1:_:_ :: [Int]
-  , _:id (id _):_ :: [Int]
-  , _:id (id _):xs :: [Int]
-  , [x,_,_] :: [Int]
-  , 0:_:_:_ :: [Int]
-  , 0:_:_:xs :: [Int]
-  , 1:_:_:_ :: [Int]
-  , id _:id _:_ :: [Int]
-  , id _:id _:xs :: [Int]
-  , id (id _):_:_ :: [Int]
-  , id (id _):_:xs :: [Int]
-  , id (head (_:_:_)) :: Int
-  , id (head (_:_:xs)) :: Int
-  , id (head (_:_:ys)) :: Int
-  , id (head (x:x:_)) :: Int
-  , id (_ + (_ + ord _)) :: Int
-  , id (_ + (_ + head _)) :: Int
-  , id (_ + (ord _ + _)) :: Int
-  , id (_ + (head _ + _)) :: Int
-  , id (ord _ + (_ + _)) :: Int
-  , id (head _ + (_ + _)) :: Int
-  , id ((_ + _) + ord _) :: Int
-  , id ((_ + _) + head _) :: Int
-  , id ((_ + ord _) + _) :: Int
-  , id ((_ + head _) + _) :: Int
-  , id ((ord _ + _) + _) :: Int
-  , id ((head _ + _) + _) :: Int
-  , abs (head (_:_:_)) :: Int
-  , negate (head (_:_:_)) :: Int
-  , head (tail (_:_:_)) :: Int
-  , head (_:tail (_:_)) :: Int
-  , head (_:_:tail _) :: Int
-  , head (_:id _:_) :: Int
-  , head (_:id _:xs) :: Int
-  , head (_:abs _:_) :: Int
-  , head (_:negate _:_) :: Int
-  , head (id _:_:_) :: Int
-  , head (id _:_:xs) :: Int
-  , head (abs _:_:_) :: Int
-  , head (negate _:_:_) :: Int
-  , tail (_:id _:_) :: [Int]
-  , tail (id _:_:_) :: [Int]
-  , _:tail (id _:_) :: [Int]
-  , _:_:(_ ++ []) :: [Int]
-  , [_,_,] ++ _ :: [Int]
-  , _:0:(_ ++ _) :: [Int]
-  , _:id _:tail _ :: [Int]
-  , _:id (abs _):_ :: [Int]
-  , _:id (negate _):_ :: [Int]
-  , _:id (head _):_ :: [Int]
-  , _:abs (id _):_ :: [Int]
-  , _:negate (id _):_ :: [Int]
-  , _:_ + 0:_ :: [Int]
-  , _:0 + _:_ :: [Int]
-  , _:(_ ++ [_]) :: [Int]
-  , _:(_ ++ (0:_)) :: [Int]
-  , _:([] ++ (_:_)) :: [Int]
-  , _:((_:_) ++ []) :: [Int]
-  , _:([_] ++ _) :: [Int]
-  , _:((0:_) ++ _) :: [Int]
-  , 0:_:(_ ++ _) :: [Int]
-  , 0:_ + _:_ :: [Int]
-  , 0:(_ ++ (_:_)) :: [Int]
-  , 0:((_:_) ++ _) :: [Int]
-  , id _:tail (_:_) :: [Int]
-  , id _:_:tail _ :: [Int]
-  , id _:abs _:_ :: [Int]
-  , id _:negate _:_ :: [Int]
-  , id _:head _:_ :: [Int]
-  , id (id _):(_ ++ _) :: [Int]
-  , id (id (_ + _)):_ :: [Int]
-  , id (abs _):_:_ :: [Int]
-  , id (negate _):_:_ :: [Int]
-  , id (head _):_:_ :: [Int]
-  , id (head (_:_)):_ :: [Int]
-  , id (_ + id _):_ :: [Int]
-  , id (id _ + _):_ :: [Int]
-  , abs _:id _:_ :: [Int]
-  , abs (id _):_:_ :: [Int]
-  , negate _:id _:_ :: [Int]
-  , negate (id _):_:_ :: [Int]
-  , head _:id _:_ :: [Int]
-  , head (id _:_):_ :: [Int]
-  , _ + _:0:_ :: [Int]
-  , _ + 0:_:_ :: [Int]
-  , _ + id (id _):_ :: [Int]
-  , 0 + _:_:_ :: [Int]
-  , id _ + id _:_ :: [Int]
-  , id (id _) + _:_ :: [Int]
-  , _ ++ [_,_] :: [Int]
-  , _ ++ (_:0:_) :: [Int]
-  , _ ++ (0:_:_) :: [Int]
-  , _ ++ (id (id _):_) :: [Int]
-  , [] ++ (_:_:_) :: [Int]
-  , (_:_) ++ [_] :: [Int]
-  , (_:_) ++ (0:_) :: [Int]
-  , [_] ++ (_:_) :: [Int]
-  , (_:_:_) ++ [] :: [Int]
-  , [_,_] ++ _ :: [Int]
-  , (_:0:_) ++ _ :: [Int]
-  , (0:_) ++ (_:_) :: [Int]
-  , (0:_:_) ++ _ :: [Int]
-  , (id (id _):_) ++ _ :: [Int]
-  , id (head (_:insert _ _)) :: Int
-  , id (head (_:(_ ++ _))) :: Int
-  , id (head (x:(_ ++ _))) :: Int
-  , id (head (_ * _:_)) :: Int
-  , id (head (_ + _:_)) :: Int
-  , id (head (_ + _:xs)) :: Int
-  , id (head (_ ++ (_:_))) :: Int
-  , id (head (_ ++ (x:_))) :: Int
-  , id (head ((_:_) ++ _)) :: Int
-  , id (head ((x:_) ++ _)) :: Int
-  , id (_ * head (_:_)) :: Int
-  , id (head (_:_) * _) :: Int
-  , id (_ + head (_:_)) :: Int
-  , id (_ + head (_:xs)) :: Int
-  , id (_ + head (_ ++ _)) :: Int
-  , id (head (_:_) + _) :: Int
-  , id (head (_:xs) + _) :: Int
-  , id (head (_ ++ _) + _) :: Int
-  , head (id _:(_ ++ _)) :: Int
-  , head (id (_ + _):_) :: Int
-  , head (_ + id _:_) :: Int
-  , head (id _ + _:_) :: Int
-  , head (_ ++ (id _:_)) :: Int
-  , head ((id _:_) ++ _) :: Int
-  , _ + id (head (_:_)) :: Int
-  , _ + head (id _:_) :: Int
-  , id _ + head (_:_) :: Int
-  , id (head (_:_)) + _ :: Int
-  , head (_:_) + id _ :: Int
-  , head (id _:_) + _ :: Int
-  , id (id (id (id (_ + x)))) :: Int
-  , id (id (id (id (x + _)))) :: Int
-  , id (id (id (_ + id x))) :: Int
-  , id (id (id (x + id _))) :: Int
-  , id (id (id (id _ + x))) :: Int
-  , id (id (id (id x + _))) :: Int
-  , id (id (_ + id (id x))) :: Int
-  , id (id (x + id (id _))) :: Int
-  , id (id (id _ + id x)) :: Int
-  , id (id (id x + id _)) :: Int
-  , id (id (id (id _) + x)) :: Int
-  , id (id (id (id x) + _)) :: Int
-  , id (_ + id (id (id x))) :: Int
-  , id (x + id (id (id _))) :: Int
-  , id (id _ + id (id x)) :: Int
-  , id (id x + id (id _)) :: Int
-  , id (id (id _) + id x) :: Int
-  , id (id (id x) + id _) :: Int
-  , id (id (id (id _)) + x) :: Int
-  , id (id (id (id x)) + _) :: Int
-  , _:0:0:_ :: [Int]
-  , 0:_:0:_ :: [Int]
-  , 0:0:_:_ :: [Int]
-  , id (id (id (id _))):_ :: [Int]
-  , id (id (id (head (_:_)))) :: Int
-  , id (id (id (head (_:xs)))) :: Int
-  , id (id (id (head (x:_)))) :: Int
-  , id (id (id (_ + ord _))) :: Int
-  , id (id (id (_ + head _))) :: Int
-  , id (id (id (ord _ + _))) :: Int
-  , id (id (id (head _ + _))) :: Int
-  , id (id (head (id _:_))) :: Int
-  , id (id (head (id _:xs))) :: Int
-  , id (id (head (id x:_))) :: Int
-  , id (id (_ + id (ord _))) :: Int
-  , id (id (_ + id (head _))) :: Int
-  , id (id (ord _ + id _)) :: Int
-  , id (id (id _ + ord _)) :: Int
-  , id (id (id _ + head _)) :: Int
-  , id (id (id (ord _) + _)) :: Int
-  , id (id (id (head _) + _)) :: Int
-  , id (id (head _ + id _)) :: Int
-  , id (head (id (id _):_)) :: Int
-  , id (head (id (id _):xs)) :: Int
-  , id (head (id (id x):_)) :: Int
-  , id (_ + id (id (ord _))) :: Int
-  , id (_ + id (id (head _))) :: Int
-  , id (ord _ + id (id _)) :: Int
-  , id (id _ + id (ord _)) :: Int
-  , id (id _ + id (head _)) :: Int
-  , id (id (ord _) + id _) :: Int
-  , id (id (id _) + ord _) :: Int
-  , id (id (id _) + head _) :: Int
-  , id (id (id (ord _)) + _) :: Int
-  , id (id (id (head _)) + _) :: Int
-  , id (id (head _) + id _) :: Int
-  , id (head _ + id (id _)) :: Int
-  , head (id (id (id _)):_) :: Int
-  , _:id (id 0):_ :: [Int]
-  , 0:id (id _):_ :: [Int]
-  , id _:id 0:_ :: [Int]
-  , id 0:id _:_ :: [Int]
-  , id (id _):0:_ :: [Int]
-  , id (id 0):_:_ :: [Int]
-  , id (id (abs (head (_:_)))) :: Int
-  , id (id (negate (head (_:_)))) :: Int
-  , id (id (head (tail (_:_)))) :: Int
-  , id (id (head (_:tail _))) :: Int
-  , id (id (head (ord _:_))) :: Int
-  , id (id (head (abs _:_))) :: Int
-  , id (id (head (negate _:_))) :: Int
-  , id (abs (id (head (_:_)))) :: Int
-  , id (abs (head (id _:_))) :: Int
-  , id (negate (id (head (_:_)))) :: Int
-  , id (negate (head (id _:_))) :: Int
-  , id (head (tail (id _:_))) :: Int
-  , id (head [_,x]) :: Int
-  , id (head (_:0:_)) :: Int
-  , id (head (_:0:xs)) :: Int
-  , id (head (_:1:_)) :: Int
-  , id (head [x,_]) :: Int
-  , id (head (x:0:_)) :: Int
-  , id (head (0:_:_)) :: Int
-  , id (head (0:_:xs)) :: Int
-  , id (head (0:x:_)) :: Int
-  , id (head (1:_:_)) :: Int
-  , id (head (id _:tail _)) :: Int
-  , id (head (id (ord _):_)) :: Int
-  , id (head (id (abs _):_)) :: Int
-  , id (head (id (negate _):_)) :: Int
-  , id (head (abs (id _):_)) :: Int
-  , id (head (negate (id _):_)) :: Int
-  , head (_:id 0:_) :: Int
-  , head (0:id _:_) :: Int
-  , head (id _:0:_) :: Int
-  , head (id 0:_:_) :: Int
-  , id (head (_:(_ ++ []))) :: Int
-  , id (head (_:([] ++ _))) :: Int
-  , id (head (_ + 0:_)) :: Int
-  , id (head (0 + _:_)) :: Int
-  , id (head (_ ++ [_])) :: Int
-  , id (head ([] ++ (_:_))) :: Int
-  , id (head ((_:_) ++ [])) :: Int
-  , id (head ([_] ++ _)) :: Int
-  , id (_ + head (0:_)) :: Int
-  , id (0 + head (_:_)) :: Int
-  , id (head (_:_) + 0) :: Int
-  , id (head (0:_) + _) :: Int
-  , _ + (_ + (_ + _)) :: Int
-  , _ + ((_ + _) + _) :: Int
-  , (_ + _) + (_ + _) :: Int
-  , (_ + (_ + _)) + _ :: Int
-  , ((_ + _) + _) + _ :: Int
-  , id (id (_ + (_ + _))) :: Int
-  , id (id ((_ + _) + _)) :: Int
-  , id (_ + id (_ + _)) :: Int
-  , id (_ + (_ + id _)) :: Int
-  , id (_ + (id _ + _)) :: Int
-  , id (id _ + (_ + _)) :: Int
-  , id (id (_ + _) + _) :: Int
-  , id ((_ + _) + id _) :: Int
-  , id ((_ + id _) + _) :: Int
-  , id ((id _ + _) + _) :: Int
-  , _ + id (id (_ + _)) :: Int
-  , _ + id (_ + id _) :: Int
-  , _ + id (id _ + _) :: Int
-  , _ + (_ + id (id _)) :: Int
-  , _ + (id _ + id _) :: Int
-  , _ + (id (id _) + _) :: Int
-  , id _ + id (_ + _) :: Int
-  , id _ + (_ + id _) :: Int
-  , id _ + (id _ + _) :: Int
-  , id (id _) + (_ + _) :: Int
-  , id (id (_ + _)) + _ :: Int
-  , id (_ + _) + id _ :: Int
-  , id (_ + id _) + _ :: Int
-  , id (id _ + _) + _ :: Int
-  , (_ + _) + id (id _) :: Int
-  , (_ + id _) + id _ :: Int
-  , (_ + id (id _)) + _ :: Int
-  , (id _ + _) + id _ :: Int
-  , (id _ + id _) + _ :: Int
-  , (id (id _) + _) + _ :: Int
-  , [_,_,_] :: [Int]
-  , [_,_,_,0] :: [Int]
-  , id (id (_ * (_ + _))) :: Int
-  , id (id ((_ + _) * _)) :: Int
-  , id (id (_ + _ * _)) :: Int
-  , id (id (_ * _ + _)) :: Int
-  , id (abs (_ + (_ + _))) :: Int
-  , id (abs ((_ + _) + _)) :: Int
-  , id (negate (_ + (_ + _))) :: Int
-  , id (negate ((_ + _) + _)) :: Int
-  , id (head (_ ++ (_ ++ _))) :: Int
-  , id (_ * id (_ + _)) :: Int
-  , id (_ * (_ + id _)) :: Int
-  , id (_ * (id _ + _)) :: Int
-  , id (id _ * (_ + _)) :: Int
-  , id (id (_ + _) * _) :: Int
-  , id ((_ + _) * id _) :: Int
-  , id ((_ + id _) * _) :: Int
-  , id ((id _ + _) * _) :: Int
-  , id (_ + id (_ * _)) :: Int
-  , id (_ + abs (_ + _)) :: Int
-  , id (_ + negate (_ + _)) :: Int
-  , id (_ + _ * id _) :: Int
-  , id (_ + id _ * _) :: Int
-  , id (_ + (_ + abs _)) :: Int
-  , id (_ + (_ + negate _)) :: Int
-  , id (_ + (abs _ + _)) :: Int
-  , id (_ + (negate _ + _)) :: Int
-  , id (id _ + _ * _) :: Int
-  , id (id (_ * _) + _) :: Int
-  , id (abs _ + (_ + _)) :: Int
-  , id (abs (_ + _) + _) :: Int
-  , id (negate _ + (_ + _)) :: Int
-  , id (negate (_ + _) + _) :: Int
-  , id (_ * _ + id _) :: Int
-  , id (_ * id _ + _) :: Int
-  , id (id _ * _ + _) :: Int
-  , id ((_ + _) + abs _) :: Int
-  , id ((_ + _) + negate _) :: Int
-  , id ((_ + abs _) + _) :: Int
-  , id ((_ + negate _) + _) :: Int
-  , id ((abs _ + _) + _) :: Int
-  , id ((negate _ + _) + _) :: Int
-  , [_,_ + _] :: [Int]
-  , [_ + _,_] :: [Int]
-  , id (id (id (id (_ * _)))) :: Int
-  , id (id (id (id (_ + _)))) :: Int
-  , id (id (id (_ * id _))) :: Int
-  , id (id (id (id _ * _))) :: Int
-  , id (id (id (_ + id _))) :: Int
-  , id (id (id (id _ + _))) :: Int
-  , id (id (_ * id (id _))) :: Int
-  , id (id (id _ * id _)) :: Int
-  , id (id (id (id _) * _)) :: Int
-  , id (id (_ + id (id _))) :: Int
-  , id (id (id _ + id _)) :: Int
-  , id (id (id (id _) + _)) :: Int
-  , id (_ * id (id (id _))) :: Int
-  , id (id _ * id (id _)) :: Int
-  , id (id (id _) * id _) :: Int
-  , id (id (id (id _)) * _) :: Int
-  , id (_ + id (id (id _))) :: Int
-  , id (id _ + id (id _)) :: Int
-  , id (id (id _) + id _) :: Int
-  , id (id (id (id _)) + _) :: Int
-  , _ + id (id (id (id _))) :: Int
-  , id _ + id (id (id _)) :: Int
-  , id (id _) + id (id _) :: Int
-  , id (id (id _)) + id _ :: Int
-  , id (id (id (id _))) + _ :: Int
-  , id (id (id (abs (_ + _)))) :: Int
-  , id (id (id (negate (_ + _)))) :: Int
-  , id (id (id (head (_ ++ _)))) :: Int
-  , id (id (id (_ + abs _))) :: Int
-  , id (id (id (_ + negate _))) :: Int
-  , id (id (id (abs _ + _))) :: Int
-  , id (id (id (negate _ + _))) :: Int
-  , id (id (abs (id (_ + _)))) :: Int
-  , id (id (abs (_ + id _))) :: Int
-  , id (id (abs (id _ + _))) :: Int
-  , id (id (negate (id (_ + _)))) :: Int
-  , id (id (negate (_ + id _))) :: Int
-  , id (id (negate (id _ + _))) :: Int
-  , id (id (head (head _:_))) :: Int
-  , id (id (_ + id (abs _))) :: Int
-  , id (id (_ + id (negate _))) :: Int
-  , id (id (_ + abs (id _))) :: Int
-  , id (id (_ + negate (id _))) :: Int
-  , id (id (_ + (_ + 0))) :: Int
-  , id (id (_ + (0 + _))) :: Int
-  , id (id (0 + (_ + _))) :: Int
-  , id (id (id _ + abs _)) :: Int
-  , id (id (id _ + negate _)) :: Int
-  , id (id (id (abs _) + _)) :: Int
-  , id (id (id (negate _) + _)) :: Int
-  , id (id (abs _ + id _)) :: Int
-  , id (id (abs (id _) + _)) :: Int
-  , id (id (negate _ + id _)) :: Int
-  , id (id (negate (id _) + _)) :: Int
-  , id (id ((_ + _) + 0)) :: Int
-  , id (id ((_ + 0) + _)) :: Int
-  , id (id ((0 + _) + _)) :: Int
-  , id (abs (id (id (_ + _)))) :: Int
-  , id (abs (id (_ + id _))) :: Int
-  , id (abs (id (id _ + _))) :: Int
-  , id (abs (_ + id (id _))) :: Int
-  , id (abs (id _ + id _)) :: Int
-  , id (abs (id (id _) + _)) :: Int
-  , id (negate (id (id (_ + _)))) :: Int
-  , id (negate (id (_ + id _))) :: Int
-  , id (negate (id (id _ + _))) :: Int
-  , id (negate (_ + id (id _))) :: Int
-  , id (negate (id _ + id _)) :: Int
-  , id (negate (id (id _) + _)) :: Int
-  , id (head (id (head _):_)) :: Int
-  , id (_ + id (id (abs _))) :: Int
-  , id (_ + id (id (negate _))) :: Int
-  , id (_ + id (abs (id _))) :: Int
-  , id (_ + id (negate (id _))) :: Int
-  , id (_ + id (_ + 0)) :: Int
-  , id (_ + id (0 + _)) :: Int
-  , id (_ + abs (id (id _))) :: Int
-  , id (_ + negate (id (id _))) :: Int
-  , id (_ + (_ + id 0)) :: Int
-  , id (_ + (0 + id _)) :: Int
-  , id (_ + (id _ + 0)) :: Int
-  , id (_ + (id 0 + _)) :: Int
-  , id (0 + id (_ + _)) :: Int
-  , id (0 + (_ + id _)) :: Int
-  , id (0 + (id _ + _)) :: Int
-  , id (id _ + id (abs _)) :: Int
-  , id (id _ + id (negate _)) :: Int
-  , id (id _ + abs (id _)) :: Int
-  , id (id _ + negate (id _)) :: Int
-  , id (id _ + (_ + 0)) :: Int
-  , id (id _ + (0 + _)) :: Int
-  , id (id 0 + (_ + _)) :: Int
-  , id (id (id _) + abs _) :: Int
-  , id (id (id _) + negate _) :: Int
-  , id (id (id (abs _)) + _) :: Int
-  , id (id (id (negate _)) + _) :: Int
-  , id (id (abs _) + id _) :: Int
-  , id (id (abs (id _)) + _) :: Int
-  , id (id (negate _) + id _) :: Int
-  , id (id (negate (id _)) + _) :: Int
-  , id (id (_ + _) + 0) :: Int
-  , id (id (_ + 0) + _) :: Int
-  , id (id (0 + _) + _) :: Int
-  , id (abs _ + id (id _)) :: Int
-  , id (abs (id _) + id _) :: Int
-  , id (abs (id (id _)) + _) :: Int
-  , id (negate _ + id (id _)) :: Int
-  , id (negate (id _) + id _) :: Int
-  , id (negate (id (id _)) + _) :: Int
-  , id ((_ + _) + id 0) :: Int
-  , id ((_ + 0) + id _) :: Int
-  , id ((_ + id _) + 0) :: Int
-  , id ((_ + id 0) + _) :: Int
-  , id ((0 + _) + id _) :: Int
-  , id ((0 + id _) + _) :: Int
-  , id ((id _ + _) + 0) :: Int
-  , id ((id _ + 0) + _) :: Int
-  , id ((id 0 + _) + _) :: Int
-  , [_,_,0] :: [Int]
-  , [_,0,_] :: [Int]
-  , [_,id (id _)] :: [Int]
-  , [0,_,_] :: [Int]
-  , [id _,id _] :: [Int]
-  , [id (id _),_] :: [Int]
-  , id (head [_,_]) :: Int
-  , id (head [_,_,0]) :: Int
-  , head [_,id _] :: Int
-  , head [id _,_] :: Int
-  , id (head (0:(_ ++ _))) :: Int
-  , id (head [_ + _]) :: Int
-  , id (head (_ ++ (0:_))) :: Int
-  , id (head ((0:_) ++ _)) :: Int
-  , id (_ + head [_]) :: Int
-  , id (head [_] + _) :: Int
-  , id (id (id (id (id (id _))))) :: Int
-  , id (id (id (id (id (id x))))) :: Int
-  , id (id (id (id (id (ord _))))) :: Int
-  , id (id (id (id (id (abs _))))) :: Int
-  , id (id (id (id (id (negate _))))) :: Int
-  , id (id (id (id (id (head _))))) :: Int
-  , id (id (id (id (abs (id _))))) :: Int
-  , id (id (id (id (negate (id _))))) :: Int
-  , id (id (id (abs (id (id _))))) :: Int
-  , id (id (id (negate (id (id _))))) :: Int
-  , id (id (abs (id (id (id _))))) :: Int
-  , id (id (negate (id (id (id _))))) :: Int
-  , id (abs (id (id (id (id _))))) :: Int
-  , id (negate (id (id (id (id _))))) :: Int
-  , id (id (id (id (_ + 0)))) :: Int
-  , id (id (id (id (0 + _)))) :: Int
-  , id (id (id (_ + id 0))) :: Int
-  , id (id (id (0 + id _))) :: Int
-  , id (id (id (id _ + 0))) :: Int
-  , id (id (id (id 0 + _))) :: Int
-  , id (id (_ + id (id 0))) :: Int
-  , id (id (0 + id (id _))) :: Int
-  , id (id (id _ + id 0)) :: Int
-  , id (id (id 0 + id _)) :: Int
-  , id (id (id (id _) + 0)) :: Int
-  , id (id (id (id 0) + _)) :: Int
-  , id (_ + id (id (id 0))) :: Int
-  , id (0 + id (id (id _))) :: Int
-  , id (id _ + id (id 0)) :: Int
-  , id (id 0 + id (id _)) :: Int
-  , id (id (id _) + id 0) :: Int
-  , id (id (id 0) + id _) :: Int
-  , id (id (id (id _)) + 0) :: Int
-  , id (id (id (id 0)) + _) :: Int
-  , id (id (id (head [_]))) :: Int
-  , id (id (id (head (0:_)))) :: Int
-  , id (id (head [id _])) :: Int
-  , id (id (head (id 0:_))) :: Int
-  , id (head (0:0:_)) :: Int
-  , id (head [id (id _)]) :: Int
-  , id (head (id (id 0):_)) :: Int
-  , id (head [_,0]) :: Int
-  , id (head [0,_]) :: Int
-  , id (id (id (id (id (id 0))))) :: Int
-  , head (_:_:x:_) :: Int
-  , head (_:x:_:_) :: Int
-  , head (x:_:_:_) :: Int
-  , _:_:ord _:_ :: [Int]
-  , _:_:id x:_ :: [Int]
-  , _:x:id _:_ :: [Int]
-  , _:ord _:_:_ :: [Int]
-  , _:id _:x:_ :: [Int]
-  , _:id x:_:_ :: [Int]
-  , x:_:id _:_ :: [Int]
-  , x:id _:_:_ :: [Int]
-  , ord _:_:_:_ :: [Int]
-  , id _:_:x:_ :: [Int]
-  , id _:x:_:_ :: [Int]
-  , id x:_:_:_ :: [Int]
-  , id (id (head (_:x:_))) :: Int
-  , id (id (head (x:_:_))) :: Int
-  , id (head (_:id x:_)) :: Int
-  , id (head (x:id _:_)) :: Int
-  , id (head (id _:x:_)) :: Int
-  , id (head (id x:_:_)) :: Int
-  , id (head (_:ord _:_)) :: Int
-  , id (head (ord _:_:_)) :: Int
-  , head (_:_:_:_) :: Int
-  , head (_:_:_:xs) :: Int
-  , tail (_:_:_:_) :: [Int]
-  , _:tail (_:_:_) :: [Int]
-  , _:_:tail (_:_) :: [Int]
-  , _:_:_:tail _ :: [Int]
-  , _:_:id _:_ :: [Int]
-  , _:_:id _:xs :: [Int]
-  , _:_:abs _:_ :: [Int]
-  , _:_:negate _:_ :: [Int]
-  , _:_:head _:_ :: [Int]
-  , _:id _:_:_ :: [Int]
-  , _:id _:_:xs :: [Int]
-  , _:abs _:_:_ :: [Int]
-  , _:negate _:_:_ :: [Int]
-  , _:head _:_:_ :: [Int]
-  , _:head (_:_):_ :: [Int]
-  , id _:_:_:_ :: [Int]
-  , id _:_:_:xs :: [Int]
-  , abs _:_:_:_ :: [Int]
-  , negate _:_:_:_ :: [Int]
-  , head _:_:_:_ :: [Int]
-  , head (_:_):_:_ :: [Int]
-  , head (_:_:_):_ :: [Int]
-  , head (_:_:(_ ++ _)) :: Int
-  , head (_:_ + _:_) :: Int
-  , head (_:(_ ++ (_:_))) :: Int
-  , head (_:((_:_) ++ _)) :: Int
-  , head (_ + _:_:_) :: Int
-  , head (_ ++ (_:_:_)) :: Int
-  , head ((_:_) ++ (_:_)) :: Int
-  , head ((_:_:_) ++ _) :: Int
-  , _ + head (_:_:_) :: Int
-  , head (_:_:_) + _ :: Int
-  , _:id _:(_ ++ _) :: [Int]
-  , _:id (_ + _):_ :: [Int]
-  , _:_ + id _:_ :: [Int]
-  , _:id _ + _:_ :: [Int]
-  , _:(_ ++ (id _:_)) :: [Int]
-  , _:((id _:_) ++ _) :: [Int]
-  , id _:_:(_ ++ _) :: [Int]
-  , id _:_ + _:_ :: [Int]
-  , id _:(_ ++ (_:_)) :: [Int]
-  , id _:((_:_) ++ _) :: [Int]
-  , id (_ + _):_:_ :: [Int]
-  , _ + _:id _:_ :: [Int]
-  , _ + id _:_:_ :: [Int]
-  , id _ + _:_:_ :: [Int]
-  , _ ++ (_:id _:_) :: [Int]
-  , _ ++ (id _:_:_) :: [Int]
-  , (_:_) ++ (id _:_) :: [Int]
-  , (_:id _:_) ++ _ :: [Int]
-  , (id _:_) ++ (_:_) :: [Int]
-  , (id _:_:_) ++ _ :: [Int]
-  , _:id (id (id _)):_ :: [Int]
-  , id _:id (id _):_ :: [Int]
-  , id (id _):id _:_ :: [Int]
-  , id (id (id _)):_:_ :: [Int]
-  , id (id (head (_:_:_))) :: Int
-  , id (id (head (_:_:xs))) :: Int
-  , id (head (_:id _:_)) :: Int
-  , id (head (_:id _:xs)) :: Int
-  , id (head (_:head _:_)) :: Int
-  , id (head (id _:_:_)) :: Int
-  , id (head (id _:_:xs)) :: Int
-  , id (head (head _:_:_)) :: Int
-  , id (head (head (_:_):_)) :: Int
-  , head (_:_:0:_) :: Int
-  , head (_:0:_:_) :: Int
-  , head (_:id (id _):_) :: Int
-  , head (0:_:_:_) :: Int
-  , head (id _:id _:_) :: Int
-  , head (id (id _):_:_) :: Int
-  , _:_:id 0:_ :: [Int]
-  , _:0:id _:_ :: [Int]
-  , _:id _:0:_ :: [Int]
-  , _:id 0:_:_ :: [Int]
-  , 0:_:id _:_ :: [Int]
-  , 0:id _:_:_ :: [Int]
-  , id _:_:0:_ :: [Int]
-  , id _:0:_:_ :: [Int]
-  , id 0:_:_:_ :: [Int]
-  , id (id (head (_:(_ ++ _)))) :: Int
-  , id (id (head (_ + _:_))) :: Int
-  , id (id (head (_ ++ (_:_)))) :: Int
-  , id (id (head ((_:_) ++ _))) :: Int
-  , id (id (_ + head (_:_))) :: Int
-  , id (id (head (_:_) + _)) :: Int
-  , id (abs (head (_:_:_))) :: Int
-  , id (negate (head (_:_:_))) :: Int
-  , id (head (tail (_:_:_))) :: Int
-  , id (head (_:tail (_:_))) :: Int
-  , id (head (_:_:tail _)) :: Int
-  , id (head (_:abs _:_)) :: Int
-  , id (head (_:negate _:_)) :: Int
-  , id (head (id _:(_ ++ _))) :: Int
-  , id (head (id (_ + _):_)) :: Int
-  , id (head (abs _:_:_)) :: Int
-  , id (head (negate _:_:_)) :: Int
-  , id (head (_ + id _:_)) :: Int
-  , id (head (id _ + _:_)) :: Int
-  , id (head (_ ++ (id _:_))) :: Int
-  , id (head ((id _:_) ++ _)) :: Int
-  , id (_ + id (head (_:_))) :: Int
-  , id (_ + head (id _:_)) :: Int
-  , id (id _ + head (_:_)) :: Int
-  , id (id (head (_:_)) + _) :: Int
-  , id (head (_:_) + id _) :: Int
-  , id (head (id _:_) + _) :: Int
-  , id (id (id (id (head (_:_))))) :: Int
-  , id (id (id (head (id _:_)))) :: Int
-  , id (id (head (id (id _):_))) :: Int
-  , id (head (id (id (id _)):_)) :: Int
-  , id (id (head (_:0:_))) :: Int
-  , id (id (head (0:_:_))) :: Int
-  , id (head (_:id 0:_)) :: Int
-  , id (head (0:id _:_)) :: Int
-  , id (head (id _:0:_)) :: Int
-  , id (head (id 0:_:_)) :: Int
-  , id (_ + (_ + (_ + _))) :: Int
-  , id (_ + ((_ + _) + _)) :: Int
-  , id ((_ + _) + (_ + _)) :: Int
-  , id ((_ + (_ + _)) + _) :: Int
-  , id (((_ + _) + _) + _) :: Int
-  , id (id (id (_ + (_ + _)))) :: Int
-  , id (id (id ((_ + _) + _))) :: Int
-  , id (id (_ + id (_ + _))) :: Int
-  , id (id (_ + (_ + id _))) :: Int
-  , id (id (_ + (id _ + _))) :: Int
-  , id (id (id _ + (_ + _))) :: Int
-  , id (id (id (_ + _) + _)) :: Int
-  , id (id ((_ + _) + id _)) :: Int
-  , id (id ((_ + id _) + _)) :: Int
-  , id (id ((id _ + _) + _)) :: Int
-  , id (_ + id (id (_ + _))) :: Int
-  , id (_ + id (_ + id _)) :: Int
-  , id (_ + id (id _ + _)) :: Int
-  , id (_ + (_ + id (id _))) :: Int
-  , id (_ + (id _ + id _)) :: Int
-  , id (_ + (id (id _) + _)) :: Int
-  , id (id _ + id (_ + _)) :: Int
-  , id (id _ + (_ + id _)) :: Int
-  , id (id _ + (id _ + _)) :: Int
-  , id (id (id _) + (_ + _)) :: Int
-  , id (id (id (_ + _)) + _) :: Int
-  , id (id (_ + _) + id _) :: Int
-  , id (id (_ + id _) + _) :: Int
-  , id (id (id _ + _) + _) :: Int
-  , id ((_ + _) + id (id _)) :: Int
-  , id ((_ + id _) + id _) :: Int
-  , id ((_ + id (id _)) + _) :: Int
-  , id ((id _ + _) + id _) :: Int
-  , id ((id _ + id _) + _) :: Int
-  , id ((id (id _) + _) + _) :: Int
-  , head [_,_,_] :: Int
-  , [_,_,id _] :: [Int]
-  , [_,id _,_] :: [Int]
-  , [id _,_,_] :: [Int]
-  , id (id (id (id (id (_ + _))))) :: Int
-  , id (id (id (id (_ + id _)))) :: Int
-  , id (id (id (id (id _ + _)))) :: Int
-  , id (id (id (_ + id (id _)))) :: Int
-  , id (id (id (id _ + id _))) :: Int
-  , id (id (id (id (id _) + _))) :: Int
-  , id (id (_ + id (id (id _)))) :: Int
-  , id (id (id _ + id (id _))) :: Int
-  , id (id (id (id _) + id _)) :: Int
-  , id (id (id (id (id _)) + _)) :: Int
-  , id (_ + id (id (id (id _)))) :: Int
-  , id (id _ + id (id (id _))) :: Int
-  , id (id (id _) + id (id _)) :: Int
-  , id (id (id (id _)) + id _) :: Int
-  , id (id (id (id (id _))) + _) :: Int
-  , id (id (head [_,_])) :: Int
-  , id (head [_,id _]) :: Int
-  , id (head [id _,_]) :: Int
-  , id (id (id (id (id (id (id _)))))) :: Int
-  , _:_:_:x:_ :: [Int]
-  , _:_:x:_:_ :: [Int]
-  , _:x:_:_:_ :: [Int]
-  , x:_:_:_:_ :: [Int]
-  , id (head (_:_:x:_)) :: Int
-  , id (head (_:x:_:_)) :: Int
-  , id (head (x:_:_:_)) :: Int
-  , _:_:_:_:_ :: [Int]
-  , _:_:_:_:xs :: [Int]
-  , _:_:_:(_ ++ _) :: [Int]
-  , _:_:_ + _:_ :: [Int]
-  , _:_:(_ ++ (_:_)) :: [Int]
-  , _:_:((_:_) ++ _) :: [Int]
-  , _:_ + _:_:_ :: [Int]
-  , _:(_ ++ (_:_:_)) :: [Int]
-  , _:((_:_) ++ (_:_)) :: [Int]
-  , _:((_:_:_) ++ _) :: [Int]
-  , _ + _:_:_:_ :: [Int]
-  , _ ++ (_:_:_:_) :: [Int]
-  , (_:_) ++ (_:_:_) :: [Int]
-  , (_:_:_) ++ (_:_) :: [Int]
-  , (_:_:_:_) ++ _ :: [Int]
-  , _:_:_:0:_ :: [Int]
-  , _:_:0:_:_ :: [Int]
-  , _:_:id (id _):_ :: [Int]
-  , _:0:_:_:_ :: [Int]
-  , _:id _:id _:_ :: [Int]
-  , _:id (id _):_:_ :: [Int]
-  , 0:_:_:_:_ :: [Int]
-  , id _:_:id _:_ :: [Int]
-  , id _:id _:_:_ :: [Int]
-  , id (id _):_:_:_ :: [Int]
-  , id (head (_:_:_:_)) :: Int
-  , id (head (_:_:_:xs)) :: Int
-  , head (_:_:id _:_) :: Int
-  , head (_:id _:_:_) :: Int
-  , head (id _:_:_:_) :: Int
-  , id (head (_:_:(_ ++ _))) :: Int
-  , id (head (_:_ + _:_)) :: Int
-  , id (head (_:(_ ++ (_:_)))) :: Int
-  , id (head (_:((_:_) ++ _))) :: Int
-  , id (head (_ + _:_:_)) :: Int
-  , id (head (_ ++ (_:_:_))) :: Int
-  , id (head ((_:_) ++ (_:_))) :: Int
-  , id (head ((_:_:_) ++ _)) :: Int
-  , id (_ + head (_:_:_)) :: Int
-  , id (head (_:_:_) + _) :: Int
-  , id (id (id (head (_:_:_)))) :: Int
-  , id (id (head (_:id _:_))) :: Int
-  , id (id (head (id _:_:_))) :: Int
-  , id (head (_:id (id _):_)) :: Int
-  , id (head (id _:id _:_)) :: Int
-  , id (head (id (id _):_:_)) :: Int
-  , id (head (_:_:0:_)) :: Int
-  , id (head (_:0:_:_)) :: Int
-  , id (head (0:_:_:_)) :: Int
-  , [_,_,_,_] :: [Int]
-  , id (head [_,_,_]) :: Int
-  , head (_:_:_:_:_) :: Int
-  , _:_:_:id _:_ :: [Int]
-  , _:_:id _:_:_ :: [Int]
-  , _:id _:_:_:_ :: [Int]
-  , id _:_:_:_:_ :: [Int]
-  , id (id (head (_:_:_:_))) :: Int
-  , id (head (_:_:id _:_)) :: Int
-  , id (head (_:id _:_:_)) :: Int
-  , id (head (id _:_:_:_)) :: Int
-  , _:_:_:_:_:_ :: [Int]
-  , id (head (_:_:_:_:_)) :: Int
-  ]
-
-sortBy compareLexicographically $ take 5040 $ list  ::  [ Expr ]  =
-  [ _ :: Bool
-  , p :: Bool
-  , q :: Bool
-  , r :: Bool
-  , p' :: Bool
-  , q' :: Bool
-  , _ :: Char
-  , c :: Char
-  , d :: Char
-  , e :: Char
-  , c' :: Char
-  , d' :: Char
-  , _ :: Int
-  , x :: Int
-  , y :: Int
-  , z :: Int
-  , x' :: Int
-  , y' :: Int
-  , z' :: Int
-  , x'' :: Int
-  , _ :: [Int]
-  , xs :: [Int]
-  , ys :: [Int]
-  , zs :: [Int]
-  , xs' :: [Int]
-  , ys' :: [Int]
-  , f :: Int -> Int
-  , g :: Int -> Int
-  , h :: Int -> Int
-  , False :: Bool
-  , True :: Bool
-  , ' ' :: Char
-  , 'A' :: Char
-  , 'a' :: Char
-  , 'b' :: Char
-  , 'c' :: Char
-  , 0 :: Int
-  , 1 :: Int
-  , 2 :: Int
-  , 3 :: Int
-  , -1 :: Int
-  , -2 :: Int
-  , -3 :: Int
-  , [] :: [Int]
-  , [0] :: [Int]
-  , [1] :: [Int]
-  , [2] :: [Int]
-  , [-1] :: [Int]
-  , [0,0] :: [Int]
-  , [0,1] :: [Int]
-  , [1,0] :: [Int]
-  , [1,1] :: [Int]
-  , [-1,0] :: [Int]
-  , [0,-1] :: [Int]
-  , [0,0,0] :: [Int]
-  , [0,0,1] :: [Int]
-  , [0,1,0] :: [Int]
-  , [1,0,0] :: [Int]
-  , [0,0,0,0] :: [Int]
-  , not :: Bool -> Bool
-  , id :: Int -> Int
-  , abs :: Int -> Int
-  , negate :: Int -> Int
-  , (&&) :: Bool -> Bool -> Bool
-  , (||) :: Bool -> Bool -> Bool
-  , (==>) :: Bool -> Bool -> Bool
-  , (*) :: Int -> Int -> Int
-  , (+) :: Int -> Int -> Int
-  , f _ :: Int
-  , f x :: Int
-  , f y :: Int
-  , f z :: Int
-  , f 0 :: Int
-  , f 1 :: Int
-  , f (-1) :: Int
-  , f (f _) :: Int
-  , f (ord _) :: Int
-  , f (ord c) :: Int
-  , f (ord 'a') :: Int
-  , f (id _) :: Int
-  , f (id x) :: Int
-  , f (id y) :: Int
-  , f (id 0) :: Int
-  , f (id 1) :: Int
-  , f (id (ord _)) :: Int
-  , f (id (id _)) :: Int
-  , f (id (id x)) :: Int
-  , f (id (id 0)) :: Int
-  , f (id (id (id _))) :: Int
-  , f (id (abs _)) :: Int
-  , f (id (negate _)) :: Int
-  , f (id (head _)) :: Int
-  , f (id (_ + _)) :: Int
-  , f (abs _) :: Int
-  , f (abs x) :: Int
-  , f (abs 0) :: Int
-  , f (abs (id _)) :: Int
-  , f (negate _) :: Int
-  , f (negate x) :: Int
-  , f (negate 0) :: Int
-  , f (negate (id _)) :: Int
-  , f (head _) :: Int
-  , f (head xs) :: Int
-  , f (head []) :: Int
-  , f (head (_:_)) :: Int
-  , f (_ * _) :: Int
-  , f (_ + _) :: Int
-  , f (_ + x) :: Int
-  , f (_ + 0) :: Int
-  , f (_ + id _) :: Int
-  , f (x + _) :: Int
-  , f (0 + _) :: Int
-  , f (id _ + _) :: Int
-  , g _ :: Int
-  , g x :: Int
-  , g y :: Int
-  , g 0 :: Int
-  , g 1 :: Int
-  , g (ord _) :: Int
-  , g (id _) :: Int
-  , g (id x) :: Int
-  , g (id 0) :: Int
-  , g (id (id _)) :: Int
-  , g (abs _) :: Int
-  , g (negate _) :: Int
-  , g (head _) :: Int
-  , g (_ + _) :: Int
-  , h _ :: Int
-  , h x :: Int
-  , h 0 :: Int
-  , h (id _) :: Int
-  , f' _ :: Int
-  , not _ :: Bool
-  , not p :: Bool
-  , not q :: Bool
-  , not r :: Bool
-  , not p' :: Bool
-  , not False :: Bool
-  , not True :: Bool
-  , not (not _) :: Bool
-  , not (not p) :: Bool
-  , not (not q) :: Bool
-  , not (not r) :: Bool
-  , not (not False) :: Bool
-  , not (not True) :: Bool
-  , not (not (not _)) :: Bool
-  , not (not (not p)) :: Bool
-  , not (not (not q)) :: Bool
-  , not (not (not False)) :: Bool
-  , not (not (not True)) :: Bool
-  , not (not (not (not _))) :: Bool
-  , not (not (not (not p))) :: Bool
-  , not (not (not (not False))) :: Bool
-  , not (not (not (not True))) :: Bool
-  , not (not (not (not (not _)))) :: Bool
-  , not (not (not (_ || _))) :: Bool
-  , not (not (odd _)) :: Bool
-  , not (not (even _)) :: Bool
-  , not (not (_ && _)) :: Bool
-  , not (not (_ == _)) :: Bool
-  , not (not (_ || _)) :: Bool
-  , not (not (_ || p)) :: Bool
-  , not (not (_ || False)) :: Bool
-  , not (not (_ || True)) :: Bool
-  , not (not (_ || not _)) :: Bool
-  , not (not (p || _)) :: Bool
-  , not (not (False || _)) :: Bool
-  , not (not (True || _)) :: Bool
-  , not (not (not _ || _)) :: Bool
-  , not (not (_ == _)) :: Bool
-  , not (not (elem _ _)) :: Bool
-  , not (odd _) :: Bool
-  , not (odd x) :: Bool
-  , not (odd 0) :: Bool
-  , not (odd (id _)) :: Bool
-  , not (even _) :: Bool
-  , not (even x) :: Bool
-  , not (even 0) :: Bool
-  , not (even (id _)) :: Bool
-  , not (_ && _) :: Bool
-  , not (_ && p) :: Bool
-  , not (_ && False) :: Bool
-  , not (_ && True) :: Bool
-  , not (_ && not _) :: Bool
-  , not (p && _) :: Bool
-  , not (False && _) :: Bool
-  , not (True && _) :: Bool
-  , not (not _ && _) :: Bool
-  , not (_ <= _) :: Bool
-  , not (_ == _) :: Bool
-  , not (_ == p) :: Bool
-  , not (_ == False) :: Bool
-  , not (_ == True) :: Bool
-  , not (_ == not _) :: Bool
-  , not (p == _) :: Bool
-  , not (False == _) :: Bool
-  , not (True == _) :: Bool
-  , not (not _ == _) :: Bool
-  , not (_ || _) :: Bool
-  , not (_ || p) :: Bool
-  , not (_ || q) :: Bool
-  , not (_ || False) :: Bool
-  , not (_ || True) :: Bool
-  , not (_ || not _) :: Bool
-  , not (_ || not p) :: Bool
-  , not (_ || not False) :: Bool
-  , not (_ || not True) :: Bool
-  , not (_ || not (not _)) :: Bool
-  , not (_ || (_ || _)) :: Bool
-  , not (p || _) :: Bool
-  , not (p || p) :: Bool
-  , not (p || False) :: Bool
-  , not (p || True) :: Bool
-  , not (p || not _) :: Bool
-  , not (q || _) :: Bool
-  , not (False || _) :: Bool
-  , not (False || p) :: Bool
-  , not (False || False) :: Bool
-  , not (False || True) :: Bool
-  , not (False || not _) :: Bool
-  , not (True || _) :: Bool
-  , not (True || p) :: Bool
-  , not (True || False) :: Bool
-  , not (True || True) :: Bool
-  , not (True || not _) :: Bool
-  , not (not _ || _) :: Bool
-  , not (not _ || p) :: Bool
-  , not (not _ || False) :: Bool
-  , not (not _ || True) :: Bool
-  , not (not _ || not _) :: Bool
-  , not (not p || _) :: Bool
-  , not (not False || _) :: Bool
-  , not (not True || _) :: Bool
-  , not (not (not _) || _) :: Bool
-  , not ((_ || _) || _) :: Bool
-  , not (_ ==> _) :: Bool
-  , not (_ <= _) :: Bool
-  , not (_ == _) :: Bool
-  , not (_ == x) :: Bool
-  , not (_ == 0) :: Bool
-  , not (_ == id _) :: Bool
-  , not (x == _) :: Bool
-  , not (0 == _) :: Bool
-  , not (id _ == _) :: Bool
-  , not (elem _ _) :: Bool
-  , not (elem _ xs) :: Bool
-  , not (elem _ []) :: Bool
-  , not (elem _ (_:_)) :: Bool
-  , not (elem x _) :: Bool
-  , not (elem 0 _) :: Bool
-  , not (elem (id _) _) :: Bool
-  , ord _ :: Int
-  , ord c :: Int
-  , ord d :: Int
-  , ord e :: Int
-  , ord c' :: Int
-  , ord ' ' :: Int
-  , ord 'A' :: Int
-  , ord 'a' :: Int
-  , ord 'b' :: Int
-  , odd _ :: Bool
-  , odd x :: Bool
-  , odd y :: Bool
-  , odd 0 :: Bool
-  , odd 1 :: Bool
-  , odd (ord _) :: Bool
-  , odd (id _) :: Bool
-  , odd (id x) :: Bool
-  , odd (id 0) :: Bool
-  , odd (id (id _)) :: Bool
-  , odd (abs _) :: Bool
-  , odd (negate _) :: Bool
-  , odd (head _) :: Bool
-  , odd (_ + _) :: Bool
-  , even _ :: Bool
-  , even x :: Bool
-  , even y :: Bool
-  , even 0 :: Bool
-  , even 1 :: Bool
-  , even (ord _) :: Bool
-  , even (id _) :: Bool
-  , even (id x) :: Bool
-  , even (id 0) :: Bool
-  , even (id (id _)) :: Bool
-  , even (abs _) :: Bool
-  , even (negate _) :: Bool
-  , even (head _) :: Bool
-  , even (_ + _) :: Bool
-  , id _ :: Int
-  , id x :: Int
-  , id y :: Int
-  , id z :: Int
-  , id x' :: Int
-  , id y' :: Int
-  , id z' :: Int
-  , id 0 :: Int
-  , id 1 :: Int
-  , id 2 :: Int
-  , id 3 :: Int
-  , id (-1) :: Int
-  , id (-2) :: Int
-  , id (f _) :: Int
-  , id (f x) :: Int
-  , id (f y) :: Int
-  , id (f z) :: Int
-  , id (f 0) :: Int
-  , id (f 1) :: Int
-  , id (f (-1)) :: Int
-  , id (f (f _)) :: Int
-  , id (f (ord _)) :: Int
-  , id (f (ord c)) :: Int
-  , id (f (ord 'a')) :: Int
-  , id (f (id _)) :: Int
-  , id (f (id x)) :: Int
-  , id (f (id y)) :: Int
-  , id (f (id 0)) :: Int
-  , id (f (id 1)) :: Int
-  , id (f (id (ord _))) :: Int
-  , id (f (id (id _))) :: Int
-  , id (f (id (id x))) :: Int
-  , id (f (id (id 0))) :: Int
-  , id (f (id (id (id _)))) :: Int
-  , id (f (id (abs _))) :: Int
-  , id (f (id (negate _))) :: Int
-  , id (f (id (head _))) :: Int
-  , id (f (id (_ + _))) :: Int
-  , id (f (abs _)) :: Int
-  , id (f (abs x)) :: Int
-  , id (f (abs 0)) :: Int
-  , id (f (abs (id _))) :: Int
-  , id (f (negate _)) :: Int
-  , id (f (negate x)) :: Int
-  , id (f (negate 0)) :: Int
-  , id (f (negate (id _))) :: Int
-  , id (f (head _)) :: Int
-  , id (f (head xs)) :: Int
-  , id (f (head [])) :: Int
-  , id (f (head (_:_))) :: Int
-  , id (f (_ * _)) :: Int
-  , id (f (_ + _)) :: Int
-  , id (f (_ + x)) :: Int
-  , id (f (_ + 0)) :: Int
-  , id (f (_ + id _)) :: Int
-  , id (f (x + _)) :: Int
-  , id (f (0 + _)) :: Int
-  , id (f (id _ + _)) :: Int
-  , id (g _) :: Int
-  , id (g x) :: Int
-  , id (g y) :: Int
-  , id (g 0) :: Int
-  , id (g 1) :: Int
-  , id (g (ord _)) :: Int
-  , id (g (id _)) :: Int
-  , id (g (id x)) :: Int
-  , id (g (id 0)) :: Int
-  , id (g (id (id _))) :: Int
-  , id (g (abs _)) :: Int
-  , id (g (negate _)) :: Int
-  , id (g (head _)) :: Int
-  , id (g (_ + _)) :: Int
-  , id (h _) :: Int
-  , id (h x) :: Int
-  , id (h 0) :: Int
-  , id (h (id _)) :: Int
-  , id (f' _) :: Int
-  , id (ord _) :: Int
-  , id (ord c) :: Int
-  , id (ord d) :: Int
-  , id (ord e) :: Int
-  , id (ord ' ') :: Int
-  , id (ord 'a') :: Int
-  , id (ord 'b') :: Int
-  , id (id _) :: Int
-  , id (id x) :: Int
-  , id (id y) :: Int
-  , id (id z) :: Int
-  , id (id x') :: Int
-  , id (id y') :: Int
-  , id (id 0) :: Int
-  , id (id 1) :: Int
-  , id (id 2) :: Int
-  , id (id (-1)) :: Int
-  , id (id (-2)) :: Int
-  , id (id (f _)) :: Int
-  , id (id (f x)) :: Int
-  , id (id (f y)) :: Int
-  , id (id (f 0)) :: Int
-  , id (id (f 1)) :: Int
-  , id (id (f (ord _))) :: Int
-  , id (id (f (id _))) :: Int
-  , id (id (f (id x))) :: Int
-  , id (id (f (id 0))) :: Int
-  , id (id (f (id (id _)))) :: Int
-  , id (id (f (abs _))) :: Int
-  , id (id (f (negate _))) :: Int
-  , id (id (f (head _))) :: Int
-  , id (id (f (_ + _))) :: Int
-  , id (id (g _)) :: Int
-  , id (id (g x)) :: Int
-  , id (id (g 0)) :: Int
-  , id (id (g (id _))) :: Int
-  , id (id (h _)) :: Int
-  , id (id (ord _)) :: Int
-  , id (id (ord c)) :: Int
-  , id (id (ord d)) :: Int
-  , id (id (ord e)) :: Int
-  , id (id (ord ' ')) :: Int
-  , id (id (ord 'a')) :: Int
-  , id (id (ord 'b')) :: Int
-  , id (id (id _)) :: Int
-  , id (id (id x)) :: Int
-  , id (id (id y)) :: Int
-  , id (id (id z)) :: Int
-  , id (id (id x')) :: Int
-  , id (id (id 0)) :: Int
-  , id (id (id 1)) :: Int
-  , id (id (id 2)) :: Int
-  , id (id (id (-1))) :: Int
-  , id (id (id (f _))) :: Int
-  , id (id (id (f x))) :: Int
-  , id (id (id (f 0))) :: Int
-  , id (id (id (f (id _)))) :: Int
-  , id (id (id (g _))) :: Int
-  , id (id (id (ord _))) :: Int
-  , id (id (id (ord c))) :: Int
-  , id (id (id (ord d))) :: Int
-  , id (id (id (ord ' '))) :: Int
-  , id (id (id (ord 'a'))) :: Int
-  , id (id (id (id _))) :: Int
-  , id (id (id (id x))) :: Int
-  , id (id (id (id y))) :: Int
-  , id (id (id (id z))) :: Int
-  , id (id (id (id 0))) :: Int
-  , id (id (id (id 1))) :: Int
-  , id (id (id (id (-1)))) :: Int
-  , id (id (id (id (f _)))) :: Int
-  , id (id (id (id (ord _)))) :: Int
-  , id (id (id (id (ord c)))) :: Int
-  , id (id (id (id (ord 'a')))) :: Int
-  , id (id (id (id (id _)))) :: Int
-  , id (id (id (id (id x)))) :: Int
-  , id (id (id (id (id y)))) :: Int
-  , id (id (id (id (id 0)))) :: Int
-  , id (id (id (id (id 1)))) :: Int
-  , id (id (id (id (id (ord _))))) :: Int
-  , id (id (id (id (id (id _))))) :: Int
-  , id (id (id (id (id (id x))))) :: Int
-  , id (id (id (id (id (id 0))))) :: Int
-  , id (id (id (id (id (id (id _)))))) :: Int
-  , id (id (id (id (id (abs _))))) :: Int
-  , id (id (id (id (id (negate _))))) :: Int
-  , id (id (id (id (id (head _))))) :: Int
-  , id (id (id (id (id (_ + _))))) :: Int
-  , id (id (id (id (abs _)))) :: Int
-  , id (id (id (id (abs x)))) :: Int
-  , id (id (id (id (abs 0)))) :: Int
-  , id (id (id (id (abs (id _))))) :: Int
-  , id (id (id (id (negate _)))) :: Int
-  , id (id (id (id (negate x)))) :: Int
-  , id (id (id (id (negate 0)))) :: Int
-  , id (id (id (id (negate (id _))))) :: Int
-  , id (id (id (id (head _)))) :: Int
-  , id (id (id (id (head xs)))) :: Int
-  , id (id (id (id (head [])))) :: Int
-  , id (id (id (id (head (_:_))))) :: Int
-  , id (id (id (id (_ * _)))) :: Int
-  , id (id (id (id (_ + _)))) :: Int
-  , id (id (id (id (_ + x)))) :: Int
-  , id (id (id (id (_ + 0)))) :: Int
-  , id (id (id (id (_ + id _)))) :: Int
-  , id (id (id (id (x + _)))) :: Int
-  , id (id (id (id (0 + _)))) :: Int
-  , id (id (id (id (id _ + _)))) :: Int
-  , id (id (id (abs _))) :: Int
-  , id (id (id (abs x))) :: Int
-  , id (id (id (abs y))) :: Int
-  , id (id (id (abs 0))) :: Int
-  , id (id (id (abs 1))) :: Int
-  , id (id (id (abs (ord _)))) :: Int
-  , id (id (id (abs (id _)))) :: Int
-  , id (id (id (abs (id x)))) :: Int
-  , id (id (id (abs (id 0)))) :: Int
-  , id (id (id (abs (id (id _))))) :: Int
-  , id (id (id (abs (abs _)))) :: Int
-  , id (id (id (abs (negate _)))) :: Int
-  , id (id (id (abs (head _)))) :: Int
-  , id (id (id (abs (_ + _)))) :: Int
-  , id (id (id (negate _))) :: Int
-  , id (id (id (negate x))) :: Int
-  , id (id (id (negate y))) :: Int
-  , id (id (id (negate 0))) :: Int
-  , id (id (id (negate 1))) :: Int
-  , id (id (id (negate (ord _)))) :: Int
-  , id (id (id (negate (id _)))) :: Int
-  , id (id (id (negate (id x)))) :: Int
-  , id (id (id (negate (id 0)))) :: Int
-  , id (id (id (negate (id (id _))))) :: Int
-  , id (id (id (negate (abs _)))) :: Int
-  , id (id (id (negate (negate _)))) :: Int
-  , id (id (id (negate (head _)))) :: Int
-  , id (id (id (negate (_ + _)))) :: Int
-  , id (id (id (head _))) :: Int
-  , id (id (id (head xs))) :: Int
-  , id (id (id (head ys))) :: Int
-  , id (id (id (head []))) :: Int
-  , id (id (id (head [0]))) :: Int
-  , id (id (id (head (tail _)))) :: Int
-  , id (id (id (head (_:_)))) :: Int
-  , id (id (id (head (_:xs)))) :: Int
-  , id (id (id (head [_]))) :: Int
-  , id (id (id (head (_:_:_)))) :: Int
-  , id (id (id (head (x:_)))) :: Int
-  , id (id (id (head (0:_)))) :: Int
-  , id (id (id (head (id _:_)))) :: Int
-  , id (id (id (head (_ ++ _)))) :: Int
-  , id (id (id (_ * _))) :: Int
-  , id (id (id (_ * x))) :: Int
-  , id (id (id (_ * 0))) :: Int
-  , id (id (id (_ * id _))) :: Int
-  , id (id (id (x * _))) :: Int
-  , id (id (id (0 * _))) :: Int
-  , id (id (id (id _ * _))) :: Int
-  , id (id (id (_ + _))) :: Int
-  , id (id (id (_ + x))) :: Int
-  , id (id (id (_ + y))) :: Int
-  , id (id (id (_ + 0))) :: Int
-  , id (id (id (_ + 1))) :: Int
-  , id (id (id (_ + ord _))) :: Int
-  , id (id (id (_ + id _))) :: Int
-  , id (id (id (_ + id x))) :: Int
-  , id (id (id (_ + id 0))) :: Int
-  , id (id (id (_ + id (id _)))) :: Int
-  , id (id (id (_ + abs _))) :: Int
-  , id (id (id (_ + negate _))) :: Int
-  , id (id (id (_ + head _))) :: Int
-  , id (id (id (_ + (_ + _)))) :: Int
-  , id (id (id (x + _))) :: Int
-  , id (id (id (x + x))) :: Int
-  , id (id (id (x + 0))) :: Int
-  , id (id (id (x + id _))) :: Int
-  , id (id (id (y + _))) :: Int
-  , id (id (id (0 + _))) :: Int
-  , id (id (id (0 + x))) :: Int
-  , id (id (id (0 + 0))) :: Int
-  , id (id (id (0 + id _))) :: Int
-  , id (id (id (1 + _))) :: Int
-  , id (id (id (ord _ + _))) :: Int
-  , id (id (id (id _ + _))) :: Int
-  , id (id (id (id _ + x))) :: Int
-  , id (id (id (id _ + 0))) :: Int
-  , id (id (id (id _ + id _))) :: Int
-  , id (id (id (id x + _))) :: Int
-  , id (id (id (id 0 + _))) :: Int
-  , id (id (id (id (id _) + _))) :: Int
-  , id (id (id (abs _ + _))) :: Int
-  , id (id (id (negate _ + _))) :: Int
-  , id (id (id (head _ + _))) :: Int
-  , id (id (id ((_ + _) + _))) :: Int
-  , id (id (abs _)) :: Int
-  , id (id (abs x)) :: Int
-  , id (id (abs y)) :: Int
-  , id (id (abs z)) :: Int
-  , id (id (abs 0)) :: Int
-  , id (id (abs 1)) :: Int
-  , id (id (abs (-1))) :: Int
-  , id (id (abs (f _))) :: Int
-  , id (id (abs (ord _))) :: Int
-  , id (id (abs (ord c))) :: Int
-  , id (id (abs (ord 'a'))) :: Int
-  , id (id (abs (id _))) :: Int
-  , id (id (abs (id x))) :: Int
-  , id (id (abs (id y))) :: Int
-  , id (id (abs (id 0))) :: Int
-  , id (id (abs (id 1))) :: Int
-  , id (id (abs (id (ord _)))) :: Int
-  , id (id (abs (id (id _)))) :: Int
-  , id (id (abs (id (id x)))) :: Int
-  , id (id (abs (id (id 0)))) :: Int
-  , id (id (abs (id (id (id _))))) :: Int
-  , id (id (abs (id (abs _)))) :: Int
-  , id (id (abs (id (negate _)))) :: Int
-  , id (id (abs (id (head _)))) :: Int
-  , id (id (abs (id (_ + _)))) :: Int
-  , id (id (abs (abs _))) :: Int
-  , id (id (abs (abs x))) :: Int
-  , id (id (abs (abs 0))) :: Int
-  , id (id (abs (abs (id _)))) :: Int
-  , id (id (abs (negate _))) :: Int
-  , id (id (abs (negate x))) :: Int
-  , id (id (abs (negate 0))) :: Int
-  , id (id (abs (negate (id _)))) :: Int
-  , id (id (abs (head _))) :: Int
-  , id (id (abs (head xs))) :: Int
-  , id (id (abs (head []))) :: Int
-  , id (id (abs (head (_:_)))) :: Int
-  , id (id (abs (_ * _))) :: Int
-  , id (id (abs (_ + _))) :: Int
-  , id (id (abs (_ + x))) :: Int
-  , id (id (abs (_ + 0))) :: Int
-  , id (id (abs (_ + id _))) :: Int
-  , id (id (abs (x + _))) :: Int
-  , id (id (abs (0 + _))) :: Int
-  , id (id (abs (id _ + _))) :: Int
-  , id (id (negate _)) :: Int
-  , id (id (negate x)) :: Int
-  , id (id (negate y)) :: Int
-  , id (id (negate z)) :: Int
-  , id (id (negate 0)) :: Int
-  , id (id (negate 1)) :: Int
-  , id (id (negate (-1))) :: Int
-  , id (id (negate (f _))) :: Int
-  , id (id (negate (ord _))) :: Int
-  , id (id (negate (ord c))) :: Int
-  , id (id (negate (ord 'a'))) :: Int
-  , id (id (negate (id _))) :: Int
-  , id (id (negate (id x))) :: Int
-  , id (id (negate (id y))) :: Int
-  , id (id (negate (id 0))) :: Int
-  , id (id (negate (id 1))) :: Int
-  , id (id (negate (id (ord _)))) :: Int
-  , id (id (negate (id (id _)))) :: Int
-  , id (id (negate (id (id x)))) :: Int
-  , id (id (negate (id (id 0)))) :: Int
-  , id (id (negate (id (id (id _))))) :: Int
-  , id (id (negate (id (abs _)))) :: Int
-  , id (id (negate (id (negate _)))) :: Int
-  , id (id (negate (id (head _)))) :: Int
-  , id (id (negate (id (_ + _)))) :: Int
-  , id (id (negate (abs _))) :: Int
-  , id (id (negate (abs x))) :: Int
-  , id (id (negate (abs 0))) :: Int
-  , id (id (negate (abs (id _)))) :: Int
-  , id (id (negate (negate _))) :: Int
-  , id (id (negate (negate x))) :: Int
-  , id (id (negate (negate 0))) :: Int
-  , id (id (negate (negate (id _)))) :: Int
-  , id (id (negate (head _))) :: Int
-  , id (id (negate (head xs))) :: Int
-  , id (id (negate (head []))) :: Int
-  , id (id (negate (head (_:_)))) :: Int
-  , id (id (negate (_ * _))) :: Int
-  , id (id (negate (_ + _))) :: Int
-  , id (id (negate (_ + x))) :: Int
-  , id (id (negate (_ + 0))) :: Int
-  , id (id (negate (_ + id _))) :: Int
-  , id (id (negate (x + _))) :: Int
-  , id (id (negate (0 + _))) :: Int
-  , id (id (negate (id _ + _))) :: Int
-  , id (id (head _)) :: Int
-  , id (id (head xs)) :: Int
-  , id (id (head ys)) :: Int
-  , id (id (head zs)) :: Int
-  , id (id (head [])) :: Int
-  , id (id (head [0])) :: Int
-  , id (id (head [1])) :: Int
-  , id (id (head [0,0])) :: Int
-  , id (id (head (sort _))) :: Int
-  , id (id (head (tail _))) :: Int
-  , id (id (head (tail xs))) :: Int
-  , id (id (head (tail []))) :: Int
-  , id (id (head (tail (_:_)))) :: Int
-  , id (id (head (_:_))) :: Int
-  , id (id (head (_:xs))) :: Int
-  , id (id (head (_:ys))) :: Int
-  , id (id (head [_])) :: Int
-  , id (id (head [_,0])) :: Int
-  , id (id (head (_:tail _))) :: Int
-  , id (id (head (_:_:_))) :: Int
-  , id (id (head (_:_:xs))) :: Int
-  , id (id (head [_,_])) :: Int
-  , id (id (head (_:_:_:_))) :: Int
-  , id (id (head (_:x:_))) :: Int
-  , id (id (head (_:0:_))) :: Int
-  , id (id (head (_:id _:_))) :: Int
-  , id (id (head (_:(_ ++ _)))) :: Int
-  , id (id (head (x:_))) :: Int
-  , id (id (head (x:xs))) :: Int
-  , id (id (head [x])) :: Int
-  , id (id (head (x:_:_))) :: Int
-  , id (id (head (y:_))) :: Int
-  , id (id (head (0:_))) :: Int
-  , id (id (head (0:xs))) :: Int
-  , id (id (head [0])) :: Int
-  , id (id (head (0:_:_))) :: Int
-  , id (id (head (1:_))) :: Int
-  , id (id (head (ord _:_))) :: Int
-  , id (id (head (id _:_))) :: Int
-  , id (id (head (id _:xs))) :: Int
-  , id (id (head [id _])) :: Int
-  , id (id (head (id _:_:_))) :: Int
-  , id (id (head (id x:_))) :: Int
-  , id (id (head (id 0:_))) :: Int
-  , id (id (head (id (id _):_))) :: Int
-  , id (id (head (abs _:_))) :: Int
-  , id (id (head (negate _:_))) :: Int
-  , id (id (head (head _:_))) :: Int
-  , id (id (head (_ + _:_))) :: Int
-  , id (id (head (insert _ _))) :: Int
-  , id (id (head (_ ++ _))) :: Int
-  , id (id (head (_ ++ xs))) :: Int
-  , id (id (head (_ ++ []))) :: Int
-  , id (id (head (_ ++ (_:_)))) :: Int
-  , id (id (head (xs ++ _))) :: Int
-  , id (id (head ([] ++ _))) :: Int
-  , id (id (head ((_:_) ++ _))) :: Int
-  , id (id (_ * _)) :: Int
-  , id (id (_ * x)) :: Int
-  , id (id (_ * y)) :: Int
-  , id (id (_ * 0)) :: Int
-  , id (id (_ * 1)) :: Int
-  , id (id (_ * ord _)) :: Int
-  , id (id (_ * id _)) :: Int
-  , id (id (_ * id x)) :: Int
-  , id (id (_ * id 0)) :: Int
-  , id (id (_ * id (id _))) :: Int
-  , id (id (_ * abs _)) :: Int
-  , id (id (_ * negate _)) :: Int
-  , id (id (_ * head _)) :: Int
-  , id (id (_ * (_ + _))) :: Int
-  , id (id (x * _)) :: Int
-  , id (id (x * x)) :: Int
-  , id (id (x * 0)) :: Int
-  , id (id (x * id _)) :: Int
-  , id (id (y * _)) :: Int
-  , id (id (0 * _)) :: Int
-  , id (id (0 * x)) :: Int
-  , id (id (0 * 0)) :: Int
-  , id (id (0 * id _)) :: Int
-  , id (id (1 * _)) :: Int
-  , id (id (ord _ * _)) :: Int
-  , id (id (id _ * _)) :: Int
-  , id (id (id _ * x)) :: Int
-  , id (id (id _ * 0)) :: Int
-  , id (id (id _ * id _)) :: Int
-  , id (id (id x * _)) :: Int
-  , id (id (id 0 * _)) :: Int
-  , id (id (id (id _) * _)) :: Int
-  , id (id (abs _ * _)) :: Int
-  , id (id (negate _ * _)) :: Int
-  , id (id (head _ * _)) :: Int
-  , id (id ((_ + _) * _)) :: Int
-  , id (id (_ + _)) :: Int
-  , id (id (_ + x)) :: Int
-  , id (id (_ + y)) :: Int
-  , id (id (_ + z)) :: Int
-  , id (id (_ + 0)) :: Int
-  , id (id (_ + 1)) :: Int
-  , id (id (_ + (-1))) :: Int
-  , id (id (_ + f _)) :: Int
-  , id (id (_ + ord _)) :: Int
-  , id (id (_ + ord c)) :: Int
-  , id (id (_ + ord 'a')) :: Int
-  , id (id (_ + id _)) :: Int
-  , id (id (_ + id x)) :: Int
-  , id (id (_ + id y)) :: Int
-  , id (id (_ + id 0)) :: Int
-  , id (id (_ + id 1)) :: Int
-  , id (id (_ + id (ord _))) :: Int
-  , id (id (_ + id (id _))) :: Int
-  , id (id (_ + id (id x))) :: Int
-  , id (id (_ + id (id 0))) :: Int
-  , id (id (_ + id (id (id _)))) :: Int
-  , id (id (_ + id (abs _))) :: Int
-  , id (id (_ + id (negate _))) :: Int
-  , id (id (_ + id (head _))) :: Int
-  , id (id (_ + id (_ + _))) :: Int
-  , id (id (_ + abs _)) :: Int
-  , id (id (_ + abs x)) :: Int
-  , id (id (_ + abs 0)) :: Int
-  , id (id (_ + abs (id _))) :: Int
-  , id (id (_ + negate _)) :: Int
-  , id (id (_ + negate x)) :: Int
-  , id (id (_ + negate 0)) :: Int
-  , id (id (_ + negate (id _))) :: Int
-  , id (id (_ + head _)) :: Int
-  , id (id (_ + head xs)) :: Int
-  , id (id (_ + head [])) :: Int
-  , id (id (_ + head (_:_))) :: Int
-  , id (id (_ + _ * _)) :: Int
-  , id (id (_ + (_ + _))) :: Int
-  , id (id (_ + (_ + x))) :: Int
-  , id (id (_ + (_ + 0))) :: Int
-  , id (id (_ + (_ + id _))) :: Int
-  , id (id (_ + (x + _))) :: Int
-  , id (id (_ + (0 + _))) :: Int
-  , id (id (_ + (id _ + _))) :: Int
-  , id (id (x + _)) :: Int
-  , id (id (x + x)) :: Int
-  , id (id (x + y)) :: Int
-  , id (id (x + 0)) :: Int
-  , id (id (x + 1)) :: Int
-  , id (id (x + ord _)) :: Int
-  , id (id (x + id _)) :: Int
-  , id (id (x + id x)) :: Int
-  , id (id (x + id 0)) :: Int
-  , id (id (x + id (id _))) :: Int
-  , id (id (x + abs _)) :: Int
-  , id (id (x + negate _)) :: Int
-  , id (id (x + head _)) :: Int
-  , id (id (x + (_ + _))) :: Int
-  , id (id (y + _)) :: Int
-  , id (id (y + x)) :: Int
-  , id (id (y + 0)) :: Int
-  , id (id (y + id _)) :: Int
-  , id (id (z + _)) :: Int
-  , id (id (0 + _)) :: Int
-  , id (id (0 + x)) :: Int
-  , id (id (0 + y)) :: Int
-  , id (id (0 + 0)) :: Int
-  , id (id (0 + 1)) :: Int
-  , id (id (0 + ord _)) :: Int
-  , id (id (0 + id _)) :: Int
-  , id (id (0 + id x)) :: Int
-  , id (id (0 + id 0)) :: Int
-  , id (id (0 + id (id _))) :: Int
-  , id (id (0 + abs _)) :: Int
-  , id (id (0 + negate _)) :: Int
-  , id (id (0 + head _)) :: Int
-  , id (id (0 + (_ + _))) :: Int
-  , id (id (1 + _)) :: Int
-  , id (id (1 + x)) :: Int
-  , id (id (1 + 0)) :: Int
-  , id (id (1 + id _)) :: Int
-  , id (id ((-1) + _)) :: Int
-  , id (id (f _ + _)) :: Int
-  , id (id (ord _ + _)) :: Int
-  , id (id (ord _ + x)) :: Int
-  , id (id (ord _ + 0)) :: Int
-  , id (id (ord _ + id _)) :: Int
-  , id (id (ord c + _)) :: Int
-  , id (id (ord 'a' + _)) :: Int
-  , id (id (id _ + _)) :: Int
-  , id (id (id _ + x)) :: Int
-  , id (id (id _ + y)) :: Int
-  , id (id (id _ + 0)) :: Int
-  , id (id (id _ + 1)) :: Int
-  , id (id (id _ + ord _)) :: Int
-  , id (id (id _ + id _)) :: Int
-  , id (id (id _ + id x)) :: Int
-  , id (id (id _ + id 0)) :: Int
-  , id (id (id _ + id (id _))) :: Int
-  , id (id (id _ + abs _)) :: Int
-  , id (id (id _ + negate _)) :: Int
-  , id (id (id _ + head _)) :: Int
-  , id (id (id _ + (_ + _))) :: Int
-  , id (id (id x + _)) :: Int
-  , id (id (id x + x)) :: Int
-  , id (id (id x + 0)) :: Int
-  , id (id (id x + id _)) :: Int
-  , id (id (id y + _)) :: Int
-  , id (id (id 0 + _)) :: Int
-  , id (id (id 0 + x)) :: Int
-  , id (id (id 0 + 0)) :: Int
-  , id (id (id 0 + id _)) :: Int
-  , id (id (id 1 + _)) :: Int
-  , id (id (id (ord _) + _)) :: Int
-  , id (id (id (id _) + _)) :: Int
-  , id (id (id (id _) + x)) :: Int
-  , id (id (id (id _) + 0)) :: Int
-  , id (id (id (id _) + id _)) :: Int
-  , id (id (id (id x) + _)) :: Int
-  , id (id (id (id 0) + _)) :: Int
-  , id (id (id (id (id _)) + _)) :: Int
-  , id (id (id (abs _) + _)) :: Int
-  , id (id (id (negate _) + _)) :: Int
-  , id (id (id (head _) + _)) :: Int
-  , id (id (id (_ + _) + _)) :: Int
-  , id (id (abs _ + _)) :: Int
-  , id (id (abs _ + x)) :: Int
-  , id (id (abs _ + 0)) :: Int
-  , id (id (abs _ + id _)) :: Int
-  , id (id (abs x + _)) :: Int
-  , id (id (abs 0 + _)) :: Int
-  , id (id (abs (id _) + _)) :: Int
-  , id (id (negate _ + _)) :: Int
-  , id (id (negate _ + x)) :: Int
-  , id (id (negate _ + 0)) :: Int
-  , id (id (negate _ + id _)) :: Int
-  , id (id (negate x + _)) :: Int
-  , id (id (negate 0 + _)) :: Int
-  , id (id (negate (id _) + _)) :: Int
-  , id (id (head _ + _)) :: Int
-  , id (id (head _ + x)) :: Int
-  , id (id (head _ + 0)) :: Int
-  , id (id (head _ + id _)) :: Int
-  , id (id (head xs + _)) :: Int
-  , id (id (head [] + _)) :: Int
-  , id (id (head (_:_) + _)) :: Int
-  , id (id (_ * _ + _)) :: Int
-  , id (id ((_ + _) + _)) :: Int
-  , id (id ((_ + _) + x)) :: Int
-  , id (id ((_ + _) + 0)) :: Int
-  , id (id ((_ + _) + id _)) :: Int
-  , id (id ((_ + x) + _)) :: Int
-  , id (id ((_ + 0) + _)) :: Int
-  , id (id ((_ + id _) + _)) :: Int
-  , id (id ((x + _) + _)) :: Int
-  , id (id ((0 + _) + _)) :: Int
-  , id (id ((id _ + _) + _)) :: Int
-  , id (abs _) :: Int
-  , id (abs x) :: Int
-  , id (abs y) :: Int
-  , id (abs z) :: Int
-  , id (abs x') :: Int
-  , id (abs 0) :: Int
-  , id (abs 1) :: Int
-  , id (abs 2) :: Int
-  , id (abs (-1)) :: Int
-  , id (abs (f _)) :: Int
-  , id (abs (f x)) :: Int
-  , id (abs (f 0)) :: Int
-  , id (abs (f (id _))) :: Int
-  , id (abs (g _)) :: Int
-  , id (abs (ord _)) :: Int
-  , id (abs (ord c)) :: Int
-  , id (abs (ord d)) :: Int
-  , id (abs (ord ' ')) :: Int
-  , id (abs (ord 'a')) :: Int
-  , id (abs (id _)) :: Int
-  , id (abs (id x)) :: Int
-  , id (abs (id y)) :: Int
-  , id (abs (id z)) :: Int
-  , id (abs (id 0)) :: Int
-  , id (abs (id 1)) :: Int
-  , id (abs (id (-1))) :: Int
-  , id (abs (id (f _))) :: Int
-  , id (abs (id (ord _))) :: Int
-  , id (abs (id (ord c))) :: Int
-  , id (abs (id (ord 'a'))) :: Int
-  , id (abs (id (id _))) :: Int
-  , id (abs (id (id x))) :: Int
-  , id (abs (id (id y))) :: Int
-  , id (abs (id (id 0))) :: Int
-  , id (abs (id (id 1))) :: Int
-  , id (abs (id (id (ord _)))) :: Int
-  , id (abs (id (id (id _)))) :: Int
-  , id (abs (id (id (id x)))) :: Int
-  , id (abs (id (id (id 0)))) :: Int
-  , id (abs (id (id (id (id _))))) :: Int
-  , id (abs (id (id (abs _)))) :: Int
-  , id (abs (id (id (negate _)))) :: Int
-  , id (abs (id (id (head _)))) :: Int
-  , id (abs (id (id (_ + _)))) :: Int
-  , id (abs (id (abs _))) :: Int
-  , id (abs (id (abs x))) :: Int
-  , id (abs (id (abs 0))) :: Int
-  , id (abs (id (abs (id _)))) :: Int
-  , id (abs (id (negate _))) :: Int
-  , id (abs (id (negate x))) :: Int
-  , id (abs (id (negate 0))) :: Int
-  , id (abs (id (negate (id _)))) :: Int
-  , id (abs (id (head _))) :: Int
-  , id (abs (id (head xs))) :: Int
-  , id (abs (id (head []))) :: Int
-  , id (abs (id (head (_:_)))) :: Int
-  , id (abs (id (_ * _))) :: Int
-  , id (abs (id (_ + _))) :: Int
-  , id (abs (id (_ + x))) :: Int
-  , id (abs (id (_ + 0))) :: Int
-  , id (abs (id (_ + id _))) :: Int
-  , id (abs (id (x + _))) :: Int
-  , id (abs (id (0 + _))) :: Int
-  , id (abs (id (id _ + _))) :: Int
-  , id (abs (abs _)) :: Int
-  , id (abs (abs x)) :: Int
-  , id (abs (abs y)) :: Int
-  , id (abs (abs 0)) :: Int
-  , id (abs (abs 1)) :: Int
-  , id (abs (abs (ord _))) :: Int
-  , id (abs (abs (id _))) :: Int
-  , id (abs (abs (id x))) :: Int
-  , id (abs (abs (id 0))) :: Int
-  , id (abs (abs (id (id _)))) :: Int
-  , id (abs (abs (abs _))) :: Int
-  , id (abs (abs (negate _))) :: Int
-  , id (abs (abs (head _))) :: Int
-  , id (abs (abs (_ + _))) :: Int
-  , id (abs (negate _)) :: Int
-  , id (abs (negate x)) :: Int
-  , id (abs (negate y)) :: Int
-  , id (abs (negate 0)) :: Int
-  , id (abs (negate 1)) :: Int
-  , id (abs (negate (ord _))) :: Int
-  , id (abs (negate (id _))) :: Int
-  , id (abs (negate (id x))) :: Int
-  , id (abs (negate (id 0))) :: Int
-  , id (abs (negate (id (id _)))) :: Int
-  , id (abs (negate (abs _))) :: Int
-  , id (abs (negate (negate _))) :: Int
-  , id (abs (negate (head _))) :: Int
-  , id (abs (negate (_ + _))) :: Int
-  , id (abs (head _)) :: Int
-  , id (abs (head xs)) :: Int
-  , id (abs (head ys)) :: Int
-  , id (abs (head [])) :: Int
-  , id (abs (head [0])) :: Int
-  , id (abs (head (tail _))) :: Int
-  , id (abs (head (_:_))) :: Int
-  , id (abs (head (_:xs))) :: Int
-  , id (abs (head [_])) :: Int
-  , id (abs (head (_:_:_))) :: Int
-  , id (abs (head (x:_))) :: Int
-  , id (abs (head (0:_))) :: Int
-  , id (abs (head (id _:_))) :: Int
-  , id (abs (head (_ ++ _))) :: Int
-  , id (abs (_ * _)) :: Int
-  , id (abs (_ * x)) :: Int
-  , id (abs (_ * 0)) :: Int
-  , id (abs (_ * id _)) :: Int
-  , id (abs (x * _)) :: Int
-  , id (abs (0 * _)) :: Int
-  , id (abs (id _ * _)) :: Int
-  , id (abs (_ + _)) :: Int
-  , id (abs (_ + x)) :: Int
-  , id (abs (_ + y)) :: Int
-  , id (abs (_ + 0)) :: Int
-  , id (abs (_ + 1)) :: Int
-  , id (abs (_ + ord _)) :: Int
-  , id (abs (_ + id _)) :: Int
-  , id (abs (_ + id x)) :: Int
-  , id (abs (_ + id 0)) :: Int
-  , id (abs (_ + id (id _))) :: Int
-  , id (abs (_ + abs _)) :: Int
-  , id (abs (_ + negate _)) :: Int
-  , id (abs (_ + head _)) :: Int
-  , id (abs (_ + (_ + _))) :: Int
-  , id (abs (x + _)) :: Int
-  , id (abs (x + x)) :: Int
-  , id (abs (x + 0)) :: Int
-  , id (abs (x + id _)) :: Int
-  , id (abs (y + _)) :: Int
-  , id (abs (0 + _)) :: Int
-  , id (abs (0 + x)) :: Int
-  , id (abs (0 + 0)) :: Int
-  , id (abs (0 + id _)) :: Int
-  , id (abs (1 + _)) :: Int
-  , id (abs (ord _ + _)) :: Int
-  , id (abs (id _ + _)) :: Int
-  , id (abs (id _ + x)) :: Int
-  , id (abs (id _ + 0)) :: Int
-  , id (abs (id _ + id _)) :: Int
-  , id (abs (id x + _)) :: Int
-  , id (abs (id 0 + _)) :: Int
-  , id (abs (id (id _) + _)) :: Int
-  , id (abs (abs _ + _)) :: Int
-  , id (abs (negate _ + _)) :: Int
-  , id (abs (head _ + _)) :: Int
-  , id (abs ((_ + _) + _)) :: Int
-  , id (negate _) :: Int
-  , id (negate x) :: Int
-  , id (negate y) :: Int
-  , id (negate z) :: Int
-  , id (negate x') :: Int
-  , id (negate 0) :: Int
-  , id (negate 1) :: Int
-  , id (negate 2) :: Int
-  , id (negate (-1)) :: Int
-  , id (negate (f _)) :: Int
-  , id (negate (f x)) :: Int
-  , id (negate (f 0)) :: Int
-  , id (negate (f (id _))) :: Int
-  , id (negate (g _)) :: Int
-  , id (negate (ord _)) :: Int
-  , id (negate (ord c)) :: Int
-  , id (negate (ord d)) :: Int
-  , id (negate (ord ' ')) :: Int
-  , id (negate (ord 'a')) :: Int
-  , id (negate (id _)) :: Int
-  , id (negate (id x)) :: Int
-  , id (negate (id y)) :: Int
-  , id (negate (id z)) :: Int
-  , id (negate (id 0)) :: Int
-  , id (negate (id 1)) :: Int
-  , id (negate (id (-1))) :: Int
-  , id (negate (id (f _))) :: Int
-  , id (negate (id (ord _))) :: Int
-  , id (negate (id (ord c))) :: Int
-  , id (negate (id (ord 'a'))) :: Int
-  , id (negate (id (id _))) :: Int
-  , id (negate (id (id x))) :: Int
-  , id (negate (id (id y))) :: Int
-  , id (negate (id (id 0))) :: Int
-  , id (negate (id (id 1))) :: Int
-  , id (negate (id (id (ord _)))) :: Int
-  , id (negate (id (id (id _)))) :: Int
-  , id (negate (id (id (id x)))) :: Int
-  , id (negate (id (id (id 0)))) :: Int
-  , id (negate (id (id (id (id _))))) :: Int
-  , id (negate (id (id (abs _)))) :: Int
-  , id (negate (id (id (negate _)))) :: Int
-  , id (negate (id (id (head _)))) :: Int
-  , id (negate (id (id (_ + _)))) :: Int
-  , id (negate (id (abs _))) :: Int
-  , id (negate (id (abs x))) :: Int
-  , id (negate (id (abs 0))) :: Int
-  , id (negate (id (abs (id _)))) :: Int
-  , id (negate (id (negate _))) :: Int
-  , id (negate (id (negate x))) :: Int
-  , id (negate (id (negate 0))) :: Int
-  , id (negate (id (negate (id _)))) :: Int
-  , id (negate (id (head _))) :: Int
-  , id (negate (id (head xs))) :: Int
-  , id (negate (id (head []))) :: Int
-  , id (negate (id (head (_:_)))) :: Int
-  , id (negate (id (_ * _))) :: Int
-  , id (negate (id (_ + _))) :: Int
-  , id (negate (id (_ + x))) :: Int
-  , id (negate (id (_ + 0))) :: Int
-  , id (negate (id (_ + id _))) :: Int
-  , id (negate (id (x + _))) :: Int
-  , id (negate (id (0 + _))) :: Int
-  , id (negate (id (id _ + _))) :: Int
-  , id (negate (abs _)) :: Int
-  , id (negate (abs x)) :: Int
-  , id (negate (abs y)) :: Int
-  , id (negate (abs 0)) :: Int
-  , id (negate (abs 1)) :: Int
-  , id (negate (abs (ord _))) :: Int
-  , id (negate (abs (id _))) :: Int
-  , id (negate (abs (id x))) :: Int
-  , id (negate (abs (id 0))) :: Int
-  , id (negate (abs (id (id _)))) :: Int
-  , id (negate (abs (abs _))) :: Int
-  , id (negate (abs (negate _))) :: Int
-  , id (negate (abs (head _))) :: Int
-  , id (negate (abs (_ + _))) :: Int
-  , id (negate (negate _)) :: Int
-  , id (negate (negate x)) :: Int
-  , id (negate (negate y)) :: Int
-  , id (negate (negate 0)) :: Int
-  , id (negate (negate 1)) :: Int
-  , id (negate (negate (ord _))) :: Int
-  , id (negate (negate (id _))) :: Int
-  , id (negate (negate (id x))) :: Int
-  , id (negate (negate (id 0))) :: Int
-  , id (negate (negate (id (id _)))) :: Int
-  , id (negate (negate (abs _))) :: Int
-  , id (negate (negate (negate _))) :: Int
-  , id (negate (negate (head _))) :: Int
-  , id (negate (negate (_ + _))) :: Int
-  , id (negate (head _)) :: Int
-  , id (negate (head xs)) :: Int
-  , id (negate (head ys)) :: Int
-  , id (negate (head [])) :: Int
-  , id (negate (head [0])) :: Int
-  , id (negate (head (tail _))) :: Int
-  , id (negate (head (_:_))) :: Int
-  , id (negate (head (_:xs))) :: Int
-  , id (negate (head [_])) :: Int
-  , id (negate (head (_:_:_))) :: Int
-  , id (negate (head (x:_))) :: Int
-  , id (negate (head (0:_))) :: Int
-  , id (negate (head (id _:_))) :: Int
-  , id (negate (head (_ ++ _))) :: Int
-  , id (negate (_ * _)) :: Int
-  , id (negate (_ * x)) :: Int
-  , id (negate (_ * 0)) :: Int
-  , id (negate (_ * id _)) :: Int
-  , id (negate (x * _)) :: Int
-  , id (negate (0 * _)) :: Int
-  , id (negate (id _ * _)) :: Int
-  , id (negate (_ + _)) :: Int
-  , id (negate (_ + x)) :: Int
-  , id (negate (_ + y)) :: Int
-  , id (negate (_ + 0)) :: Int
-  , id (negate (_ + 1)) :: Int
-  , id (negate (_ + ord _)) :: Int
-  , id (negate (_ + id _)) :: Int
-  , id (negate (_ + id x)) :: Int
-  , id (negate (_ + id 0)) :: Int
-  , id (negate (_ + id (id _))) :: Int
-  , id (negate (_ + abs _)) :: Int
-  , id (negate (_ + negate _)) :: Int
-  , id (negate (_ + head _)) :: Int
-  , id (negate (_ + (_ + _))) :: Int
-  , id (negate (x + _)) :: Int
-  , id (negate (x + x)) :: Int
-  , id (negate (x + 0)) :: Int
-  , id (negate (x + id _)) :: Int
-  , id (negate (y + _)) :: Int
-  , id (negate (0 + _)) :: Int
-  , id (negate (0 + x)) :: Int
-  , id (negate (0 + 0)) :: Int
-  , id (negate (0 + id _)) :: Int
-  , id (negate (1 + _)) :: Int
-  , id (negate (ord _ + _)) :: Int
-  , id (negate (id _ + _)) :: Int
-  , id (negate (id _ + x)) :: Int
-  , id (negate (id _ + 0)) :: Int
-  , id (negate (id _ + id _)) :: Int
-  , id (negate (id x + _)) :: Int
-  , id (negate (id 0 + _)) :: Int
-  , id (negate (id (id _) + _)) :: Int
-  , id (negate (abs _ + _)) :: Int
-  , id (negate (negate _ + _)) :: Int
-  , id (negate (head _ + _)) :: Int
-  , id (negate ((_ + _) + _)) :: Int
-  , id (head _) :: Int
-  , id (head xs) :: Int
-  , id (head ys) :: Int
-  , id (head zs) :: Int
-  , id (head xs') :: Int
-  , id (head []) :: Int
-  , id (head [0]) :: Int
-  , id (head [1]) :: Int
-  , id (head [-1]) :: Int
-  , id (head [0,0]) :: Int
-  , id (head [0,1]) :: Int
-  , id (head [1,0]) :: Int
-  , id (head [0,0,0]) :: Int
-  , id (head (sort _)) :: Int
-  , id (head (tail _)) :: Int
-  , id (head (tail xs)) :: Int
-  , id (head (tail ys)) :: Int
-  , id (head (tail [])) :: Int
-  , id (head (tail [0])) :: Int
-  , id (head (tail (tail _))) :: Int
-  , id (head (tail (_:_))) :: Int
-  , id (head (tail (_:xs))) :: Int
-  , id (head (tail [_])) :: Int
-  , id (head (tail (_:_:_))) :: Int
-  , id (head (tail (x:_))) :: Int
-  , id (head (tail (0:_))) :: Int
-  , id (head (tail (id _:_))) :: Int
-  , id (head (tail (_ ++ _))) :: Int
-  , id (head (_:_)) :: Int
-  , id (head (_:xs)) :: Int
-  , id (head (_:ys)) :: Int
-  , id (head (_:zs)) :: Int
-  , id (head [_]) :: Int
-  , id (head [_,0]) :: Int
-  , id (head [_,1]) :: Int
-  , id (head [_,0,0]) :: Int
-  , id (head (_:sort _)) :: Int
-  , id (head (_:tail _)) :: Int
-  , id (head (_:tail xs)) :: Int
-  , id (head (_:tail [])) :: Int
-  , id (head (_:tail (_:_))) :: Int
-  , id (head (_:_:_)) :: Int
-  , id (head (_:_:xs)) :: Int
-  , id (head (_:_:ys)) :: Int
-  , id (head [_,_]) :: Int
-  , id (head [_,_,0]) :: Int
-  , id (head (_:_:tail _)) :: Int
-  , id (head (_:_:_:_)) :: Int
-  , id (head (_:_:_:xs)) :: Int
-  , id (head [_,_,_]) :: Int
-  , id (head (_:_:_:_:_)) :: Int
-  , id (head (_:_:x:_)) :: Int
-  , id (head (_:_:0:_)) :: Int
-  , id (head (_:_:id _:_)) :: Int
-  , id (head (_:_:(_ ++ _))) :: Int
-  , id (head (_:x:_)) :: Int
-  , id (head (_:x:xs)) :: Int
-  , id (head [_,x]) :: Int
-  , id (head (_:x:_:_)) :: Int
-  , id (head (_:y:_)) :: Int
-  , id (head (_:0:_)) :: Int
-  , id (head (_:0:xs)) :: Int
-  , id (head [_,0]) :: Int
-  , id (head (_:0:_:_)) :: Int
-  , id (head (_:1:_)) :: Int
-  , id (head (_:ord _:_)) :: Int
-  , id (head (_:id _:_)) :: Int
-  , id (head (_:id _:xs)) :: Int
-  , id (head [_,id _]) :: Int
-  , id (head (_:id _:_:_)) :: Int
-  , id (head (_:id x:_)) :: Int
-  , id (head (_:id 0:_)) :: Int
-  , id (head (_:id (id _):_)) :: Int
-  , id (head (_:abs _:_)) :: Int
-  , id (head (_:negate _:_)) :: Int
-  , id (head (_:head _:_)) :: Int
-  , id (head (_:_ + _:_)) :: Int
-  , id (head (_:insert _ _)) :: Int
-  , id (head (_:(_ ++ _))) :: Int
-  , id (head (_:(_ ++ xs))) :: Int
-  , id (head (_:(_ ++ []))) :: Int
-  , id (head (_:(_ ++ (_:_)))) :: Int
-  , id (head (_:(xs ++ _))) :: Int
-  , id (head (_:([] ++ _))) :: Int
-  , id (head (_:((_:_) ++ _))) :: Int
-  , id (head (x:_)) :: Int
-  , id (head (x:xs)) :: Int
-  , id (head (x:ys)) :: Int
-  , id (head [x]) :: Int
-  , id (head [x,0]) :: Int
-  , id (head (x:tail _)) :: Int
-  , id (head (x:_:_)) :: Int
-  , id (head (x:_:xs)) :: Int
-  , id (head [x,_]) :: Int
-  , id (head (x:_:_:_)) :: Int
-  , id (head (x:x:_)) :: Int
-  , id (head (x:0:_)) :: Int
-  , id (head (x:id _:_)) :: Int
-  , id (head (x:(_ ++ _))) :: Int
-  , id (head (y:_)) :: Int
-  , id (head (y:xs)) :: Int
-  , id (head [y]) :: Int
-  , id (head (y:_:_)) :: Int
-  , id (head (z:_)) :: Int
-  , id (head (0:_)) :: Int
-  , id (head (0:xs)) :: Int
-  , id (head (0:ys)) :: Int
-  , id (head [0]) :: Int
-  , id (head [0,0]) :: Int
-  , id (head (0:tail _)) :: Int
-  , id (head (0:_:_)) :: Int
-  , id (head (0:_:xs)) :: Int
-  , id (head [0,_]) :: Int
-  , id (head (0:_:_:_)) :: Int
-  , id (head (0:x:_)) :: Int
-  , id (head (0:0:_)) :: Int
-  , id (head (0:id _:_)) :: Int
-  , id (head (0:(_ ++ _))) :: Int
-  , id (head (1:_)) :: Int
-  , id (head (1:xs)) :: Int
-  , id (head [1]) :: Int
-  , id (head (1:_:_)) :: Int
-  , id (head ((-1):_)) :: Int
-  , id (head (f _:_)) :: Int
-  , id (head (ord _:_)) :: Int
-  , id (head (ord _:xs)) :: Int
-  , id (head [ord _]) :: Int
-  , id (head (ord _:_:_)) :: Int
-  , id (head (ord c:_)) :: Int
-  , id (head (ord 'a':_)) :: Int
-  , id (head (id _:_)) :: Int
-  , id (head (id _:xs)) :: Int
-  , id (head (id _:ys)) :: Int
-  , id (head [id _]) :: Int
-  , id (head [id _,0]) :: Int
-  , id (head (id _:tail _)) :: Int
-  , id (head (id _:_:_)) :: Int
-  , id (head (id _:_:xs)) :: Int
-  , id (head [id _,_]) :: Int
-  , id (head (id _:_:_:_)) :: Int
-  , id (head (id _:x:_)) :: Int
-  , id (head (id _:0:_)) :: Int
-  , id (head (id _:id _:_)) :: Int
-  , id (head (id _:(_ ++ _))) :: Int
-  , id (head (id x:_)) :: Int
-  , id (head (id x:xs)) :: Int
-  , id (head [id x]) :: Int
-  , id (head (id x:_:_)) :: Int
-  , id (head (id y:_)) :: Int
-  , id (head (id 0:_)) :: Int
-  , id (head (id 0:xs)) :: Int
-  , id (head [id 0]) :: Int
-  , id (head (id 0:_:_)) :: Int
-  , id (head (id 1:_)) :: Int
-  , id (head (id (ord _):_)) :: Int
-  , id (head (id (id _):_)) :: Int
-  , id (head (id (id _):xs)) :: Int
-  , id (head [id (id _)]) :: Int
-  , id (head (id (id _):_:_)) :: Int
-  , id (head (id (id x):_)) :: Int
-  , id (head (id (id 0):_)) :: Int
-  , id (head (id (id (id _)):_)) :: Int
-  , id (head (id (abs _):_)) :: Int
-  , id (head (id (negate _):_)) :: Int
-  , id (head (id (head _):_)) :: Int
-  , id (head (id (_ + _):_)) :: Int
-  , id (head (abs _:_)) :: Int
-  , id (head (abs _:xs)) :: Int
-  , id (head [abs _]) :: Int
-  , id (head (abs _:_:_)) :: Int
-  , id (head (abs x:_)) :: Int
-  , id (head (abs 0:_)) :: Int
-  , id (head (abs (id _):_)) :: Int
-  , id (head (negate _:_)) :: Int
-  , id (head (negate _:xs)) :: Int
-  , id (head [negate _]) :: Int
-  , id (head (negate _:_:_)) :: Int
-  , id (head (negate x:_)) :: Int
-  , id (head (negate 0:_)) :: Int
-  , id (head (negate (id _):_)) :: Int
-  , id (head (head _:_)) :: Int
-  , id (head (head _:xs)) :: Int
-  , id (head [head _]) :: Int
-  , id (head (head _:_:_)) :: Int
-  , id (head (head xs:_)) :: Int
-  , id (head (head []:_)) :: Int
-  , id (head (head (_:_):_)) :: Int
-  , id (head (_ * _:_)) :: Int
-  , id (head (_ + _:_)) :: Int
-  , id (head (_ + _:xs)) :: Int
-  , id (head [_ + _]) :: Int
-  , id (head (_ + _:_:_)) :: Int
-  , id (head (_ + x:_)) :: Int
-  , id (head (_ + 0:_)) :: Int
-  , id (head (_ + id _:_)) :: Int
-  , id (head (x + _:_)) :: Int
-  , id (head (0 + _:_)) :: Int
-  , id (head (id _ + _:_)) :: Int
-  , id (head (insert _ _)) :: Int
-  , id (head (_ ++ _)) :: Int
-  , id (head (_ ++ xs)) :: Int
-  , id (head (_ ++ ys)) :: Int
-  , id (head (_ ++ [])) :: Int
-  , id (head (_ ++ [0])) :: Int
-  , id (head (_ ++ tail _)) :: Int
-  , id (head (_ ++ (_:_))) :: Int
-  , id (head (_ ++ (_:xs))) :: Int
-  , id (head (_ ++ [_])) :: Int
-  , id (head (_ ++ (_:_:_))) :: Int
-  , id (head (_ ++ (x:_))) :: Int
-  , id (head (_ ++ (0:_))) :: Int
-  , id (head (_ ++ (id _:_))) :: Int
-  , id (head (_ ++ (_ ++ _))) :: Int
-  , id (head (xs ++ _)) :: Int
-  , id (head (xs ++ xs)) :: Int
-  , id (head (xs ++ [])) :: Int
-  , id (head (xs ++ (_:_))) :: Int
-  , id (head (ys ++ _)) :: Int
-  , id (head ([] ++ _)) :: Int
-  , id (head ([] ++ xs)) :: Int
-  , id (head ([] ++ [])) :: Int
-  , id (head ([] ++ (_:_))) :: Int
-  , id (head ([0] ++ _)) :: Int
-  , id (head ((_:_) ++ _)) :: Int
-  , id (head ((_:_) ++ xs)) :: Int
-  , id (head ((_:_) ++ [])) :: Int
-  , id (head ((_:_) ++ (_:_))) :: Int
-  , id (head ((_:xs) ++ _)) :: Int
-  , id (head ([_] ++ _)) :: Int
-  , id (head ((_:_:_) ++ _)) :: Int
-  , id (head ((x:_) ++ _)) :: Int
-  , id (head ((0:_) ++ _)) :: Int
-  , id (head ((id _:_) ++ _)) :: Int
-  , id (_ * _) :: Int
-  , id (_ * x) :: Int
-  , id (_ * y) :: Int
-  , id (_ * z) :: Int
-  , id (_ * 0) :: Int
-  , id (_ * 1) :: Int
-  , id (_ * (-1)) :: Int
-  , id (_ * f _) :: Int
-  , id (_ * ord _) :: Int
-  , id (_ * ord c) :: Int
-  , id (_ * ord 'a') :: Int
-  , id (_ * id _) :: Int
-  , id (_ * id x) :: Int
-  , id (_ * id y) :: Int
-  , id (_ * id 0) :: Int
-  , id (_ * id 1) :: Int
-  , id (_ * id (ord _)) :: Int
-  , id (_ * id (id _)) :: Int
-  , id (_ * id (id x)) :: Int
-  , id (_ * id (id 0)) :: Int
-  , id (_ * id (id (id _))) :: Int
-  , id (_ * id (abs _)) :: Int
-  , id (_ * id (negate _)) :: Int
-  , id (_ * id (head _)) :: Int
-  , id (_ * id (_ + _)) :: Int
-  , id (_ * abs _) :: Int
-  , id (_ * abs x) :: Int
-  , id (_ * abs 0) :: Int
-  , id (_ * abs (id _)) :: Int
-  , id (_ * negate _) :: Int
-  , id (_ * negate x) :: Int
-  , id (_ * negate 0) :: Int
-  , id (_ * negate (id _)) :: Int
-  , id (_ * head _) :: Int
-  , id (_ * head xs) :: Int
-  , id (_ * head []) :: Int
-  , id (_ * head (_:_)) :: Int
-  , id (_ * (_ * _)) :: Int
-  , id (_ * (_ + _)) :: Int
-  , id (_ * (_ + x)) :: Int
-  , id (_ * (_ + 0)) :: Int
-  , id (_ * (_ + id _)) :: Int
-  , id (_ * (x + _)) :: Int
-  , id (_ * (0 + _)) :: Int
-  , id (_ * (id _ + _)) :: Int
-  , id (x * _) :: Int
-  , id (x * x) :: Int
-  , id (x * y) :: Int
-  , id (x * 0) :: Int
-  , id (x * 1) :: Int
-  , id (x * ord _) :: Int
-  , id (x * id _) :: Int
-  , id (x * id x) :: Int
-  , id (x * id 0) :: Int
-  , id (x * id (id _)) :: Int
-  , id (x * abs _) :: Int
-  , id (x * negate _) :: Int
-  , id (x * head _) :: Int
-  , id (x * (_ + _)) :: Int
-  , id (y * _) :: Int
-  , id (y * x) :: Int
-  , id (y * 0) :: Int
-  , id (y * id _) :: Int
-  , id (z * _) :: Int
-  , id (0 * _) :: Int
-  , id (0 * x) :: Int
-  , id (0 * y) :: Int
-  , id (0 * 0) :: Int
-  , id (0 * 1) :: Int
-  , id (0 * ord _) :: Int
-  , id (0 * id _) :: Int
-  , id (0 * id x) :: Int
-  , id (0 * id 0) :: Int
-  , id (0 * id (id _)) :: Int
-  , id (0 * abs _) :: Int
-  , id (0 * negate _) :: Int
-  , id (0 * head _) :: Int
-  , id (0 * (_ + _)) :: Int
-  , id (1 * _) :: Int
-  , id (1 * x) :: Int
-  , id (1 * 0) :: Int
-  , id (1 * id _) :: Int
-  , id ((-1) * _) :: Int
-  , id (f _ * _) :: Int
-  , id (ord _ * _) :: Int
-  , id (ord _ * x) :: Int
-  , id (ord _ * 0) :: Int
-  , id (ord _ * id _) :: Int
-  , id (ord c * _) :: Int
-  , id (ord 'a' * _) :: Int
-  , id (id _ * _) :: Int
-  , id (id _ * x) :: Int
-  , id (id _ * y) :: Int
-  , id (id _ * 0) :: Int
-  , id (id _ * 1) :: Int
-  , id (id _ * ord _) :: Int
-  , id (id _ * id _) :: Int
-  , id (id _ * id x) :: Int
-  , id (id _ * id 0) :: Int
-  , id (id _ * id (id _)) :: Int
-  , id (id _ * abs _) :: Int
-  , id (id _ * negate _) :: Int
-  , id (id _ * head _) :: Int
-  , id (id _ * (_ + _)) :: Int
-  , id (id x * _) :: Int
-  , id (id x * x) :: Int
-  , id (id x * 0) :: Int
-  , id (id x * id _) :: Int
-  , id (id y * _) :: Int
-  , id (id 0 * _) :: Int
-  , id (id 0 * x) :: Int
-  , id (id 0 * 0) :: Int
-  , id (id 0 * id _) :: Int
-  , id (id 1 * _) :: Int
-  , id (id (ord _) * _) :: Int
-  , id (id (id _) * _) :: Int
-  , id (id (id _) * x) :: Int
-  , id (id (id _) * 0) :: Int
-  , id (id (id _) * id _) :: Int
-  , id (id (id x) * _) :: Int
-  , id (id (id 0) * _) :: Int
-  , id (id (id (id _)) * _) :: Int
-  , id (id (abs _) * _) :: Int
-  , id (id (negate _) * _) :: Int
-  , id (id (head _) * _) :: Int
-  , id (id (_ + _) * _) :: Int
-  , id (abs _ * _) :: Int
-  , id (abs _ * x) :: Int
-  , id (abs _ * 0) :: Int
-  , id (abs _ * id _) :: Int
-  , id (abs x * _) :: Int
-  , id (abs 0 * _) :: Int
-  , id (abs (id _) * _) :: Int
-  , id (negate _ * _) :: Int
-  , id (negate _ * x) :: Int
-  , id (negate _ * 0) :: Int
-  , id (negate _ * id _) :: Int
-  , id (negate x * _) :: Int
-  , id (negate 0 * _) :: Int
-  , id (negate (id _) * _) :: Int
-  , id (head _ * _) :: Int
-  , id (head _ * x) :: Int
-  , id (head _ * 0) :: Int
-  , id (head _ * id _) :: Int
-  , id (head xs * _) :: Int
-  , id (head [] * _) :: Int
-  , id (head (_:_) * _) :: Int
-  , id ((_ * _) * _) :: Int
-  , id ((_ + _) * _) :: Int
-  , id ((_ + _) * x) :: Int
-  , id ((_ + _) * 0) :: Int
-  , id ((_ + _) * id _) :: Int
-  , id ((_ + x) * _) :: Int
-  , id ((_ + 0) * _) :: Int
-  , id ((_ + id _) * _) :: Int
-  , id ((x + _) * _) :: Int
-  , id ((0 + _) * _) :: Int
-  , id ((id _ + _) * _) :: Int
-  , id (_ + _) :: Int
-  , id (_ + x) :: Int
-  , id (_ + y) :: Int
-  , id (_ + z) :: Int
-  , id (_ + x') :: Int
-  , id (_ + 0) :: Int
-  , id (_ + 1) :: Int
-  , id (_ + 2) :: Int
-  , id (_ + (-1)) :: Int
-  , id (_ + f _) :: Int
-  , id (_ + f x) :: Int
-  , id (_ + f 0) :: Int
-  , id (_ + f (id _)) :: Int
-  , id (_ + g _) :: Int
-  , id (_ + ord _) :: Int
-  , id (_ + ord c) :: Int
-  , id (_ + ord d) :: Int
-  , id (_ + ord ' ') :: Int
-  , id (_ + ord 'a') :: Int
-  , id (_ + id _) :: Int
-  , id (_ + id x) :: Int
-  , id (_ + id y) :: Int
-  , id (_ + id z) :: Int
-  , id (_ + id 0) :: Int
-  , id (_ + id 1) :: Int
-  , id (_ + id (-1)) :: Int
-  , id (_ + id (f _)) :: Int
-  , id (_ + id (ord _)) :: Int
-  , id (_ + id (ord c)) :: Int
-  , id (_ + id (ord 'a')) :: Int
-  , id (_ + id (id _)) :: Int
-  , id (_ + id (id x)) :: Int
-  , id (_ + id (id y)) :: Int
-  , id (_ + id (id 0)) :: Int
-  , id (_ + id (id 1)) :: Int
-  , id (_ + id (id (ord _))) :: Int
-  , id (_ + id (id (id _))) :: Int
-  , id (_ + id (id (id x))) :: Int
-  , id (_ + id (id (id 0))) :: Int
-  , id (_ + id (id (id (id _)))) :: Int
-  , id (_ + id (id (abs _))) :: Int
-  , id (_ + id (id (negate _))) :: Int
-  , id (_ + id (id (head _))) :: Int
-  , id (_ + id (id (_ + _))) :: Int
-  , id (_ + id (abs _)) :: Int
-  , id (_ + id (abs x)) :: Int
-  , id (_ + id (abs 0)) :: Int
-  , id (_ + id (abs (id _))) :: Int
-  , id (_ + id (negate _)) :: Int
-  , id (_ + id (negate x)) :: Int
-  , id (_ + id (negate 0)) :: Int
-  , id (_ + id (negate (id _))) :: Int
-  , id (_ + id (head _)) :: Int
-  , id (_ + id (head xs)) :: Int
-  , id (_ + id (head [])) :: Int
-  , id (_ + id (head (_:_))) :: Int
-  , id (_ + id (_ * _)) :: Int
-  , id (_ + id (_ + _)) :: Int
-  , id (_ + id (_ + x)) :: Int
-  , id (_ + id (_ + 0)) :: Int
-  , id (_ + id (_ + id _)) :: Int
-  , id (_ + id (x + _)) :: Int
-  , id (_ + id (0 + _)) :: Int
-  , id (_ + id (id _ + _)) :: Int
-  , id (_ + abs _) :: Int
-  , id (_ + abs x) :: Int
-  , id (_ + abs y) :: Int
-  , id (_ + abs 0) :: Int
-  , id (_ + abs 1) :: Int
-  , id (_ + abs (ord _)) :: Int
-  , id (_ + abs (id _)) :: Int
-  , id (_ + abs (id x)) :: Int
-  , id (_ + abs (id 0)) :: Int
-  , id (_ + abs (id (id _))) :: Int
-  , id (_ + abs (abs _)) :: Int
-  , id (_ + abs (negate _)) :: Int
-  , id (_ + abs (head _)) :: Int
-  , id (_ + abs (_ + _)) :: Int
-  , id (_ + negate _) :: Int
-  , id (_ + negate x) :: Int
-  , id (_ + negate y) :: Int
-  , id (_ + negate 0) :: Int
-  , id (_ + negate 1) :: Int
-  , id (_ + negate (ord _)) :: Int
-  , id (_ + negate (id _)) :: Int
-  , id (_ + negate (id x)) :: Int
-  , id (_ + negate (id 0)) :: Int
-  , id (_ + negate (id (id _))) :: Int
-  , id (_ + negate (abs _)) :: Int
-  , id (_ + negate (negate _)) :: Int
-  , id (_ + negate (head _)) :: Int
-  , id (_ + negate (_ + _)) :: Int
-  , id (_ + head _) :: Int
-  , id (_ + head xs) :: Int
-  , id (_ + head ys) :: Int
-  , id (_ + head []) :: Int
-  , id (_ + head [0]) :: Int
-  , id (_ + head (tail _)) :: Int
-  , id (_ + head (_:_)) :: Int
-  , id (_ + head (_:xs)) :: Int
-  , id (_ + head [_]) :: Int
-  , id (_ + head (_:_:_)) :: Int
-  , id (_ + head (x:_)) :: Int
-  , id (_ + head (0:_)) :: Int
-  , id (_ + head (id _:_)) :: Int
-  , id (_ + head (_ ++ _)) :: Int
-  , id (_ + _ * _) :: Int
-  , id (_ + _ * x) :: Int
-  , id (_ + _ * 0) :: Int
-  , id (_ + _ * id _) :: Int
-  , id (_ + x * _) :: Int
-  , id (_ + 0 * _) :: Int
-  , id (_ + id _ * _) :: Int
-  , id (_ + (_ + _)) :: Int
-  , id (_ + (_ + x)) :: Int
-  , id (_ + (_ + y)) :: Int
-  , id (_ + (_ + 0)) :: Int
-  , id (_ + (_ + 1)) :: Int
-  , id (_ + (_ + ord _)) :: Int
-  , id (_ + (_ + id _)) :: Int
-  , id (_ + (_ + id x)) :: Int
-  , id (_ + (_ + id 0)) :: Int
-  , id (_ + (_ + id (id _))) :: Int
-  , id (_ + (_ + abs _)) :: Int
-  , id (_ + (_ + negate _)) :: Int
-  , id (_ + (_ + head _)) :: Int
-  , id (_ + (_ + (_ + _))) :: Int
-  , id (_ + (x + _)) :: Int
-  , id (_ + (x + x)) :: Int
-  , id (_ + (x + 0)) :: Int
-  , id (_ + (x + id _)) :: Int
-  , id (_ + (y + _)) :: Int
-  , id (_ + (0 + _)) :: Int
-  , id (_ + (0 + x)) :: Int
-  , id (_ + (0 + 0)) :: Int
-  , id (_ + (0 + id _)) :: Int
-  , id (_ + (1 + _)) :: Int
-  , id (_ + (ord _ + _)) :: Int
-  , id (_ + (id _ + _)) :: Int
-  , id (_ + (id _ + x)) :: Int
-  , id (_ + (id _ + 0)) :: Int
-  , id (_ + (id _ + id _)) :: Int
-  , id (_ + (id x + _)) :: Int
-  , id (_ + (id 0 + _)) :: Int
-  , id (_ + (id (id _) + _)) :: Int
-  , id (_ + (abs _ + _)) :: Int
-  , id (_ + (negate _ + _)) :: Int
-  , id (_ + (head _ + _)) :: Int
-  , id (_ + ((_ + _) + _)) :: Int
-  , id (x + _) :: Int
-  , id (x + x) :: Int
-  , id (x + y) :: Int
-  , id (x + z) :: Int
-  , id (x + 0) :: Int
-  , id (x + 1) :: Int
-  , id (x + (-1)) :: Int
-  , id (x + f _) :: Int
-  , id (x + ord _) :: Int
-  , id (x + ord c) :: Int
-  , id (x + ord 'a') :: Int
-  , id (x + id _) :: Int
-  , id (x + id x) :: Int
-  , id (x + id y) :: Int
-  , id (x + id 0) :: Int
-  , id (x + id 1) :: Int
-  , id (x + id (ord _)) :: Int
-  , id (x + id (id _)) :: Int
-  , id (x + id (id x)) :: Int
-  , id (x + id (id 0)) :: Int
-  , id (x + id (id (id _))) :: Int
-  , id (x + id (abs _)) :: Int
-  , id (x + id (negate _)) :: Int
-  , id (x + id (head _)) :: Int
-  , id (x + id (_ + _)) :: Int
-  , id (x + abs _) :: Int
-  , id (x + abs x) :: Int
-  , id (x + abs 0) :: Int
-  , id (x + abs (id _)) :: Int
-  , id (x + negate _) :: Int
-  , id (x + negate x) :: Int
-  , id (x + negate 0) :: Int
-  , id (x + negate (id _)) :: Int
-  , id (x + head _) :: Int
-  , id (x + head xs) :: Int
-  , id (x + head []) :: Int
-  , id (x + head (_:_)) :: Int
-  , id (x + _ * _) :: Int
-  , id (x + (_ + _)) :: Int
-  , id (x + (_ + x)) :: Int
-  , id (x + (_ + 0)) :: Int
-  , id (x + (_ + id _)) :: Int
-  , id (x + (x + _)) :: Int
-  , id (x + (0 + _)) :: Int
-  , id (x + (id _ + _)) :: Int
-  , id (y + _) :: Int
-  , id (y + x) :: Int
-  , id (y + y) :: Int
-  , id (y + 0) :: Int
-  , id (y + 1) :: Int
-  , id (y + ord _) :: Int
-  , id (y + id _) :: Int
-  , id (y + id x) :: Int
-  , id (y + id 0) :: Int
-  , id (y + id (id _)) :: Int
-  , id (y + abs _) :: Int
-  , id (y + negate _) :: Int
-  , id (y + head _) :: Int
-  , id (y + (_ + _)) :: Int
-  , id (z + _) :: Int
-  , id (z + x) :: Int
-  , id (z + 0) :: Int
-  , id (z + id _) :: Int
-  , id (x' + _) :: Int
-  , id (0 + _) :: Int
-  , id (0 + x) :: Int
-  , id (0 + y) :: Int
-  , id (0 + z) :: Int
-  , id (0 + 0) :: Int
-  , id (0 + 1) :: Int
-  , id (0 + (-1)) :: Int
-  , id (0 + f _) :: Int
-  , id (0 + ord _) :: Int
-  , id (0 + ord c) :: Int
-  , id (0 + ord 'a') :: Int
-  , id (0 + id _) :: Int
-  , id (0 + id x) :: Int
-  , id (0 + id y) :: Int
-  , id (0 + id 0) :: Int
-  , id (0 + id 1) :: Int
-  , id (0 + id (ord _)) :: Int
-  , id (0 + id (id _)) :: Int
-  , id (0 + id (id x)) :: Int
-  , id (0 + id (id 0)) :: Int
-  , id (0 + id (id (id _))) :: Int
-  , id (0 + id (abs _)) :: Int
-  , id (0 + id (negate _)) :: Int
-  , id (0 + id (head _)) :: Int
-  , id (0 + id (_ + _)) :: Int
-  , id (0 + abs _) :: Int
-  , id (0 + abs x) :: Int
-  , id (0 + abs 0) :: Int
-  , id (0 + abs (id _)) :: Int
-  , id (0 + negate _) :: Int
-  , id (0 + negate x) :: Int
-  , id (0 + negate 0) :: Int
-  , id (0 + negate (id _)) :: Int
-  , id (0 + head _) :: Int
-  , id (0 + head xs) :: Int
-  , id (0 + head []) :: Int
-  , id (0 + head (_:_)) :: Int
-  , id (0 + _ * _) :: Int
-  , id (0 + (_ + _)) :: Int
-  , id (0 + (_ + x)) :: Int
-  , id (0 + (_ + 0)) :: Int
-  , id (0 + (_ + id _)) :: Int
-  , id (0 + (x + _)) :: Int
-  , id (0 + (0 + _)) :: Int
-  , id (0 + (id _ + _)) :: Int
-  , id (1 + _) :: Int
-  , id (1 + x) :: Int
-  , id (1 + y) :: Int
-  , id (1 + 0) :: Int
-  , id (1 + 1) :: Int
-  , id (1 + ord _) :: Int
-  , id (1 + id _) :: Int
-  , id (1 + id x) :: Int
-  , id (1 + id 0) :: Int
-  , id (1 + id (id _)) :: Int
-  , id (1 + abs _) :: Int
-  , id (1 + negate _) :: Int
-  , id (1 + head _) :: Int
-  , id (1 + (_ + _)) :: Int
-  , id (2 + _) :: Int
-  , id ((-1) + _) :: Int
-  , id ((-1) + x) :: Int
-  , id ((-1) + 0) :: Int
-  , id ((-1) + id _) :: Int
-  , id (f _ + _) :: Int
-  , id (f _ + x) :: Int
-  , id (f _ + 0) :: Int
-  , id (f _ + id _) :: Int
-  , id (f x + _) :: Int
-  , id (f 0 + _) :: Int
-  , id (f (id _) + _) :: Int
-  , id (g _ + _) :: Int
-  , id (ord _ + _) :: Int
-  , id (ord _ + x) :: Int
-  , id (ord _ + y) :: Int
-  , id (ord _ + 0) :: Int
-  , id (ord _ + 1) :: Int
-  , id (ord _ + ord _) :: Int
-  , id (ord _ + id _) :: Int
-  , id (ord _ + id x) :: Int
-  , id (ord _ + id 0) :: Int
-  , id (ord _ + id (id _)) :: Int
-  , id (ord _ + abs _) :: Int
-  , id (ord _ + negate _) :: Int
-  , id (ord _ + head _) :: Int
-  , id (ord _ + (_ + _)) :: Int
-  , id (ord c + _) :: Int
-  , id (ord c + x) :: Int
-  , id (ord c + 0) :: Int
-  , id (ord c + id _) :: Int
-  , id (ord d + _) :: Int
-  , id (ord ' ' + _) :: Int
-  , id (ord 'a' + _) :: Int
-  , id (ord 'a' + x) :: Int
-  , id (ord 'a' + 0) :: Int
-  , id (ord 'a' + id _) :: Int
-  , id (id _ + _) :: Int
-  , id (id _ + x) :: Int
-  , id (id _ + y) :: Int
-  , id (id _ + z) :: Int
-  , id (id _ + 0) :: Int
-  , id (id _ + 1) :: Int
-  , id (id _ + (-1)) :: Int
-  , id (id _ + f _) :: Int
-  , id (id _ + ord _) :: Int
-  , id (id _ + ord c) :: Int
-  , id (id _ + ord 'a') :: Int
-  , id (id _ + id _) :: Int
-  , id (id _ + id x) :: Int
-  , id (id _ + id y) :: Int
-  , id (id _ + id 0) :: Int
-  , id (id _ + id 1) :: Int
-  , id (id _ + id (ord _)) :: Int
-  , id (id _ + id (id _)) :: Int
-  , id (id _ + id (id x)) :: Int
-  , id (id _ + id (id 0)) :: Int
-  , id (id _ + id (id (id _))) :: Int
-  , id (id _ + id (abs _)) :: Int
-  , id (id _ + id (negate _)) :: Int
-  , id (id _ + id (head _)) :: Int
-  , id (id _ + id (_ + _)) :: Int
-  , id (id _ + abs _) :: Int
-  , id (id _ + abs x) :: Int
-  , id (id _ + abs 0) :: Int
-  , id (id _ + abs (id _)) :: Int
-  , id (id _ + negate _) :: Int
-  , id (id _ + negate x) :: Int
-  , id (id _ + negate 0) :: Int
-  , id (id _ + negate (id _)) :: Int
-  , id (id _ + head _) :: Int
-  , id (id _ + head xs) :: Int
-  , id (id _ + head []) :: Int
-  , id (id _ + head (_:_)) :: Int
-  , id (id _ + _ * _) :: Int
-  , id (id _ + (_ + _)) :: Int
-  , id (id _ + (_ + x)) :: Int
-  , id (id _ + (_ + 0)) :: Int
-  , id (id _ + (_ + id _)) :: Int
-  , id (id _ + (x + _)) :: Int
-  , id (id _ + (0 + _)) :: Int
-  , id (id _ + (id _ + _)) :: Int
-  , id (id x + _) :: Int
-  , id (id x + x) :: Int
-  , id (id x + y) :: Int
-  , id (id x + 0) :: Int
-  , id (id x + 1) :: Int
-  , id (id x + ord _) :: Int
-  , id (id x + id _) :: Int
-  , id (id x + id x) :: Int
-  , id (id x + id 0) :: Int
-  , id (id x + id (id _)) :: Int
-  , id (id x + abs _) :: Int
-  , id (id x + negate _) :: Int
-  , id (id x + head _) :: Int
-  , id (id x + (_ + _)) :: Int
-  , id (id y + _) :: Int
-  , id (id y + x) :: Int
-  , id (id y + 0) :: Int
-  , id (id y + id _) :: Int
-  , id (id z + _) :: Int
-  , id (id 0 + _) :: Int
-  , id (id 0 + x) :: Int
-  , id (id 0 + y) :: Int
-  , id (id 0 + 0) :: Int
-  , id (id 0 + 1) :: Int
-  , id (id 0 + ord _) :: Int
-  , id (id 0 + id _) :: Int
-  , id (id 0 + id x) :: Int
-  , id (id 0 + id 0) :: Int
-  , id (id 0 + id (id _)) :: Int
-  , id (id 0 + abs _) :: Int
-  , id (id 0 + negate _) :: Int
-  , id (id 0 + head _) :: Int
-  , id (id 0 + (_ + _)) :: Int
-  , id (id 1 + _) :: Int
-  , id (id 1 + x) :: Int
-  , id (id 1 + 0) :: Int
-  , id (id 1 + id _) :: Int
-  , id (id (-1) + _) :: Int
-  , id (id (f _) + _) :: Int
-  , id (id (ord _) + _) :: Int
-  , id (id (ord _) + x) :: Int
-  , id (id (ord _) + 0) :: Int
-  , id (id (ord _) + id _) :: Int
-  , id (id (ord c) + _) :: Int
-  , id (id (ord 'a') + _) :: Int
-  , id (id (id _) + _) :: Int
-  , id (id (id _) + x) :: Int
-  , id (id (id _) + y) :: Int
-  , id (id (id _) + 0) :: Int
-  , id (id (id _) + 1) :: Int
-  , id (id (id _) + ord _) :: Int
-  , id (id (id _) + id _) :: Int
-  , id (id (id _) + id x) :: Int
-  , id (id (id _) + id 0) :: Int
-  , id (id (id _) + id (id _)) :: Int
-  , id (id (id _) + abs _) :: Int
-  , id (id (id _) + negate _) :: Int
-  , id (id (id _) + head _) :: Int
-  , id (id (id _) + (_ + _)) :: Int
-  , id (id (id x) + _) :: Int
-  , id (id (id x) + x) :: Int
-  , id (id (id x) + 0) :: Int
-  , id (id (id x) + id _) :: Int
-  , id (id (id y) + _) :: Int
-  , id (id (id 0) + _) :: Int
-  , id (id (id 0) + x) :: Int
-  , id (id (id 0) + 0) :: Int
-  , id (id (id 0) + id _) :: Int
-  , id (id (id 1) + _) :: Int
-  , id (id (id (ord _)) + _) :: Int
-  , id (id (id (id _)) + _) :: Int
-  , id (id (id (id _)) + x) :: Int
-  , id (id (id (id _)) + 0) :: Int
-  , id (id (id (id _)) + id _) :: Int
-  , id (id (id (id x)) + _) :: Int
-  , id (id (id (id 0)) + _) :: Int
-  , id (id (id (id (id _))) + _) :: Int
-  , id (id (id (abs _)) + _) :: Int
-  , id (id (id (negate _)) + _) :: Int
-  , id (id (id (head _)) + _) :: Int
-  , id (id (id (_ + _)) + _) :: Int
-  , id (id (abs _) + _) :: Int
-  , id (id (abs _) + x) :: Int
-  , id (id (abs _) + 0) :: Int
-  , id (id (abs _) + id _) :: Int
-  , id (id (abs x) + _) :: Int
-  , id (id (abs 0) + _) :: Int
-  , id (id (abs (id _)) + _) :: Int
-  , id (id (negate _) + _) :: Int
-  , id (id (negate _) + x) :: Int
-  , id (id (negate _) + 0) :: Int
-  , id (id (negate _) + id _) :: Int
-  , id (id (negate x) + _) :: Int
-  , id (id (negate 0) + _) :: Int
-  , id (id (negate (id _)) + _) :: Int
-  , id (id (head _) + _) :: Int
-  , id (id (head _) + x) :: Int
-  , id (id (head _) + 0) :: Int
-  , id (id (head _) + id _) :: Int
-  , id (id (head xs) + _) :: Int
-  , id (id (head []) + _) :: Int
-  , id (id (head (_:_)) + _) :: Int
-  , id (id (_ * _) + _) :: Int
-  , id (id (_ + _) + _) :: Int
-  , id (id (_ + _) + x) :: Int
-  , id (id (_ + _) + 0) :: Int
-  , id (id (_ + _) + id _) :: Int
-  , id (id (_ + x) + _) :: Int
-  , id (id (_ + 0) + _) :: Int
-  , id (id (_ + id _) + _) :: Int
-  , id (id (x + _) + _) :: Int
-  , id (id (0 + _) + _) :: Int
-  , id (id (id _ + _) + _) :: Int
-  , id (abs _ + _) :: Int
-  , id (abs _ + x) :: Int
-  , id (abs _ + y) :: Int
-  , id (abs _ + 0) :: Int
-  , id (abs _ + 1) :: Int
-  , id (abs _ + ord _) :: Int
-  , id (abs _ + id _) :: Int
-  , id (abs _ + id x) :: Int
-  , id (abs _ + id 0) :: Int
-  , id (abs _ + id (id _)) :: Int
-  , id (abs _ + abs _) :: Int
-  , id (abs _ + negate _) :: Int
-  , id (abs _ + head _) :: Int
-  , id (abs _ + (_ + _)) :: Int
-  , id (abs x + _) :: Int
-  , id (abs x + x) :: Int
-  , id (abs x + 0) :: Int
-  , id (abs x + id _) :: Int
-  , id (abs y + _) :: Int
-  , id (abs 0 + _) :: Int
-  , id (abs 0 + x) :: Int
-  , id (abs 0 + 0) :: Int
-  , id (abs 0 + id _) :: Int
-  , id (abs 1 + _) :: Int
-  , id (abs (ord _) + _) :: Int
-  , id (abs (id _) + _) :: Int
-  , id (abs (id _) + x) :: Int
-  , id (abs (id _) + 0) :: Int
-  , id (abs (id _) + id _) :: Int
-  , id (abs (id x) + _) :: Int
-  , id (abs (id 0) + _) :: Int
-  , id (abs (id (id _)) + _) :: Int
-  , id (abs (abs _) + _) :: Int
-  , id (abs (negate _) + _) :: Int
-  , id (abs (head _) + _) :: Int
-  , id (abs (_ + _) + _) :: Int
-  , id (negate _ + _) :: Int
-  , id (negate _ + x) :: Int
-  , id (negate _ + y) :: Int
-  , id (negate _ + 0) :: Int
-  , id (negate _ + 1) :: Int
-  , id (negate _ + ord _) :: Int
-  , id (negate _ + id _) :: Int
-  , id (negate _ + id x) :: Int
-  , id (negate _ + id 0) :: Int
-  , id (negate _ + id (id _)) :: Int
-  , id (negate _ + abs _) :: Int
-  , id (negate _ + negate _) :: Int
-  , id (negate _ + head _) :: Int
-  , id (negate _ + (_ + _)) :: Int
-  , id (negate x + _) :: Int
-  , id (negate x + x) :: Int
-  , id (negate x + 0) :: Int
-  , id (negate x + id _) :: Int
-  , id (negate y + _) :: Int
-  , id (negate 0 + _) :: Int
-  , id (negate 0 + x) :: Int
-  , id (negate 0 + 0) :: Int
-  , id (negate 0 + id _) :: Int
-  , id (negate 1 + _) :: Int
-  , id (negate (ord _) + _) :: Int
-  , id (negate (id _) + _) :: Int
-  , id (negate (id _) + x) :: Int
-  , id (negate (id _) + 0) :: Int
-  , id (negate (id _) + id _) :: Int
-  , id (negate (id x) + _) :: Int
-  , id (negate (id 0) + _) :: Int
-  , id (negate (id (id _)) + _) :: Int
-  , id (negate (abs _) + _) :: Int
-  , id (negate (negate _) + _) :: Int
-  , id (negate (head _) + _) :: Int
-  , id (negate (_ + _) + _) :: Int
-  , id (head _ + _) :: Int
-  , id (head _ + x) :: Int
-  , id (head _ + y) :: Int
-  , id (head _ + 0) :: Int
-  , id (head _ + 1) :: Int
-  , id (head _ + ord _) :: Int
-  , id (head _ + id _) :: Int
-  , id (head _ + id x) :: Int
-  , id (head _ + id 0) :: Int
-  , id (head _ + id (id _)) :: Int
-  , id (head _ + abs _) :: Int
-  , id (head _ + negate _) :: Int
-  , id (head _ + head _) :: Int
-  , id (head _ + (_ + _)) :: Int
-  , id (head xs + _) :: Int
-  , id (head xs + x) :: Int
-  , id (head xs + 0) :: Int
-  , id (head xs + id _) :: Int
-  , id (head ys + _) :: Int
-  , id (head [] + _) :: Int
-  , id (head [] + x) :: Int
-  , id (head [] + 0) :: Int
-  , id (head [] + id _) :: Int
-  , id (head [0] + _) :: Int
-  , id (head (tail _) + _) :: Int
-  , id (head (_:_) + _) :: Int
-  , id (head (_:_) + x) :: Int
-  , id (head (_:_) + 0) :: Int
-  , id (head (_:_) + id _) :: Int
-  , id (head (_:xs) + _) :: Int
-  , id (head [_] + _) :: Int
-  , id (head (_:_:_) + _) :: Int
-  , id (head (x:_) + _) :: Int
-  , id (head (0:_) + _) :: Int
-  , id (head (id _:_) + _) :: Int
-  , id (head (_ ++ _) + _) :: Int
-  , id (_ * _ + _) :: Int
-  , id (_ * _ + x) :: Int
-  , id (_ * _ + 0) :: Int
-  , id (_ * _ + id _) :: Int
-  , id (_ * x + _) :: Int
-  , id (_ * 0 + _) :: Int
-  , id (_ * id _ + _) :: Int
-  , id (x * _ + _) :: Int
-  , id (0 * _ + _) :: Int
-  , id (id _ * _ + _) :: Int
-  , id ((_ + _) + _) :: Int
-  , id ((_ + _) + x) :: Int
-  , id ((_ + _) + y) :: Int
-  , id ((_ + _) + 0) :: Int
-  , id ((_ + _) + 1) :: Int
-  , id ((_ + _) + ord _) :: Int
-  , id ((_ + _) + id _) :: Int
-  , id ((_ + _) + id x) :: Int
-  , id ((_ + _) + id 0) :: Int
-  , id ((_ + _) + id (id _)) :: Int
-  , id ((_ + _) + abs _) :: Int
-  , id ((_ + _) + negate _) :: Int
-  , id ((_ + _) + head _) :: Int
-  , id ((_ + _) + (_ + _)) :: Int
-  , id ((_ + x) + _) :: Int
-  , id ((_ + x) + x) :: Int
-  , id ((_ + x) + 0) :: Int
-  , id ((_ + x) + id _) :: Int
-  , id ((_ + y) + _) :: Int
-  , id ((_ + 0) + _) :: Int
-  , id ((_ + 0) + x) :: Int
-  , id ((_ + 0) + 0) :: Int
-  , id ((_ + 0) + id _) :: Int
-  , id ((_ + 1) + _) :: Int
-  , id ((_ + ord _) + _) :: Int
-  , id ((_ + id _) + _) :: Int
-  , id ((_ + id _) + x) :: Int
-  , id ((_ + id _) + 0) :: Int
-  , id ((_ + id _) + id _) :: Int
-  , id ((_ + id x) + _) :: Int
-  , id ((_ + id 0) + _) :: Int
-  , id ((_ + id (id _)) + _) :: Int
-  , id ((_ + abs _) + _) :: Int
-  , id ((_ + negate _) + _) :: Int
-  , id ((_ + head _) + _) :: Int
-  , id ((_ + (_ + _)) + _) :: Int
-  , id ((x + _) + _) :: Int
-  , id ((x + _) + x) :: Int
-  , id ((x + _) + 0) :: Int
-  , id ((x + _) + id _) :: Int
-  , id ((x + x) + _) :: Int
-  , id ((x + 0) + _) :: Int
-  , id ((x + id _) + _) :: Int
-  , id ((y + _) + _) :: Int
-  , id ((0 + _) + _) :: Int
-  , id ((0 + _) + x) :: Int
-  , id ((0 + _) + 0) :: Int
-  , id ((0 + _) + id _) :: Int
-  , id ((0 + x) + _) :: Int
-  , id ((0 + 0) + _) :: Int
-  , id ((0 + id _) + _) :: Int
-  , id ((1 + _) + _) :: Int
-  , id ((ord _ + _) + _) :: Int
-  , id ((id _ + _) + _) :: Int
-  , id ((id _ + _) + x) :: Int
-  , id ((id _ + _) + 0) :: Int
-  , id ((id _ + _) + id _) :: Int
-  , id ((id _ + x) + _) :: Int
-  , id ((id _ + 0) + _) :: Int
-  , id ((id _ + id _) + _) :: Int
-  , id ((id x + _) + _) :: Int
-  , id ((id 0 + _) + _) :: Int
-  , id ((id (id _) + _) + _) :: Int
-  , id ((abs _ + _) + _) :: Int
-  , id ((negate _ + _) + _) :: Int
-  , id ((head _ + _) + _) :: Int
-  , id (((_ + _) + _) + _) :: Int
-  , abs _ :: Int
-  , abs x :: Int
-  , abs y :: Int
-  , abs z :: Int
-  , abs x' :: Int
-  , abs 0 :: Int
-  , abs 1 :: Int
-  , abs 2 :: Int
-  , abs (-1) :: Int
-  , abs (f _) :: Int
-  , abs (f x) :: Int
-  , abs (f 0) :: Int
-  , abs (f (id _)) :: Int
-  , abs (g _) :: Int
-  , abs (ord _) :: Int
-  , abs (ord c) :: Int
-  , abs (ord d) :: Int
-  , abs (ord ' ') :: Int
-  , abs (ord 'a') :: Int
-  , abs (id _) :: Int
-  , abs (id x) :: Int
-  , abs (id y) :: Int
-  , abs (id z) :: Int
-  , abs (id 0) :: Int
-  , abs (id 1) :: Int
-  , abs (id (-1)) :: Int
-  , abs (id (f _)) :: Int
-  , abs (id (ord _)) :: Int
-  , abs (id (ord c)) :: Int
-  , abs (id (ord 'a')) :: Int
-  , abs (id (id _)) :: Int
-  , abs (id (id x)) :: Int
-  , abs (id (id y)) :: Int
-  , abs (id (id 0)) :: Int
-  , abs (id (id 1)) :: Int
-  , abs (id (id (ord _))) :: Int
-  , abs (id (id (id _))) :: Int
-  , abs (id (id (id x))) :: Int
-  , abs (id (id (id 0))) :: Int
-  , abs (id (id (id (id _)))) :: Int
-  , abs (id (id (abs _))) :: Int
-  , abs (id (id (negate _))) :: Int
-  , abs (id (id (head _))) :: Int
-  , abs (id (id (_ + _))) :: Int
-  , abs (id (abs _)) :: Int
-  , abs (id (abs x)) :: Int
-  , abs (id (abs 0)) :: Int
-  , abs (id (abs (id _))) :: Int
-  , abs (id (negate _)) :: Int
-  , abs (id (negate x)) :: Int
-  , abs (id (negate 0)) :: Int
-  , abs (id (negate (id _))) :: Int
-  , abs (id (head _)) :: Int
-  , abs (id (head xs)) :: Int
-  , abs (id (head [])) :: Int
-  , abs (id (head (_:_))) :: Int
-  , abs (id (_ * _)) :: Int
-  , abs (id (_ + _)) :: Int
-  , abs (id (_ + x)) :: Int
-  , abs (id (_ + 0)) :: Int
-  , abs (id (_ + id _)) :: Int
-  , abs (id (x + _)) :: Int
-  , abs (id (0 + _)) :: Int
-  , abs (id (id _ + _)) :: Int
-  , abs (abs _) :: Int
-  , abs (abs x) :: Int
-  , abs (abs y) :: Int
-  , abs (abs 0) :: Int
-  , abs (abs 1) :: Int
-  , abs (abs (ord _)) :: Int
-  , abs (abs (id _)) :: Int
-  , abs (abs (id x)) :: Int
-  , abs (abs (id 0)) :: Int
-  , abs (abs (id (id _))) :: Int
-  , abs (abs (abs _)) :: Int
-  , abs (abs (negate _)) :: Int
-  , abs (abs (head _)) :: Int
-  , abs (abs (_ + _)) :: Int
-  , abs (negate _) :: Int
-  , abs (negate x) :: Int
-  , abs (negate y) :: Int
-  , abs (negate 0) :: Int
-  , abs (negate 1) :: Int
-  , abs (negate (ord _)) :: Int
-  , abs (negate (id _)) :: Int
-  , abs (negate (id x)) :: Int
-  , abs (negate (id 0)) :: Int
-  , abs (negate (id (id _))) :: Int
-  , abs (negate (abs _)) :: Int
-  , abs (negate (negate _)) :: Int
-  , abs (negate (head _)) :: Int
-  , abs (negate (_ + _)) :: Int
-  , abs (head _) :: Int
-  , abs (head xs) :: Int
-  , abs (head ys) :: Int
-  , abs (head []) :: Int
-  , abs (head [0]) :: Int
-  , abs (head (tail _)) :: Int
-  , abs (head (_:_)) :: Int
-  , abs (head (_:xs)) :: Int
-  , abs (head [_]) :: Int
-  , abs (head (_:_:_)) :: Int
-  , abs (head (x:_)) :: Int
-  , abs (head (0:_)) :: Int
-  , abs (head (id _:_)) :: Int
-  , abs (head (_ ++ _)) :: Int
-  , abs (_ * _) :: Int
-  , abs (_ * x) :: Int
-  , abs (_ * 0) :: Int
-  , abs (_ * id _) :: Int
-  , abs (x * _) :: Int
-  , abs (0 * _) :: Int
-  , abs (id _ * _) :: Int
-  , abs (_ + _) :: Int
-  , abs (_ + x) :: Int
-  , abs (_ + y) :: Int
-  , abs (_ + 0) :: Int
-  , abs (_ + 1) :: Int
-  , abs (_ + ord _) :: Int
-  , abs (_ + id _) :: Int
-  , abs (_ + id x) :: Int
-  , abs (_ + id 0) :: Int
-  , abs (_ + id (id _)) :: Int
-  , abs (_ + abs _) :: Int
-  , abs (_ + negate _) :: Int
-  , abs (_ + head _) :: Int
-  , abs (_ + (_ + _)) :: Int
-  , abs (x + _) :: Int
-  , abs (x + x) :: Int
-  , abs (x + 0) :: Int
-  , abs (x + id _) :: Int
-  , abs (y + _) :: Int
-  , abs (0 + _) :: Int
-  , abs (0 + x) :: Int
-  , abs (0 + 0) :: Int
-  , abs (0 + id _) :: Int
-  , abs (1 + _) :: Int
-  , abs (ord _ + _) :: Int
-  , abs (id _ + _) :: Int
-  , abs (id _ + x) :: Int
-  , abs (id _ + 0) :: Int
-  , abs (id _ + id _) :: Int
-  , abs (id x + _) :: Int
-  , abs (id 0 + _) :: Int
-  , abs (id (id _) + _) :: Int
-  , abs (abs _ + _) :: Int
-  , abs (negate _ + _) :: Int
-  , abs (head _ + _) :: Int
-  , abs ((_ + _) + _) :: Int
-  , negate _ :: Int
-  , negate x :: Int
-  , negate y :: Int
-  , negate z :: Int
-  , negate x' :: Int
-  , negate 0 :: Int
-  , negate 1 :: Int
-  , negate 2 :: Int
-  , negate (-1) :: Int
-  , negate (f _) :: Int
-  , negate (f x) :: Int
-  , negate (f 0) :: Int
-  , negate (f (id _)) :: Int
-  , negate (g _) :: Int
-  , negate (ord _) :: Int
-  , negate (ord c) :: Int
-  , negate (ord d) :: Int
-  , negate (ord ' ') :: Int
-  , negate (ord 'a') :: Int
-  , negate (id _) :: Int
-  , negate (id x) :: Int
-  , negate (id y) :: Int
-  , negate (id z) :: Int
-  , negate (id 0) :: Int
-  , negate (id 1) :: Int
-  , negate (id (-1)) :: Int
-  , negate (id (f _)) :: Int
-  , negate (id (ord _)) :: Int
-  , negate (id (ord c)) :: Int
-  , negate (id (ord 'a')) :: Int
-  , negate (id (id _)) :: Int
-  , negate (id (id x)) :: Int
-  , negate (id (id y)) :: Int
-  , negate (id (id 0)) :: Int
-  , negate (id (id 1)) :: Int
-  , negate (id (id (ord _))) :: Int
-  , negate (id (id (id _))) :: Int
-  , negate (id (id (id x))) :: Int
-  , negate (id (id (id 0))) :: Int
-  , negate (id (id (id (id _)))) :: Int
-  , negate (id (id (abs _))) :: Int
-  , negate (id (id (negate _))) :: Int
-  , negate (id (id (head _))) :: Int
-  , negate (id (id (_ + _))) :: Int
-  , negate (id (abs _)) :: Int
-  , negate (id (abs x)) :: Int
-  , negate (id (abs 0)) :: Int
-  , negate (id (abs (id _))) :: Int
-  , negate (id (negate _)) :: Int
-  , negate (id (negate x)) :: Int
-  , negate (id (negate 0)) :: Int
-  , negate (id (negate (id _))) :: Int
-  , negate (id (head _)) :: Int
-  , negate (id (head xs)) :: Int
-  , negate (id (head [])) :: Int
-  , negate (id (head (_:_))) :: Int
-  , negate (id (_ * _)) :: Int
-  , negate (id (_ + _)) :: Int
-  , negate (id (_ + x)) :: Int
-  , negate (id (_ + 0)) :: Int
-  , negate (id (_ + id _)) :: Int
-  , negate (id (x + _)) :: Int
-  , negate (id (0 + _)) :: Int
-  , negate (id (id _ + _)) :: Int
-  , negate (abs _) :: Int
-  , negate (abs x) :: Int
-  , negate (abs y) :: Int
-  , negate (abs 0) :: Int
-  , negate (abs 1) :: Int
-  , negate (abs (ord _)) :: Int
-  , negate (abs (id _)) :: Int
-  , negate (abs (id x)) :: Int
-  , negate (abs (id 0)) :: Int
-  , negate (abs (id (id _))) :: Int
-  , negate (abs (abs _)) :: Int
-  , negate (abs (negate _)) :: Int
-  , negate (abs (head _)) :: Int
-  , negate (abs (_ + _)) :: Int
-  , negate (negate _) :: Int
-  , negate (negate x) :: Int
-  , negate (negate y) :: Int
-  , negate (negate 0) :: Int
-  , negate (negate 1) :: Int
-  , negate (negate (ord _)) :: Int
-  , negate (negate (id _)) :: Int
-  , negate (negate (id x)) :: Int
-  , negate (negate (id 0)) :: Int
-  , negate (negate (id (id _))) :: Int
-  , negate (negate (abs _)) :: Int
-  , negate (negate (negate _)) :: Int
-  , negate (negate (head _)) :: Int
-  , negate (negate (_ + _)) :: Int
-  , negate (head _) :: Int
-  , negate (head xs) :: Int
-  , negate (head ys) :: Int
-  , negate (head []) :: Int
-  , negate (head [0]) :: Int
-  , negate (head (tail _)) :: Int
-  , negate (head (_:_)) :: Int
-  , negate (head (_:xs)) :: Int
-  , negate (head [_]) :: Int
-  , negate (head (_:_:_)) :: Int
-  , negate (head (x:_)) :: Int
-  , negate (head (0:_)) :: Int
-  , negate (head (id _:_)) :: Int
-  , negate (head (_ ++ _)) :: Int
-  , negate (_ * _) :: Int
-  , negate (_ * x) :: Int
-  , negate (_ * 0) :: Int
-  , negate (_ * id _) :: Int
-  , negate (x * _) :: Int
-  , negate (0 * _) :: Int
-  , negate (id _ * _) :: Int
-  , negate (_ + _) :: Int
-  , negate (_ + x) :: Int
-  , negate (_ + y) :: Int
-  , negate (_ + 0) :: Int
-  , negate (_ + 1) :: Int
-  , negate (_ + ord _) :: Int
-  , negate (_ + id _) :: Int
-  , negate (_ + id x) :: Int
-  , negate (_ + id 0) :: Int
-  , negate (_ + id (id _)) :: Int
-  , negate (_ + abs _) :: Int
-  , negate (_ + negate _) :: Int
-  , negate (_ + head _) :: Int
-  , negate (_ + (_ + _)) :: Int
-  , negate (x + _) :: Int
-  , negate (x + x) :: Int
-  , negate (x + 0) :: Int
-  , negate (x + id _) :: Int
-  , negate (y + _) :: Int
-  , negate (0 + _) :: Int
-  , negate (0 + x) :: Int
-  , negate (0 + 0) :: Int
-  , negate (0 + id _) :: Int
-  , negate (1 + _) :: Int
-  , negate (ord _ + _) :: Int
-  , negate (id _ + _) :: Int
-  , negate (id _ + x) :: Int
-  , negate (id _ + 0) :: Int
-  , negate (id _ + id _) :: Int
-  , negate (id x + _) :: Int
-  , negate (id 0 + _) :: Int
-  , negate (id (id _) + _) :: Int
-  , negate (abs _ + _) :: Int
-  , negate (negate _ + _) :: Int
-  , negate (head _ + _) :: Int
-  , negate ((_ + _) + _) :: Int
-  , head _ :: Int
-  , head xs :: Int
-  , head ys :: Int
-  , head zs :: Int
-  , head xs' :: Int
-  , head [] :: Int
-  , head [0] :: Int
-  , head [1] :: Int
-  , head [-1] :: Int
-  , head [0,0] :: Int
-  , head [0,1] :: Int
-  , head [1,0] :: Int
-  , head [0,0,0] :: Int
-  , head (sort _) :: Int
-  , head (sort xs) :: Int
-  , head (sort []) :: Int
-  , head (sort (_:_)) :: Int
-  , head (tail _) :: Int
-  , head (tail xs) :: Int
-  , head (tail ys) :: Int
-  , head (tail []) :: Int
-  , head (tail [0]) :: Int
-  , head (tail (tail _)) :: Int
-  , head (tail (_:_)) :: Int
-  , head (tail (_:xs)) :: Int
-  , head (tail [_]) :: Int
-  , head (tail (_:_:_)) :: Int
-  , head (tail (x:_)) :: Int
-  , head (tail (0:_)) :: Int
-  , head (tail (id _:_)) :: Int
-  , head (tail (_ ++ _)) :: Int
-  , head (_:_) :: Int
-  , head (_:xs) :: Int
-  , head (_:ys) :: Int
-  , head (_:zs) :: Int
-  , head [_] :: Int
-  , head [_,0] :: Int
-  , head [_,1] :: Int
-  , head [_,0,0] :: Int
-  , head (_:sort _) :: Int
-  , head (_:tail _) :: Int
-  , head (_:tail xs) :: Int
-  , head (_:tail []) :: Int
-  , head (_:tail (_:_)) :: Int
-  , head (_:_:_) :: Int
-  , head (_:_:xs) :: Int
-  , head (_:_:ys) :: Int
-  , head [_,_] :: Int
-  , head [_,_,0] :: Int
-  , head (_:_:tail _) :: Int
-  , head (_:_:_:_) :: Int
-  , head (_:_:_:xs) :: Int
-  , head [_,_,_] :: Int
-  , head (_:_:_:_:_) :: Int
-  , head (_:_:x:_) :: Int
-  , head (_:_:0:_) :: Int
-  , head (_:_:id _:_) :: Int
-  , head (_:_:(_ ++ _)) :: Int
-  , head (_:x:_) :: Int
-  , head (_:x:xs) :: Int
-  , head [_,x] :: Int
-  , head (_:x:_:_) :: Int
-  , head (_:y:_) :: Int
-  , head (_:0:_) :: Int
-  , head (_:0:xs) :: Int
-  , head [_,0] :: Int
-  , head (_:0:_:_) :: Int
-  , head (_:1:_) :: Int
-  , head (_:ord _:_) :: Int
-  , head (_:id _:_) :: Int
-  , head (_:id _:xs) :: Int
-  , head [_,id _] :: Int
-  , head (_:id _:_:_) :: Int
-  , head (_:id x:_) :: Int
-  , head (_:id 0:_) :: Int
-  , head (_:id (id _):_) :: Int
-  , head (_:abs _:_) :: Int
-  , head (_:negate _:_) :: Int
-  , head (_:head _:_) :: Int
-  , head (_:_ + _:_) :: Int
-  , head (_:insert _ _) :: Int
-  , head (_:(_ ++ _)) :: Int
-  , head (_:(_ ++ xs)) :: Int
-  , head (_:(_ ++ [])) :: Int
-  , head (_:(_ ++ (_:_))) :: Int
-  , head (_:(xs ++ _)) :: Int
-  , head (_:([] ++ _)) :: Int
-  , head (_:((_:_) ++ _)) :: Int
-  , head (x:_) :: Int
-  , head (x:xs) :: Int
-  , head (x:ys) :: Int
-  , head [x] :: Int
-  , head [x,0] :: Int
-  , head (x:tail _) :: Int
-  , head (x:_:_) :: Int
-  , head (x:_:xs) :: Int
-  , head [x,_] :: Int
-  , head (x:_:_:_) :: Int
-  , head (x:x:_) :: Int
-  , head (x:0:_) :: Int
-  , head (x:id _:_) :: Int
-  , head (x:(_ ++ _)) :: Int
-  , head (y:_) :: Int
-  , head (y:xs) :: Int
-  , head [y] :: Int
-  , head (y:_:_) :: Int
-  , head (z:_) :: Int
-  , head (0:_) :: Int
-  , head (0:xs) :: Int
-  , head (0:ys) :: Int
-  , head [0] :: Int
-  , head [0,0] :: Int
-  , head (0:tail _) :: Int
-  , head (0:_:_) :: Int
-  , head (0:_:xs) :: Int
-  , head [0,_] :: Int
-  , head (0:_:_:_) :: Int
-  , head (0:x:_) :: Int
-  , head (0:0:_) :: Int
-  , head (0:id _:_) :: Int
-  , head (0:(_ ++ _)) :: Int
-  , head (1:_) :: Int
-  , head (1:xs) :: Int
-  , head [1] :: Int
-  , head (1:_:_) :: Int
-  , head ((-1):_) :: Int
-  , head (f _:_) :: Int
-  , head (ord _:_) :: Int
-  , head (ord _:xs) :: Int
-  , head [ord _] :: Int
-  , head (ord _:_:_) :: Int
-  , head (ord c:_) :: Int
-  , head (ord 'a':_) :: Int
-  , head (id _:_) :: Int
-  , head (id _:xs) :: Int
-  , head (id _:ys) :: Int
-  , head [id _] :: Int
-  , head [id _,0] :: Int
-  , head (id _:tail _) :: Int
-  , head (id _:_:_) :: Int
-  , head (id _:_:xs) :: Int
-  , head [id _,_] :: Int
-  , head (id _:_:_:_) :: Int
-  , head (id _:x:_) :: Int
-  , head (id _:0:_) :: Int
-  , head (id _:id _:_) :: Int
-  , head (id _:(_ ++ _)) :: Int
-  , head (id x:_) :: Int
-  , head (id x:xs) :: Int
-  , head [id x] :: Int
-  , head (id x:_:_) :: Int
-  , head (id y:_) :: Int
-  , head (id 0:_) :: Int
-  , head (id 0:xs) :: Int
-  , head [id 0] :: Int
-  , head (id 0:_:_) :: Int
-  , head (id 1:_) :: Int
-  , head (id (ord _):_) :: Int
-  , head (id (id _):_) :: Int
-  , head (id (id _):xs) :: Int
-  , head [id (id _)] :: Int
-  , head (id (id _):_:_) :: Int
-  , head (id (id x):_) :: Int
-  , head (id (id 0):_) :: Int
-  , head (id (id (id _)):_) :: Int
-  , head (id (abs _):_) :: Int
-  , head (id (negate _):_) :: Int
-  , head (id (head _):_) :: Int
-  , head (id (_ + _):_) :: Int
-  , head (abs _:_) :: Int
-  , head (abs _:xs) :: Int
-  , head [abs _] :: Int
-  , head (abs _:_:_) :: Int
-  , head (abs x:_) :: Int
-  , head (abs 0:_) :: Int
-  , head (abs (id _):_) :: Int
-  , head (negate _:_) :: Int
-  , head (negate _:xs) :: Int
-  , head [negate _] :: Int
-  , head (negate _:_:_) :: Int
-  , head (negate x:_) :: Int
-  , head (negate 0:_) :: Int
-  , head (negate (id _):_) :: Int
-  , head (head _:_) :: Int
-  , head (head _:xs) :: Int
-  , head [head _] :: Int
-  , head (head _:_:_) :: Int
-  , head (head xs:_) :: Int
-  , head (head []:_) :: Int
-  , head (head (_:_):_) :: Int
-  , head (_ * _:_) :: Int
-  , head (_ + _:_) :: Int
-  , head (_ + _:xs) :: Int
-  , head [_ + _] :: Int
-  , head (_ + _:_:_) :: Int
-  , head (_ + x:_) :: Int
-  , head (_ + 0:_) :: Int
-  , head (_ + id _:_) :: Int
-  , head (x + _:_) :: Int
-  , head (0 + _:_) :: Int
-  , head (id _ + _:_) :: Int
-  , head (insert _ _) :: Int
-  , head (insert _ xs) :: Int
-  , head (insert _ []) :: Int
-  , head (insert _ (_:_)) :: Int
-  , head (insert x _) :: Int
-  , head (insert 0 _) :: Int
-  , head (insert (id _) _) :: Int
-  , head (_ ++ _) :: Int
-  , head (_ ++ xs) :: Int
-  , head (_ ++ ys) :: Int
-  , head (_ ++ []) :: Int
-  , head (_ ++ [0]) :: Int
-  , head (_ ++ tail _) :: Int
-  , head (_ ++ (_:_)) :: Int
-  , head (_ ++ (_:xs)) :: Int
-  , head (_ ++ [_]) :: Int
-  , head (_ ++ (_:_:_)) :: Int
-  , head (_ ++ (x:_)) :: Int
-  , head (_ ++ (0:_)) :: Int
-  , head (_ ++ (id _:_)) :: Int
-  , head (_ ++ (_ ++ _)) :: Int
-  , head (xs ++ _) :: Int
-  , head (xs ++ xs) :: Int
-  , head (xs ++ []) :: Int
-  , head (xs ++ (_:_)) :: Int
-  , head (ys ++ _) :: Int
-  , head ([] ++ _) :: Int
-  , head ([] ++ xs) :: Int
-  , head ([] ++ []) :: Int
-  , head ([] ++ (_:_)) :: Int
-  , head ([0] ++ _) :: Int
-  , head (tail _ ++ _) :: Int
-  , head ((_:_) ++ _) :: Int
-  , head ((_:_) ++ xs) :: Int
-  , head ((_:_) ++ []) :: Int
-  , head ((_:_) ++ (_:_)) :: Int
-  , head ((_:xs) ++ _) :: Int
-  , head ([_] ++ _) :: Int
-  , head ((_:_:_) ++ _) :: Int
-  , head ((x:_) ++ _) :: Int
-  , head ((0:_) ++ _) :: Int
-  , head ((id _:_) ++ _) :: Int
-  , head ((_ ++ _) ++ _) :: Int
-  , sort _ :: [Int]
-  , sort xs :: [Int]
-  , sort ys :: [Int]
-  , sort [] :: [Int]
-  , sort [0] :: [Int]
-  , sort (tail _) :: [Int]
-  , sort (_:_) :: [Int]
-  , sort (_:xs) :: [Int]
-  , sort [_] :: [Int]
-  , sort (_:_:_) :: [Int]
-  , sort (x:_) :: [Int]
-  , sort (0:_) :: [Int]
-  , sort (id _:_) :: [Int]
-  , sort (_ ++ _) :: [Int]
-  , tail _ :: [Int]
-  , tail xs :: [Int]
-  , tail ys :: [Int]
-  , tail zs :: [Int]
-  , tail [] :: [Int]
-  , tail [0] :: [Int]
-  , tail [1] :: [Int]
-  , tail [0,0] :: [Int]
-  , tail (sort _) :: [Int]
-  , tail (tail _) :: [Int]
-  , tail (tail xs) :: [Int]
-  , tail (tail []) :: [Int]
-  , tail (tail (_:_)) :: [Int]
-  , tail (_:_) :: [Int]
-  , tail (_:xs) :: [Int]
-  , tail (_:ys) :: [Int]
-  , tail [_] :: [Int]
-  , tail [_,0] :: [Int]
-  , tail (_:tail _) :: [Int]
-  , tail (_:_:_) :: [Int]
-  , tail (_:_:xs) :: [Int]
-  , tail [_,_] :: [Int]
-  , tail (_:_:_:_) :: [Int]
-  , tail (_:x:_) :: [Int]
-  , tail (_:0:_) :: [Int]
-  , tail (_:id _:_) :: [Int]
-  , tail (_:(_ ++ _)) :: [Int]
-  , tail (x:_) :: [Int]
-  , tail (x:xs) :: [Int]
-  , tail [x] :: [Int]
-  , tail (x:_:_) :: [Int]
-  , tail (y:_) :: [Int]
-  , tail (0:_) :: [Int]
-  , tail (0:xs) :: [Int]
-  , tail [0] :: [Int]
-  , tail (0:_:_) :: [Int]
-  , tail (1:_) :: [Int]
-  , tail (ord _:_) :: [Int]
-  , tail (id _:_) :: [Int]
-  , tail (id _:xs) :: [Int]
-  , tail [id _] :: [Int]
-  , tail (id _:_:_) :: [Int]
-  , tail (id x:_) :: [Int]
-  , tail (id 0:_) :: [Int]
-  , tail (id (id _):_) :: [Int]
-  , tail (abs _:_) :: [Int]
-  , tail (negate _:_) :: [Int]
-  , tail (head _:_) :: [Int]
-  , tail (_ + _:_) :: [Int]
-  , tail (insert _ _) :: [Int]
-  , tail (_ ++ _) :: [Int]
-  , tail (_ ++ xs) :: [Int]
-  , tail (_ ++ []) :: [Int]
-  , tail (_ ++ (_:_)) :: [Int]
-  , tail (xs ++ _) :: [Int]
-  , tail ([] ++ _) :: [Int]
-  , tail ((_:_) ++ _) :: [Int]
-  , (_ &&) :: Bool -> Bool
-  , (p &&) :: Bool -> Bool
-  , (False &&) :: Bool -> Bool
-  , (True &&) :: Bool -> Bool
-  , (not _ &&) :: Bool -> Bool
-  , (_ ||) :: Bool -> Bool
-  , (p ||) :: Bool -> Bool
-  , (q ||) :: Bool -> Bool
-  , (False ||) :: Bool -> Bool
-  , (True ||) :: Bool -> Bool
-  , (not _ ||) :: Bool -> Bool
-  , (not p ||) :: Bool -> Bool
-  , (not False ||) :: Bool -> Bool
-  , (not True ||) :: Bool -> Bool
-  , (not (not _) ||) :: Bool -> Bool
-  , ((_ || _) ||) :: Bool -> Bool
-  , (_ ==>) :: Bool -> Bool
-  , (_ *) :: Int -> Int
-  , (x *) :: Int -> Int
-  , (y *) :: Int -> Int
-  , (0 *) :: Int -> Int
-  , (1 *) :: Int -> Int
-  , (ord _ *) :: Int -> Int
-  , (id _ *) :: Int -> Int
-  , (id x *) :: Int -> Int
-  , (id 0 *) :: Int -> Int
-  , (id (id _) *) :: Int -> Int
-  , (abs _ *) :: Int -> Int
-  , (negate _ *) :: Int -> Int
-  , (head _ *) :: Int -> Int
-  , ((_ + _) *) :: Int -> Int
-  , (_ +) :: Int -> Int
-  , (x +) :: Int -> Int
-  , (y +) :: Int -> Int
-  , (z +) :: Int -> Int
-  , (0 +) :: Int -> Int
-  , (1 +) :: Int -> Int
-  , ((-1) +) :: Int -> Int
-  , (f _ +) :: Int -> Int
-  , (ord _ +) :: Int -> Int
-  , (ord c +) :: Int -> Int
-  , (ord 'a' +) :: Int -> Int
-  , (id _ +) :: Int -> Int
-  , (id x +) :: Int -> Int
-  , (id y +) :: Int -> Int
-  , (id 0 +) :: Int -> Int
-  , (id 1 +) :: Int -> Int
-  , (id (ord _) +) :: Int -> Int
-  , (id (id _) +) :: Int -> Int
-  , (id (id x) +) :: Int -> Int
-  , (id (id 0) +) :: Int -> Int
-  , (id (id (id _)) +) :: Int -> Int
-  , (id (abs _) +) :: Int -> Int
-  , (id (negate _) +) :: Int -> Int
-  , (id (head _) +) :: Int -> Int
-  , (id (_ + _) +) :: Int -> Int
-  , (abs _ +) :: Int -> Int
-  , (abs x +) :: Int -> Int
-  , (abs 0 +) :: Int -> Int
-  , (abs (id _) +) :: Int -> Int
-  , (negate _ +) :: Int -> Int
-  , (negate x +) :: Int -> Int
-  , (negate 0 +) :: Int -> Int
-  , (negate (id _) +) :: Int -> Int
-  , (head _ +) :: Int -> Int
-  , (head xs +) :: Int -> Int
-  , (head [] +) :: Int -> Int
-  , (head (_:_) +) :: Int -> Int
-  , (_ * _ +) :: Int -> Int
-  , ((_ + _) +) :: Int -> Int
-  , ((_ + x) +) :: Int -> Int
-  , ((_ + 0) +) :: Int -> Int
-  , ((_ + id _) +) :: Int -> Int
-  , ((x + _) +) :: Int -> Int
-  , ((0 + _) +) :: Int -> Int
-  , ((id _ + _) +) :: Int -> Int
-  , _ < _ :: Bool
-  , _ && _ :: Bool
-  , _ && p :: Bool
-  , _ && q :: Bool
-  , _ && False :: Bool
-  , _ && True :: Bool
-  , _ && not _ :: Bool
-  , _ && not p :: Bool
-  , _ && not False :: Bool
-  , _ && not True :: Bool
-  , _ && not (not _) :: Bool
-  , _ && (_ || _) :: Bool
-  , p && _ :: Bool
-  , p && p :: Bool
-  , p && False :: Bool
-  , p && True :: Bool
-  , p && not _ :: Bool
-  , q && _ :: Bool
-  , False && _ :: Bool
-  , False && p :: Bool
-  , False && False :: Bool
-  , False && True :: Bool
-  , False && not _ :: Bool
-  , True && _ :: Bool
-  , True && p :: Bool
-  , True && False :: Bool
-  , True && True :: Bool
-  , True && not _ :: Bool
-  , not _ && _ :: Bool
-  , not _ && p :: Bool
-  , not _ && False :: Bool
-  , not _ && True :: Bool
-  , not _ && not _ :: Bool
-  , not p && _ :: Bool
-  , not False && _ :: Bool
-  , not True && _ :: Bool
-  , not (not _) && _ :: Bool
-  , (_ || _) && _ :: Bool
-  , _ <= _ :: Bool
-  , _ <= p :: Bool
-  , _ <= False :: Bool
-  , _ <= True :: Bool
-  , _ <= not _ :: Bool
-  , p <= _ :: Bool
-  , False <= _ :: Bool
-  , True <= _ :: Bool
-  , not _ <= _ :: Bool
-  , _ == _ :: Bool
-  , _ == p :: Bool
-  , _ == q :: Bool
-  , _ == False :: Bool
-  , _ == True :: Bool
-  , _ == not _ :: Bool
-  , _ == not p :: Bool
-  , _ == not False :: Bool
-  , _ == not True :: Bool
-  , _ == not (not _) :: Bool
-  , _ == (_ || _) :: Bool
-  , p == _ :: Bool
-  , p == p :: Bool
-  , p == False :: Bool
-  , p == True :: Bool
-  , p == not _ :: Bool
-  , q == _ :: Bool
-  , False == _ :: Bool
-  , False == p :: Bool
-  , False == False :: Bool
-  , False == True :: Bool
-  , False == not _ :: Bool
-  , True == _ :: Bool
-  , True == p :: Bool
-  , True == False :: Bool
-  , True == True :: Bool
-  , True == not _ :: Bool
-  , not _ == _ :: Bool
-  , not _ == p :: Bool
-  , not _ == False :: Bool
-  , not _ == True :: Bool
-  , not _ == not _ :: Bool
-  , not p == _ :: Bool
-  , not False == _ :: Bool
-  , not True == _ :: Bool
-  , not (not _) == _ :: Bool
-  , (_ || _) == _ :: Bool
-  , _ || _ :: Bool
-  , _ || p :: Bool
-  , _ || q :: Bool
-  , _ || r :: Bool
-  , _ || False :: Bool
-  , _ || True :: Bool
-  , _ || not _ :: Bool
-  , _ || not p :: Bool
-  , _ || not q :: Bool
-  , _ || not False :: Bool
-  , _ || not True :: Bool
-  , _ || not (not _) :: Bool
-  , _ || not (not p) :: Bool
-  , _ || not (not False) :: Bool
-  , _ || not (not True) :: Bool
-  , _ || not (not (not _)) :: Bool
-  , _ || not (_ || _) :: Bool
-  , _ || odd _ :: Bool
-  , _ || even _ :: Bool
-  , _ || _ && _ :: Bool
-  , _ || _ == _ :: Bool
-  , _ || (_ || _) :: Bool
-  , _ || (_ || p) :: Bool
-  , _ || (_ || False) :: Bool
-  , _ || (_ || True) :: Bool
-  , _ || (_ || not _) :: Bool
-  , _ || (p || _) :: Bool
-  , _ || (False || _) :: Bool
-  , _ || (True || _) :: Bool
-  , _ || (not _ || _) :: Bool
-  , _ || _ == _ :: Bool
-  , _ || elem _ _ :: Bool
-  , p || _ :: Bool
-  , p || p :: Bool
-  , p || q :: Bool
-  , p || False :: Bool
-  , p || True :: Bool
-  , p || not _ :: Bool
-  , p || not p :: Bool
-  , p || not False :: Bool
-  , p || not True :: Bool
-  , p || not (not _) :: Bool
-  , p || (_ || _) :: Bool
-  , q || _ :: Bool
-  , q || p :: Bool
-  , q || False :: Bool
-  , q || True :: Bool
-  , q || not _ :: Bool
-  , r || _ :: Bool
-  , False || _ :: Bool
-  , False || p :: Bool
-  , False || q :: Bool
-  , False || False :: Bool
-  , False || True :: Bool
-  , False || not _ :: Bool
-  , False || not p :: Bool
-  , False || not False :: Bool
-  , False || not True :: Bool
-  , False || not (not _) :: Bool
-  , False || (_ || _) :: Bool
-  , True || _ :: Bool
-  , True || p :: Bool
-  , True || q :: Bool
-  , True || False :: Bool
-  , True || True :: Bool
-  , True || not _ :: Bool
-  , True || not p :: Bool
-  , True || not False :: Bool
-  , True || not True :: Bool
-  , True || not (not _) :: Bool
-  , True || (_ || _) :: Bool
-  , not _ || _ :: Bool
-  , not _ || p :: Bool
-  , not _ || q :: Bool
-  , not _ || False :: Bool
-  , not _ || True :: Bool
-  , not _ || not _ :: Bool
-  , not _ || not p :: Bool
-  , not _ || not False :: Bool
-  , not _ || not True :: Bool
-  , not _ || not (not _) :: Bool
-  , not _ || (_ || _) :: Bool
-  , not p || _ :: Bool
-  , not p || p :: Bool
-  , not p || False :: Bool
-  , not p || True :: Bool
-  , not p || not _ :: Bool
-  , not q || _ :: Bool
-  , not False || _ :: Bool
-  , not False || p :: Bool
-  , not False || False :: Bool
-  , not False || True :: Bool
-  , not False || not _ :: Bool
-  , not True || _ :: Bool
-  , not True || p :: Bool
-  , not True || False :: Bool
-  , not True || True :: Bool
-  , not True || not _ :: Bool
-  , not (not _) || _ :: Bool
-  , not (not _) || p :: Bool
-  , not (not _) || False :: Bool
-  , not (not _) || True :: Bool
-  , not (not _) || not _ :: Bool
-  , not (not p) || _ :: Bool
-  , not (not False) || _ :: Bool
-  , not (not True) || _ :: Bool
-  , not (not (not _)) || _ :: Bool
-  , not (_ || _) || _ :: Bool
-  , odd _ || _ :: Bool
-  , even _ || _ :: Bool
-  , _ && _ || _ :: Bool
-  , _ == _ || _ :: Bool
-  , (_ || _) || _ :: Bool
-  , (_ || _) || p :: Bool
-  , (_ || _) || False :: Bool
-  , (_ || _) || True :: Bool
-  , (_ || _) || not _ :: Bool
-  , (_ || p) || _ :: Bool
-  , (_ || False) || _ :: Bool
-  , (_ || True) || _ :: Bool
-  , (_ || not _) || _ :: Bool
-  , (p || _) || _ :: Bool
-  , (False || _) || _ :: Bool
-  , (True || _) || _ :: Bool
-  , (not _ || _) || _ :: Bool
-  , _ == _ || _ :: Bool
-  , elem _ _ || _ :: Bool
-  , _ ==> _ :: Bool
-  , _ ==> p :: Bool
-  , _ ==> False :: Bool
-  , _ ==> True :: Bool
-  , _ ==> not _ :: Bool
-  , p ==> _ :: Bool
-  , False ==> _ :: Bool
-  , True ==> _ :: Bool
-  , not _ ==> _ :: Bool
-  , _ < _ :: Bool
-  , _ <= _ :: Bool
-  , _ <= x :: Bool
-  , _ <= 0 :: Bool
-  , _ <= id _ :: Bool
-  , x <= _ :: Bool
-  , 0 <= _ :: Bool
-  , id _ <= _ :: Bool
-  , _ == _ :: Bool
-  , _ == x :: Bool
-  , _ == y :: Bool
-  , _ == 0 :: Bool
-  , _ == 1 :: Bool
-  , _ == ord _ :: Bool
-  , _ == id _ :: Bool
-  , _ == id x :: Bool
-  , _ == id 0 :: Bool
-  , _ == id (id _) :: Bool
-  , _ == abs _ :: Bool
-  , _ == negate _ :: Bool
-  , _ == head _ :: Bool
-  , _ == _ + _ :: Bool
-  , x == _ :: Bool
-  , x == x :: Bool
-  , x == 0 :: Bool
-  , x == id _ :: Bool
-  , y == _ :: Bool
-  , 0 == _ :: Bool
-  , 0 == x :: Bool
-  , 0 == 0 :: Bool
-  , 0 == id _ :: Bool
-  , 1 == _ :: Bool
-  , ord _ == _ :: Bool
-  , id _ == _ :: Bool
-  , id _ == x :: Bool
-  , id _ == 0 :: Bool
-  , id _ == id _ :: Bool
-  , id x == _ :: Bool
-  , id 0 == _ :: Bool
-  , id (id _) == _ :: Bool
-  , abs _ == _ :: Bool
-  , negate _ == _ :: Bool
-  , head _ == _ :: Bool
-  , _ + _ == _ :: Bool
-  , _ * _ :: Int
-  , _ * x :: Int
-  , _ * y :: Int
-  , _ * z :: Int
-  , _ * 0 :: Int
-  , _ * 1 :: Int
-  , _ * (-1) :: Int
-  , _ * f _ :: Int
-  , _ * ord _ :: Int
-  , _ * ord c :: Int
-  , _ * ord 'a' :: Int
-  , _ * id _ :: Int
-  , _ * id x :: Int
-  , _ * id y :: Int
-  , _ * id 0 :: Int
-  , _ * id 1 :: Int
-  , _ * id (ord _) :: Int
-  , _ * id (id _) :: Int
-  , _ * id (id x) :: Int
-  , _ * id (id 0) :: Int
-  , _ * id (id (id _)) :: Int
-  , _ * id (abs _) :: Int
-  , _ * id (negate _) :: Int
-  , _ * id (head _) :: Int
-  , _ * id (_ + _) :: Int
-  , _ * abs _ :: Int
-  , _ * abs x :: Int
-  , _ * abs 0 :: Int
-  , _ * abs (id _) :: Int
-  , _ * negate _ :: Int
-  , _ * negate x :: Int
-  , _ * negate 0 :: Int
-  , _ * negate (id _) :: Int
-  , _ * head _ :: Int
-  , _ * head xs :: Int
-  , _ * head [] :: Int
-  , _ * head (_:_) :: Int
-  , _ * (_ * _) :: Int
-  , _ * (_ + _) :: Int
-  , _ * (_ + x) :: Int
-  , _ * (_ + 0) :: Int
-  , _ * (_ + id _) :: Int
-  , _ * (x + _) :: Int
-  , _ * (0 + _) :: Int
-  , _ * (id _ + _) :: Int
-  , x * _ :: Int
-  , x * x :: Int
-  , x * y :: Int
-  , x * 0 :: Int
-  , x * 1 :: Int
-  , x * ord _ :: Int
-  , x * id _ :: Int
-  , x * id x :: Int
-  , x * id 0 :: Int
-  , x * id (id _) :: Int
-  , x * abs _ :: Int
-  , x * negate _ :: Int
-  , x * head _ :: Int
-  , x * (_ + _) :: Int
-  , y * _ :: Int
-  , y * x :: Int
-  , y * 0 :: Int
-  , y * id _ :: Int
-  , z * _ :: Int
-  , 0 * _ :: Int
-  , 0 * x :: Int
-  , 0 * y :: Int
-  , 0 * 0 :: Int
-  , 0 * 1 :: Int
-  , 0 * ord _ :: Int
-  , 0 * id _ :: Int
-  , 0 * id x :: Int
-  , 0 * id 0 :: Int
-  , 0 * id (id _) :: Int
-  , 0 * abs _ :: Int
-  , 0 * negate _ :: Int
-  , 0 * head _ :: Int
-  , 0 * (_ + _) :: Int
-  , 1 * _ :: Int
-  , 1 * x :: Int
-  , 1 * 0 :: Int
-  , 1 * id _ :: Int
-  , (-1) * _ :: Int
-  , f _ * _ :: Int
-  , ord _ * _ :: Int
-  , ord _ * x :: Int
-  , ord _ * 0 :: Int
-  , ord _ * id _ :: Int
-  , ord c * _ :: Int
-  , ord 'a' * _ :: Int
-  , id _ * _ :: Int
-  , id _ * x :: Int
-  , id _ * y :: Int
-  , id _ * 0 :: Int
-  , id _ * 1 :: Int
-  , id _ * ord _ :: Int
-  , id _ * id _ :: Int
-  , id _ * id x :: Int
-  , id _ * id 0 :: Int
-  , id _ * id (id _) :: Int
-  , id _ * abs _ :: Int
-  , id _ * negate _ :: Int
-  , id _ * head _ :: Int
-  , id _ * (_ + _) :: Int
-  , id x * _ :: Int
-  , id x * x :: Int
-  , id x * 0 :: Int
-  , id x * id _ :: Int
-  , id y * _ :: Int
-  , id 0 * _ :: Int
-  , id 0 * x :: Int
-  , id 0 * 0 :: Int
-  , id 0 * id _ :: Int
-  , id 1 * _ :: Int
-  , id (ord _) * _ :: Int
-  , id (id _) * _ :: Int
-  , id (id _) * x :: Int
-  , id (id _) * 0 :: Int
-  , id (id _) * id _ :: Int
-  , id (id x) * _ :: Int
-  , id (id 0) * _ :: Int
-  , id (id (id _)) * _ :: Int
-  , id (abs _) * _ :: Int
-  , id (negate _) * _ :: Int
-  , id (head _) * _ :: Int
-  , id (_ + _) * _ :: Int
-  , abs _ * _ :: Int
-  , abs _ * x :: Int
-  , abs _ * 0 :: Int
-  , abs _ * id _ :: Int
-  , abs x * _ :: Int
-  , abs 0 * _ :: Int
-  , abs (id _) * _ :: Int
-  , negate _ * _ :: Int
-  , negate _ * x :: Int
-  , negate _ * 0 :: Int
-  , negate _ * id _ :: Int
-  , negate x * _ :: Int
-  , negate 0 * _ :: Int
-  , negate (id _) * _ :: Int
-  , head _ * _ :: Int
-  , head _ * x :: Int
-  , head _ * 0 :: Int
-  , head _ * id _ :: Int
-  , head xs * _ :: Int
-  , head [] * _ :: Int
-  , head (_:_) * _ :: Int
-  , (_ * _) * _ :: Int
-  , (_ + _) * _ :: Int
-  , (_ + _) * x :: Int
-  , (_ + _) * 0 :: Int
-  , (_ + _) * id _ :: Int
-  , (_ + x) * _ :: Int
-  , (_ + 0) * _ :: Int
-  , (_ + id _) * _ :: Int
-  , (x + _) * _ :: Int
-  , (0 + _) * _ :: Int
-  , (id _ + _) * _ :: Int
-  , _ + _ :: Int
-  , _ + x :: Int
-  , _ + y :: Int
-  , _ + z :: Int
-  , _ + x' :: Int
-  , _ + 0 :: Int
-  , _ + 1 :: Int
-  , _ + 2 :: Int
-  , _ + (-1) :: Int
-  , _ + f _ :: Int
-  , _ + f x :: Int
-  , _ + f 0 :: Int
-  , _ + f (id _) :: Int
-  , _ + g _ :: Int
-  , _ + ord _ :: Int
-  , _ + ord c :: Int
-  , _ + ord d :: Int
-  , _ + ord ' ' :: Int
-  , _ + ord 'a' :: Int
-  , _ + id _ :: Int
-  , _ + id x :: Int
-  , _ + id y :: Int
-  , _ + id z :: Int
-  , _ + id 0 :: Int
-  , _ + id 1 :: Int
-  , _ + id (-1) :: Int
-  , _ + id (f _) :: Int
-  , _ + id (ord _) :: Int
-  , _ + id (ord c) :: Int
-  , _ + id (ord 'a') :: Int
-  , _ + id (id _) :: Int
-  , _ + id (id x) :: Int
-  , _ + id (id y) :: Int
-  , _ + id (id 0) :: Int
-  , _ + id (id 1) :: Int
-  , _ + id (id (ord _)) :: Int
-  , _ + id (id (id _)) :: Int
-  , _ + id (id (id x)) :: Int
-  , _ + id (id (id 0)) :: Int
-  , _ + id (id (id (id _))) :: Int
-  , _ + id (id (abs _)) :: Int
-  , _ + id (id (negate _)) :: Int
-  , _ + id (id (head _)) :: Int
-  , _ + id (id (_ + _)) :: Int
-  , _ + id (abs _) :: Int
-  , _ + id (abs x) :: Int
-  , _ + id (abs 0) :: Int
-  , _ + id (abs (id _)) :: Int
-  , _ + id (negate _) :: Int
-  , _ + id (negate x) :: Int
-  , _ + id (negate 0) :: Int
-  , _ + id (negate (id _)) :: Int
-  , _ + id (head _) :: Int
-  , _ + id (head xs) :: Int
-  , _ + id (head []) :: Int
-  , _ + id (head (_:_)) :: Int
-  , _ + id (_ * _) :: Int
-  , _ + id (_ + _) :: Int
-  , _ + id (_ + x) :: Int
-  , _ + id (_ + 0) :: Int
-  , _ + id (_ + id _) :: Int
-  , _ + id (x + _) :: Int
-  , _ + id (0 + _) :: Int
-  , _ + id (id _ + _) :: Int
-  , _ + abs _ :: Int
-  , _ + abs x :: Int
-  , _ + abs y :: Int
-  , _ + abs 0 :: Int
-  , _ + abs 1 :: Int
-  , _ + abs (ord _) :: Int
-  , _ + abs (id _) :: Int
-  , _ + abs (id x) :: Int
-  , _ + abs (id 0) :: Int
-  , _ + abs (id (id _)) :: Int
-  , _ + abs (abs _) :: Int
-  , _ + abs (negate _) :: Int
-  , _ + abs (head _) :: Int
-  , _ + abs (_ + _) :: Int
-  , _ + negate _ :: Int
-  , _ + negate x :: Int
-  , _ + negate y :: Int
-  , _ + negate 0 :: Int
-  , _ + negate 1 :: Int
-  , _ + negate (ord _) :: Int
-  , _ + negate (id _) :: Int
-  , _ + negate (id x) :: Int
-  , _ + negate (id 0) :: Int
-  , _ + negate (id (id _)) :: Int
-  , _ + negate (abs _) :: Int
-  , _ + negate (negate _) :: Int
-  , _ + negate (head _) :: Int
-  , _ + negate (_ + _) :: Int
-  , _ + head _ :: Int
-  , _ + head xs :: Int
-  , _ + head ys :: Int
-  , _ + head [] :: Int
-  , _ + head [0] :: Int
-  , _ + head (tail _) :: Int
-  , _ + head (_:_) :: Int
-  , _ + head (_:xs) :: Int
-  , _ + head [_] :: Int
-  , _ + head (_:_:_) :: Int
-  , _ + head (x:_) :: Int
-  , _ + head (0:_) :: Int
-  , _ + head (id _:_) :: Int
-  , _ + head (_ ++ _) :: Int
-  , _ + _ * _ :: Int
-  , _ + _ * x :: Int
-  , _ + _ * 0 :: Int
-  , _ + _ * id _ :: Int
-  , _ + x * _ :: Int
-  , _ + 0 * _ :: Int
-  , _ + id _ * _ :: Int
-  , _ + (_ + _) :: Int
-  , _ + (_ + x) :: Int
-  , _ + (_ + y) :: Int
-  , _ + (_ + 0) :: Int
-  , _ + (_ + 1) :: Int
-  , _ + (_ + ord _) :: Int
-  , _ + (_ + id _) :: Int
-  , _ + (_ + id x) :: Int
-  , _ + (_ + id 0) :: Int
-  , _ + (_ + id (id _)) :: Int
-  , _ + (_ + abs _) :: Int
-  , _ + (_ + negate _) :: Int
-  , _ + (_ + head _) :: Int
-  , _ + (_ + (_ + _)) :: Int
-  , _ + (x + _) :: Int
-  , _ + (x + x) :: Int
-  , _ + (x + 0) :: Int
-  , _ + (x + id _) :: Int
-  , _ + (y + _) :: Int
-  , _ + (0 + _) :: Int
-  , _ + (0 + x) :: Int
-  , _ + (0 + 0) :: Int
-  , _ + (0 + id _) :: Int
-  , _ + (1 + _) :: Int
-  , _ + (ord _ + _) :: Int
-  , _ + (id _ + _) :: Int
-  , _ + (id _ + x) :: Int
-  , _ + (id _ + 0) :: Int
-  , _ + (id _ + id _) :: Int
-  , _ + (id x + _) :: Int
-  , _ + (id 0 + _) :: Int
-  , _ + (id (id _) + _) :: Int
-  , _ + (abs _ + _) :: Int
-  , _ + (negate _ + _) :: Int
-  , _ + (head _ + _) :: Int
-  , _ + ((_ + _) + _) :: Int
-  , x + _ :: Int
-  , x + x :: Int
-  , x + y :: Int
-  , x + z :: Int
-  , x + 0 :: Int
-  , x + 1 :: Int
-  , x + (-1) :: Int
-  , x + f _ :: Int
-  , x + ord _ :: Int
-  , x + ord c :: Int
-  , x + ord 'a' :: Int
-  , x + id _ :: Int
-  , x + id x :: Int
-  , x + id y :: Int
-  , x + id 0 :: Int
-  , x + id 1 :: Int
-  , x + id (ord _) :: Int
-  , x + id (id _) :: Int
-  , x + id (id x) :: Int
-  , x + id (id 0) :: Int
-  , x + id (id (id _)) :: Int
-  , x + id (abs _) :: Int
-  , x + id (negate _) :: Int
-  , x + id (head _) :: Int
-  , x + id (_ + _) :: Int
-  , x + abs _ :: Int
-  , x + abs x :: Int
-  , x + abs 0 :: Int
-  , x + abs (id _) :: Int
-  , x + negate _ :: Int
-  , x + negate x :: Int
-  , x + negate 0 :: Int
-  , x + negate (id _) :: Int
-  , x + head _ :: Int
-  , x + head xs :: Int
-  , x + head [] :: Int
-  , x + head (_:_) :: Int
-  , x + _ * _ :: Int
-  , x + (_ + _) :: Int
-  , x + (_ + x) :: Int
-  , x + (_ + 0) :: Int
-  , x + (_ + id _) :: Int
-  , x + (x + _) :: Int
-  , x + (0 + _) :: Int
-  , x + (id _ + _) :: Int
-  , y + _ :: Int
-  , y + x :: Int
-  , y + y :: Int
-  , y + 0 :: Int
-  , y + 1 :: Int
-  , y + ord _ :: Int
-  , y + id _ :: Int
-  , y + id x :: Int
-  , y + id 0 :: Int
-  , y + id (id _) :: Int
-  , y + abs _ :: Int
-  , y + negate _ :: Int
-  , y + head _ :: Int
-  , y + (_ + _) :: Int
-  , z + _ :: Int
-  , z + x :: Int
-  , z + 0 :: Int
-  , z + id _ :: Int
-  , x' + _ :: Int
-  , 0 + _ :: Int
-  , 0 + x :: Int
-  , 0 + y :: Int
-  , 0 + z :: Int
-  , 0 + 0 :: Int
-  , 0 + 1 :: Int
-  , 0 + (-1) :: Int
-  , 0 + f _ :: Int
-  , 0 + ord _ :: Int
-  , 0 + ord c :: Int
-  , 0 + ord 'a' :: Int
-  , 0 + id _ :: Int
-  , 0 + id x :: Int
-  , 0 + id y :: Int
-  , 0 + id 0 :: Int
-  , 0 + id 1 :: Int
-  , 0 + id (ord _) :: Int
-  , 0 + id (id _) :: Int
-  , 0 + id (id x) :: Int
-  , 0 + id (id 0) :: Int
-  , 0 + id (id (id _)) :: Int
-  , 0 + id (abs _) :: Int
-  , 0 + id (negate _) :: Int
-  , 0 + id (head _) :: Int
-  , 0 + id (_ + _) :: Int
-  , 0 + abs _ :: Int
-  , 0 + abs x :: Int
-  , 0 + abs 0 :: Int
-  , 0 + abs (id _) :: Int
-  , 0 + negate _ :: Int
-  , 0 + negate x :: Int
-  , 0 + negate 0 :: Int
-  , 0 + negate (id _) :: Int
-  , 0 + head _ :: Int
-  , 0 + head xs :: Int
-  , 0 + head [] :: Int
-  , 0 + head (_:_) :: Int
-  , 0 + _ * _ :: Int
-  , 0 + (_ + _) :: Int
-  , 0 + (_ + x) :: Int
-  , 0 + (_ + 0) :: Int
-  , 0 + (_ + id _) :: Int
-  , 0 + (x + _) :: Int
-  , 0 + (0 + _) :: Int
-  , 0 + (id _ + _) :: Int
-  , 1 + _ :: Int
-  , 1 + x :: Int
-  , 1 + y :: Int
-  , 1 + 0 :: Int
-  , 1 + 1 :: Int
-  , 1 + ord _ :: Int
-  , 1 + id _ :: Int
-  , 1 + id x :: Int
-  , 1 + id 0 :: Int
-  , 1 + id (id _) :: Int
-  , 1 + abs _ :: Int
-  , 1 + negate _ :: Int
-  , 1 + head _ :: Int
-  , 1 + (_ + _) :: Int
-  , 2 + _ :: Int
-  , (-1) + _ :: Int
-  , (-1) + x :: Int
-  , (-1) + 0 :: Int
-  , (-1) + id _ :: Int
-  , f _ + _ :: Int
-  , f _ + x :: Int
-  , f _ + 0 :: Int
-  , f _ + id _ :: Int
-  , f x + _ :: Int
-  , f 0 + _ :: Int
-  , f (id _) + _ :: Int
-  , g _ + _ :: Int
-  , ord _ + _ :: Int
-  , ord _ + x :: Int
-  , ord _ + y :: Int
-  , ord _ + 0 :: Int
-  , ord _ + 1 :: Int
-  , ord _ + ord _ :: Int
-  , ord _ + id _ :: Int
-  , ord _ + id x :: Int
-  , ord _ + id 0 :: Int
-  , ord _ + id (id _) :: Int
-  , ord _ + abs _ :: Int
-  , ord _ + negate _ :: Int
-  , ord _ + head _ :: Int
-  , ord _ + (_ + _) :: Int
-  , ord c + _ :: Int
-  , ord c + x :: Int
-  , ord c + 0 :: Int
-  , ord c + id _ :: Int
-  , ord d + _ :: Int
-  , ord ' ' + _ :: Int
-  , ord 'a' + _ :: Int
-  , ord 'a' + x :: Int
-  , ord 'a' + 0 :: Int
-  , ord 'a' + id _ :: Int
-  , id _ + _ :: Int
-  , id _ + x :: Int
-  , id _ + y :: Int
-  , id _ + z :: Int
-  , id _ + 0 :: Int
-  , id _ + 1 :: Int
-  , id _ + (-1) :: Int
-  , id _ + f _ :: Int
-  , id _ + ord _ :: Int
-  , id _ + ord c :: Int
-  , id _ + ord 'a' :: Int
-  , id _ + id _ :: Int
-  , id _ + id x :: Int
-  , id _ + id y :: Int
-  , id _ + id 0 :: Int
-  , id _ + id 1 :: Int
-  , id _ + id (ord _) :: Int
-  , id _ + id (id _) :: Int
-  , id _ + id (id x) :: Int
-  , id _ + id (id 0) :: Int
-  , id _ + id (id (id _)) :: Int
-  , id _ + id (abs _) :: Int
-  , id _ + id (negate _) :: Int
-  , id _ + id (head _) :: Int
-  , id _ + id (_ + _) :: Int
-  , id _ + abs _ :: Int
-  , id _ + abs x :: Int
-  , id _ + abs 0 :: Int
-  , id _ + abs (id _) :: Int
-  , id _ + negate _ :: Int
-  , id _ + negate x :: Int
-  , id _ + negate 0 :: Int
-  , id _ + negate (id _) :: Int
-  , id _ + head _ :: Int
-  , id _ + head xs :: Int
-  , id _ + head [] :: Int
-  , id _ + head (_:_) :: Int
-  , id _ + _ * _ :: Int
-  , id _ + (_ + _) :: Int
-  , id _ + (_ + x) :: Int
-  , id _ + (_ + 0) :: Int
-  , id _ + (_ + id _) :: Int
-  , id _ + (x + _) :: Int
-  , id _ + (0 + _) :: Int
-  , id _ + (id _ + _) :: Int
-  , id x + _ :: Int
-  , id x + x :: Int
-  , id x + y :: Int
-  , id x + 0 :: Int
-  , id x + 1 :: Int
-  , id x + ord _ :: Int
-  , id x + id _ :: Int
-  , id x + id x :: Int
-  , id x + id 0 :: Int
-  , id x + id (id _) :: Int
-  , id x + abs _ :: Int
-  , id x + negate _ :: Int
-  , id x + head _ :: Int
-  , id x + (_ + _) :: Int
-  , id y + _ :: Int
-  , id y + x :: Int
-  , id y + 0 :: Int
-  , id y + id _ :: Int
-  , id z + _ :: Int
-  , id 0 + _ :: Int
-  , id 0 + x :: Int
-  , id 0 + y :: Int
-  , id 0 + 0 :: Int
-  , id 0 + 1 :: Int
-  , id 0 + ord _ :: Int
-  , id 0 + id _ :: Int
-  , id 0 + id x :: Int
-  , id 0 + id 0 :: Int
-  , id 0 + id (id _) :: Int
-  , id 0 + abs _ :: Int
-  , id 0 + negate _ :: Int
-  , id 0 + head _ :: Int
-  , id 0 + (_ + _) :: Int
-  , id 1 + _ :: Int
-  , id 1 + x :: Int
-  , id 1 + 0 :: Int
-  , id 1 + id _ :: Int
-  , id (-1) + _ :: Int
-  , id (f _) + _ :: Int
-  , id (ord _) + _ :: Int
-  , id (ord _) + x :: Int
-  , id (ord _) + 0 :: Int
-  , id (ord _) + id _ :: Int
-  , id (ord c) + _ :: Int
-  , id (ord 'a') + _ :: Int
-  , id (id _) + _ :: Int
-  , id (id _) + x :: Int
-  , id (id _) + y :: Int
-  , id (id _) + 0 :: Int
-  , id (id _) + 1 :: Int
-  , id (id _) + ord _ :: Int
-  , id (id _) + id _ :: Int
-  , id (id _) + id x :: Int
-  , id (id _) + id 0 :: Int
-  , id (id _) + id (id _) :: Int
-  , id (id _) + abs _ :: Int
-  , id (id _) + negate _ :: Int
-  , id (id _) + head _ :: Int
-  , id (id _) + (_ + _) :: Int
-  , id (id x) + _ :: Int
-  , id (id x) + x :: Int
-  , id (id x) + 0 :: Int
-  , id (id x) + id _ :: Int
-  , id (id y) + _ :: Int
-  , id (id 0) + _ :: Int
-  , id (id 0) + x :: Int
-  , id (id 0) + 0 :: Int
-  , id (id 0) + id _ :: Int
-  , id (id 1) + _ :: Int
-  , id (id (ord _)) + _ :: Int
-  , id (id (id _)) + _ :: Int
-  , id (id (id _)) + x :: Int
-  , id (id (id _)) + 0 :: Int
-  , id (id (id _)) + id _ :: Int
-  , id (id (id x)) + _ :: Int
-  , id (id (id 0)) + _ :: Int
-  , id (id (id (id _))) + _ :: Int
-  , id (id (abs _)) + _ :: Int
-  , id (id (negate _)) + _ :: Int
-  , id (id (head _)) + _ :: Int
-  , id (id (_ + _)) + _ :: Int
-  , id (abs _) + _ :: Int
-  , id (abs _) + x :: Int
-  , id (abs _) + 0 :: Int
-  , id (abs _) + id _ :: Int
-  , id (abs x) + _ :: Int
-  , id (abs 0) + _ :: Int
-  , id (abs (id _)) + _ :: Int
-  , id (negate _) + _ :: Int
-  , id (negate _) + x :: Int
-  , id (negate _) + 0 :: Int
-  , id (negate _) + id _ :: Int
-  , id (negate x) + _ :: Int
-  , id (negate 0) + _ :: Int
-  , id (negate (id _)) + _ :: Int
-  , id (head _) + _ :: Int
-  , id (head _) + x :: Int
-  , id (head _) + 0 :: Int
-  , id (head _) + id _ :: Int
-  , id (head xs) + _ :: Int
-  , id (head []) + _ :: Int
-  , id (head (_:_)) + _ :: Int
-  , id (_ * _) + _ :: Int
-  , id (_ + _) + _ :: Int
-  , id (_ + _) + x :: Int
-  , id (_ + _) + 0 :: Int
-  , id (_ + _) + id _ :: Int
-  , id (_ + x) + _ :: Int
-  , id (_ + 0) + _ :: Int
-  , id (_ + id _) + _ :: Int
-  , id (x + _) + _ :: Int
-  , id (0 + _) + _ :: Int
-  , id (id _ + _) + _ :: Int
-  , abs _ + _ :: Int
-  , abs _ + x :: Int
-  , abs _ + y :: Int
-  , abs _ + 0 :: Int
-  , abs _ + 1 :: Int
-  , abs _ + ord _ :: Int
-  , abs _ + id _ :: Int
-  , abs _ + id x :: Int
-  , abs _ + id 0 :: Int
-  , abs _ + id (id _) :: Int
-  , abs _ + abs _ :: Int
-  , abs _ + negate _ :: Int
-  , abs _ + head _ :: Int
-  , abs _ + (_ + _) :: Int
-  , abs x + _ :: Int
-  , abs x + x :: Int
-  , abs x + 0 :: Int
-  , abs x + id _ :: Int
-  , abs y + _ :: Int
-  , abs 0 + _ :: Int
-  , abs 0 + x :: Int
-  , abs 0 + 0 :: Int
-  , abs 0 + id _ :: Int
-  , abs 1 + _ :: Int
-  , abs (ord _) + _ :: Int
-  , abs (id _) + _ :: Int
-  , abs (id _) + x :: Int
-  , abs (id _) + 0 :: Int
-  , abs (id _) + id _ :: Int
-  , abs (id x) + _ :: Int
-  , abs (id 0) + _ :: Int
-  , abs (id (id _)) + _ :: Int
-  , abs (abs _) + _ :: Int
-  , abs (negate _) + _ :: Int
-  , abs (head _) + _ :: Int
-  , abs (_ + _) + _ :: Int
-  , negate _ + _ :: Int
-  , negate _ + x :: Int
-  , negate _ + y :: Int
-  , negate _ + 0 :: Int
-  , negate _ + 1 :: Int
-  , negate _ + ord _ :: Int
-  , negate _ + id _ :: Int
-  , negate _ + id x :: Int
-  , negate _ + id 0 :: Int
-  , negate _ + id (id _) :: Int
-  , negate _ + abs _ :: Int
-  , negate _ + negate _ :: Int
-  , negate _ + head _ :: Int
-  , negate _ + (_ + _) :: Int
-  , negate x + _ :: Int
-  , negate x + x :: Int
-  , negate x + 0 :: Int
-  , negate x + id _ :: Int
-  , negate y + _ :: Int
-  , negate 0 + _ :: Int
-  , negate 0 + x :: Int
-  , negate 0 + 0 :: Int
-  , negate 0 + id _ :: Int
-  , negate 1 + _ :: Int
-  , negate (ord _) + _ :: Int
-  , negate (id _) + _ :: Int
-  , negate (id _) + x :: Int
-  , negate (id _) + 0 :: Int
-  , negate (id _) + id _ :: Int
-  , negate (id x) + _ :: Int
-  , negate (id 0) + _ :: Int
-  , negate (id (id _)) + _ :: Int
-  , negate (abs _) + _ :: Int
-  , negate (negate _) + _ :: Int
-  , negate (head _) + _ :: Int
-  , negate (_ + _) + _ :: Int
-  , head _ + _ :: Int
-  , head _ + x :: Int
-  , head _ + y :: Int
-  , head _ + 0 :: Int
-  , head _ + 1 :: Int
-  , head _ + ord _ :: Int
-  , head _ + id _ :: Int
-  , head _ + id x :: Int
-  , head _ + id 0 :: Int
-  , head _ + id (id _) :: Int
-  , head _ + abs _ :: Int
-  , head _ + negate _ :: Int
-  , head _ + head _ :: Int
-  , head _ + (_ + _) :: Int
-  , head xs + _ :: Int
-  , head xs + x :: Int
-  , head xs + 0 :: Int
-  , head xs + id _ :: Int
-  , head ys + _ :: Int
-  , head [] + _ :: Int
-  , head [] + x :: Int
-  , head [] + 0 :: Int
-  , head [] + id _ :: Int
-  , head [0] + _ :: Int
-  , head (tail _) + _ :: Int
-  , head (_:_) + _ :: Int
-  , head (_:_) + x :: Int
-  , head (_:_) + 0 :: Int
-  , head (_:_) + id _ :: Int
-  , head (_:xs) + _ :: Int
-  , head [_] + _ :: Int
-  , head (_:_:_) + _ :: Int
-  , head (x:_) + _ :: Int
-  , head (0:_) + _ :: Int
-  , head (id _:_) + _ :: Int
-  , head (_ ++ _) + _ :: Int
-  , _ * _ + _ :: Int
-  , _ * _ + x :: Int
-  , _ * _ + 0 :: Int
-  , _ * _ + id _ :: Int
-  , _ * x + _ :: Int
-  , _ * 0 + _ :: Int
-  , _ * id _ + _ :: Int
-  , x * _ + _ :: Int
-  , 0 * _ + _ :: Int
-  , id _ * _ + _ :: Int
-  , (_ + _) + _ :: Int
-  , (_ + _) + x :: Int
-  , (_ + _) + y :: Int
-  , (_ + _) + 0 :: Int
-  , (_ + _) + 1 :: Int
-  , (_ + _) + ord _ :: Int
-  , (_ + _) + id _ :: Int
-  , (_ + _) + id x :: Int
-  , (_ + _) + id 0 :: Int
-  , (_ + _) + id (id _) :: Int
-  , (_ + _) + abs _ :: Int
-  , (_ + _) + negate _ :: Int
-  , (_ + _) + head _ :: Int
-  , (_ + _) + (_ + _) :: Int
-  , (_ + x) + _ :: Int
-  , (_ + x) + x :: Int
-  , (_ + x) + 0 :: Int
-  , (_ + x) + id _ :: Int
-  , (_ + y) + _ :: Int
-  , (_ + 0) + _ :: Int
-  , (_ + 0) + x :: Int
-  , (_ + 0) + 0 :: Int
-  , (_ + 0) + id _ :: Int
-  , (_ + 1) + _ :: Int
-  , (_ + ord _) + _ :: Int
-  , (_ + id _) + _ :: Int
-  , (_ + id _) + x :: Int
-  , (_ + id _) + 0 :: Int
-  , (_ + id _) + id _ :: Int
-  , (_ + id x) + _ :: Int
-  , (_ + id 0) + _ :: Int
-  , (_ + id (id _)) + _ :: Int
-  , (_ + abs _) + _ :: Int
-  , (_ + negate _) + _ :: Int
-  , (_ + head _) + _ :: Int
-  , (_ + (_ + _)) + _ :: Int
-  , (x + _) + _ :: Int
-  , (x + _) + x :: Int
-  , (x + _) + 0 :: Int
-  , (x + _) + id _ :: Int
-  , (x + x) + _ :: Int
-  , (x + 0) + _ :: Int
-  , (x + id _) + _ :: Int
-  , (y + _) + _ :: Int
-  , (0 + _) + _ :: Int
-  , (0 + _) + x :: Int
-  , (0 + _) + 0 :: Int
-  , (0 + _) + id _ :: Int
-  , (0 + x) + _ :: Int
-  , (0 + 0) + _ :: Int
-  , (0 + id _) + _ :: Int
-  , (1 + _) + _ :: Int
-  , (ord _ + _) + _ :: Int
-  , (id _ + _) + _ :: Int
-  , (id _ + _) + x :: Int
-  , (id _ + _) + 0 :: Int
-  , (id _ + _) + id _ :: Int
-  , (id _ + x) + _ :: Int
-  , (id _ + 0) + _ :: Int
-  , (id _ + id _) + _ :: Int
-  , (id x + _) + _ :: Int
-  , (id 0 + _) + _ :: Int
-  , (id (id _) + _) + _ :: Int
-  , (abs _ + _) + _ :: Int
-  , (negate _ + _) + _ :: Int
-  , (head _ + _) + _ :: Int
-  , ((_ + _) + _) + _ :: Int
-  , elem _ _ :: Bool
-  , elem _ xs :: Bool
-  , elem _ ys :: Bool
-  , elem _ [] :: Bool
-  , elem _ [0] :: Bool
-  , elem _ (tail _) :: Bool
-  , elem _ (_:_) :: Bool
-  , elem _ (_:xs) :: Bool
-  , elem _ [_] :: Bool
-  , elem _ (_:_:_) :: Bool
-  , elem _ (x:_) :: Bool
-  , elem _ (0:_) :: Bool
-  , elem _ (id _:_) :: Bool
-  , elem _ (_ ++ _) :: Bool
-  , elem x _ :: Bool
-  , elem x xs :: Bool
-  , elem x [] :: Bool
-  , elem x (_:_) :: Bool
-  , elem y _ :: Bool
-  , elem 0 _ :: Bool
-  , elem 0 xs :: Bool
-  , elem 0 [] :: Bool
-  , elem 0 (_:_) :: Bool
-  , elem 1 _ :: Bool
-  , elem (ord _) _ :: Bool
-  , elem (id _) _ :: Bool
-  , elem (id _) xs :: Bool
-  , elem (id _) [] :: Bool
-  , elem (id _) (_:_) :: Bool
-  , elem (id x) _ :: Bool
-  , elem (id 0) _ :: Bool
-  , elem (id (id _)) _ :: Bool
-  , elem (abs _) _ :: Bool
-  , elem (negate _) _ :: Bool
-  , elem (head _) _ :: Bool
-  , elem (_ + _) _ :: Bool
-  , _:_ :: [Int]
-  , _:xs :: [Int]
-  , _:ys :: [Int]
-  , _:zs :: [Int]
-  , _:xs' :: [Int]
-  , [_] :: [Int]
-  , [_,0] :: [Int]
-  , [_,1] :: [Int]
-  , [_,-1] :: [Int]
-  , [_,0,0] :: [Int]
-  , [_,0,1] :: [Int]
-  , [_,1,0] :: [Int]
-  , [_,0,0,0] :: [Int]
-  , _:sort _ :: [Int]
-  , _:sort xs :: [Int]
-  , _:sort [] :: [Int]
-  , _:sort (_:_) :: [Int]
-  , _:tail _ :: [Int]
-  , _:tail xs :: [Int]
-  , _:tail ys :: [Int]
-  , _:tail [] :: [Int]
-  , _:tail [0] :: [Int]
-  , _:tail (tail _) :: [Int]
-  , _:tail (_:_) :: [Int]
-  , _:tail (_:xs) :: [Int]
-  , _:tail [_] :: [Int]
-  , _:tail (_:_:_) :: [Int]
-  , _:tail (x:_) :: [Int]
-  , _:tail (0:_) :: [Int]
-  , _:tail (id _:_) :: [Int]
-  , _:tail (_ ++ _) :: [Int]
-  , _:_:_ :: [Int]
-  , _:_:xs :: [Int]
-  , _:_:ys :: [Int]
-  , _:_:zs :: [Int]
-  , [_,_] :: [Int]
-  , [_,_,0] :: [Int]
-  , [_,_,1] :: [Int]
-  , [_,_,0,0] :: [Int]
-  , _:_:sort _ :: [Int]
-  , _:_:tail _ :: [Int]
-  , _:_:tail xs :: [Int]
-  , _:_:tail [] :: [Int]
-  , _:_:tail (_:_) :: [Int]
-  , _:_:_:_ :: [Int]
-  , _:_:_:xs :: [Int]
-  , _:_:_:ys :: [Int]
-  , [_,_,_] :: [Int]
-  , [_,_,_,0] :: [Int]
-  , _:_:_:tail _ :: [Int]
-  , _:_:_:_:_ :: [Int]
-  , _:_:_:_:xs :: [Int]
-  , [_,_,_,_] :: [Int]
-  , _:_:_:_:_:_ :: [Int]
-  , _:_:_:x:_ :: [Int]
-  , _:_:_:0:_ :: [Int]
-  , _:_:_:id _:_ :: [Int]
-  , _:_:_:(_ ++ _) :: [Int]
-  , _:_:x:_ :: [Int]
-  , _:_:x:xs :: [Int]
-  , [_,_,x] :: [Int]
-  , _:_:x:_:_ :: [Int]
-  , _:_:y:_ :: [Int]
-  , _:_:0:_ :: [Int]
-  , _:_:0:xs :: [Int]
-  , [_,_,0] :: [Int]
-  , _:_:0:_:_ :: [Int]
-  , _:_:1:_ :: [Int]
-  , _:_:ord _:_ :: [Int]
-  , _:_:id _:_ :: [Int]
-  , _:_:id _:xs :: [Int]
-  , [_,_,id _] :: [Int]
-  , _:_:id _:_:_ :: [Int]
-  , _:_:id x:_ :: [Int]
-  , _:_:id 0:_ :: [Int]
-  , _:_:id (id _):_ :: [Int]
-  , _:_:abs _:_ :: [Int]
-  , _:_:negate _:_ :: [Int]
-  , _:_:head _:_ :: [Int]
-  , _:_:_ + _:_ :: [Int]
-  , _:_:insert _ _ :: [Int]
-  , _:_:(_ ++ _) :: [Int]
-  , _:_:(_ ++ xs) :: [Int]
-  , _:_:(_ ++ []) :: [Int]
-  , _:_:(_ ++ (_:_)) :: [Int]
-  , _:_:(xs ++ _) :: [Int]
-  , [_,_,] ++ _ :: [Int]
-  , _:_:((_:_) ++ _) :: [Int]
-  , _:x:_ :: [Int]
-  , _:x:xs :: [Int]
-  , _:x:ys :: [Int]
-  , [_,x] :: [Int]
-  , [_,x,0] :: [Int]
-  , _:x:tail _ :: [Int]
-  , _:x:_:_ :: [Int]
-  , _:x:_:xs :: [Int]
-  , [_,x,_] :: [Int]
-  , _:x:_:_:_ :: [Int]
-  , _:x:x:_ :: [Int]
-  , _:x:0:_ :: [Int]
-  , _:x:id _:_ :: [Int]
-  , _:x:(_ ++ _) :: [Int]
-  , _:y:_ :: [Int]
-  , _:y:xs :: [Int]
-  , [_,y] :: [Int]
-  , _:y:_:_ :: [Int]
-  , _:z:_ :: [Int]
-  , _:0:_ :: [Int]
-  , _:0:xs :: [Int]
-  , _:0:ys :: [Int]
-  , [_,0] :: [Int]
-  , [_,0,0] :: [Int]
-  , _:0:tail _ :: [Int]
-  , _:0:_:_ :: [Int]
-  , _:0:_:xs :: [Int]
-  , [_,0,_] :: [Int]
-  , _:0:_:_:_ :: [Int]
-  , _:0:x:_ :: [Int]
-  , _:0:0:_ :: [Int]
-  , _:0:id _:_ :: [Int]
-  , _:0:(_ ++ _) :: [Int]
-  , _:1:_ :: [Int]
-  , _:1:xs :: [Int]
-  , [_,1] :: [Int]
-  , _:1:_:_ :: [Int]
-  , _:(-1):_ :: [Int]
-  , _:f _:_ :: [Int]
-  , _:ord _:_ :: [Int]
-  , _:ord _:xs :: [Int]
-  , [_,ord _] :: [Int]
-  , _:ord _:_:_ :: [Int]
-  , _:ord c:_ :: [Int]
-  , _:ord 'a':_ :: [Int]
-  , _:id _:_ :: [Int]
-  , _:id _:xs :: [Int]
-  , _:id _:ys :: [Int]
-  , [_,id _] :: [Int]
-  , [_,id _,0] :: [Int]
-  , _:id _:tail _ :: [Int]
-  , _:id _:_:_ :: [Int]
-  , _:id _:_:xs :: [Int]
-  , [_,id _,_] :: [Int]
-  , _:id _:_:_:_ :: [Int]
-  , _:id _:x:_ :: [Int]
-  , _:id _:0:_ :: [Int]
-  , _:id _:id _:_ :: [Int]
-  , _:id _:(_ ++ _) :: [Int]
-  , _:id x:_ :: [Int]
-  , _:id x:xs :: [Int]
-  , [_,id x] :: [Int]
-  , _:id x:_:_ :: [Int]
-  , _:id y:_ :: [Int]
-  , _:id 0:_ :: [Int]
-  , _:id 0:xs :: [Int]
-  , [_,id 0] :: [Int]
-  , _:id 0:_:_ :: [Int]
-  , _:id 1:_ :: [Int]
-  , _:id (ord _):_ :: [Int]
-  , _:id (id _):_ :: [Int]
-  , _:id (id _):xs :: [Int]
-  , [_,id (id _)] :: [Int]
-  , _:id (id _):_:_ :: [Int]
-  , _:id (id x):_ :: [Int]
-  , _:id (id 0):_ :: [Int]
-  , _:id (id (id _)):_ :: [Int]
-  , _:id (abs _):_ :: [Int]
-  , _:id (negate _):_ :: [Int]
-  , _:id (head _):_ :: [Int]
-  , _:id (_ + _):_ :: [Int]
-  , _:abs _:_ :: [Int]
-  , _:abs _:xs :: [Int]
-  , [_,abs _] :: [Int]
-  , _:abs _:_:_ :: [Int]
-  , _:abs x:_ :: [Int]
-  , _:abs 0:_ :: [Int]
-  , _:abs (id _):_ :: [Int]
-  , _:negate _:_ :: [Int]
-  , _:negate _:xs :: [Int]
-  , [_,negate _] :: [Int]
-  , _:negate _:_:_ :: [Int]
-  , _:negate x:_ :: [Int]
-  , _:negate 0:_ :: [Int]
-  , _:negate (id _):_ :: [Int]
-  , _:head _:_ :: [Int]
-  , _:head _:xs :: [Int]
-  , [_,head _] :: [Int]
-  , _:head _:_:_ :: [Int]
-  , _:head xs:_ :: [Int]
-  , _:head []:_ :: [Int]
-  , _:head (_:_):_ :: [Int]
-  , _:_ * _:_ :: [Int]
-  , _:_ + _:_ :: [Int]
-  , _:_ + _:xs :: [Int]
-  , [_,_ + _] :: [Int]
-  , _:_ + _:_:_ :: [Int]
-  , _:_ + x:_ :: [Int]
-  , _:_ + 0:_ :: [Int]
-  , _:_ + id _:_ :: [Int]
-  , _:x + _:_ :: [Int]
-  , _:0 + _:_ :: [Int]
-  , _:id _ + _:_ :: [Int]
-  , _:insert _ _ :: [Int]
-  , _:insert _ xs :: [Int]
-  , _:insert _ [] :: [Int]
-  , _:insert _ (_:_) :: [Int]
-  , _:insert x _ :: [Int]
-  , _:insert 0 _ :: [Int]
-  , _:insert (id _) _ :: [Int]
-  , _:(_ ++ _) :: [Int]
-  , _:(_ ++ xs) :: [Int]
-  , _:(_ ++ ys) :: [Int]
-  , _:(_ ++ []) :: [Int]
-  , _:(_ ++ [0]) :: [Int]
-  , _:(_ ++ tail _) :: [Int]
-  , _:(_ ++ (_:_)) :: [Int]
-  , _:(_ ++ (_:xs)) :: [Int]
-  , _:(_ ++ [_]) :: [Int]
-  , _:(_ ++ (_:_:_)) :: [Int]
-  , _:(_ ++ (x:_)) :: [Int]
-  , _:(_ ++ (0:_)) :: [Int]
-  , _:(_ ++ (id _:_)) :: [Int]
-  , _:(_ ++ (_ ++ _)) :: [Int]
-  , _:(xs ++ _) :: [Int]
-  , _:(xs ++ xs) :: [Int]
-  , _:(xs ++ []) :: [Int]
-  , _:(xs ++ (_:_)) :: [Int]
-  , _:(ys ++ _) :: [Int]
-  , _:([] ++ _) :: [Int]
-  , _:([] ++ xs) :: [Int]
-  , _:([] ++ []) :: [Int]
-  , _:([] ++ (_:_)) :: [Int]
-  , _:([0] ++ _) :: [Int]
-  , _:(tail _ ++ _) :: [Int]
-  , _:((_:_) ++ _) :: [Int]
-  , _:((_:_) ++ xs) :: [Int]
-  , _:((_:_) ++ []) :: [Int]
-  , _:((_:_) ++ (_:_)) :: [Int]
-  , _:((_:xs) ++ _) :: [Int]
-  , _:([_] ++ _) :: [Int]
-  , _:((_:_:_) ++ _) :: [Int]
-  , _:((x:_) ++ _) :: [Int]
-  , _:((0:_) ++ _) :: [Int]
-  , _:((id _:_) ++ _) :: [Int]
-  , _:((_ ++ _) ++ _) :: [Int]
-  , x:_ :: [Int]
-  , x:xs :: [Int]
-  , x:ys :: [Int]
-  , x:zs :: [Int]
-  , [x] :: [Int]
-  , [x,0] :: [Int]
-  , [x,1] :: [Int]
-  , [x,0,0] :: [Int]
-  , x:sort _ :: [Int]
-  , x:tail _ :: [Int]
-  , x:tail xs :: [Int]
-  , x:tail [] :: [Int]
-  , x:tail (_:_) :: [Int]
-  , x:_:_ :: [Int]
-  , x:_:xs :: [Int]
-  , x:_:ys :: [Int]
-  , [x,_] :: [Int]
-  , [x,_,0] :: [Int]
-  , x:_:tail _ :: [Int]
-  , x:_:_:_ :: [Int]
-  , x:_:_:xs :: [Int]
-  , [x,_,_] :: [Int]
-  , x:_:_:_:_ :: [Int]
-  , x:_:x:_ :: [Int]
-  , x:_:0:_ :: [Int]
-  , x:_:id _:_ :: [Int]
-  , x:_:(_ ++ _) :: [Int]
-  , x:x:_ :: [Int]
-  , x:x:xs :: [Int]
-  , [x,x] :: [Int]
-  , x:x:_:_ :: [Int]
-  , x:y:_ :: [Int]
-  , x:0:_ :: [Int]
-  , x:0:xs :: [Int]
-  , [x,0] :: [Int]
-  , x:0:_:_ :: [Int]
-  , x:1:_ :: [Int]
-  , x:ord _:_ :: [Int]
-  , x:id _:_ :: [Int]
-  , x:id _:xs :: [Int]
-  , [x,id _] :: [Int]
-  , x:id _:_:_ :: [Int]
-  , x:id x:_ :: [Int]
-  , x:id 0:_ :: [Int]
-  , x:id (id _):_ :: [Int]
-  , x:abs _:_ :: [Int]
-  , x:negate _:_ :: [Int]
-  , x:head _:_ :: [Int]
-  , x:_ + _:_ :: [Int]
-  , x:insert _ _ :: [Int]
-  , x:(_ ++ _) :: [Int]
-  , x:(_ ++ xs) :: [Int]
-  , x:(_ ++ []) :: [Int]
-  , x:(_ ++ (_:_)) :: [Int]
-  , x:(xs ++ _) :: [Int]
-  , x:([] ++ _) :: [Int]
-  , x:((_:_) ++ _) :: [Int]
-  , y:_ :: [Int]
-  , y:xs :: [Int]
-  , y:ys :: [Int]
-  , [y] :: [Int]
-  , [y,0] :: [Int]
-  , y:tail _ :: [Int]
-  , y:_:_ :: [Int]
-  , y:_:xs :: [Int]
-  , [y,_] :: [Int]
-  , y:_:_:_ :: [Int]
-  , y:x:_ :: [Int]
-  , y:0:_ :: [Int]
-  , y:id _:_ :: [Int]
-  , y:(_ ++ _) :: [Int]
-  , z:_ :: [Int]
-  , z:xs :: [Int]
-  , [z] :: [Int]
-  , z:_:_ :: [Int]
-  , x':_ :: [Int]
-  , 0:_ :: [Int]
-  , 0:xs :: [Int]
-  , 0:ys :: [Int]
-  , 0:zs :: [Int]
-  , [0] :: [Int]
-  , [0,0] :: [Int]
-  , [0,1] :: [Int]
-  , [0,0,0] :: [Int]
-  , 0:sort _ :: [Int]
-  , 0:tail _ :: [Int]
-  , 0:tail xs :: [Int]
-  , 0:tail [] :: [Int]
-  , 0:tail (_:_) :: [Int]
-  , 0:_:_ :: [Int]
-  , 0:_:xs :: [Int]
-  , 0:_:ys :: [Int]
-  , [0,_] :: [Int]
-  , [0,_,0] :: [Int]
-  , 0:_:tail _ :: [Int]
-  , 0:_:_:_ :: [Int]
-  , 0:_:_:xs :: [Int]
-  , [0,_,_] :: [Int]
-  , 0:_:_:_:_ :: [Int]
-  , 0:_:x:_ :: [Int]
-  , 0:_:0:_ :: [Int]
-  , 0:_:id _:_ :: [Int]
-  , 0:_:(_ ++ _) :: [Int]
-  , 0:x:_ :: [Int]
-  , 0:x:xs :: [Int]
-  , [0,x] :: [Int]
-  , 0:x:_:_ :: [Int]
-  , 0:y:_ :: [Int]
-  , 0:0:_ :: [Int]
-  , 0:0:xs :: [Int]
-  , [0,0] :: [Int]
-  , 0:0:_:_ :: [Int]
-  , 0:1:_ :: [Int]
-  , 0:ord _:_ :: [Int]
-  , 0:id _:_ :: [Int]
-  , 0:id _:xs :: [Int]
-  , [0,id _] :: [Int]
-  , 0:id _:_:_ :: [Int]
-  , 0:id x:_ :: [Int]
-  , 0:id 0:_ :: [Int]
-  , 0:id (id _):_ :: [Int]
-  , 0:abs _:_ :: [Int]
-  , 0:negate _:_ :: [Int]
-  , 0:head _:_ :: [Int]
-  , 0:_ + _:_ :: [Int]
-  , 0:insert _ _ :: [Int]
-  , 0:(_ ++ _) :: [Int]
-  , 0:(_ ++ xs) :: [Int]
-  , 0:(_ ++ []) :: [Int]
-  , 0:(_ ++ (_:_)) :: [Int]
-  , 0:(xs ++ _) :: [Int]
-  , 0:([] ++ _) :: [Int]
-  , 0:((_:_) ++ _) :: [Int]
-  , 1:_ :: [Int]
-  , 1:xs :: [Int]
-  , 1:ys :: [Int]
-  , [1] :: [Int]
-  , [1,0] :: [Int]
-  , 1:tail _ :: [Int]
-  , 1:_:_ :: [Int]
-  , 1:_:xs :: [Int]
-  , [1,_] :: [Int]
-  , 1:_:_:_ :: [Int]
-  , 1:x:_ :: [Int]
-  , 1:0:_ :: [Int]
-  , 1:id _:_ :: [Int]
-  , 1:(_ ++ _) :: [Int]
-  , 2:_ :: [Int]
-  , (-1):_ :: [Int]
-  , (-1):xs :: [Int]
-  , [-1] :: [Int]
-  , (-1):_:_ :: [Int]
-  , f _:_ :: [Int]
-  , f _:xs :: [Int]
-  , [f _] :: [Int]
-  , f _:_:_ :: [Int]
-  , f x:_ :: [Int]
-  , f 0:_ :: [Int]
-  , f (id _):_ :: [Int]
-  , g _:_ :: [Int]
-  , ord _:_ :: [Int]
-  , ord _:xs :: [Int]
-  , ord _:ys :: [Int]
-  , [ord _] :: [Int]
-  , [ord _,0] :: [Int]
-  , ord _:tail _ :: [Int]
-  , ord _:_:_ :: [Int]
-  , ord _:_:xs :: [Int]
-  , [ord _,_] :: [Int]
-  , ord _:_:_:_ :: [Int]
-  , ord _:x:_ :: [Int]
-  , ord _:0:_ :: [Int]
-  , ord _:id _:_ :: [Int]
-  , ord _:(_ ++ _) :: [Int]
-  , ord c:_ :: [Int]
-  , ord c:xs :: [Int]
-  , [ord c] :: [Int]
-  , ord c:_:_ :: [Int]
-  , ord d:_ :: [Int]
-  , ord ' ':_ :: [Int]
-  , ord 'a':_ :: [Int]
-  , ord 'a':xs :: [Int]
-  , [ord 'a'] :: [Int]
-  , ord 'a':_:_ :: [Int]
-  , id _:_ :: [Int]
-  , id _:xs :: [Int]
-  , id _:ys :: [Int]
-  , id _:zs :: [Int]
-  , [id _] :: [Int]
-  , [id _,0] :: [Int]
-  , [id _,1] :: [Int]
-  , [id _,0,0] :: [Int]
-  , id _:sort _ :: [Int]
-  , id _:tail _ :: [Int]
-  , id _:tail xs :: [Int]
-  , id _:tail [] :: [Int]
-  , id _:tail (_:_) :: [Int]
-  , id _:_:_ :: [Int]
-  , id _:_:xs :: [Int]
-  , id _:_:ys :: [Int]
-  , [id _,_] :: [Int]
-  , [id _,_,0] :: [Int]
-  , id _:_:tail _ :: [Int]
-  , id _:_:_:_ :: [Int]
-  , id _:_:_:xs :: [Int]
-  , [id _,_,_] :: [Int]
-  , id _:_:_:_:_ :: [Int]
-  , id _:_:x:_ :: [Int]
-  , id _:_:0:_ :: [Int]
-  , id _:_:id _:_ :: [Int]
-  , id _:_:(_ ++ _) :: [Int]
-  , id _:x:_ :: [Int]
-  , id _:x:xs :: [Int]
-  , [id _,x] :: [Int]
-  , id _:x:_:_ :: [Int]
-  , id _:y:_ :: [Int]
-  , id _:0:_ :: [Int]
-  , id _:0:xs :: [Int]
-  , [id _,0] :: [Int]
-  , id _:0:_:_ :: [Int]
-  , id _:1:_ :: [Int]
-  , id _:ord _:_ :: [Int]
-  , id _:id _:_ :: [Int]
-  , id _:id _:xs :: [Int]
-  , [id _,id _] :: [Int]
-  , id _:id _:_:_ :: [Int]
-  , id _:id x:_ :: [Int]
-  , id _:id 0:_ :: [Int]
-  , id _:id (id _):_ :: [Int]
-  , id _:abs _:_ :: [Int]
-  , id _:negate _:_ :: [Int]
-  , id _:head _:_ :: [Int]
-  , id _:_ + _:_ :: [Int]
-  , id _:insert _ _ :: [Int]
-  , id _:(_ ++ _) :: [Int]
-  , id _:(_ ++ xs) :: [Int]
-  , id _:(_ ++ []) :: [Int]
-  , id _:(_ ++ (_:_)) :: [Int]
-  , id _:(xs ++ _) :: [Int]
-  , id _:([] ++ _) :: [Int]
-  , id _:((_:_) ++ _) :: [Int]
-  , id x:_ :: [Int]
-  , id x:xs :: [Int]
-  , id x:ys :: [Int]
-  , [id x] :: [Int]
-  , [id x,0] :: [Int]
-  , id x:tail _ :: [Int]
-  , id x:_:_ :: [Int]
-  , id x:_:xs :: [Int]
-  , [id x,_] :: [Int]
-  , id x:_:_:_ :: [Int]
-  , id x:x:_ :: [Int]
-  , id x:0:_ :: [Int]
-  , id x:id _:_ :: [Int]
-  , id x:(_ ++ _) :: [Int]
-  , id y:_ :: [Int]
-  , id y:xs :: [Int]
-  , [id y] :: [Int]
-  , id y:_:_ :: [Int]
-  , id z:_ :: [Int]
-  , id 0:_ :: [Int]
-  , id 0:xs :: [Int]
-  , id 0:ys :: [Int]
-  , [id 0] :: [Int]
-  , [id 0,0] :: [Int]
-  , id 0:tail _ :: [Int]
-  , id 0:_:_ :: [Int]
-  , id 0:_:xs :: [Int]
-  , [id 0,_] :: [Int]
-  , id 0:_:_:_ :: [Int]
-  , id 0:x:_ :: [Int]
-  , id 0:0:_ :: [Int]
-  , id 0:id _:_ :: [Int]
-  , id 0:(_ ++ _) :: [Int]
-  , id 1:_ :: [Int]
-  , id 1:xs :: [Int]
-  , [id 1] :: [Int]
-  , id 1:_:_ :: [Int]
-  , id (-1):_ :: [Int]
-  , id (f _):_ :: [Int]
-  , id (ord _):_ :: [Int]
-  , id (ord _):xs :: [Int]
-  , [id (ord _)] :: [Int]
-  , id (ord _):_:_ :: [Int]
-  , id (ord c):_ :: [Int]
-  , id (ord 'a'):_ :: [Int]
-  , id (id _):_ :: [Int]
-  , id (id _):xs :: [Int]
-  , id (id _):ys :: [Int]
-  , [id (id _)] :: [Int]
-  , [id (id _),0] :: [Int]
-  , id (id _):tail _ :: [Int]
-  , id (id _):_:_ :: [Int]
-  , id (id _):_:xs :: [Int]
-  , [id (id _),_] :: [Int]
-  , id (id _):_:_:_ :: [Int]
-  , id (id _):x:_ :: [Int]
-  , id (id _):0:_ :: [Int]
-  , id (id _):id _:_ :: [Int]
-  , id (id _):(_ ++ _) :: [Int]
-  , id (id x):_ :: [Int]
-  , id (id x):xs :: [Int]
-  , [id (id x)] :: [Int]
-  , id (id x):_:_ :: [Int]
-  , id (id y):_ :: [Int]
-  , id (id 0):_ :: [Int]
-  , id (id 0):xs :: [Int]
-  , [id (id 0)] :: [Int]
-  , id (id 0):_:_ :: [Int]
-  , id (id 1):_ :: [Int]
-  , id (id (ord _)):_ :: [Int]
-  , id (id (id _)):_ :: [Int]
-  , id (id (id _)):xs :: [Int]
-  , [id (id (id _))] :: [Int]
-  , id (id (id _)):_:_ :: [Int]
-  , id (id (id x)):_ :: [Int]
-  , id (id (id 0)):_ :: [Int]
-  , id (id (id (id _))):_ :: [Int]
-  , id (id (abs _)):_ :: [Int]
-  , id (id (negate _)):_ :: [Int]
-  , id (id (head _)):_ :: [Int]
-  , id (id (_ + _)):_ :: [Int]
-  , id (abs _):_ :: [Int]
-  , id (abs _):xs :: [Int]
-  , [id (abs _)] :: [Int]
-  , id (abs _):_:_ :: [Int]
-  , id (abs x):_ :: [Int]
-  , id (abs 0):_ :: [Int]
-  , id (abs (id _)):_ :: [Int]
-  , id (negate _):_ :: [Int]
-  , id (negate _):xs :: [Int]
-  , [id (negate _)] :: [Int]
-  , id (negate _):_:_ :: [Int]
-  , id (negate x):_ :: [Int]
-  , id (negate 0):_ :: [Int]
-  , id (negate (id _)):_ :: [Int]
-  , id (head _):_ :: [Int]
-  , id (head _):xs :: [Int]
-  , [id (head _)] :: [Int]
-  , id (head _):_:_ :: [Int]
-  , id (head xs):_ :: [Int]
-  , id (head []):_ :: [Int]
-  , id (head (_:_)):_ :: [Int]
-  , id (_ * _):_ :: [Int]
-  , id (_ + _):_ :: [Int]
-  , id (_ + _):xs :: [Int]
-  , [id (_ + _)] :: [Int]
-  , id (_ + _):_:_ :: [Int]
-  , id (_ + x):_ :: [Int]
-  , id (_ + 0):_ :: [Int]
-  , id (_ + id _):_ :: [Int]
-  , id (x + _):_ :: [Int]
-  , id (0 + _):_ :: [Int]
-  , id (id _ + _):_ :: [Int]
-  , abs _:_ :: [Int]
-  , abs _:xs :: [Int]
-  , abs _:ys :: [Int]
-  , [abs _] :: [Int]
-  , [abs _,0] :: [Int]
-  , abs _:tail _ :: [Int]
-  , abs _:_:_ :: [Int]
-  , abs _:_:xs :: [Int]
-  , [abs _,_] :: [Int]
-  , abs _:_:_:_ :: [Int]
-  , abs _:x:_ :: [Int]
-  , abs _:0:_ :: [Int]
-  , abs _:id _:_ :: [Int]
-  , abs _:(_ ++ _) :: [Int]
-  , abs x:_ :: [Int]
-  , abs x:xs :: [Int]
-  , [abs x] :: [Int]
-  , abs x:_:_ :: [Int]
-  , abs y:_ :: [Int]
-  , abs 0:_ :: [Int]
-  , abs 0:xs :: [Int]
-  , [abs 0] :: [Int]
-  , abs 0:_:_ :: [Int]
-  , abs 1:_ :: [Int]
-  , abs (ord _):_ :: [Int]
-  , abs (id _):_ :: [Int]
-  , abs (id _):xs :: [Int]
-  , [abs (id _)] :: [Int]
-  , abs (id _):_:_ :: [Int]
-  , abs (id x):_ :: [Int]
-  , abs (id 0):_ :: [Int]
-  , abs (id (id _)):_ :: [Int]
-  , abs (abs _):_ :: [Int]
-  , abs (negate _):_ :: [Int]
-  , abs (head _):_ :: [Int]
-  , abs (_ + _):_ :: [Int]
-  , negate _:_ :: [Int]
-  , negate _:xs :: [Int]
-  , negate _:ys :: [Int]
-  , [negate _] :: [Int]
-  , [negate _,0] :: [Int]
-  , negate _:tail _ :: [Int]
-  , negate _:_:_ :: [Int]
-  , negate _:_:xs :: [Int]
-  , [negate _,_] :: [Int]
-  , negate _:_:_:_ :: [Int]
-  , negate _:x:_ :: [Int]
-  , negate _:0:_ :: [Int]
-  , negate _:id _:_ :: [Int]
-  , negate _:(_ ++ _) :: [Int]
-  , negate x:_ :: [Int]
-  , negate x:xs :: [Int]
-  , [negate x] :: [Int]
-  , negate x:_:_ :: [Int]
-  , negate y:_ :: [Int]
-  , negate 0:_ :: [Int]
-  , negate 0:xs :: [Int]
-  , [negate 0] :: [Int]
-  , negate 0:_:_ :: [Int]
-  , negate 1:_ :: [Int]
-  , negate (ord _):_ :: [Int]
-  , negate (id _):_ :: [Int]
-  , negate (id _):xs :: [Int]
-  , [negate (id _)] :: [Int]
-  , negate (id _):_:_ :: [Int]
-  , negate (id x):_ :: [Int]
-  , negate (id 0):_ :: [Int]
-  , negate (id (id _)):_ :: [Int]
-  , negate (abs _):_ :: [Int]
-  , negate (negate _):_ :: [Int]
-  , negate (head _):_ :: [Int]
-  , negate (_ + _):_ :: [Int]
-  , head _:_ :: [Int]
-  , head _:xs :: [Int]
-  , head _:ys :: [Int]
-  , [head _] :: [Int]
-  , [head _,0] :: [Int]
-  , head _:tail _ :: [Int]
-  , head _:_:_ :: [Int]
-  , head _:_:xs :: [Int]
-  , [head _,_] :: [Int]
-  , head _:_:_:_ :: [Int]
-  , head _:x:_ :: [Int]
-  , head _:0:_ :: [Int]
-  , head _:id _:_ :: [Int]
-  , head _:(_ ++ _) :: [Int]
-  , head xs:_ :: [Int]
-  , head xs:xs :: [Int]
-  , [head xs] :: [Int]
-  , head xs:_:_ :: [Int]
-  , head ys:_ :: [Int]
-  , head []:_ :: [Int]
-  , head []:xs :: [Int]
-  , [head []] :: [Int]
-  , head []:_:_ :: [Int]
-  , head [0]:_ :: [Int]
-  , head (tail _):_ :: [Int]
-  , head (_:_):_ :: [Int]
-  , head (_:_):xs :: [Int]
-  , [head (_:_)] :: [Int]
-  , head (_:_):_:_ :: [Int]
-  , head (_:xs):_ :: [Int]
-  , head [_]:_ :: [Int]
-  , head (_:_:_):_ :: [Int]
-  , head (x:_):_ :: [Int]
-  , head (0:_):_ :: [Int]
-  , head (id _:_):_ :: [Int]
-  , head (_ ++ _):_ :: [Int]
-  , _ * _:_ :: [Int]
-  , _ * _:xs :: [Int]
-  , [_ * _] :: [Int]
-  , _ * _:_:_ :: [Int]
-  , _ * x:_ :: [Int]
-  , _ * 0:_ :: [Int]
-  , _ * id _:_ :: [Int]
-  , x * _:_ :: [Int]
-  , 0 * _:_ :: [Int]
-  , id _ * _:_ :: [Int]
-  , _ + _:_ :: [Int]
-  , _ + _:xs :: [Int]
-  , _ + _:ys :: [Int]
-  , [_ + _] :: [Int]
-  , [_ + _,0] :: [Int]
-  , _ + _:tail _ :: [Int]
-  , _ + _:_:_ :: [Int]
-  , _ + _:_:xs :: [Int]
-  , [_ + _,_] :: [Int]
-  , _ + _:_:_:_ :: [Int]
-  , _ + _:x:_ :: [Int]
-  , _ + _:0:_ :: [Int]
-  , _ + _:id _:_ :: [Int]
-  , _ + _:(_ ++ _) :: [Int]
-  , _ + x:_ :: [Int]
-  , _ + x:xs :: [Int]
-  , [_ + x] :: [Int]
-  , _ + x:_:_ :: [Int]
-  , _ + y:_ :: [Int]
-  , _ + 0:_ :: [Int]
-  , _ + 0:xs :: [Int]
-  , [_ + 0] :: [Int]
-  , _ + 0:_:_ :: [Int]
-  , _ + 1:_ :: [Int]
-  , _ + ord _:_ :: [Int]
-  , _ + id _:_ :: [Int]
-  , _ + id _:xs :: [Int]
-  , [_ + id _] :: [Int]
-  , _ + id _:_:_ :: [Int]
-  , _ + id x:_ :: [Int]
-  , _ + id 0:_ :: [Int]
-  , _ + id (id _):_ :: [Int]
-  , _ + abs _:_ :: [Int]
-  , _ + negate _:_ :: [Int]
-  , _ + head _:_ :: [Int]
-  , _ + (_ + _):_ :: [Int]
-  , x + _:_ :: [Int]
-  , x + _:xs :: [Int]
-  , [x + _] :: [Int]
-  , x + _:_:_ :: [Int]
-  , x + x:_ :: [Int]
-  , x + 0:_ :: [Int]
-  , x + id _:_ :: [Int]
-  , y + _:_ :: [Int]
-  , 0 + _:_ :: [Int]
-  , 0 + _:xs :: [Int]
-  , [0 + _] :: [Int]
-  , 0 + _:_:_ :: [Int]
-  , 0 + x:_ :: [Int]
-  , 0 + 0:_ :: [Int]
-  , 0 + id _:_ :: [Int]
-  , 1 + _:_ :: [Int]
-  , ord _ + _:_ :: [Int]
-  , id _ + _:_ :: [Int]
-  , id _ + _:xs :: [Int]
-  , [id _ + _] :: [Int]
-  , id _ + _:_:_ :: [Int]
-  , id _ + x:_ :: [Int]
-  , id _ + 0:_ :: [Int]
-  , id _ + id _:_ :: [Int]
-  , id x + _:_ :: [Int]
-  , id 0 + _:_ :: [Int]
-  , id (id _) + _:_ :: [Int]
-  , abs _ + _:_ :: [Int]
-  , negate _ + _:_ :: [Int]
-  , head _ + _:_ :: [Int]
-  , (_ + _) + _:_ :: [Int]
-  , insert _ _ :: [Int]
-  , insert _ xs :: [Int]
-  , insert _ ys :: [Int]
-  , insert _ [] :: [Int]
-  , insert _ [0] :: [Int]
-  , insert _ (tail _) :: [Int]
-  , insert _ (_:_) :: [Int]
-  , insert _ (_:xs) :: [Int]
-  , insert _ [_] :: [Int]
-  , insert _ (_:_:_) :: [Int]
-  , insert _ (x:_) :: [Int]
-  , insert _ (0:_) :: [Int]
-  , insert _ (id _:_) :: [Int]
-  , insert _ (_ ++ _) :: [Int]
-  , insert x _ :: [Int]
-  , insert x xs :: [Int]
-  , insert x [] :: [Int]
-  , insert x (_:_) :: [Int]
-  , insert y _ :: [Int]
-  , insert 0 _ :: [Int]
-  , insert 0 xs :: [Int]
-  , insert 0 [] :: [Int]
-  , insert 0 (_:_) :: [Int]
-  , insert 1 _ :: [Int]
-  , insert (ord _) _ :: [Int]
-  , insert (id _) _ :: [Int]
-  , insert (id _) xs :: [Int]
-  , insert (id _) [] :: [Int]
-  , insert (id _) (_:_) :: [Int]
-  , insert (id x) _ :: [Int]
-  , insert (id 0) _ :: [Int]
-  , insert (id (id _)) _ :: [Int]
-  , insert (abs _) _ :: [Int]
-  , insert (negate _) _ :: [Int]
-  , insert (head _) _ :: [Int]
-  , insert (_ + _) _ :: [Int]
-  , _ ++ _ :: [Int]
-  , _ ++ xs :: [Int]
-  , _ ++ ys :: [Int]
-  , _ ++ zs :: [Int]
-  , _ ++ [] :: [Int]
-  , _ ++ [0] :: [Int]
-  , _ ++ [1] :: [Int]
-  , _ ++ [0,0] :: [Int]
-  , _ ++ sort _ :: [Int]
-  , _ ++ tail _ :: [Int]
-  , _ ++ tail xs :: [Int]
-  , _ ++ tail [] :: [Int]
-  , _ ++ tail (_:_) :: [Int]
-  , _ ++ (_:_) :: [Int]
-  , _ ++ (_:xs) :: [Int]
-  , _ ++ (_:ys) :: [Int]
-  , _ ++ [_] :: [Int]
-  , _ ++ [_,0] :: [Int]
-  , _ ++ (_:tail _) :: [Int]
-  , _ ++ (_:_:_) :: [Int]
-  , _ ++ (_:_:xs) :: [Int]
-  , _ ++ [_,_] :: [Int]
-  , _ ++ (_:_:_:_) :: [Int]
-  , _ ++ (_:x:_) :: [Int]
-  , _ ++ (_:0:_) :: [Int]
-  , _ ++ (_:id _:_) :: [Int]
-  , _ ++ (_:(_ ++ _)) :: [Int]
-  , _ ++ (x:_) :: [Int]
-  , _ ++ (x:xs) :: [Int]
-  , _ ++ [x] :: [Int]
-  , _ ++ (x:_:_) :: [Int]
-  , _ ++ (y:_) :: [Int]
-  , _ ++ (0:_) :: [Int]
-  , _ ++ (0:xs) :: [Int]
-  , _ ++ [0] :: [Int]
-  , _ ++ (0:_:_) :: [Int]
-  , _ ++ (1:_) :: [Int]
-  , _ ++ (ord _:_) :: [Int]
-  , _ ++ (id _:_) :: [Int]
-  , _ ++ (id _:xs) :: [Int]
-  , _ ++ [id _] :: [Int]
-  , _ ++ (id _:_:_) :: [Int]
-  , _ ++ (id x:_) :: [Int]
-  , _ ++ (id 0:_) :: [Int]
-  , _ ++ (id (id _):_) :: [Int]
-  , _ ++ (abs _:_) :: [Int]
-  , _ ++ (negate _:_) :: [Int]
-  , _ ++ (head _:_) :: [Int]
-  , _ ++ (_ + _:_) :: [Int]
-  , _ ++ insert _ _ :: [Int]
-  , _ ++ (_ ++ _) :: [Int]
-  , _ ++ (_ ++ xs) :: [Int]
-  , _ ++ (_ ++ []) :: [Int]
-  , _ ++ (_ ++ (_:_)) :: [Int]
-  , _ ++ (xs ++ _) :: [Int]
-  , _ ++ ([] ++ _) :: [Int]
-  , _ ++ ((_:_) ++ _) :: [Int]
-  , xs ++ _ :: [Int]
-  , xs ++ xs :: [Int]
-  , xs ++ ys :: [Int]
-  , xs ++ [] :: [Int]
-  , xs ++ [0] :: [Int]
-  , xs ++ tail _ :: [Int]
-  , xs ++ (_:_) :: [Int]
-  , xs ++ (_:xs) :: [Int]
-  , xs ++ [_] :: [Int]
-  , xs ++ (_:_:_) :: [Int]
-  , xs ++ (x:_) :: [Int]
-  , xs ++ (0:_) :: [Int]
-  , xs ++ (id _:_) :: [Int]
-  , xs ++ (_ ++ _) :: [Int]
-  , ys ++ _ :: [Int]
-  , ys ++ xs :: [Int]
-  , ys ++ [] :: [Int]
-  , ys ++ (_:_) :: [Int]
-  , zs ++ _ :: [Int]
-  , [] ++ _ :: [Int]
-  , [] ++ xs :: [Int]
-  , [] ++ ys :: [Int]
-  , [] ++ [] :: [Int]
-  , [] ++ [0] :: [Int]
-  , [] ++ tail _ :: [Int]
-  , [] ++ (_:_) :: [Int]
-  , [] ++ (_:xs) :: [Int]
-  , [] ++ [_] :: [Int]
-  , [] ++ (_:_:_) :: [Int]
-  , [] ++ (x:_) :: [Int]
-  , [] ++ (0:_) :: [Int]
-  , [] ++ (id _:_) :: [Int]
-  , [] ++ (_ ++ _) :: [Int]
-  , [0] ++ _ :: [Int]
-  , [0] ++ xs :: [Int]
-  , [0] ++ [] :: [Int]
-  , [0] ++ (_:_) :: [Int]
-  , [1] ++ _ :: [Int]
-  , [0,0] ++ _ :: [Int]
-  , sort _ ++ _ :: [Int]
-  , tail _ ++ _ :: [Int]
-  , tail _ ++ xs :: [Int]
-  , tail _ ++ [] :: [Int]
-  , tail _ ++ (_:_) :: [Int]
-  , tail xs ++ _ :: [Int]
-  , tail [] ++ _ :: [Int]
-  , tail (_:_) ++ _ :: [Int]
-  , (_:_) ++ _ :: [Int]
-  , (_:_) ++ xs :: [Int]
-  , (_:_) ++ ys :: [Int]
-  , (_:_) ++ [] :: [Int]
-  , (_:_) ++ [0] :: [Int]
-  , (_:_) ++ tail _ :: [Int]
-  , (_:_) ++ (_:_) :: [Int]
-  , (_:_) ++ (_:xs) :: [Int]
-  , (_:_) ++ [_] :: [Int]
-  , (_:_) ++ (_:_:_) :: [Int]
-  , (_:_) ++ (x:_) :: [Int]
-  , (_:_) ++ (0:_) :: [Int]
-  , (_:_) ++ (id _:_) :: [Int]
-  , (_:_) ++ (_ ++ _) :: [Int]
-  , (_:xs) ++ _ :: [Int]
-  , (_:xs) ++ xs :: [Int]
-  , (_:xs) ++ [] :: [Int]
-  , (_:xs) ++ (_:_) :: [Int]
-  , (_:ys) ++ _ :: [Int]
-  , [_] ++ _ :: [Int]
-  , [_] ++ xs :: [Int]
-  , [_] ++ [] :: [Int]
-  , [_] ++ (_:_) :: [Int]
-  , [_,0] ++ _ :: [Int]
-  , (_:tail _) ++ _ :: [Int]
-  , (_:_:_) ++ _ :: [Int]
-  , (_:_:_) ++ xs :: [Int]
-  , (_:_:_) ++ [] :: [Int]
-  , (_:_:_) ++ (_:_) :: [Int]
-  , (_:_:xs) ++ _ :: [Int]
-  , [_,_] ++ _ :: [Int]
-  , (_:_:_:_) ++ _ :: [Int]
-  , (_:x:_) ++ _ :: [Int]
-  , (_:0:_) ++ _ :: [Int]
-  , (_:id _:_) ++ _ :: [Int]
-  , (_:(_ ++ _)) ++ _ :: [Int]
-  , (x:_) ++ _ :: [Int]
-  , (x:_) ++ xs :: [Int]
-  , (x:_) ++ [] :: [Int]
-  , (x:_) ++ (_:_) :: [Int]
-  , (x:xs) ++ _ :: [Int]
-  , [x] ++ _ :: [Int]
-  , (x:_:_) ++ _ :: [Int]
-  , (y:_) ++ _ :: [Int]
-  , (0:_) ++ _ :: [Int]
-  , (0:_) ++ xs :: [Int]
-  , (0:_) ++ [] :: [Int]
-  , (0:_) ++ (_:_) :: [Int]
-  , (0:xs) ++ _ :: [Int]
-  , [0] ++ _ :: [Int]
-  , (0:_:_) ++ _ :: [Int]
-  , (1:_) ++ _ :: [Int]
-  , (ord _:_) ++ _ :: [Int]
-  , (id _:_) ++ _ :: [Int]
-  , (id _:_) ++ xs :: [Int]
-  , (id _:_) ++ [] :: [Int]
-  , (id _:_) ++ (_:_) :: [Int]
-  , (id _:xs) ++ _ :: [Int]
-  , [id _] ++ _ :: [Int]
-  , (id _:_:_) ++ _ :: [Int]
-  , (id x:_) ++ _ :: [Int]
-  , (id 0:_) ++ _ :: [Int]
-  , (id (id _):_) ++ _ :: [Int]
-  , (abs _:_) ++ _ :: [Int]
-  , (negate _:_) ++ _ :: [Int]
-  , (head _:_) ++ _ :: [Int]
-  , (_ + _:_) ++ _ :: [Int]
-  , insert _ _ ++ _ :: [Int]
-  , (_ ++ _) ++ _ :: [Int]
-  , (_ ++ _) ++ xs :: [Int]
-  , (_ ++ _) ++ [] :: [Int]
-  , (_ ++ _) ++ (_:_) :: [Int]
-  , (_ ++ xs) ++ _ :: [Int]
-  , (_ ++ []) ++ _ :: [Int]
-  , (_ ++ (_:_)) ++ _ :: [Int]
-  , (xs ++ _) ++ _ :: [Int]
-  , ([] ++ _) ++ _ :: [Int]
-  , ((_:_) ++ _) ++ _ :: [Int]
-  ]
-
-sortBy compareQuickly $ take 5040 $ list  ::  [ Expr ]  =
-  [ False :: Bool
-  , True :: Bool
-  , _ :: Bool
-  , p :: Bool
-  , p' :: Bool
-  , q :: Bool
-  , q' :: Bool
-  , r :: Bool
-  , ' ' :: Char
-  , 'A' :: Char
-  , 'a' :: Char
-  , 'b' :: Char
-  , 'c' :: Char
-  , _ :: Char
-  , c :: Char
-  , c' :: Char
-  , d :: Char
-  , d' :: Char
-  , e :: Char
-  , -1 :: Int
-  , -2 :: Int
-  , -3 :: Int
-  , 0 :: Int
-  , 1 :: Int
-  , 2 :: Int
-  , 3 :: Int
-  , _ :: Int
-  , x :: Int
-  , x' :: Int
-  , x'' :: Int
-  , y :: Int
-  , y' :: Int
-  , z :: Int
-  , z' :: Int
-  , [-1,0] :: [Int]
-  , [-1] :: [Int]
-  , [0,-1] :: [Int]
-  , [0,0,0,0] :: [Int]
-  , [0,0,0] :: [Int]
-  , [0,0,1] :: [Int]
-  , [0,0] :: [Int]
-  , [0,1,0] :: [Int]
-  , [0,1] :: [Int]
-  , [0] :: [Int]
-  , [1,0,0] :: [Int]
-  , [1,0] :: [Int]
-  , [1,1] :: [Int]
-  , [1] :: [Int]
-  , [2] :: [Int]
-  , [] :: [Int]
-  , _ :: [Int]
-  , xs :: [Int]
-  , xs' :: [Int]
-  , ys :: [Int]
-  , ys' :: [Int]
-  , zs :: [Int]
-  , not :: Bool -> Bool
-  , f :: Int -> Int
-  , g :: Int -> Int
-  , h :: Int -> Int
-  , abs :: Int -> Int
-  , id :: Int -> Int
-  , negate :: Int -> Int
-  , (&&) :: Bool -> Bool -> Bool
-  , (==>) :: Bool -> Bool -> Bool
-  , (||) :: Bool -> Bool -> Bool
-  , (*) :: Int -> Int -> Int
-  , (+) :: Int -> Int -> Int
-  , not False :: Bool
-  , not True :: Bool
-  , not _ :: Bool
-  , not p :: Bool
-  , not p' :: Bool
-  , not q :: Bool
-  , not r :: Bool
-  , not (not False) :: Bool
-  , not (not True) :: Bool
-  , not (not _) :: Bool
-  , not (not p) :: Bool
-  , not (not q) :: Bool
-  , not (not r) :: Bool
-  , not (not (not False)) :: Bool
-  , not (not (not True)) :: Bool
-  , not (not (not _)) :: Bool
-  , not (not (not p)) :: Bool
-  , not (not (not q)) :: Bool
-  , not (not (not (not False))) :: Bool
-  , not (not (not (not True))) :: Bool
-  , not (not (not (not _))) :: Bool
-  , not (not (not (not p))) :: Bool
-  , not (not (not (not (not _)))) :: Bool
-  , not (not (not (_ || _))) :: Bool
-  , not (not (even _)) :: Bool
-  , not (not (odd _)) :: Bool
-  , not (not (_ && _)) :: Bool
-  , not (not (_ == _)) :: Bool
-  , not (not (False || _)) :: Bool
-  , not (not (True || _)) :: Bool
-  , not (not (_ || False)) :: Bool
-  , not (not (_ || True)) :: Bool
-  , not (not (_ || _)) :: Bool
-  , not (not (_ || p)) :: Bool
-  , not (not (_ || not _)) :: Bool
-  , not (not (p || _)) :: Bool
-  , not (not (not _ || _)) :: Bool
-  , not (not (_ == _)) :: Bool
-  , not (not (elem _ _)) :: Bool
-  , not (even 0) :: Bool
-  , not (even _) :: Bool
-  , not (even x) :: Bool
-  , not (even (id _)) :: Bool
-  , not (odd 0) :: Bool
-  , not (odd _) :: Bool
-  , not (odd x) :: Bool
-  , not (odd (id _)) :: Bool
-  , not (False && _) :: Bool
-  , not (True && _) :: Bool
-  , not (_ && False) :: Bool
-  , not (_ && True) :: Bool
-  , not (_ && _) :: Bool
-  , not (_ && p) :: Bool
-  , not (_ && not _) :: Bool
-  , not (p && _) :: Bool
-  , not (not _ && _) :: Bool
-  , not (_ <= _) :: Bool
-  , not (False == _) :: Bool
-  , not (True == _) :: Bool
-  , not (_ == False) :: Bool
-  , not (_ == True) :: Bool
-  , not (_ == _) :: Bool
-  , not (_ == p) :: Bool
-  , not (_ == not _) :: Bool
-  , not (p == _) :: Bool
-  , not (not _ == _) :: Bool
-  , not (_ ==> _) :: Bool
-  , not (False || False) :: Bool
-  , not (False || True) :: Bool
-  , not (False || _) :: Bool
-  , not (False || p) :: Bool
-  , not (False || not _) :: Bool
-  , not (True || False) :: Bool
-  , not (True || True) :: Bool
-  , not (True || _) :: Bool
-  , not (True || p) :: Bool
-  , not (True || not _) :: Bool
-  , not (_ || False) :: Bool
-  , not (_ || True) :: Bool
-  , not (_ || _) :: Bool
-  , not (_ || p) :: Bool
-  , not (_ || q) :: Bool
-  , not (_ || not False) :: Bool
-  , not (_ || not True) :: Bool
-  , not (_ || not _) :: Bool
-  , not (_ || not p) :: Bool
-  , not (_ || not (not _)) :: Bool
-  , not (_ || (_ || _)) :: Bool
-  , not (p || False) :: Bool
-  , not (p || True) :: Bool
-  , not (p || _) :: Bool
-  , not (p || p) :: Bool
-  , not (p || not _) :: Bool
-  , not (q || _) :: Bool
-  , not (not False || _) :: Bool
-  , not (not True || _) :: Bool
-  , not (not _ || False) :: Bool
-  , not (not _ || True) :: Bool
-  , not (not _ || _) :: Bool
-  , not (not _ || p) :: Bool
-  , not (not _ || not _) :: Bool
-  , not (not p || _) :: Bool
-  , not (not (not _) || _) :: Bool
-  , not ((_ || _) || _) :: Bool
-  , not (_ <= _) :: Bool
-  , not (0 == _) :: Bool
-  , not (_ == 0) :: Bool
-  , not (_ == _) :: Bool
-  , not (_ == x) :: Bool
-  , not (_ == id _) :: Bool
-  , not (x == _) :: Bool
-  , not (id _ == _) :: Bool
-  , not (elem 0 _) :: Bool
-  , not (elem _ []) :: Bool
-  , not (elem _ _) :: Bool
-  , not (elem _ xs) :: Bool
-  , not (elem _ (_:_)) :: Bool
-  , not (elem x _) :: Bool
-  , not (elem (id _) _) :: Bool
-  , ord ' ' :: Int
-  , ord 'A' :: Int
-  , ord 'a' :: Int
-  , ord 'b' :: Int
-  , ord _ :: Int
-  , ord c :: Int
-  , ord c' :: Int
-  , ord d :: Int
-  , ord e :: Int
-  , even 0 :: Bool
-  , even 1 :: Bool
-  , even _ :: Bool
-  , even x :: Bool
-  , even y :: Bool
-  , even (ord _) :: Bool
-  , even (abs _) :: Bool
-  , even (id 0) :: Bool
-  , even (id _) :: Bool
-  , even (id x) :: Bool
-  , even (id (id _)) :: Bool
-  , even (negate _) :: Bool
-  , even (head _) :: Bool
-  , even (_ + _) :: Bool
-  , odd 0 :: Bool
-  , odd 1 :: Bool
-  , odd _ :: Bool
-  , odd x :: Bool
-  , odd y :: Bool
-  , odd (ord _) :: Bool
-  , odd (abs _) :: Bool
-  , odd (id 0) :: Bool
-  , odd (id _) :: Bool
-  , odd (id x) :: Bool
-  , odd (id (id _)) :: Bool
-  , odd (negate _) :: Bool
-  , odd (head _) :: Bool
-  , odd (_ + _) :: Bool
-  , f (-1) :: Int
-  , f 0 :: Int
-  , f 1 :: Int
-  , f _ :: Int
-  , f x :: Int
-  , f y :: Int
-  , f z :: Int
-  , f (ord 'a') :: Int
-  , f (ord _) :: Int
-  , f (ord c) :: Int
-  , f (f _) :: Int
-  , f (abs 0) :: Int
-  , f (abs _) :: Int
-  , f (abs x) :: Int
-  , f (abs (id _)) :: Int
-  , f (id 0) :: Int
-  , f (id 1) :: Int
-  , f (id _) :: Int
-  , f (id x) :: Int
-  , f (id y) :: Int
-  , f (id (ord _)) :: Int
-  , f (id (abs _)) :: Int
-  , f (id (id 0)) :: Int
-  , f (id (id _)) :: Int
-  , f (id (id x)) :: Int
-  , f (id (id (id _))) :: Int
-  , f (id (negate _)) :: Int
-  , f (id (head _)) :: Int
-  , f (id (_ + _)) :: Int
-  , f (negate 0) :: Int
-  , f (negate _) :: Int
-  , f (negate x) :: Int
-  , f (negate (id _)) :: Int
-  , f (head []) :: Int
-  , f (head _) :: Int
-  , f (head xs) :: Int
-  , f (head (_:_)) :: Int
-  , f (_ * _) :: Int
-  , f (0 + _) :: Int
-  , f (_ + 0) :: Int
-  , f (_ + _) :: Int
-  , f (_ + x) :: Int
-  , f (_ + id _) :: Int
-  , f (x + _) :: Int
-  , f (id _ + _) :: Int
-  , f' _ :: Int
-  , g 0 :: Int
-  , g 1 :: Int
-  , g _ :: Int
-  , g x :: Int
-  , g y :: Int
-  , g (ord _) :: Int
-  , g (abs _) :: Int
-  , g (id 0) :: Int
-  , g (id _) :: Int
-  , g (id x) :: Int
-  , g (id (id _)) :: Int
-  , g (negate _) :: Int
-  , g (head _) :: Int
-  , g (_ + _) :: Int
-  , h 0 :: Int
-  , h _ :: Int
-  , h x :: Int
-  , h (id _) :: Int
-  , abs (-1) :: Int
-  , abs 0 :: Int
-  , abs 1 :: Int
-  , abs 2 :: Int
-  , abs _ :: Int
-  , abs x :: Int
-  , abs x' :: Int
-  , abs y :: Int
-  , abs z :: Int
-  , abs (ord ' ') :: Int
-  , abs (ord 'a') :: Int
-  , abs (ord _) :: Int
-  , abs (ord c) :: Int
-  , abs (ord d) :: Int
-  , abs (f 0) :: Int
-  , abs (f _) :: Int
-  , abs (f x) :: Int
-  , abs (f (id _)) :: Int
-  , abs (g _) :: Int
-  , abs (abs 0) :: Int
-  , abs (abs 1) :: Int
-  , abs (abs _) :: Int
-  , abs (abs x) :: Int
-  , abs (abs y) :: Int
-  , abs (abs (ord _)) :: Int
-  , abs (abs (abs _)) :: Int
-  , abs (abs (id 0)) :: Int
-  , abs (abs (id _)) :: Int
-  , abs (abs (id x)) :: Int
-  , abs (abs (id (id _))) :: Int
-  , abs (abs (negate _)) :: Int
-  , abs (abs (head _)) :: Int
-  , abs (abs (_ + _)) :: Int
-  , abs (id (-1)) :: Int
-  , abs (id 0) :: Int
-  , abs (id 1) :: Int
-  , abs (id _) :: Int
-  , abs (id x) :: Int
-  , abs (id y) :: Int
-  , abs (id z) :: Int
-  , abs (id (ord 'a')) :: Int
-  , abs (id (ord _)) :: Int
-  , abs (id (ord c)) :: Int
-  , abs (id (f _)) :: Int
-  , abs (id (abs 0)) :: Int
-  , abs (id (abs _)) :: Int
-  , abs (id (abs x)) :: Int
-  , abs (id (abs (id _))) :: Int
-  , abs (id (id 0)) :: Int
-  , abs (id (id 1)) :: Int
-  , abs (id (id _)) :: Int
-  , abs (id (id x)) :: Int
-  , abs (id (id y)) :: Int
-  , abs (id (id (ord _))) :: Int
-  , abs (id (id (abs _))) :: Int
-  , abs (id (id (id 0))) :: Int
-  , abs (id (id (id _))) :: Int
-  , abs (id (id (id x))) :: Int
-  , abs (id (id (id (id _)))) :: Int
-  , abs (id (id (negate _))) :: Int
-  , abs (id (id (head _))) :: Int
-  , abs (id (id (_ + _))) :: Int
-  , abs (id (negate 0)) :: Int
-  , abs (id (negate _)) :: Int
-  , abs (id (negate x)) :: Int
-  , abs (id (negate (id _))) :: Int
-  , abs (id (head [])) :: Int
-  , abs (id (head _)) :: Int
-  , abs (id (head xs)) :: Int
-  , abs (id (head (_:_))) :: Int
-  , abs (id (_ * _)) :: Int
-  , abs (id (0 + _)) :: Int
-  , abs (id (_ + 0)) :: Int
-  , abs (id (_ + _)) :: Int
-  , abs (id (_ + x)) :: Int
-  , abs (id (_ + id _)) :: Int
-  , abs (id (x + _)) :: Int
-  , abs (id (id _ + _)) :: Int
-  , abs (negate 0) :: Int
-  , abs (negate 1) :: Int
-  , abs (negate _) :: Int
-  , abs (negate x) :: Int
-  , abs (negate y) :: Int
-  , abs (negate (ord _)) :: Int
-  , abs (negate (abs _)) :: Int
-  , abs (negate (id 0)) :: Int
-  , abs (negate (id _)) :: Int
-  , abs (negate (id x)) :: Int
-  , abs (negate (id (id _))) :: Int
-  , abs (negate (negate _)) :: Int
-  , abs (negate (head _)) :: Int
-  , abs (negate (_ + _)) :: Int
-  , abs (head [0]) :: Int
-  , abs (head []) :: Int
-  , abs (head _) :: Int
-  , abs (head xs) :: Int
-  , abs (head ys) :: Int
-  , abs (head (tail _)) :: Int
-  , abs (head (0:_)) :: Int
-  , abs (head [_]) :: Int
-  , abs (head (_:_)) :: Int
-  , abs (head (_:xs)) :: Int
-  , abs (head (_:_:_)) :: Int
-  , abs (head (x:_)) :: Int
-  , abs (head (id _:_)) :: Int
-  , abs (head (_ ++ _)) :: Int
-  , abs (0 * _) :: Int
-  , abs (_ * 0) :: Int
-  , abs (_ * _) :: Int
-  , abs (_ * x) :: Int
-  , abs (_ * id _) :: Int
-  , abs (x * _) :: Int
-  , abs (id _ * _) :: Int
-  , abs (0 + 0) :: Int
-  , abs (0 + _) :: Int
-  , abs (0 + x) :: Int
-  , abs (0 + id _) :: Int
-  , abs (1 + _) :: Int
-  , abs (_ + 0) :: Int
-  , abs (_ + 1) :: Int
-  , abs (_ + _) :: Int
-  , abs (_ + x) :: Int
-  , abs (_ + y) :: Int
-  , abs (_ + ord _) :: Int
-  , abs (_ + abs _) :: Int
-  , abs (_ + id 0) :: Int
-  , abs (_ + id _) :: Int
-  , abs (_ + id x) :: Int
-  , abs (_ + id (id _)) :: Int
-  , abs (_ + negate _) :: Int
-  , abs (_ + head _) :: Int
-  , abs (_ + (_ + _)) :: Int
-  , abs (x + 0) :: Int
-  , abs (x + _) :: Int
-  , abs (x + x) :: Int
-  , abs (x + id _) :: Int
-  , abs (y + _) :: Int
-  , abs (ord _ + _) :: Int
-  , abs (abs _ + _) :: Int
-  , abs (id 0 + _) :: Int
-  , abs (id _ + 0) :: Int
-  , abs (id _ + _) :: Int
-  , abs (id _ + x) :: Int
-  , abs (id _ + id _) :: Int
-  , abs (id x + _) :: Int
-  , abs (id (id _) + _) :: Int
-  , abs (negate _ + _) :: Int
-  , abs (head _ + _) :: Int
-  , abs ((_ + _) + _) :: Int
-  , id (-1) :: Int
-  , id (-2) :: Int
-  , id 0 :: Int
-  , id 1 :: Int
-  , id 2 :: Int
-  , id 3 :: Int
-  , id _ :: Int
-  , id x :: Int
-  , id x' :: Int
-  , id y :: Int
-  , id y' :: Int
-  , id z :: Int
-  , id z' :: Int
-  , id (ord ' ') :: Int
-  , id (ord 'a') :: Int
-  , id (ord 'b') :: Int
-  , id (ord _) :: Int
-  , id (ord c) :: Int
-  , id (ord d) :: Int
-  , id (ord e) :: Int
-  , id (f (-1)) :: Int
-  , id (f 0) :: Int
-  , id (f 1) :: Int
-  , id (f _) :: Int
-  , id (f x) :: Int
-  , id (f y) :: Int
-  , id (f z) :: Int
-  , id (f (ord 'a')) :: Int
-  , id (f (ord _)) :: Int
-  , id (f (ord c)) :: Int
-  , id (f (f _)) :: Int
-  , id (f (abs 0)) :: Int
-  , id (f (abs _)) :: Int
-  , id (f (abs x)) :: Int
-  , id (f (abs (id _))) :: Int
-  , id (f (id 0)) :: Int
-  , id (f (id 1)) :: Int
-  , id (f (id _)) :: Int
-  , id (f (id x)) :: Int
-  , id (f (id y)) :: Int
-  , id (f (id (ord _))) :: Int
-  , id (f (id (abs _))) :: Int
-  , id (f (id (id 0))) :: Int
-  , id (f (id (id _))) :: Int
-  , id (f (id (id x))) :: Int
-  , id (f (id (id (id _)))) :: Int
-  , id (f (id (negate _))) :: Int
-  , id (f (id (head _))) :: Int
-  , id (f (id (_ + _))) :: Int
-  , id (f (negate 0)) :: Int
-  , id (f (negate _)) :: Int
-  , id (f (negate x)) :: Int
-  , id (f (negate (id _))) :: Int
-  , id (f (head [])) :: Int
-  , id (f (head _)) :: Int
-  , id (f (head xs)) :: Int
-  , id (f (head (_:_))) :: Int
-  , id (f (_ * _)) :: Int
-  , id (f (0 + _)) :: Int
-  , id (f (_ + 0)) :: Int
-  , id (f (_ + _)) :: Int
-  , id (f (_ + x)) :: Int
-  , id (f (_ + id _)) :: Int
-  , id (f (x + _)) :: Int
-  , id (f (id _ + _)) :: Int
-  , id (f' _) :: Int
-  , id (g 0) :: Int
-  , id (g 1) :: Int
-  , id (g _) :: Int
-  , id (g x) :: Int
-  , id (g y) :: Int
-  , id (g (ord _)) :: Int
-  , id (g (abs _)) :: Int
-  , id (g (id 0)) :: Int
-  , id (g (id _)) :: Int
-  , id (g (id x)) :: Int
-  , id (g (id (id _))) :: Int
-  , id (g (negate _)) :: Int
-  , id (g (head _)) :: Int
-  , id (g (_ + _)) :: Int
-  , id (h 0) :: Int
-  , id (h _) :: Int
-  , id (h x) :: Int
-  , id (h (id _)) :: Int
-  , id (abs (-1)) :: Int
-  , id (abs 0) :: Int
-  , id (abs 1) :: Int
-  , id (abs 2) :: Int
-  , id (abs _) :: Int
-  , id (abs x) :: Int
-  , id (abs x') :: Int
-  , id (abs y) :: Int
-  , id (abs z) :: Int
-  , id (abs (ord ' ')) :: Int
-  , id (abs (ord 'a')) :: Int
-  , id (abs (ord _)) :: Int
-  , id (abs (ord c)) :: Int
-  , id (abs (ord d)) :: Int
-  , id (abs (f 0)) :: Int
-  , id (abs (f _)) :: Int
-  , id (abs (f x)) :: Int
-  , id (abs (f (id _))) :: Int
-  , id (abs (g _)) :: Int
-  , id (abs (abs 0)) :: Int
-  , id (abs (abs 1)) :: Int
-  , id (abs (abs _)) :: Int
-  , id (abs (abs x)) :: Int
-  , id (abs (abs y)) :: Int
-  , id (abs (abs (ord _))) :: Int
-  , id (abs (abs (abs _))) :: Int
-  , id (abs (abs (id 0))) :: Int
-  , id (abs (abs (id _))) :: Int
-  , id (abs (abs (id x))) :: Int
-  , id (abs (abs (id (id _)))) :: Int
-  , id (abs (abs (negate _))) :: Int
-  , id (abs (abs (head _))) :: Int
-  , id (abs (abs (_ + _))) :: Int
-  , id (abs (id (-1))) :: Int
-  , id (abs (id 0)) :: Int
-  , id (abs (id 1)) :: Int
-  , id (abs (id _)) :: Int
-  , id (abs (id x)) :: Int
-  , id (abs (id y)) :: Int
-  , id (abs (id z)) :: Int
-  , id (abs (id (ord 'a'))) :: Int
-  , id (abs (id (ord _))) :: Int
-  , id (abs (id (ord c))) :: Int
-  , id (abs (id (f _))) :: Int
-  , id (abs (id (abs 0))) :: Int
-  , id (abs (id (abs _))) :: Int
-  , id (abs (id (abs x))) :: Int
-  , id (abs (id (abs (id _)))) :: Int
-  , id (abs (id (id 0))) :: Int
-  , id (abs (id (id 1))) :: Int
-  , id (abs (id (id _))) :: Int
-  , id (abs (id (id x))) :: Int
-  , id (abs (id (id y))) :: Int
-  , id (abs (id (id (ord _)))) :: Int
-  , id (abs (id (id (abs _)))) :: Int
-  , id (abs (id (id (id 0)))) :: Int
-  , id (abs (id (id (id _)))) :: Int
-  , id (abs (id (id (id x)))) :: Int
-  , id (abs (id (id (id (id _))))) :: Int
-  , id (abs (id (id (negate _)))) :: Int
-  , id (abs (id (id (head _)))) :: Int
-  , id (abs (id (id (_ + _)))) :: Int
-  , id (abs (id (negate 0))) :: Int
-  , id (abs (id (negate _))) :: Int
-  , id (abs (id (negate x))) :: Int
-  , id (abs (id (negate (id _)))) :: Int
-  , id (abs (id (head []))) :: Int
-  , id (abs (id (head _))) :: Int
-  , id (abs (id (head xs))) :: Int
-  , id (abs (id (head (_:_)))) :: Int
-  , id (abs (id (_ * _))) :: Int
-  , id (abs (id (0 + _))) :: Int
-  , id (abs (id (_ + 0))) :: Int
-  , id (abs (id (_ + _))) :: Int
-  , id (abs (id (_ + x))) :: Int
-  , id (abs (id (_ + id _))) :: Int
-  , id (abs (id (x + _))) :: Int
-  , id (abs (id (id _ + _))) :: Int
-  , id (abs (negate 0)) :: Int
-  , id (abs (negate 1)) :: Int
-  , id (abs (negate _)) :: Int
-  , id (abs (negate x)) :: Int
-  , id (abs (negate y)) :: Int
-  , id (abs (negate (ord _))) :: Int
-  , id (abs (negate (abs _))) :: Int
-  , id (abs (negate (id 0))) :: Int
-  , id (abs (negate (id _))) :: Int
-  , id (abs (negate (id x))) :: Int
-  , id (abs (negate (id (id _)))) :: Int
-  , id (abs (negate (negate _))) :: Int
-  , id (abs (negate (head _))) :: Int
-  , id (abs (negate (_ + _))) :: Int
-  , id (abs (head [0])) :: Int
-  , id (abs (head [])) :: Int
-  , id (abs (head _)) :: Int
-  , id (abs (head xs)) :: Int
-  , id (abs (head ys)) :: Int
-  , id (abs (head (tail _))) :: Int
-  , id (abs (head (0:_))) :: Int
-  , id (abs (head [_])) :: Int
-  , id (abs (head (_:_))) :: Int
-  , id (abs (head (_:xs))) :: Int
-  , id (abs (head (_:_:_))) :: Int
-  , id (abs (head (x:_))) :: Int
-  , id (abs (head (id _:_))) :: Int
-  , id (abs (head (_ ++ _))) :: Int
-  , id (abs (0 * _)) :: Int
-  , id (abs (_ * 0)) :: Int
-  , id (abs (_ * _)) :: Int
-  , id (abs (_ * x)) :: Int
-  , id (abs (_ * id _)) :: Int
-  , id (abs (x * _)) :: Int
-  , id (abs (id _ * _)) :: Int
-  , id (abs (0 + 0)) :: Int
-  , id (abs (0 + _)) :: Int
-  , id (abs (0 + x)) :: Int
-  , id (abs (0 + id _)) :: Int
-  , id (abs (1 + _)) :: Int
-  , id (abs (_ + 0)) :: Int
-  , id (abs (_ + 1)) :: Int
-  , id (abs (_ + _)) :: Int
-  , id (abs (_ + x)) :: Int
-  , id (abs (_ + y)) :: Int
-  , id (abs (_ + ord _)) :: Int
-  , id (abs (_ + abs _)) :: Int
-  , id (abs (_ + id 0)) :: Int
-  , id (abs (_ + id _)) :: Int
-  , id (abs (_ + id x)) :: Int
-  , id (abs (_ + id (id _))) :: Int
-  , id (abs (_ + negate _)) :: Int
-  , id (abs (_ + head _)) :: Int
-  , id (abs (_ + (_ + _))) :: Int
-  , id (abs (x + 0)) :: Int
-  , id (abs (x + _)) :: Int
-  , id (abs (x + x)) :: Int
-  , id (abs (x + id _)) :: Int
-  , id (abs (y + _)) :: Int
-  , id (abs (ord _ + _)) :: Int
-  , id (abs (abs _ + _)) :: Int
-  , id (abs (id 0 + _)) :: Int
-  , id (abs (id _ + 0)) :: Int
-  , id (abs (id _ + _)) :: Int
-  , id (abs (id _ + x)) :: Int
-  , id (abs (id _ + id _)) :: Int
-  , id (abs (id x + _)) :: Int
-  , id (abs (id (id _) + _)) :: Int
-  , id (abs (negate _ + _)) :: Int
-  , id (abs (head _ + _)) :: Int
-  , id (abs ((_ + _) + _)) :: Int
-  , id (id (-1)) :: Int
-  , id (id (-2)) :: Int
-  , id (id 0) :: Int
-  , id (id 1) :: Int
-  , id (id 2) :: Int
-  , id (id _) :: Int
-  , id (id x) :: Int
-  , id (id x') :: Int
-  , id (id y) :: Int
-  , id (id y') :: Int
-  , id (id z) :: Int
-  , id (id (ord ' ')) :: Int
-  , id (id (ord 'a')) :: Int
-  , id (id (ord 'b')) :: Int
-  , id (id (ord _)) :: Int
-  , id (id (ord c)) :: Int
-  , id (id (ord d)) :: Int
-  , id (id (ord e)) :: Int
-  , id (id (f 0)) :: Int
-  , id (id (f 1)) :: Int
-  , id (id (f _)) :: Int
-  , id (id (f x)) :: Int
-  , id (id (f y)) :: Int
-  , id (id (f (ord _))) :: Int
-  , id (id (f (abs _))) :: Int
-  , id (id (f (id 0))) :: Int
-  , id (id (f (id _))) :: Int
-  , id (id (f (id x))) :: Int
-  , id (id (f (id (id _)))) :: Int
-  , id (id (f (negate _))) :: Int
-  , id (id (f (head _))) :: Int
-  , id (id (f (_ + _))) :: Int
-  , id (id (g 0)) :: Int
-  , id (id (g _)) :: Int
-  , id (id (g x)) :: Int
-  , id (id (g (id _))) :: Int
-  , id (id (h _)) :: Int
-  , id (id (abs (-1))) :: Int
-  , id (id (abs 0)) :: Int
-  , id (id (abs 1)) :: Int
-  , id (id (abs _)) :: Int
-  , id (id (abs x)) :: Int
-  , id (id (abs y)) :: Int
-  , id (id (abs z)) :: Int
-  , id (id (abs (ord 'a'))) :: Int
-  , id (id (abs (ord _))) :: Int
-  , id (id (abs (ord c))) :: Int
-  , id (id (abs (f _))) :: Int
-  , id (id (abs (abs 0))) :: Int
-  , id (id (abs (abs _))) :: Int
-  , id (id (abs (abs x))) :: Int
-  , id (id (abs (abs (id _)))) :: Int
-  , id (id (abs (id 0))) :: Int
-  , id (id (abs (id 1))) :: Int
-  , id (id (abs (id _))) :: Int
-  , id (id (abs (id x))) :: Int
-  , id (id (abs (id y))) :: Int
-  , id (id (abs (id (ord _)))) :: Int
-  , id (id (abs (id (abs _)))) :: Int
-  , id (id (abs (id (id 0)))) :: Int
-  , id (id (abs (id (id _)))) :: Int
-  , id (id (abs (id (id x)))) :: Int
-  , id (id (abs (id (id (id _))))) :: Int
-  , id (id (abs (id (negate _)))) :: Int
-  , id (id (abs (id (head _)))) :: Int
-  , id (id (abs (id (_ + _)))) :: Int
-  , id (id (abs (negate 0))) :: Int
-  , id (id (abs (negate _))) :: Int
-  , id (id (abs (negate x))) :: Int
-  , id (id (abs (negate (id _)))) :: Int
-  , id (id (abs (head []))) :: Int
-  , id (id (abs (head _))) :: Int
-  , id (id (abs (head xs))) :: Int
-  , id (id (abs (head (_:_)))) :: Int
-  , id (id (abs (_ * _))) :: Int
-  , id (id (abs (0 + _))) :: Int
-  , id (id (abs (_ + 0))) :: Int
-  , id (id (abs (_ + _))) :: Int
-  , id (id (abs (_ + x))) :: Int
-  , id (id (abs (_ + id _))) :: Int
-  , id (id (abs (x + _))) :: Int
-  , id (id (abs (id _ + _))) :: Int
-  , id (id (id (-1))) :: Int
-  , id (id (id 0)) :: Int
-  , id (id (id 1)) :: Int
-  , id (id (id 2)) :: Int
-  , id (id (id _)) :: Int
-  , id (id (id x)) :: Int
-  , id (id (id x')) :: Int
-  , id (id (id y)) :: Int
-  , id (id (id z)) :: Int
-  , id (id (id (ord ' '))) :: Int
-  , id (id (id (ord 'a'))) :: Int
-  , id (id (id (ord _))) :: Int
-  , id (id (id (ord c))) :: Int
-  , id (id (id (ord d))) :: Int
-  , id (id (id (f 0))) :: Int
-  , id (id (id (f _))) :: Int
-  , id (id (id (f x))) :: Int
-  , id (id (id (f (id _)))) :: Int
-  , id (id (id (g _))) :: Int
-  , id (id (id (abs 0))) :: Int
-  , id (id (id (abs 1))) :: Int
-  , id (id (id (abs _))) :: Int
-  , id (id (id (abs x))) :: Int
-  , id (id (id (abs y))) :: Int
-  , id (id (id (abs (ord _)))) :: Int
-  , id (id (id (abs (abs _)))) :: Int
-  , id (id (id (abs (id 0)))) :: Int
-  , id (id (id (abs (id _)))) :: Int
-  , id (id (id (abs (id x)))) :: Int
-  , id (id (id (abs (id (id _))))) :: Int
-  , id (id (id (abs (negate _)))) :: Int
-  , id (id (id (abs (head _)))) :: Int
-  , id (id (id (abs (_ + _)))) :: Int
-  , id (id (id (id (-1)))) :: Int
-  , id (id (id (id 0))) :: Int
-  , id (id (id (id 1))) :: Int
-  , id (id (id (id _))) :: Int
-  , id (id (id (id x))) :: Int
-  , id (id (id (id y))) :: Int
-  , id (id (id (id z))) :: Int
-  , id (id (id (id (ord 'a')))) :: Int
-  , id (id (id (id (ord _)))) :: Int
-  , id (id (id (id (ord c)))) :: Int
-  , id (id (id (id (f _)))) :: Int
-  , id (id (id (id (abs 0)))) :: Int
-  , id (id (id (id (abs _)))) :: Int
-  , id (id (id (id (abs x)))) :: Int
-  , id (id (id (id (abs (id _))))) :: Int
-  , id (id (id (id (id 0)))) :: Int
-  , id (id (id (id (id 1)))) :: Int
-  , id (id (id (id (id _)))) :: Int
-  , id (id (id (id (id x)))) :: Int
-  , id (id (id (id (id y)))) :: Int
-  , id (id (id (id (id (ord _))))) :: Int
-  , id (id (id (id (id (abs _))))) :: Int
-  , id (id (id (id (id (id 0))))) :: Int
-  , id (id (id (id (id (id _))))) :: Int
-  , id (id (id (id (id (id x))))) :: Int
-  , id (id (id (id (id (id (id _)))))) :: Int
-  , id (id (id (id (id (negate _))))) :: Int
-  , id (id (id (id (id (head _))))) :: Int
-  , id (id (id (id (id (_ + _))))) :: Int
-  , id (id (id (id (negate 0)))) :: Int
-  , id (id (id (id (negate _)))) :: Int
-  , id (id (id (id (negate x)))) :: Int
-  , id (id (id (id (negate (id _))))) :: Int
-  , id (id (id (id (head [])))) :: Int
-  , id (id (id (id (head _)))) :: Int
-  , id (id (id (id (head xs)))) :: Int
-  , id (id (id (id (head (_:_))))) :: Int
-  , id (id (id (id (_ * _)))) :: Int
-  , id (id (id (id (0 + _)))) :: Int
-  , id (id (id (id (_ + 0)))) :: Int
-  , id (id (id (id (_ + _)))) :: Int
-  , id (id (id (id (_ + x)))) :: Int
-  , id (id (id (id (_ + id _)))) :: Int
-  , id (id (id (id (x + _)))) :: Int
-  , id (id (id (id (id _ + _)))) :: Int
-  , id (id (id (negate 0))) :: Int
-  , id (id (id (negate 1))) :: Int
-  , id (id (id (negate _))) :: Int
-  , id (id (id (negate x))) :: Int
-  , id (id (id (negate y))) :: Int
-  , id (id (id (negate (ord _)))) :: Int
-  , id (id (id (negate (abs _)))) :: Int
-  , id (id (id (negate (id 0)))) :: Int
-  , id (id (id (negate (id _)))) :: Int
-  , id (id (id (negate (id x)))) :: Int
-  , id (id (id (negate (id (id _))))) :: Int
-  , id (id (id (negate (negate _)))) :: Int
-  , id (id (id (negate (head _)))) :: Int
-  , id (id (id (negate (_ + _)))) :: Int
-  , id (id (id (head [0]))) :: Int
-  , id (id (id (head []))) :: Int
-  , id (id (id (head _))) :: Int
-  , id (id (id (head xs))) :: Int
-  , id (id (id (head ys))) :: Int
-  , id (id (id (head (tail _)))) :: Int
-  , id (id (id (head (0:_)))) :: Int
-  , id (id (id (head [_]))) :: Int
-  , id (id (id (head (_:_)))) :: Int
-  , id (id (id (head (_:xs)))) :: Int
-  , id (id (id (head (_:_:_)))) :: Int
-  , id (id (id (head (x:_)))) :: Int
-  , id (id (id (head (id _:_)))) :: Int
-  , id (id (id (head (_ ++ _)))) :: Int
-  , id (id (id (0 * _))) :: Int
-  , id (id (id (_ * 0))) :: Int
-  , id (id (id (_ * _))) :: Int
-  , id (id (id (_ * x))) :: Int
-  , id (id (id (_ * id _))) :: Int
-  , id (id (id (x * _))) :: Int
-  , id (id (id (id _ * _))) :: Int
-  , id (id (id (0 + 0))) :: Int
-  , id (id (id (0 + _))) :: Int
-  , id (id (id (0 + x))) :: Int
-  , id (id (id (0 + id _))) :: Int
-  , id (id (id (1 + _))) :: Int
-  , id (id (id (_ + 0))) :: Int
-  , id (id (id (_ + 1))) :: Int
-  , id (id (id (_ + _))) :: Int
-  , id (id (id (_ + x))) :: Int
-  , id (id (id (_ + y))) :: Int
-  , id (id (id (_ + ord _))) :: Int
-  , id (id (id (_ + abs _))) :: Int
-  , id (id (id (_ + id 0))) :: Int
-  , id (id (id (_ + id _))) :: Int
-  , id (id (id (_ + id x))) :: Int
-  , id (id (id (_ + id (id _)))) :: Int
-  , id (id (id (_ + negate _))) :: Int
-  , id (id (id (_ + head _))) :: Int
-  , id (id (id (_ + (_ + _)))) :: Int
-  , id (id (id (x + 0))) :: Int
-  , id (id (id (x + _))) :: Int
-  , id (id (id (x + x))) :: Int
-  , id (id (id (x + id _))) :: Int
-  , id (id (id (y + _))) :: Int
-  , id (id (id (ord _ + _))) :: Int
-  , id (id (id (abs _ + _))) :: Int
-  , id (id (id (id 0 + _))) :: Int
-  , id (id (id (id _ + 0))) :: Int
-  , id (id (id (id _ + _))) :: Int
-  , id (id (id (id _ + x))) :: Int
-  , id (id (id (id _ + id _))) :: Int
-  , id (id (id (id x + _))) :: Int
-  , id (id (id (id (id _) + _))) :: Int
-  , id (id (id (negate _ + _))) :: Int
-  , id (id (id (head _ + _))) :: Int
-  , id (id (id ((_ + _) + _))) :: Int
-  , id (id (negate (-1))) :: Int
-  , id (id (negate 0)) :: Int
-  , id (id (negate 1)) :: Int
-  , id (id (negate _)) :: Int
-  , id (id (negate x)) :: Int
-  , id (id (negate y)) :: Int
-  , id (id (negate z)) :: Int
-  , id (id (negate (ord 'a'))) :: Int
-  , id (id (negate (ord _))) :: Int
-  , id (id (negate (ord c))) :: Int
-  , id (id (negate (f _))) :: Int
-  , id (id (negate (abs 0))) :: Int
-  , id (id (negate (abs _))) :: Int
-  , id (id (negate (abs x))) :: Int
-  , id (id (negate (abs (id _)))) :: Int
-  , id (id (negate (id 0))) :: Int
-  , id (id (negate (id 1))) :: Int
-  , id (id (negate (id _))) :: Int
-  , id (id (negate (id x))) :: Int
-  , id (id (negate (id y))) :: Int
-  , id (id (negate (id (ord _)))) :: Int
-  , id (id (negate (id (abs _)))) :: Int
-  , id (id (negate (id (id 0)))) :: Int
-  , id (id (negate (id (id _)))) :: Int
-  , id (id (negate (id (id x)))) :: Int
-  , id (id (negate (id (id (id _))))) :: Int
-  , id (id (negate (id (negate _)))) :: Int
-  , id (id (negate (id (head _)))) :: Int
-  , id (id (negate (id (_ + _)))) :: Int
-  , id (id (negate (negate 0))) :: Int
-  , id (id (negate (negate _))) :: Int
-  , id (id (negate (negate x))) :: Int
-  , id (id (negate (negate (id _)))) :: Int
-  , id (id (negate (head []))) :: Int
-  , id (id (negate (head _))) :: Int
-  , id (id (negate (head xs))) :: Int
-  , id (id (negate (head (_:_)))) :: Int
-  , id (id (negate (_ * _))) :: Int
-  , id (id (negate (0 + _))) :: Int
-  , id (id (negate (_ + 0))) :: Int
-  , id (id (negate (_ + _))) :: Int
-  , id (id (negate (_ + x))) :: Int
-  , id (id (negate (_ + id _))) :: Int
-  , id (id (negate (x + _))) :: Int
-  , id (id (negate (id _ + _))) :: Int
-  , id (id (head [0,0])) :: Int
-  , id (id (head [0])) :: Int
-  , id (id (head [1])) :: Int
-  , id (id (head [])) :: Int
-  , id (id (head _)) :: Int
-  , id (id (head xs)) :: Int
-  , id (id (head ys)) :: Int
-  , id (id (head zs)) :: Int
-  , id (id (head (sort _))) :: Int
-  , id (id (head (tail []))) :: Int
-  , id (id (head (tail _))) :: Int
-  , id (id (head (tail xs))) :: Int
-  , id (id (head (tail (_:_)))) :: Int
-  , id (id (head [0])) :: Int
-  , id (id (head (0:_))) :: Int
-  , id (id (head (0:xs))) :: Int
-  , id (id (head (0:_:_))) :: Int
-  , id (id (head (1:_))) :: Int
-  , id (id (head [_,0])) :: Int
-  , id (id (head [_])) :: Int
-  , id (id (head (_:_))) :: Int
-  , id (id (head (_:xs))) :: Int
-  , id (id (head (_:ys))) :: Int
-  , id (id (head (_:tail _))) :: Int
-  , id (id (head (_:0:_))) :: Int
-  , id (id (head [_,_])) :: Int
-  , id (id (head (_:_:_))) :: Int
-  , id (id (head (_:_:xs))) :: Int
-  , id (id (head (_:_:_:_))) :: Int
-  , id (id (head (_:x:_))) :: Int
-  , id (id (head (_:id _:_))) :: Int
-  , id (id (head (_:(_ ++ _)))) :: Int
-  , id (id (head [x])) :: Int
-  , id (id (head (x:_))) :: Int
-  , id (id (head (x:xs))) :: Int
-  , id (id (head (x:_:_))) :: Int
-  , id (id (head (y:_))) :: Int
-  , id (id (head (ord _:_))) :: Int
-  , id (id (head (abs _:_))) :: Int
-  , id (id (head (id 0:_))) :: Int
-  , id (id (head [id _])) :: Int
-  , id (id (head (id _:_))) :: Int
-  , id (id (head (id _:xs))) :: Int
-  , id (id (head (id _:_:_))) :: Int
-  , id (id (head (id x:_))) :: Int
-  , id (id (head (id (id _):_))) :: Int
-  , id (id (head (negate _:_))) :: Int
-  , id (id (head (head _:_))) :: Int
-  , id (id (head (_ + _:_))) :: Int
-  , id (id (head (insert _ _))) :: Int
-  , id (id (head ([] ++ _))) :: Int
-  , id (id (head (_ ++ []))) :: Int
-  , id (id (head (_ ++ _))) :: Int
-  , id (id (head (_ ++ xs))) :: Int
-  , id (id (head (_ ++ (_:_)))) :: Int
-  , id (id (head (xs ++ _))) :: Int
-  , id (id (head ((_:_) ++ _))) :: Int
-  , id (id (0 * 0)) :: Int
-  , id (id (0 * _)) :: Int
-  , id (id (0 * x)) :: Int
-  , id (id (0 * id _)) :: Int
-  , id (id (1 * _)) :: Int
-  , id (id (_ * 0)) :: Int
-  , id (id (_ * 1)) :: Int
-  , id (id (_ * _)) :: Int
-  , id (id (_ * x)) :: Int
-  , id (id (_ * y)) :: Int
-  , id (id (_ * ord _)) :: Int
-  , id (id (_ * abs _)) :: Int
-  , id (id (_ * id 0)) :: Int
-  , id (id (_ * id _)) :: Int
-  , id (id (_ * id x)) :: Int
-  , id (id (_ * id (id _))) :: Int
-  , id (id (_ * negate _)) :: Int
-  , id (id (_ * head _)) :: Int
-  , id (id (_ * (_ + _))) :: Int
-  , id (id (x * 0)) :: Int
-  , id (id (x * _)) :: Int
-  , id (id (x * x)) :: Int
-  , id (id (x * id _)) :: Int
-  , id (id (y * _)) :: Int
-  , id (id (ord _ * _)) :: Int
-  , id (id (abs _ * _)) :: Int
-  , id (id (id 0 * _)) :: Int
-  , id (id (id _ * 0)) :: Int
-  , id (id (id _ * _)) :: Int
-  , id (id (id _ * x)) :: Int
-  , id (id (id _ * id _)) :: Int
-  , id (id (id x * _)) :: Int
-  , id (id (id (id _) * _)) :: Int
-  , id (id (negate _ * _)) :: Int
-  , id (id (head _ * _)) :: Int
-  , id (id ((_ + _) * _)) :: Int
-  , id (id ((-1) + _)) :: Int
-  , id (id (0 + 0)) :: Int
-  , id (id (0 + 1)) :: Int
-  , id (id (0 + _)) :: Int
-  , id (id (0 + x)) :: Int
-  , id (id (0 + y)) :: Int
-  , id (id (0 + ord _)) :: Int
-  , id (id (0 + abs _)) :: Int
-  , id (id (0 + id 0)) :: Int
-  , id (id (0 + id _)) :: Int
-  , id (id (0 + id x)) :: Int
-  , id (id (0 + id (id _))) :: Int
-  , id (id (0 + negate _)) :: Int
-  , id (id (0 + head _)) :: Int
-  , id (id (0 + (_ + _))) :: Int
-  , id (id (1 + 0)) :: Int
-  , id (id (1 + _)) :: Int
-  , id (id (1 + x)) :: Int
-  , id (id (1 + id _)) :: Int
-  , id (id (_ + (-1))) :: Int
-  , id (id (_ + 0)) :: Int
-  , id (id (_ + 1)) :: Int
-  , id (id (_ + _)) :: Int
-  , id (id (_ + x)) :: Int
-  , id (id (_ + y)) :: Int
-  , id (id (_ + z)) :: Int
-  , id (id (_ + ord 'a')) :: Int
-  , id (id (_ + ord _)) :: Int
-  , id (id (_ + ord c)) :: Int
-  , id (id (_ + f _)) :: Int
-  , id (id (_ + abs 0)) :: Int
-  , id (id (_ + abs _)) :: Int
-  , id (id (_ + abs x)) :: Int
-  , id (id (_ + abs (id _))) :: Int
-  , id (id (_ + id 0)) :: Int
-  , id (id (_ + id 1)) :: Int
-  , id (id (_ + id _)) :: Int
-  , id (id (_ + id x)) :: Int
-  , id (id (_ + id y)) :: Int
-  , id (id (_ + id (ord _))) :: Int
-  , id (id (_ + id (abs _))) :: Int
-  , id (id (_ + id (id 0))) :: Int
-  , id (id (_ + id (id _))) :: Int
-  , id (id (_ + id (id x))) :: Int
-  , id (id (_ + id (id (id _)))) :: Int
-  , id (id (_ + id (negate _))) :: Int
-  , id (id (_ + id (head _))) :: Int
-  , id (id (_ + id (_ + _))) :: Int
-  , id (id (_ + negate 0)) :: Int
-  , id (id (_ + negate _)) :: Int
-  , id (id (_ + negate x)) :: Int
-  , id (id (_ + negate (id _))) :: Int
-  , id (id (_ + head [])) :: Int
-  , id (id (_ + head _)) :: Int
-  , id (id (_ + head xs)) :: Int
-  , id (id (_ + head (_:_))) :: Int
-  , id (id (_ + _ * _)) :: Int
-  , id (id (_ + (0 + _))) :: Int
-  , id (id (_ + (_ + 0))) :: Int
-  , id (id (_ + (_ + _))) :: Int
-  , id (id (_ + (_ + x))) :: Int
-  , id (id (_ + (_ + id _))) :: Int
-  , id (id (_ + (x + _))) :: Int
-  , id (id (_ + (id _ + _))) :: Int
-  , id (id (x + 0)) :: Int
-  , id (id (x + 1)) :: Int
-  , id (id (x + _)) :: Int
-  , id (id (x + x)) :: Int
-  , id (id (x + y)) :: Int
-  , id (id (x + ord _)) :: Int
-  , id (id (x + abs _)) :: Int
-  , id (id (x + id 0)) :: Int
-  , id (id (x + id _)) :: Int
-  , id (id (x + id x)) :: Int
-  , id (id (x + id (id _))) :: Int
-  , id (id (x + negate _)) :: Int
-  , id (id (x + head _)) :: Int
-  , id (id (x + (_ + _))) :: Int
-  , id (id (y + 0)) :: Int
-  , id (id (y + _)) :: Int
-  , id (id (y + x)) :: Int
-  , id (id (y + id _)) :: Int
-  , id (id (z + _)) :: Int
-  , id (id (ord 'a' + _)) :: Int
-  , id (id (ord _ + 0)) :: Int
-  , id (id (ord _ + _)) :: Int
-  , id (id (ord _ + x)) :: Int
-  , id (id (ord _ + id _)) :: Int
-  , id (id (ord c + _)) :: Int
-  , id (id (f _ + _)) :: Int
-  , id (id (abs 0 + _)) :: Int
-  , id (id (abs _ + 0)) :: Int
-  , id (id (abs _ + _)) :: Int
-  , id (id (abs _ + x)) :: Int
-  , id (id (abs _ + id _)) :: Int
-  , id (id (abs x + _)) :: Int
-  , id (id (abs (id _) + _)) :: Int
-  , id (id (id 0 + 0)) :: Int
-  , id (id (id 0 + _)) :: Int
-  , id (id (id 0 + x)) :: Int
-  , id (id (id 0 + id _)) :: Int
-  , id (id (id 1 + _)) :: Int
-  , id (id (id _ + 0)) :: Int
-  , id (id (id _ + 1)) :: Int
-  , id (id (id _ + _)) :: Int
-  , id (id (id _ + x)) :: Int
-  , id (id (id _ + y)) :: Int
-  , id (id (id _ + ord _)) :: Int
-  , id (id (id _ + abs _)) :: Int
-  , id (id (id _ + id 0)) :: Int
-  , id (id (id _ + id _)) :: Int
-  , id (id (id _ + id x)) :: Int
-  , id (id (id _ + id (id _))) :: Int
-  , id (id (id _ + negate _)) :: Int
-  , id (id (id _ + head _)) :: Int
-  , id (id (id _ + (_ + _))) :: Int
-  , id (id (id x + 0)) :: Int
-  , id (id (id x + _)) :: Int
-  , id (id (id x + x)) :: Int
-  , id (id (id x + id _)) :: Int
-  , id (id (id y + _)) :: Int
-  , id (id (id (ord _) + _)) :: Int
-  , id (id (id (abs _) + _)) :: Int
-  , id (id (id (id 0) + _)) :: Int
-  , id (id (id (id _) + 0)) :: Int
-  , id (id (id (id _) + _)) :: Int
-  , id (id (id (id _) + x)) :: Int
-  , id (id (id (id _) + id _)) :: Int
-  , id (id (id (id x) + _)) :: Int
-  , id (id (id (id (id _)) + _)) :: Int
-  , id (id (id (negate _) + _)) :: Int
-  , id (id (id (head _) + _)) :: Int
-  , id (id (id (_ + _) + _)) :: Int
-  , id (id (negate 0 + _)) :: Int
-  , id (id (negate _ + 0)) :: Int
-  , id (id (negate _ + _)) :: Int
-  , id (id (negate _ + x)) :: Int
-  , id (id (negate _ + id _)) :: Int
-  , id (id (negate x + _)) :: Int
-  , id (id (negate (id _) + _)) :: Int
-  , id (id (head [] + _)) :: Int
-  , id (id (head _ + 0)) :: Int
-  , id (id (head _ + _)) :: Int
-  , id (id (head _ + x)) :: Int
-  , id (id (head _ + id _)) :: Int
-  , id (id (head xs + _)) :: Int
-  , id (id (head (_:_) + _)) :: Int
-  , id (id (_ * _ + _)) :: Int
-  , id (id ((0 + _) + _)) :: Int
-  , id (id ((_ + 0) + _)) :: Int
-  , id (id ((_ + _) + 0)) :: Int
-  , id (id ((_ + _) + _)) :: Int
-  , id (id ((_ + _) + x)) :: Int
-  , id (id ((_ + _) + id _)) :: Int
-  , id (id ((_ + x) + _)) :: Int
-  , id (id ((_ + id _) + _)) :: Int
-  , id (id ((x + _) + _)) :: Int
-  , id (id ((id _ + _) + _)) :: Int
-  , id (negate (-1)) :: Int
-  , id (negate 0) :: Int
-  , id (negate 1) :: Int
-  , id (negate 2) :: Int
-  , id (negate _) :: Int
-  , id (negate x) :: Int
-  , id (negate x') :: Int
-  , id (negate y) :: Int
-  , id (negate z) :: Int
-  , id (negate (ord ' ')) :: Int
-  , id (negate (ord 'a')) :: Int
-  , id (negate (ord _)) :: Int
-  , id (negate (ord c)) :: Int
-  , id (negate (ord d)) :: Int
-  , id (negate (f 0)) :: Int
-  , id (negate (f _)) :: Int
-  , id (negate (f x)) :: Int
-  , id (negate (f (id _))) :: Int
-  , id (negate (g _)) :: Int
-  , id (negate (abs 0)) :: Int
-  , id (negate (abs 1)) :: Int
-  , id (negate (abs _)) :: Int
-  , id (negate (abs x)) :: Int
-  , id (negate (abs y)) :: Int
-  , id (negate (abs (ord _))) :: Int
-  , id (negate (abs (abs _))) :: Int
-  , id (negate (abs (id 0))) :: Int
-  , id (negate (abs (id _))) :: Int
-  , id (negate (abs (id x))) :: Int
-  , id (negate (abs (id (id _)))) :: Int
-  , id (negate (abs (negate _))) :: Int
-  , id (negate (abs (head _))) :: Int
-  , id (negate (abs (_ + _))) :: Int
-  , id (negate (id (-1))) :: Int
-  , id (negate (id 0)) :: Int
-  , id (negate (id 1)) :: Int
-  , id (negate (id _)) :: Int
-  , id (negate (id x)) :: Int
-  , id (negate (id y)) :: Int
-  , id (negate (id z)) :: Int
-  , id (negate (id (ord 'a'))) :: Int
-  , id (negate (id (ord _))) :: Int
-  , id (negate (id (ord c))) :: Int
-  , id (negate (id (f _))) :: Int
-  , id (negate (id (abs 0))) :: Int
-  , id (negate (id (abs _))) :: Int
-  , id (negate (id (abs x))) :: Int
-  , id (negate (id (abs (id _)))) :: Int
-  , id (negate (id (id 0))) :: Int
-  , id (negate (id (id 1))) :: Int
-  , id (negate (id (id _))) :: Int
-  , id (negate (id (id x))) :: Int
-  , id (negate (id (id y))) :: Int
-  , id (negate (id (id (ord _)))) :: Int
-  , id (negate (id (id (abs _)))) :: Int
-  , id (negate (id (id (id 0)))) :: Int
-  , id (negate (id (id (id _)))) :: Int
-  , id (negate (id (id (id x)))) :: Int
-  , id (negate (id (id (id (id _))))) :: Int
-  , id (negate (id (id (negate _)))) :: Int
-  , id (negate (id (id (head _)))) :: Int
-  , id (negate (id (id (_ + _)))) :: Int
-  , id (negate (id (negate 0))) :: Int
-  , id (negate (id (negate _))) :: Int
-  , id (negate (id (negate x))) :: Int
-  , id (negate (id (negate (id _)))) :: Int
-  , id (negate (id (head []))) :: Int
-  , id (negate (id (head _))) :: Int
-  , id (negate (id (head xs))) :: Int
-  , id (negate (id (head (_:_)))) :: Int
-  , id (negate (id (_ * _))) :: Int
-  , id (negate (id (0 + _))) :: Int
-  , id (negate (id (_ + 0))) :: Int
-  , id (negate (id (_ + _))) :: Int
-  , id (negate (id (_ + x))) :: Int
-  , id (negate (id (_ + id _))) :: Int
-  , id (negate (id (x + _))) :: Int
-  , id (negate (id (id _ + _))) :: Int
-  , id (negate (negate 0)) :: Int
-  , id (negate (negate 1)) :: Int
-  , id (negate (negate _)) :: Int
-  , id (negate (negate x)) :: Int
-  , id (negate (negate y)) :: Int
-  , id (negate (negate (ord _))) :: Int
-  , id (negate (negate (abs _))) :: Int
-  , id (negate (negate (id 0))) :: Int
-  , id (negate (negate (id _))) :: Int
-  , id (negate (negate (id x))) :: Int
-  , id (negate (negate (id (id _)))) :: Int
-  , id (negate (negate (negate _))) :: Int
-  , id (negate (negate (head _))) :: Int
-  , id (negate (negate (_ + _))) :: Int
-  , id (negate (head [0])) :: Int
-  , id (negate (head [])) :: Int
-  , id (negate (head _)) :: Int
-  , id (negate (head xs)) :: Int
-  , id (negate (head ys)) :: Int
-  , id (negate (head (tail _))) :: Int
-  , id (negate (head (0:_))) :: Int
-  , id (negate (head [_])) :: Int
-  , id (negate (head (_:_))) :: Int
-  , id (negate (head (_:xs))) :: Int
-  , id (negate (head (_:_:_))) :: Int
-  , id (negate (head (x:_))) :: Int
-  , id (negate (head (id _:_))) :: Int
-  , id (negate (head (_ ++ _))) :: Int
-  , id (negate (0 * _)) :: Int
-  , id (negate (_ * 0)) :: Int
-  , id (negate (_ * _)) :: Int
-  , id (negate (_ * x)) :: Int
-  , id (negate (_ * id _)) :: Int
-  , id (negate (x * _)) :: Int
-  , id (negate (id _ * _)) :: Int
-  , id (negate (0 + 0)) :: Int
-  , id (negate (0 + _)) :: Int
-  , id (negate (0 + x)) :: Int
-  , id (negate (0 + id _)) :: Int
-  , id (negate (1 + _)) :: Int
-  , id (negate (_ + 0)) :: Int
-  , id (negate (_ + 1)) :: Int
-  , id (negate (_ + _)) :: Int
-  , id (negate (_ + x)) :: Int
-  , id (negate (_ + y)) :: Int
-  , id (negate (_ + ord _)) :: Int
-  , id (negate (_ + abs _)) :: Int
-  , id (negate (_ + id 0)) :: Int
-  , id (negate (_ + id _)) :: Int
-  , id (negate (_ + id x)) :: Int
-  , id (negate (_ + id (id _))) :: Int
-  , id (negate (_ + negate _)) :: Int
-  , id (negate (_ + head _)) :: Int
-  , id (negate (_ + (_ + _))) :: Int
-  , id (negate (x + 0)) :: Int
-  , id (negate (x + _)) :: Int
-  , id (negate (x + x)) :: Int
-  , id (negate (x + id _)) :: Int
-  , id (negate (y + _)) :: Int
-  , id (negate (ord _ + _)) :: Int
-  , id (negate (abs _ + _)) :: Int
-  , id (negate (id 0 + _)) :: Int
-  , id (negate (id _ + 0)) :: Int
-  , id (negate (id _ + _)) :: Int
-  , id (negate (id _ + x)) :: Int
-  , id (negate (id _ + id _)) :: Int
-  , id (negate (id x + _)) :: Int
-  , id (negate (id (id _) + _)) :: Int
-  , id (negate (negate _ + _)) :: Int
-  , id (negate (head _ + _)) :: Int
-  , id (negate ((_ + _) + _)) :: Int
-  , id (head [-1]) :: Int
-  , id (head [0,0,0]) :: Int
-  , id (head [0,0]) :: Int
-  , id (head [0,1]) :: Int
-  , id (head [0]) :: Int
-  , id (head [1,0]) :: Int
-  , id (head [1]) :: Int
-  , id (head []) :: Int
-  , id (head _) :: Int
-  , id (head xs) :: Int
-  , id (head xs') :: Int
-  , id (head ys) :: Int
-  , id (head zs) :: Int
-  , id (head (sort _)) :: Int
-  , id (head (tail [0])) :: Int
-  , id (head (tail [])) :: Int
-  , id (head (tail _)) :: Int
-  , id (head (tail xs)) :: Int
-  , id (head (tail ys)) :: Int
-  , id (head (tail (tail _))) :: Int
-  , id (head (tail (0:_))) :: Int
-  , id (head (tail [_])) :: Int
-  , id (head (tail (_:_))) :: Int
-  , id (head (tail (_:xs))) :: Int
-  , id (head (tail (_:_:_))) :: Int
-  , id (head (tail (x:_))) :: Int
-  , id (head (tail (id _:_))) :: Int
-  , id (head (tail (_ ++ _))) :: Int
-  , id (head ((-1):_)) :: Int
-  , id (head [0,0]) :: Int
-  , id (head [0]) :: Int
-  , id (head (0:_)) :: Int
-  , id (head (0:xs)) :: Int
-  , id (head (0:ys)) :: Int
-  , id (head (0:tail _)) :: Int
-  , id (head (0:0:_)) :: Int
-  , id (head [0,_]) :: Int
-  , id (head (0:_:_)) :: Int
-  , id (head (0:_:xs)) :: Int
-  , id (head (0:_:_:_)) :: Int
-  , id (head (0:x:_)) :: Int
-  , id (head (0:id _:_)) :: Int
-  , id (head (0:(_ ++ _))) :: Int
-  , id (head [1]) :: Int
-  , id (head (1:_)) :: Int
-  , id (head (1:xs)) :: Int
-  , id (head (1:_:_)) :: Int
-  , id (head [_,0,0]) :: Int
-  , id (head [_,0]) :: Int
-  , id (head [_,1]) :: Int
-  , id (head [_]) :: Int
-  , id (head (_:_)) :: Int
-  , id (head (_:xs)) :: Int
-  , id (head (_:ys)) :: Int
-  , id (head (_:zs)) :: Int
-  , id (head (_:sort _)) :: Int
-  , id (head (_:tail [])) :: Int
-  , id (head (_:tail _)) :: Int
-  , id (head (_:tail xs)) :: Int
-  , id (head (_:tail (_:_))) :: Int
-  , id (head [_,0]) :: Int
-  , id (head (_:0:_)) :: Int
-  , id (head (_:0:xs)) :: Int
-  , id (head (_:0:_:_)) :: Int
-  , id (head (_:1:_)) :: Int
-  , id (head [_,_,0]) :: Int
-  , id (head [_,_]) :: Int
-  , id (head (_:_:_)) :: Int
-  , id (head (_:_:xs)) :: Int
-  , id (head (_:_:ys)) :: Int
-  , id (head (_:_:tail _)) :: Int
-  , id (head (_:_:0:_)) :: Int
-  , id (head [_,_,_]) :: Int
-  , id (head (_:_:_:_)) :: Int
-  , id (head (_:_:_:xs)) :: Int
-  , id (head (_:_:_:_:_)) :: Int
-  , id (head (_:_:x:_)) :: Int
-  , id (head (_:_:id _:_)) :: Int
-  , id (head (_:_:(_ ++ _))) :: Int
-  , id (head [_,x]) :: Int
-  , id (head (_:x:_)) :: Int
-  , id (head (_:x:xs)) :: Int
-  , id (head (_:x:_:_)) :: Int
-  , id (head (_:y:_)) :: Int
-  , id (head (_:ord _:_)) :: Int
-  , id (head (_:abs _:_)) :: Int
-  , id (head (_:id 0:_)) :: Int
-  , id (head [_,id _]) :: Int
-  , id (head (_:id _:_)) :: Int
-  , id (head (_:id _:xs)) :: Int
-  , id (head (_:id _:_:_)) :: Int
-  , id (head (_:id x:_)) :: Int
-  , id (head (_:id (id _):_)) :: Int
-  , id (head (_:negate _:_)) :: Int
-  , id (head (_:head _:_)) :: Int
-  , id (head (_:_ + _:_)) :: Int
-  , id (head (_:insert _ _)) :: Int
-  , id (head (_:([] ++ _))) :: Int
-  , id (head (_:(_ ++ []))) :: Int
-  , id (head (_:(_ ++ _))) :: Int
-  , id (head (_:(_ ++ xs))) :: Int
-  , id (head (_:(_ ++ (_:_)))) :: Int
-  , id (head (_:(xs ++ _))) :: Int
-  , id (head (_:((_:_) ++ _))) :: Int
-  , id (head [x,0]) :: Int
-  , id (head [x]) :: Int
-  , id (head (x:_)) :: Int
-  , id (head (x:xs)) :: Int
-  , id (head (x:ys)) :: Int
-  , id (head (x:tail _)) :: Int
-  , id (head (x:0:_)) :: Int
-  , id (head [x,_]) :: Int
-  , id (head (x:_:_)) :: Int
-  , id (head (x:_:xs)) :: Int
-  , id (head (x:_:_:_)) :: Int
-  , id (head (x:x:_)) :: Int
-  , id (head (x:id _:_)) :: Int
-  , id (head (x:(_ ++ _))) :: Int
-  , id (head [y]) :: Int
-  , id (head (y:_)) :: Int
-  , id (head (y:xs)) :: Int
-  , id (head (y:_:_)) :: Int
-  , id (head (z:_)) :: Int
-  , id (head (ord 'a':_)) :: Int
-  , id (head [ord _]) :: Int
-  , id (head (ord _:_)) :: Int
-  , id (head (ord _:xs)) :: Int
-  , id (head (ord _:_:_)) :: Int
-  , id (head (ord c:_)) :: Int
-  , id (head (f _:_)) :: Int
-  , id (head (abs 0:_)) :: Int
-  , id (head [abs _]) :: Int
-  , id (head (abs _:_)) :: Int
-  , id (head (abs _:xs)) :: Int
-  , id (head (abs _:_:_)) :: Int
-  , id (head (abs x:_)) :: Int
-  , id (head (abs (id _):_)) :: Int
-  , id (head [id 0]) :: Int
-  , id (head (id 0:_)) :: Int
-  , id (head (id 0:xs)) :: Int
-  , id (head (id 0:_:_)) :: Int
-  , id (head (id 1:_)) :: Int
-  , id (head [id _,0]) :: Int
-  , id (head [id _]) :: Int
-  , id (head (id _:_)) :: Int
-  , id (head (id _:xs)) :: Int
-  , id (head (id _:ys)) :: Int
-  , id (head (id _:tail _)) :: Int
-  , id (head (id _:0:_)) :: Int
-  , id (head [id _,_]) :: Int
-  , id (head (id _:_:_)) :: Int
-  , id (head (id _:_:xs)) :: Int
-  , id (head (id _:_:_:_)) :: Int
-  , id (head (id _:x:_)) :: Int
-  , id (head (id _:id _:_)) :: Int
-  , id (head (id _:(_ ++ _))) :: Int
-  , id (head [id x]) :: Int
-  , id (head (id x:_)) :: Int
-  , id (head (id x:xs)) :: Int
-  , id (head (id x:_:_)) :: Int
-  , id (head (id y:_)) :: Int
-  , id (head (id (ord _):_)) :: Int
-  , id (head (id (abs _):_)) :: Int
-  , id (head (id (id 0):_)) :: Int
-  , id (head [id (id _)]) :: Int
-  , id (head (id (id _):_)) :: Int
-  , id (head (id (id _):xs)) :: Int
-  , id (head (id (id _):_:_)) :: Int
-  , id (head (id (id x):_)) :: Int
-  , id (head (id (id (id _)):_)) :: Int
-  , id (head (id (negate _):_)) :: Int
-  , id (head (id (head _):_)) :: Int
-  , id (head (id (_ + _):_)) :: Int
-  , id (head (negate 0:_)) :: Int
-  , id (head [negate _]) :: Int
-  , id (head (negate _:_)) :: Int
-  , id (head (negate _:xs)) :: Int
-  , id (head (negate _:_:_)) :: Int
-  , id (head (negate x:_)) :: Int
-  , id (head (negate (id _):_)) :: Int
-  , id (head (head []:_)) :: Int
-  , id (head [head _]) :: Int
-  , id (head (head _:_)) :: Int
-  , id (head (head _:xs)) :: Int
-  , id (head (head _:_:_)) :: Int
-  , id (head (head xs:_)) :: Int
-  , id (head (head (_:_):_)) :: Int
-  , id (head (_ * _:_)) :: Int
-  , id (head (0 + _:_)) :: Int
-  , id (head (_ + 0:_)) :: Int
-  , id (head [_ + _]) :: Int
-  , id (head (_ + _:_)) :: Int
-  , id (head (_ + _:xs)) :: Int
-  , id (head (_ + _:_:_)) :: Int
-  , id (head (_ + x:_)) :: Int
-  , id (head (_ + id _:_)) :: Int
-  , id (head (x + _:_)) :: Int
-  , id (head (id _ + _:_)) :: Int
-  , id (head (insert _ _)) :: Int
-  , id (head ([0] ++ _)) :: Int
-  , id (head ([] ++ [])) :: Int
-  , id (head ([] ++ _)) :: Int
-  , id (head ([] ++ xs)) :: Int
-  , id (head ([] ++ (_:_))) :: Int
-  , id (head (_ ++ [0])) :: Int
-  , id (head (_ ++ [])) :: Int
-  , id (head (_ ++ _)) :: Int
-  , id (head (_ ++ xs)) :: Int
-  , id (head (_ ++ ys)) :: Int
-  , id (head (_ ++ tail _)) :: Int
-  , id (head (_ ++ (0:_))) :: Int
-  , id (head (_ ++ [_])) :: Int
-  , id (head (_ ++ (_:_))) :: Int
-  , id (head (_ ++ (_:xs))) :: Int
-  , id (head (_ ++ (_:_:_))) :: Int
-  , id (head (_ ++ (x:_))) :: Int
-  , id (head (_ ++ (id _:_))) :: Int
-  , id (head (_ ++ (_ ++ _))) :: Int
-  , id (head (xs ++ [])) :: Int
-  , id (head (xs ++ _)) :: Int
-  , id (head (xs ++ xs)) :: Int
-  , id (head (xs ++ (_:_))) :: Int
-  , id (head (ys ++ _)) :: Int
-  , id (head ((0:_) ++ _)) :: Int
-  , id (head ([_] ++ _)) :: Int
-  , id (head ((_:_) ++ [])) :: Int
-  , id (head ((_:_) ++ _)) :: Int
-  , id (head ((_:_) ++ xs)) :: Int
-  , id (head ((_:_) ++ (_:_))) :: Int
-  , id (head ((_:xs) ++ _)) :: Int
-  , id (head ((_:_:_) ++ _)) :: Int
-  , id (head ((x:_) ++ _)) :: Int
-  , id (head ((id _:_) ++ _)) :: Int
-  , id ((-1) * _) :: Int
-  , id (0 * 0) :: Int
-  , id (0 * 1) :: Int
-  , id (0 * _) :: Int
-  , id (0 * x) :: Int
-  , id (0 * y) :: Int
-  , id (0 * ord _) :: Int
-  , id (0 * abs _) :: Int
-  , id (0 * id 0) :: Int
-  , id (0 * id _) :: Int
-  , id (0 * id x) :: Int
-  , id (0 * id (id _)) :: Int
-  , id (0 * negate _) :: Int
-  , id (0 * head _) :: Int
-  , id (0 * (_ + _)) :: Int
-  , id (1 * 0) :: Int
-  , id (1 * _) :: Int
-  , id (1 * x) :: Int
-  , id (1 * id _) :: Int
-  , id (_ * (-1)) :: Int
-  , id (_ * 0) :: Int
-  , id (_ * 1) :: Int
-  , id (_ * _) :: Int
-  , id (_ * x) :: Int
-  , id (_ * y) :: Int
-  , id (_ * z) :: Int
-  , id (_ * ord 'a') :: Int
-  , id (_ * ord _) :: Int
-  , id (_ * ord c) :: Int
-  , id (_ * f _) :: Int
-  , id (_ * abs 0) :: Int
-  , id (_ * abs _) :: Int
-  , id (_ * abs x) :: Int
-  , id (_ * abs (id _)) :: Int
-  , id (_ * id 0) :: Int
-  , id (_ * id 1) :: Int
-  , id (_ * id _) :: Int
-  , id (_ * id x) :: Int
-  , id (_ * id y) :: Int
-  , id (_ * id (ord _)) :: Int
-  , id (_ * id (abs _)) :: Int
-  , id (_ * id (id 0)) :: Int
-  , id (_ * id (id _)) :: Int
-  , id (_ * id (id x)) :: Int
-  , id (_ * id (id (id _))) :: Int
-  , id (_ * id (negate _)) :: Int
-  , id (_ * id (head _)) :: Int
-  , id (_ * id (_ + _)) :: Int
-  , id (_ * negate 0) :: Int
-  , id (_ * negate _) :: Int
-  , id (_ * negate x) :: Int
-  , id (_ * negate (id _)) :: Int
-  , id (_ * head []) :: Int
-  , id (_ * head _) :: Int
-  , id (_ * head xs) :: Int
-  , id (_ * head (_:_)) :: Int
-  , id (_ * (_ * _)) :: Int
-  , id (_ * (0 + _)) :: Int
-  , id (_ * (_ + 0)) :: Int
-  , id (_ * (_ + _)) :: Int
-  , id (_ * (_ + x)) :: Int
-  , id (_ * (_ + id _)) :: Int
-  , id (_ * (x + _)) :: Int
-  , id (_ * (id _ + _)) :: Int
-  , id (x * 0) :: Int
-  , id (x * 1) :: Int
-  , id (x * _) :: Int
-  , id (x * x) :: Int
-  , id (x * y) :: Int
-  , id (x * ord _) :: Int
-  , id (x * abs _) :: Int
-  , id (x * id 0) :: Int
-  , id (x * id _) :: Int
-  , id (x * id x) :: Int
-  , id (x * id (id _)) :: Int
-  , id (x * negate _) :: Int
-  , id (x * head _) :: Int
-  , id (x * (_ + _)) :: Int
-  , id (y * 0) :: Int
-  , id (y * _) :: Int
-  , id (y * x) :: Int
-  , id (y * id _) :: Int
-  , id (z * _) :: Int
-  , id (ord 'a' * _) :: Int
-  , id (ord _ * 0) :: Int
-  , id (ord _ * _) :: Int
-  , id (ord _ * x) :: Int
-  , id (ord _ * id _) :: Int
-  , id (ord c * _) :: Int
-  , id (f _ * _) :: Int
-  , id (abs 0 * _) :: Int
-  , id (abs _ * 0) :: Int
-  , id (abs _ * _) :: Int
-  , id (abs _ * x) :: Int
-  , id (abs _ * id _) :: Int
-  , id (abs x * _) :: Int
-  , id (abs (id _) * _) :: Int
-  , id (id 0 * 0) :: Int
-  , id (id 0 * _) :: Int
-  , id (id 0 * x) :: Int
-  , id (id 0 * id _) :: Int
-  , id (id 1 * _) :: Int
-  , id (id _ * 0) :: Int
-  , id (id _ * 1) :: Int
-  , id (id _ * _) :: Int
-  , id (id _ * x) :: Int
-  , id (id _ * y) :: Int
-  , id (id _ * ord _) :: Int
-  , id (id _ * abs _) :: Int
-  , id (id _ * id 0) :: Int
-  , id (id _ * id _) :: Int
-  , id (id _ * id x) :: Int
-  , id (id _ * id (id _)) :: Int
-  , id (id _ * negate _) :: Int
-  , id (id _ * head _) :: Int
-  , id (id _ * (_ + _)) :: Int
-  , id (id x * 0) :: Int
-  , id (id x * _) :: Int
-  , id (id x * x) :: Int
-  , id (id x * id _) :: Int
-  , id (id y * _) :: Int
-  , id (id (ord _) * _) :: Int
-  , id (id (abs _) * _) :: Int
-  , id (id (id 0) * _) :: Int
-  , id (id (id _) * 0) :: Int
-  , id (id (id _) * _) :: Int
-  , id (id (id _) * x) :: Int
-  , id (id (id _) * id _) :: Int
-  , id (id (id x) * _) :: Int
-  , id (id (id (id _)) * _) :: Int
-  , id (id (negate _) * _) :: Int
-  , id (id (head _) * _) :: Int
-  , id (id (_ + _) * _) :: Int
-  , id (negate 0 * _) :: Int
-  , id (negate _ * 0) :: Int
-  , id (negate _ * _) :: Int
-  , id (negate _ * x) :: Int
-  , id (negate _ * id _) :: Int
-  , id (negate x * _) :: Int
-  , id (negate (id _) * _) :: Int
-  , id (head [] * _) :: Int
-  , id (head _ * 0) :: Int
-  , id (head _ * _) :: Int
-  , id (head _ * x) :: Int
-  , id (head _ * id _) :: Int
-  , id (head xs * _) :: Int
-  , id (head (_:_) * _) :: Int
-  , id ((_ * _) * _) :: Int
-  , id ((0 + _) * _) :: Int
-  , id ((_ + 0) * _) :: Int
-  , id ((_ + _) * 0) :: Int
-  , id ((_ + _) * _) :: Int
-  , id ((_ + _) * x) :: Int
-  , id ((_ + _) * id _) :: Int
-  , id ((_ + x) * _) :: Int
-  , id ((_ + id _) * _) :: Int
-  , id ((x + _) * _) :: Int
-  , id ((id _ + _) * _) :: Int
-  , id ((-1) + 0) :: Int
-  , id ((-1) + _) :: Int
-  , id ((-1) + x) :: Int
-  , id ((-1) + id _) :: Int
-  , id (0 + (-1)) :: Int
-  , id (0 + 0) :: Int
-  , id (0 + 1) :: Int
-  , id (0 + _) :: Int
-  , id (0 + x) :: Int
-  , id (0 + y) :: Int
-  , id (0 + z) :: Int
-  , id (0 + ord 'a') :: Int
-  , id (0 + ord _) :: Int
-  , id (0 + ord c) :: Int
-  , id (0 + f _) :: Int
-  , id (0 + abs 0) :: Int
-  , id (0 + abs _) :: Int
-  , id (0 + abs x) :: Int
-  , id (0 + abs (id _)) :: Int
-  , id (0 + id 0) :: Int
-  , id (0 + id 1) :: Int
-  , id (0 + id _) :: Int
-  , id (0 + id x) :: Int
-  , id (0 + id y) :: Int
-  , id (0 + id (ord _)) :: Int
-  , id (0 + id (abs _)) :: Int
-  , id (0 + id (id 0)) :: Int
-  , id (0 + id (id _)) :: Int
-  , id (0 + id (id x)) :: Int
-  , id (0 + id (id (id _))) :: Int
-  , id (0 + id (negate _)) :: Int
-  , id (0 + id (head _)) :: Int
-  , id (0 + id (_ + _)) :: Int
-  , id (0 + negate 0) :: Int
-  , id (0 + negate _) :: Int
-  , id (0 + negate x) :: Int
-  , id (0 + negate (id _)) :: Int
-  , id (0 + head []) :: Int
-  , id (0 + head _) :: Int
-  , id (0 + head xs) :: Int
-  , id (0 + head (_:_)) :: Int
-  , id (0 + _ * _) :: Int
-  , id (0 + (0 + _)) :: Int
-  , id (0 + (_ + 0)) :: Int
-  , id (0 + (_ + _)) :: Int
-  , id (0 + (_ + x)) :: Int
-  , id (0 + (_ + id _)) :: Int
-  , id (0 + (x + _)) :: Int
-  , id (0 + (id _ + _)) :: Int
-  , id (1 + 0) :: Int
-  , id (1 + 1) :: Int
-  , id (1 + _) :: Int
-  , id (1 + x) :: Int
-  , id (1 + y) :: Int
-  , id (1 + ord _) :: Int
-  , id (1 + abs _) :: Int
-  , id (1 + id 0) :: Int
-  , id (1 + id _) :: Int
-  , id (1 + id x) :: Int
-  , id (1 + id (id _)) :: Int
-  , id (1 + negate _) :: Int
-  , id (1 + head _) :: Int
-  , id (1 + (_ + _)) :: Int
-  , id (2 + _) :: Int
-  , id (_ + (-1)) :: Int
-  , id (_ + 0) :: Int
-  , id (_ + 1) :: Int
-  , id (_ + 2) :: Int
-  , id (_ + _) :: Int
-  , id (_ + x) :: Int
-  , id (_ + x') :: Int
-  , id (_ + y) :: Int
-  , id (_ + z) :: Int
-  , id (_ + ord ' ') :: Int
-  , id (_ + ord 'a') :: Int
-  , id (_ + ord _) :: Int
-  , id (_ + ord c) :: Int
-  , id (_ + ord d) :: Int
-  , id (_ + f 0) :: Int
-  , id (_ + f _) :: Int
-  , id (_ + f x) :: Int
-  , id (_ + f (id _)) :: Int
-  , id (_ + g _) :: Int
-  , id (_ + abs 0) :: Int
-  , id (_ + abs 1) :: Int
-  , id (_ + abs _) :: Int
-  , id (_ + abs x) :: Int
-  , id (_ + abs y) :: Int
-  , id (_ + abs (ord _)) :: Int
-  , id (_ + abs (abs _)) :: Int
-  , id (_ + abs (id 0)) :: Int
-  , id (_ + abs (id _)) :: Int
-  , id (_ + abs (id x)) :: Int
-  , id (_ + abs (id (id _))) :: Int
-  , id (_ + abs (negate _)) :: Int
-  , id (_ + abs (head _)) :: Int
-  , id (_ + abs (_ + _)) :: Int
-  , id (_ + id (-1)) :: Int
-  , id (_ + id 0) :: Int
-  , id (_ + id 1) :: Int
-  , id (_ + id _) :: Int
-  , id (_ + id x) :: Int
-  , id (_ + id y) :: Int
-  , id (_ + id z) :: Int
-  , id (_ + id (ord 'a')) :: Int
-  , id (_ + id (ord _)) :: Int
-  , id (_ + id (ord c)) :: Int
-  , id (_ + id (f _)) :: Int
-  , id (_ + id (abs 0)) :: Int
-  , id (_ + id (abs _)) :: Int
-  , id (_ + id (abs x)) :: Int
-  , id (_ + id (abs (id _))) :: Int
-  , id (_ + id (id 0)) :: Int
-  , id (_ + id (id 1)) :: Int
-  , id (_ + id (id _)) :: Int
-  , id (_ + id (id x)) :: Int
-  , id (_ + id (id y)) :: Int
-  , id (_ + id (id (ord _))) :: Int
-  , id (_ + id (id (abs _))) :: Int
-  , id (_ + id (id (id 0))) :: Int
-  , id (_ + id (id (id _))) :: Int
-  , id (_ + id (id (id x))) :: Int
-  , id (_ + id (id (id (id _)))) :: Int
-  , id (_ + id (id (negate _))) :: Int
-  , id (_ + id (id (head _))) :: Int
-  , id (_ + id (id (_ + _))) :: Int
-  , id (_ + id (negate 0)) :: Int
-  , id (_ + id (negate _)) :: Int
-  , id (_ + id (negate x)) :: Int
-  , id (_ + id (negate (id _))) :: Int
-  , id (_ + id (head [])) :: Int
-  , id (_ + id (head _)) :: Int
-  , id (_ + id (head xs)) :: Int
-  , id (_ + id (head (_:_))) :: Int
-  , id (_ + id (_ * _)) :: Int
-  , id (_ + id (0 + _)) :: Int
-  , id (_ + id (_ + 0)) :: Int
-  , id (_ + id (_ + _)) :: Int
-  , id (_ + id (_ + x)) :: Int
-  , id (_ + id (_ + id _)) :: Int
-  , id (_ + id (x + _)) :: Int
-  , id (_ + id (id _ + _)) :: Int
-  , id (_ + negate 0) :: Int
-  , id (_ + negate 1) :: Int
-  , id (_ + negate _) :: Int
-  , id (_ + negate x) :: Int
-  , id (_ + negate y) :: Int
-  , id (_ + negate (ord _)) :: Int
-  , id (_ + negate (abs _)) :: Int
-  , id (_ + negate (id 0)) :: Int
-  , id (_ + negate (id _)) :: Int
-  , id (_ + negate (id x)) :: Int
-  , id (_ + negate (id (id _))) :: Int
-  , id (_ + negate (negate _)) :: Int
-  , id (_ + negate (head _)) :: Int
-  , id (_ + negate (_ + _)) :: Int
-  , id (_ + head [0]) :: Int
-  , id (_ + head []) :: Int
-  , id (_ + head _) :: Int
-  , id (_ + head xs) :: Int
-  , id (_ + head ys) :: Int
-  , id (_ + head (tail _)) :: Int
-  , id (_ + head (0:_)) :: Int
-  , id (_ + head [_]) :: Int
-  , id (_ + head (_:_)) :: Int
-  , id (_ + head (_:xs)) :: Int
-  , id (_ + head (_:_:_)) :: Int
-  , id (_ + head (x:_)) :: Int
-  , id (_ + head (id _:_)) :: Int
-  , id (_ + head (_ ++ _)) :: Int
-  , id (_ + 0 * _) :: Int
-  , id (_ + _ * 0) :: Int
-  , id (_ + _ * _) :: Int
-  , id (_ + _ * x) :: Int
-  , id (_ + _ * id _) :: Int
-  , id (_ + x * _) :: Int
-  , id (_ + id _ * _) :: Int
-  , id (_ + (0 + 0)) :: Int
-  , id (_ + (0 + _)) :: Int
-  , id (_ + (0 + x)) :: Int
-  , id (_ + (0 + id _)) :: Int
-  , id (_ + (1 + _)) :: Int
-  , id (_ + (_ + 0)) :: Int
-  , id (_ + (_ + 1)) :: Int
-  , id (_ + (_ + _)) :: Int
-  , id (_ + (_ + x)) :: Int
-  , id (_ + (_ + y)) :: Int
-  , id (_ + (_ + ord _)) :: Int
-  , id (_ + (_ + abs _)) :: Int
-  , id (_ + (_ + id 0)) :: Int
-  , id (_ + (_ + id _)) :: Int
-  , id (_ + (_ + id x)) :: Int
-  , id (_ + (_ + id (id _))) :: Int
-  , id (_ + (_ + negate _)) :: Int
-  , id (_ + (_ + head _)) :: Int
-  , id (_ + (_ + (_ + _))) :: Int
-  , id (_ + (x + 0)) :: Int
-  , id (_ + (x + _)) :: Int
-  , id (_ + (x + x)) :: Int
-  , id (_ + (x + id _)) :: Int
-  , id (_ + (y + _)) :: Int
-  , id (_ + (ord _ + _)) :: Int
-  , id (_ + (abs _ + _)) :: Int
-  , id (_ + (id 0 + _)) :: Int
-  , id (_ + (id _ + 0)) :: Int
-  , id (_ + (id _ + _)) :: Int
-  , id (_ + (id _ + x)) :: Int
-  , id (_ + (id _ + id _)) :: Int
-  , id (_ + (id x + _)) :: Int
-  , id (_ + (id (id _) + _)) :: Int
-  , id (_ + (negate _ + _)) :: Int
-  , id (_ + (head _ + _)) :: Int
-  , id (_ + ((_ + _) + _)) :: Int
-  , id (x + (-1)) :: Int
-  , id (x + 0) :: Int
-  , id (x + 1) :: Int
-  , id (x + _) :: Int
-  , id (x + x) :: Int
-  , id (x + y) :: Int
-  , id (x + z) :: Int
-  , id (x + ord 'a') :: Int
-  , id (x + ord _) :: Int
-  , id (x + ord c) :: Int
-  , id (x + f _) :: Int
-  , id (x + abs 0) :: Int
-  , id (x + abs _) :: Int
-  , id (x + abs x) :: Int
-  , id (x + abs (id _)) :: Int
-  , id (x + id 0) :: Int
-  , id (x + id 1) :: Int
-  , id (x + id _) :: Int
-  , id (x + id x) :: Int
-  , id (x + id y) :: Int
-  , id (x + id (ord _)) :: Int
-  , id (x + id (abs _)) :: Int
-  , id (x + id (id 0)) :: Int
-  , id (x + id (id _)) :: Int
-  , id (x + id (id x)) :: Int
-  , id (x + id (id (id _))) :: Int
-  , id (x + id (negate _)) :: Int
-  , id (x + id (head _)) :: Int
-  , id (x + id (_ + _)) :: Int
-  , id (x + negate 0) :: Int
-  , id (x + negate _) :: Int
-  , id (x + negate x) :: Int
-  , id (x + negate (id _)) :: Int
-  , id (x + head []) :: Int
-  , id (x + head _) :: Int
-  , id (x + head xs) :: Int
-  , id (x + head (_:_)) :: Int
-  , id (x + _ * _) :: Int
-  , id (x + (0 + _)) :: Int
-  , id (x + (_ + 0)) :: Int
-  , id (x + (_ + _)) :: Int
-  , id (x + (_ + x)) :: Int
-  , id (x + (_ + id _)) :: Int
-  , id (x + (x + _)) :: Int
-  , id (x + (id _ + _)) :: Int
-  , id (x' + _) :: Int
-  , id (y + 0) :: Int
-  , id (y + 1) :: Int
-  , id (y + _) :: Int
-  , id (y + x) :: Int
-  , id (y + y) :: Int
-  , id (y + ord _) :: Int
-  , id (y + abs _) :: Int
-  , id (y + id 0) :: Int
-  , id (y + id _) :: Int
-  , id (y + id x) :: Int
-  , id (y + id (id _)) :: Int
-  , id (y + negate _) :: Int
-  , id (y + head _) :: Int
-  , id (y + (_ + _)) :: Int
-  , id (z + 0) :: Int
-  , id (z + _) :: Int
-  , id (z + x) :: Int
-  , id (z + id _) :: Int
-  , id (ord ' ' + _) :: Int
-  , id (ord 'a' + 0) :: Int
-  , id (ord 'a' + _) :: Int
-  , id (ord 'a' + x) :: Int
-  , id (ord 'a' + id _) :: Int
-  , id (ord _ + 0) :: Int
-  , id (ord _ + 1) :: Int
-  , id (ord _ + _) :: Int
-  , id (ord _ + x) :: Int
-  , id (ord _ + y) :: Int
-  , id (ord _ + ord _) :: Int
-  , id (ord _ + abs _) :: Int
-  , id (ord _ + id 0) :: Int
-  , id (ord _ + id _) :: Int
-  , id (ord _ + id x) :: Int
-  , id (ord _ + id (id _)) :: Int
-  , id (ord _ + negate _) :: Int
-  , id (ord _ + head _) :: Int
-  , id (ord _ + (_ + _)) :: Int
-  , id (ord c + 0) :: Int
-  , id (ord c + _) :: Int
-  , id (ord c + x) :: Int
-  , id (ord c + id _) :: Int
-  , id (ord d + _) :: Int
-  , id (f 0 + _) :: Int
-  , id (f _ + 0) :: Int
-  , id (f _ + _) :: Int
-  , id (f _ + x) :: Int
-  , id (f _ + id _) :: Int
-  , id (f x + _) :: Int
-  , id (f (id _) + _) :: Int
-  , id (g _ + _) :: Int
-  , id (abs 0 + 0) :: Int
-  , id (abs 0 + _) :: Int
-  , id (abs 0 + x) :: Int
-  , id (abs 0 + id _) :: Int
-  , id (abs 1 + _) :: Int
-  , id (abs _ + 0) :: Int
-  , id (abs _ + 1) :: Int
-  , id (abs _ + _) :: Int
-  , id (abs _ + x) :: Int
-  , id (abs _ + y) :: Int
-  , id (abs _ + ord _) :: Int
-  , id (abs _ + abs _) :: Int
-  , id (abs _ + id 0) :: Int
-  , id (abs _ + id _) :: Int
-  , id (abs _ + id x) :: Int
-  , id (abs _ + id (id _)) :: Int
-  , id (abs _ + negate _) :: Int
-  , id (abs _ + head _) :: Int
-  , id (abs _ + (_ + _)) :: Int
-  , id (abs x + 0) :: Int
-  , id (abs x + _) :: Int
-  , id (abs x + x) :: Int
-  , id (abs x + id _) :: Int
-  , id (abs y + _) :: Int
-  , id (abs (ord _) + _) :: Int
-  , id (abs (abs _) + _) :: Int
-  , id (abs (id 0) + _) :: Int
-  , id (abs (id _) + 0) :: Int
-  , id (abs (id _) + _) :: Int
-  , id (abs (id _) + x) :: Int
-  , id (abs (id _) + id _) :: Int
-  , id (abs (id x) + _) :: Int
-  , id (abs (id (id _)) + _) :: Int
-  , id (abs (negate _) + _) :: Int
-  , id (abs (head _) + _) :: Int
-  , id (abs (_ + _) + _) :: Int
-  , id (id (-1) + _) :: Int
-  , id (id 0 + 0) :: Int
-  , id (id 0 + 1) :: Int
-  , id (id 0 + _) :: Int
-  , id (id 0 + x) :: Int
-  , id (id 0 + y) :: Int
-  , id (id 0 + ord _) :: Int
-  , id (id 0 + abs _) :: Int
-  , id (id 0 + id 0) :: Int
-  , id (id 0 + id _) :: Int
-  , id (id 0 + id x) :: Int
-  , id (id 0 + id (id _)) :: Int
-  , id (id 0 + negate _) :: Int
-  , id (id 0 + head _) :: Int
-  , id (id 0 + (_ + _)) :: Int
-  , id (id 1 + 0) :: Int
-  , id (id 1 + _) :: Int
-  , id (id 1 + x) :: Int
-  , id (id 1 + id _) :: Int
-  , id (id _ + (-1)) :: Int
-  , id (id _ + 0) :: Int
-  , id (id _ + 1) :: Int
-  , id (id _ + _) :: Int
-  , id (id _ + x) :: Int
-  , id (id _ + y) :: Int
-  , id (id _ + z) :: Int
-  , id (id _ + ord 'a') :: Int
-  , id (id _ + ord _) :: Int
-  , id (id _ + ord c) :: Int
-  , id (id _ + f _) :: Int
-  , id (id _ + abs 0) :: Int
-  , id (id _ + abs _) :: Int
-  , id (id _ + abs x) :: Int
-  , id (id _ + abs (id _)) :: Int
-  , id (id _ + id 0) :: Int
-  , id (id _ + id 1) :: Int
-  , id (id _ + id _) :: Int
-  , id (id _ + id x) :: Int
-  , id (id _ + id y) :: Int
-  , id (id _ + id (ord _)) :: Int
-  , id (id _ + id (abs _)) :: Int
-  , id (id _ + id (id 0)) :: Int
-  , id (id _ + id (id _)) :: Int
-  , id (id _ + id (id x)) :: Int
-  , id (id _ + id (id (id _))) :: Int
-  , id (id _ + id (negate _)) :: Int
-  , id (id _ + id (head _)) :: Int
-  , id (id _ + id (_ + _)) :: Int
-  , id (id _ + negate 0) :: Int
-  , id (id _ + negate _) :: Int
-  , id (id _ + negate x) :: Int
-  , id (id _ + negate (id _)) :: Int
-  , id (id _ + head []) :: Int
-  , id (id _ + head _) :: Int
-  , id (id _ + head xs) :: Int
-  , id (id _ + head (_:_)) :: Int
-  , id (id _ + _ * _) :: Int
-  , id (id _ + (0 + _)) :: Int
-  , id (id _ + (_ + 0)) :: Int
-  , id (id _ + (_ + _)) :: Int
-  , id (id _ + (_ + x)) :: Int
-  , id (id _ + (_ + id _)) :: Int
-  , id (id _ + (x + _)) :: Int
-  , id (id _ + (id _ + _)) :: Int
-  , id (id x + 0) :: Int
-  , id (id x + 1) :: Int
-  , id (id x + _) :: Int
-  , id (id x + x) :: Int
-  , id (id x + y) :: Int
-  , id (id x + ord _) :: Int
-  , id (id x + abs _) :: Int
-  , id (id x + id 0) :: Int
-  , id (id x + id _) :: Int
-  , id (id x + id x) :: Int
-  , id (id x + id (id _)) :: Int
-  , id (id x + negate _) :: Int
-  , id (id x + head _) :: Int
-  , id (id x + (_ + _)) :: Int
-  , id (id y + 0) :: Int
-  , id (id y + _) :: Int
-  , id (id y + x) :: Int
-  , id (id y + id _) :: Int
-  , id (id z + _) :: Int
-  , id (id (ord 'a') + _) :: Int
-  , id (id (ord _) + 0) :: Int
-  , id (id (ord _) + _) :: Int
-  , id (id (ord _) + x) :: Int
-  , id (id (ord _) + id _) :: Int
-  , id (id (ord c) + _) :: Int
-  , id (id (f _) + _) :: Int
-  , id (id (abs 0) + _) :: Int
-  , id (id (abs _) + 0) :: Int
-  , id (id (abs _) + _) :: Int
-  , id (id (abs _) + x) :: Int
-  , id (id (abs _) + id _) :: Int
-  , id (id (abs x) + _) :: Int
-  , id (id (abs (id _)) + _) :: Int
-  , id (id (id 0) + 0) :: Int
-  , id (id (id 0) + _) :: Int
-  , id (id (id 0) + x) :: Int
-  , id (id (id 0) + id _) :: Int
-  , id (id (id 1) + _) :: Int
-  , id (id (id _) + 0) :: Int
-  , id (id (id _) + 1) :: Int
-  , id (id (id _) + _) :: Int
-  , id (id (id _) + x) :: Int
-  , id (id (id _) + y) :: Int
-  , id (id (id _) + ord _) :: Int
-  , id (id (id _) + abs _) :: Int
-  , id (id (id _) + id 0) :: Int
-  , id (id (id _) + id _) :: Int
-  , id (id (id _) + id x) :: Int
-  , id (id (id _) + id (id _)) :: Int
-  , id (id (id _) + negate _) :: Int
-  , id (id (id _) + head _) :: Int
-  , id (id (id _) + (_ + _)) :: Int
-  , id (id (id x) + 0) :: Int
-  , id (id (id x) + _) :: Int
-  , id (id (id x) + x) :: Int
-  , id (id (id x) + id _) :: Int
-  , id (id (id y) + _) :: Int
-  , id (id (id (ord _)) + _) :: Int
-  , id (id (id (abs _)) + _) :: Int
-  , id (id (id (id 0)) + _) :: Int
-  , id (id (id (id _)) + 0) :: Int
-  , id (id (id (id _)) + _) :: Int
-  , id (id (id (id _)) + x) :: Int
-  , id (id (id (id _)) + id _) :: Int
-  , id (id (id (id x)) + _) :: Int
-  , id (id (id (id (id _))) + _) :: Int
-  , id (id (id (negate _)) + _) :: Int
-  , id (id (id (head _)) + _) :: Int
-  , id (id (id (_ + _)) + _) :: Int
-  , id (id (negate 0) + _) :: Int
-  , id (id (negate _) + 0) :: Int
-  , id (id (negate _) + _) :: Int
-  , id (id (negate _) + x) :: Int
-  , id (id (negate _) + id _) :: Int
-  , id (id (negate x) + _) :: Int
-  , id (id (negate (id _)) + _) :: Int
-  , id (id (head []) + _) :: Int
-  , id (id (head _) + 0) :: Int
-  , id (id (head _) + _) :: Int
-  , id (id (head _) + x) :: Int
-  , id (id (head _) + id _) :: Int
-  , id (id (head xs) + _) :: Int
-  , id (id (head (_:_)) + _) :: Int
-  , id (id (_ * _) + _) :: Int
-  , id (id (0 + _) + _) :: Int
-  , id (id (_ + 0) + _) :: Int
-  , id (id (_ + _) + 0) :: Int
-  , id (id (_ + _) + _) :: Int
-  , id (id (_ + _) + x) :: Int
-  , id (id (_ + _) + id _) :: Int
-  , id (id (_ + x) + _) :: Int
-  , id (id (_ + id _) + _) :: Int
-  , id (id (x + _) + _) :: Int
-  , id (id (id _ + _) + _) :: Int
-  , id (negate 0 + 0) :: Int
-  , id (negate 0 + _) :: Int
-  , id (negate 0 + x) :: Int
-  , id (negate 0 + id _) :: Int
-  , id (negate 1 + _) :: Int
-  , id (negate _ + 0) :: Int
-  , id (negate _ + 1) :: Int
-  , id (negate _ + _) :: Int
-  , id (negate _ + x) :: Int
-  , id (negate _ + y) :: Int
-  , id (negate _ + ord _) :: Int
-  , id (negate _ + abs _) :: Int
-  , id (negate _ + id 0) :: Int
-  , id (negate _ + id _) :: Int
-  , id (negate _ + id x) :: Int
-  , id (negate _ + id (id _)) :: Int
-  , id (negate _ + negate _) :: Int
-  , id (negate _ + head _) :: Int
-  , id (negate _ + (_ + _)) :: Int
-  , id (negate x + 0) :: Int
-  , id (negate x + _) :: Int
-  , id (negate x + x) :: Int
-  , id (negate x + id _) :: Int
-  , id (negate y + _) :: Int
-  , id (negate (ord _) + _) :: Int
-  , id (negate (abs _) + _) :: Int
-  , id (negate (id 0) + _) :: Int
-  , id (negate (id _) + 0) :: Int
-  , id (negate (id _) + _) :: Int
-  , id (negate (id _) + x) :: Int
-  , id (negate (id _) + id _) :: Int
-  , id (negate (id x) + _) :: Int
-  , id (negate (id (id _)) + _) :: Int
-  , id (negate (negate _) + _) :: Int
-  , id (negate (head _) + _) :: Int
-  , id (negate (_ + _) + _) :: Int
-  , id (head [0] + _) :: Int
-  , id (head [] + 0) :: Int
-  , id (head [] + _) :: Int
-  , id (head [] + x) :: Int
-  , id (head [] + id _) :: Int
-  , id (head _ + 0) :: Int
-  , id (head _ + 1) :: Int
-  , id (head _ + _) :: Int
-  , id (head _ + x) :: Int
-  , id (head _ + y) :: Int
-  , id (head _ + ord _) :: Int
-  , id (head _ + abs _) :: Int
-  , id (head _ + id 0) :: Int
-  , id (head _ + id _) :: Int
-  , id (head _ + id x) :: Int
-  , id (head _ + id (id _)) :: Int
-  , id (head _ + negate _) :: Int
-  , id (head _ + head _) :: Int
-  , id (head _ + (_ + _)) :: Int
-  , id (head xs + 0) :: Int
-  , id (head xs + _) :: Int
-  , id (head xs + x) :: Int
-  , id (head xs + id _) :: Int
-  , id (head ys + _) :: Int
-  , id (head (tail _) + _) :: Int
-  , id (head (0:_) + _) :: Int
-  , id (head [_] + _) :: Int
-  , id (head (_:_) + 0) :: Int
-  , id (head (_:_) + _) :: Int
-  , id (head (_:_) + x) :: Int
-  , id (head (_:_) + id _) :: Int
-  , id (head (_:xs) + _) :: Int
-  , id (head (_:_:_) + _) :: Int
-  , id (head (x:_) + _) :: Int
-  , id (head (id _:_) + _) :: Int
-  , id (head (_ ++ _) + _) :: Int
-  , id (0 * _ + _) :: Int
-  , id (_ * 0 + _) :: Int
-  , id (_ * _ + 0) :: Int
-  , id (_ * _ + _) :: Int
-  , id (_ * _ + x) :: Int
-  , id (_ * _ + id _) :: Int
-  , id (_ * x + _) :: Int
-  , id (_ * id _ + _) :: Int
-  , id (x * _ + _) :: Int
-  , id (id _ * _ + _) :: Int
-  , id ((0 + 0) + _) :: Int
-  , id ((0 + _) + 0) :: Int
-  , id ((0 + _) + _) :: Int
-  , id ((0 + _) + x) :: Int
-  , id ((0 + _) + id _) :: Int
-  , id ((0 + x) + _) :: Int
-  , id ((0 + id _) + _) :: Int
-  , id ((1 + _) + _) :: Int
-  , id ((_ + 0) + 0) :: Int
-  , id ((_ + 0) + _) :: Int
-  , id ((_ + 0) + x) :: Int
-  , id ((_ + 0) + id _) :: Int
-  , id ((_ + 1) + _) :: Int
-  , id ((_ + _) + 0) :: Int
-  , id ((_ + _) + 1) :: Int
-  , id ((_ + _) + _) :: Int
-  , id ((_ + _) + x) :: Int
-  , id ((_ + _) + y) :: Int
-  , id ((_ + _) + ord _) :: Int
-  , id ((_ + _) + abs _) :: Int
-  , id ((_ + _) + id 0) :: Int
-  , id ((_ + _) + id _) :: Int
-  , id ((_ + _) + id x) :: Int
-  , id ((_ + _) + id (id _)) :: Int
-  , id ((_ + _) + negate _) :: Int
-  , id ((_ + _) + head _) :: Int
-  , id ((_ + _) + (_ + _)) :: Int
-  , id ((_ + x) + 0) :: Int
-  , id ((_ + x) + _) :: Int
-  , id ((_ + x) + x) :: Int
-  , id ((_ + x) + id _) :: Int
-  , id ((_ + y) + _) :: Int
-  , id ((_ + ord _) + _) :: Int
-  , id ((_ + abs _) + _) :: Int
-  , id ((_ + id 0) + _) :: Int
-  , id ((_ + id _) + 0) :: Int
-  , id ((_ + id _) + _) :: Int
-  , id ((_ + id _) + x) :: Int
-  , id ((_ + id _) + id _) :: Int
-  , id ((_ + id x) + _) :: Int
-  , id ((_ + id (id _)) + _) :: Int
-  , id ((_ + negate _) + _) :: Int
-  , id ((_ + head _) + _) :: Int
-  , id ((_ + (_ + _)) + _) :: Int
-  , id ((x + 0) + _) :: Int
-  , id ((x + _) + 0) :: Int
-  , id ((x + _) + _) :: Int
-  , id ((x + _) + x) :: Int
-  , id ((x + _) + id _) :: Int
-  , id ((x + x) + _) :: Int
-  , id ((x + id _) + _) :: Int
-  , id ((y + _) + _) :: Int
-  , id ((ord _ + _) + _) :: Int
-  , id ((abs _ + _) + _) :: Int
-  , id ((id 0 + _) + _) :: Int
-  , id ((id _ + 0) + _) :: Int
-  , id ((id _ + _) + 0) :: Int
-  , id ((id _ + _) + _) :: Int
-  , id ((id _ + _) + x) :: Int
-  , id ((id _ + _) + id _) :: Int
-  , id ((id _ + x) + _) :: Int
-  , id ((id _ + id _) + _) :: Int
-  , id ((id x + _) + _) :: Int
-  , id ((id (id _) + _) + _) :: Int
-  , id ((negate _ + _) + _) :: Int
-  , id ((head _ + _) + _) :: Int
-  , id (((_ + _) + _) + _) :: Int
-  , negate (-1) :: Int
-  , negate 0 :: Int
-  , negate 1 :: Int
-  , negate 2 :: Int
-  , negate _ :: Int
-  , negate x :: Int
-  , negate x' :: Int
-  , negate y :: Int
-  , negate z :: Int
-  , negate (ord ' ') :: Int
-  , negate (ord 'a') :: Int
-  , negate (ord _) :: Int
-  , negate (ord c) :: Int
-  , negate (ord d) :: Int
-  , negate (f 0) :: Int
-  , negate (f _) :: Int
-  , negate (f x) :: Int
-  , negate (f (id _)) :: Int
-  , negate (g _) :: Int
-  , negate (abs 0) :: Int
-  , negate (abs 1) :: Int
-  , negate (abs _) :: Int
-  , negate (abs x) :: Int
-  , negate (abs y) :: Int
-  , negate (abs (ord _)) :: Int
-  , negate (abs (abs _)) :: Int
-  , negate (abs (id 0)) :: Int
-  , negate (abs (id _)) :: Int
-  , negate (abs (id x)) :: Int
-  , negate (abs (id (id _))) :: Int
-  , negate (abs (negate _)) :: Int
-  , negate (abs (head _)) :: Int
-  , negate (abs (_ + _)) :: Int
-  , negate (id (-1)) :: Int
-  , negate (id 0) :: Int
-  , negate (id 1) :: Int
-  , negate (id _) :: Int
-  , negate (id x) :: Int
-  , negate (id y) :: Int
-  , negate (id z) :: Int
-  , negate (id (ord 'a')) :: Int
-  , negate (id (ord _)) :: Int
-  , negate (id (ord c)) :: Int
-  , negate (id (f _)) :: Int
-  , negate (id (abs 0)) :: Int
-  , negate (id (abs _)) :: Int
-  , negate (id (abs x)) :: Int
-  , negate (id (abs (id _))) :: Int
-  , negate (id (id 0)) :: Int
-  , negate (id (id 1)) :: Int
-  , negate (id (id _)) :: Int
-  , negate (id (id x)) :: Int
-  , negate (id (id y)) :: Int
-  , negate (id (id (ord _))) :: Int
-  , negate (id (id (abs _))) :: Int
-  , negate (id (id (id 0))) :: Int
-  , negate (id (id (id _))) :: Int
-  , negate (id (id (id x))) :: Int
-  , negate (id (id (id (id _)))) :: Int
-  , negate (id (id (negate _))) :: Int
-  , negate (id (id (head _))) :: Int
-  , negate (id (id (_ + _))) :: Int
-  , negate (id (negate 0)) :: Int
-  , negate (id (negate _)) :: Int
-  , negate (id (negate x)) :: Int
-  , negate (id (negate (id _))) :: Int
-  , negate (id (head [])) :: Int
-  , negate (id (head _)) :: Int
-  , negate (id (head xs)) :: Int
-  , negate (id (head (_:_))) :: Int
-  , negate (id (_ * _)) :: Int
-  , negate (id (0 + _)) :: Int
-  , negate (id (_ + 0)) :: Int
-  , negate (id (_ + _)) :: Int
-  , negate (id (_ + x)) :: Int
-  , negate (id (_ + id _)) :: Int
-  , negate (id (x + _)) :: Int
-  , negate (id (id _ + _)) :: Int
-  , negate (negate 0) :: Int
-  , negate (negate 1) :: Int
-  , negate (negate _) :: Int
-  , negate (negate x) :: Int
-  , negate (negate y) :: Int
-  , negate (negate (ord _)) :: Int
-  , negate (negate (abs _)) :: Int
-  , negate (negate (id 0)) :: Int
-  , negate (negate (id _)) :: Int
-  , negate (negate (id x)) :: Int
-  , negate (negate (id (id _))) :: Int
-  , negate (negate (negate _)) :: Int
-  , negate (negate (head _)) :: Int
-  , negate (negate (_ + _)) :: Int
-  , negate (head [0]) :: Int
-  , negate (head []) :: Int
-  , negate (head _) :: Int
-  , negate (head xs) :: Int
-  , negate (head ys) :: Int
-  , negate (head (tail _)) :: Int
-  , negate (head (0:_)) :: Int
-  , negate (head [_]) :: Int
-  , negate (head (_:_)) :: Int
-  , negate (head (_:xs)) :: Int
-  , negate (head (_:_:_)) :: Int
-  , negate (head (x:_)) :: Int
-  , negate (head (id _:_)) :: Int
-  , negate (head (_ ++ _)) :: Int
-  , negate (0 * _) :: Int
-  , negate (_ * 0) :: Int
-  , negate (_ * _) :: Int
-  , negate (_ * x) :: Int
-  , negate (_ * id _) :: Int
-  , negate (x * _) :: Int
-  , negate (id _ * _) :: Int
-  , negate (0 + 0) :: Int
-  , negate (0 + _) :: Int
-  , negate (0 + x) :: Int
-  , negate (0 + id _) :: Int
-  , negate (1 + _) :: Int
-  , negate (_ + 0) :: Int
-  , negate (_ + 1) :: Int
-  , negate (_ + _) :: Int
-  , negate (_ + x) :: Int
-  , negate (_ + y) :: Int
-  , negate (_ + ord _) :: Int
-  , negate (_ + abs _) :: Int
-  , negate (_ + id 0) :: Int
-  , negate (_ + id _) :: Int
-  , negate (_ + id x) :: Int
-  , negate (_ + id (id _)) :: Int
-  , negate (_ + negate _) :: Int
-  , negate (_ + head _) :: Int
-  , negate (_ + (_ + _)) :: Int
-  , negate (x + 0) :: Int
-  , negate (x + _) :: Int
-  , negate (x + x) :: Int
-  , negate (x + id _) :: Int
-  , negate (y + _) :: Int
-  , negate (ord _ + _) :: Int
-  , negate (abs _ + _) :: Int
-  , negate (id 0 + _) :: Int
-  , negate (id _ + 0) :: Int
-  , negate (id _ + _) :: Int
-  , negate (id _ + x) :: Int
-  , negate (id _ + id _) :: Int
-  , negate (id x + _) :: Int
-  , negate (id (id _) + _) :: Int
-  , negate (negate _ + _) :: Int
-  , negate (head _ + _) :: Int
-  , negate ((_ + _) + _) :: Int
-  , head [-1] :: Int
-  , head [0,0,0] :: Int
-  , head [0,0] :: Int
-  , head [0,1] :: Int
-  , head [0] :: Int
-  , head [1,0] :: Int
-  , head [1] :: Int
-  , head [] :: Int
-  , head _ :: Int
-  , head xs :: Int
-  , head xs' :: Int
-  , head ys :: Int
-  , head zs :: Int
-  , head (sort []) :: Int
-  , head (sort _) :: Int
-  , head (sort xs) :: Int
-  , head (sort (_:_)) :: Int
-  , head (tail [0]) :: Int
-  , head (tail []) :: Int
-  , head (tail _) :: Int
-  , head (tail xs) :: Int
-  , head (tail ys) :: Int
-  , head (tail (tail _)) :: Int
-  , head (tail (0:_)) :: Int
-  , head (tail [_]) :: Int
-  , head (tail (_:_)) :: Int
-  , head (tail (_:xs)) :: Int
-  , head (tail (_:_:_)) :: Int
-  , head (tail (x:_)) :: Int
-  , head (tail (id _:_)) :: Int
-  , head (tail (_ ++ _)) :: Int
-  , head ((-1):_) :: Int
-  , head [0,0] :: Int
-  , head [0] :: Int
-  , head (0:_) :: Int
-  , head (0:xs) :: Int
-  , head (0:ys) :: Int
-  , head (0:tail _) :: Int
-  , head (0:0:_) :: Int
-  , head [0,_] :: Int
-  , head (0:_:_) :: Int
-  , head (0:_:xs) :: Int
-  , head (0:_:_:_) :: Int
-  , head (0:x:_) :: Int
-  , head (0:id _:_) :: Int
-  , head (0:(_ ++ _)) :: Int
-  , head [1] :: Int
-  , head (1:_) :: Int
-  , head (1:xs) :: Int
-  , head (1:_:_) :: Int
-  , head [_,0,0] :: Int
-  , head [_,0] :: Int
-  , head [_,1] :: Int
-  , head [_] :: Int
-  , head (_:_) :: Int
-  , head (_:xs) :: Int
-  , head (_:ys) :: Int
-  , head (_:zs) :: Int
-  , head (_:sort _) :: Int
-  , head (_:tail []) :: Int
-  , head (_:tail _) :: Int
-  , head (_:tail xs) :: Int
-  , head (_:tail (_:_)) :: Int
-  , head [_,0] :: Int
-  , head (_:0:_) :: Int
-  , head (_:0:xs) :: Int
-  , head (_:0:_:_) :: Int
-  , head (_:1:_) :: Int
-  , head [_,_,0] :: Int
-  , head [_,_] :: Int
-  , head (_:_:_) :: Int
-  , head (_:_:xs) :: Int
-  , head (_:_:ys) :: Int
-  , head (_:_:tail _) :: Int
-  , head (_:_:0:_) :: Int
-  , head [_,_,_] :: Int
-  , head (_:_:_:_) :: Int
-  , head (_:_:_:xs) :: Int
-  , head (_:_:_:_:_) :: Int
-  , head (_:_:x:_) :: Int
-  , head (_:_:id _:_) :: Int
-  , head (_:_:(_ ++ _)) :: Int
-  , head [_,x] :: Int
-  , head (_:x:_) :: Int
-  , head (_:x:xs) :: Int
-  , head (_:x:_:_) :: Int
-  , head (_:y:_) :: Int
-  , head (_:ord _:_) :: Int
-  , head (_:abs _:_) :: Int
-  , head (_:id 0:_) :: Int
-  , head [_,id _] :: Int
-  , head (_:id _:_) :: Int
-  , head (_:id _:xs) :: Int
-  , head (_:id _:_:_) :: Int
-  , head (_:id x:_) :: Int
-  , head (_:id (id _):_) :: Int
-  , head (_:negate _:_) :: Int
-  , head (_:head _:_) :: Int
-  , head (_:_ + _:_) :: Int
-  , head (_:insert _ _) :: Int
-  , head (_:([] ++ _)) :: Int
-  , head (_:(_ ++ [])) :: Int
-  , head (_:(_ ++ _)) :: Int
-  , head (_:(_ ++ xs)) :: Int
-  , head (_:(_ ++ (_:_))) :: Int
-  , head (_:(xs ++ _)) :: Int
-  , head (_:((_:_) ++ _)) :: Int
-  , head [x,0] :: Int
-  , head [x] :: Int
-  , head (x:_) :: Int
-  , head (x:xs) :: Int
-  , head (x:ys) :: Int
-  , head (x:tail _) :: Int
-  , head (x:0:_) :: Int
-  , head [x,_] :: Int
-  , head (x:_:_) :: Int
-  , head (x:_:xs) :: Int
-  , head (x:_:_:_) :: Int
-  , head (x:x:_) :: Int
-  , head (x:id _:_) :: Int
-  , head (x:(_ ++ _)) :: Int
-  , head [y] :: Int
-  , head (y:_) :: Int
-  , head (y:xs) :: Int
-  , head (y:_:_) :: Int
-  , head (z:_) :: Int
-  , head (ord 'a':_) :: Int
-  , head [ord _] :: Int
-  , head (ord _:_) :: Int
-  , head (ord _:xs) :: Int
-  , head (ord _:_:_) :: Int
-  , head (ord c:_) :: Int
-  , head (f _:_) :: Int
-  , head (abs 0:_) :: Int
-  , head [abs _] :: Int
-  , head (abs _:_) :: Int
-  , head (abs _:xs) :: Int
-  , head (abs _:_:_) :: Int
-  , head (abs x:_) :: Int
-  , head (abs (id _):_) :: Int
-  , head [id 0] :: Int
-  , head (id 0:_) :: Int
-  , head (id 0:xs) :: Int
-  , head (id 0:_:_) :: Int
-  , head (id 1:_) :: Int
-  , head [id _,0] :: Int
-  , head [id _] :: Int
-  , head (id _:_) :: Int
-  , head (id _:xs) :: Int
-  , head (id _:ys) :: Int
-  , head (id _:tail _) :: Int
-  , head (id _:0:_) :: Int
-  , head [id _,_] :: Int
-  , head (id _:_:_) :: Int
-  , head (id _:_:xs) :: Int
-  , head (id _:_:_:_) :: Int
-  , head (id _:x:_) :: Int
-  , head (id _:id _:_) :: Int
-  , head (id _:(_ ++ _)) :: Int
-  , head [id x] :: Int
-  , head (id x:_) :: Int
-  , head (id x:xs) :: Int
-  , head (id x:_:_) :: Int
-  , head (id y:_) :: Int
-  , head (id (ord _):_) :: Int
-  , head (id (abs _):_) :: Int
-  , head (id (id 0):_) :: Int
-  , head [id (id _)] :: Int
-  , head (id (id _):_) :: Int
-  , head (id (id _):xs) :: Int
-  , head (id (id _):_:_) :: Int
-  , head (id (id x):_) :: Int
-  , head (id (id (id _)):_) :: Int
-  , head (id (negate _):_) :: Int
-  , head (id (head _):_) :: Int
-  , head (id (_ + _):_) :: Int
-  , head (negate 0:_) :: Int
-  , head [negate _] :: Int
-  , head (negate _:_) :: Int
-  , head (negate _:xs) :: Int
-  , head (negate _:_:_) :: Int
-  , head (negate x:_) :: Int
-  , head (negate (id _):_) :: Int
-  , head (head []:_) :: Int
-  , head [head _] :: Int
-  , head (head _:_) :: Int
-  , head (head _:xs) :: Int
-  , head (head _:_:_) :: Int
-  , head (head xs:_) :: Int
-  , head (head (_:_):_) :: Int
-  , head (_ * _:_) :: Int
-  , head (0 + _:_) :: Int
-  , head (_ + 0:_) :: Int
-  , head [_ + _] :: Int
-  , head (_ + _:_) :: Int
-  , head (_ + _:xs) :: Int
-  , head (_ + _:_:_) :: Int
-  , head (_ + x:_) :: Int
-  , head (_ + id _:_) :: Int
-  , head (x + _:_) :: Int
-  , head (id _ + _:_) :: Int
-  , head (insert 0 _) :: Int
-  , head (insert _ []) :: Int
-  , head (insert _ _) :: Int
-  , head (insert _ xs) :: Int
-  , head (insert _ (_:_)) :: Int
-  , head (insert x _) :: Int
-  , head (insert (id _) _) :: Int
-  , head ([0] ++ _) :: Int
-  , head ([] ++ []) :: Int
-  , head ([] ++ _) :: Int
-  , head ([] ++ xs) :: Int
-  , head ([] ++ (_:_)) :: Int
-  , head (_ ++ [0]) :: Int
-  , head (_ ++ []) :: Int
-  , head (_ ++ _) :: Int
-  , head (_ ++ xs) :: Int
-  , head (_ ++ ys) :: Int
-  , head (_ ++ tail _) :: Int
-  , head (_ ++ (0:_)) :: Int
-  , head (_ ++ [_]) :: Int
-  , head (_ ++ (_:_)) :: Int
-  , head (_ ++ (_:xs)) :: Int
-  , head (_ ++ (_:_:_)) :: Int
-  , head (_ ++ (x:_)) :: Int
-  , head (_ ++ (id _:_)) :: Int
-  , head (_ ++ (_ ++ _)) :: Int
-  , head (xs ++ []) :: Int
-  , head (xs ++ _) :: Int
-  , head (xs ++ xs) :: Int
-  , head (xs ++ (_:_)) :: Int
-  , head (ys ++ _) :: Int
-  , head (tail _ ++ _) :: Int
-  , head ((0:_) ++ _) :: Int
-  , head ([_] ++ _) :: Int
-  , head ((_:_) ++ []) :: Int
-  , head ((_:_) ++ _) :: Int
-  , head ((_:_) ++ xs) :: Int
-  , head ((_:_) ++ (_:_)) :: Int
-  , head ((_:xs) ++ _) :: Int
-  , head ((_:_:_) ++ _) :: Int
-  , head ((x:_) ++ _) :: Int
-  , head ((id _:_) ++ _) :: Int
-  , head ((_ ++ _) ++ _) :: Int
-  , sort [0] :: [Int]
-  , sort [] :: [Int]
-  , sort _ :: [Int]
-  , sort xs :: [Int]
-  , sort ys :: [Int]
-  , sort (tail _) :: [Int]
-  , sort (0:_) :: [Int]
-  , sort [_] :: [Int]
-  , sort (_:_) :: [Int]
-  , sort (_:xs) :: [Int]
-  , sort (_:_:_) :: [Int]
-  , sort (x:_) :: [Int]
-  , sort (id _:_) :: [Int]
-  , sort (_ ++ _) :: [Int]
-  , tail [0,0] :: [Int]
-  , tail [0] :: [Int]
-  , tail [1] :: [Int]
-  , tail [] :: [Int]
-  , tail _ :: [Int]
-  , tail xs :: [Int]
-  , tail ys :: [Int]
-  , tail zs :: [Int]
-  , tail (sort _) :: [Int]
-  , tail (tail []) :: [Int]
-  , tail (tail _) :: [Int]
-  , tail (tail xs) :: [Int]
-  , tail (tail (_:_)) :: [Int]
-  , tail [0] :: [Int]
-  , tail (0:_) :: [Int]
-  , tail (0:xs) :: [Int]
-  , tail (0:_:_) :: [Int]
-  , tail (1:_) :: [Int]
-  , tail [_,0] :: [Int]
-  , tail [_] :: [Int]
-  , tail (_:_) :: [Int]
-  , tail (_:xs) :: [Int]
-  , tail (_:ys) :: [Int]
-  , tail (_:tail _) :: [Int]
-  , tail (_:0:_) :: [Int]
-  , tail [_,_] :: [Int]
-  , tail (_:_:_) :: [Int]
-  , tail (_:_:xs) :: [Int]
-  , tail (_:_:_:_) :: [Int]
-  , tail (_:x:_) :: [Int]
-  , tail (_:id _:_) :: [Int]
-  , tail (_:(_ ++ _)) :: [Int]
-  , tail [x] :: [Int]
-  , tail (x:_) :: [Int]
-  , tail (x:xs) :: [Int]
-  , tail (x:_:_) :: [Int]
-  , tail (y:_) :: [Int]
-  , tail (ord _:_) :: [Int]
-  , tail (abs _:_) :: [Int]
-  , tail (id 0:_) :: [Int]
-  , tail [id _] :: [Int]
-  , tail (id _:_) :: [Int]
-  , tail (id _:xs) :: [Int]
-  , tail (id _:_:_) :: [Int]
-  , tail (id x:_) :: [Int]
-  , tail (id (id _):_) :: [Int]
-  , tail (negate _:_) :: [Int]
-  , tail (head _:_) :: [Int]
-  , tail (_ + _:_) :: [Int]
-  , tail (insert _ _) :: [Int]
-  , tail ([] ++ _) :: [Int]
-  , tail (_ ++ []) :: [Int]
-  , tail (_ ++ _) :: [Int]
-  , tail (_ ++ xs) :: [Int]
-  , tail (_ ++ (_:_)) :: [Int]
-  , tail (xs ++ _) :: [Int]
-  , tail ((_:_) ++ _) :: [Int]
-  , (False &&) :: Bool -> Bool
-  , (True &&) :: Bool -> Bool
-  , (_ &&) :: Bool -> Bool
-  , (p &&) :: Bool -> Bool
-  , (not _ &&) :: Bool -> Bool
-  , (_ ==>) :: Bool -> Bool
-  , (False ||) :: Bool -> Bool
-  , (True ||) :: Bool -> Bool
-  , (_ ||) :: Bool -> Bool
-  , (p ||) :: Bool -> Bool
-  , (q ||) :: Bool -> Bool
-  , (not False ||) :: Bool -> Bool
-  , (not True ||) :: Bool -> Bool
-  , (not _ ||) :: Bool -> Bool
-  , (not p ||) :: Bool -> Bool
-  , (not (not _) ||) :: Bool -> Bool
-  , ((_ || _) ||) :: Bool -> Bool
-  , (0 *) :: Int -> Int
-  , (1 *) :: Int -> Int
-  , (_ *) :: Int -> Int
-  , (x *) :: Int -> Int
-  , (y *) :: Int -> Int
-  , (ord _ *) :: Int -> Int
-  , (abs _ *) :: Int -> Int
-  , (id 0 *) :: Int -> Int
-  , (id _ *) :: Int -> Int
-  , (id x *) :: Int -> Int
-  , (id (id _) *) :: Int -> Int
-  , (negate _ *) :: Int -> Int
-  , (head _ *) :: Int -> Int
-  , ((_ + _) *) :: Int -> Int
-  , ((-1) +) :: Int -> Int
-  , (0 +) :: Int -> Int
-  , (1 +) :: Int -> Int
-  , (_ +) :: Int -> Int
-  , (x +) :: Int -> Int
-  , (y +) :: Int -> Int
-  , (z +) :: Int -> Int
-  , (ord 'a' +) :: Int -> Int
-  , (ord _ +) :: Int -> Int
-  , (ord c +) :: Int -> Int
-  , (f _ +) :: Int -> Int
-  , (abs 0 +) :: Int -> Int
-  , (abs _ +) :: Int -> Int
-  , (abs x +) :: Int -> Int
-  , (abs (id _) +) :: Int -> Int
-  , (id 0 +) :: Int -> Int
-  , (id 1 +) :: Int -> Int
-  , (id _ +) :: Int -> Int
-  , (id x +) :: Int -> Int
-  , (id y +) :: Int -> Int
-  , (id (ord _) +) :: Int -> Int
-  , (id (abs _) +) :: Int -> Int
-  , (id (id 0) +) :: Int -> Int
-  , (id (id _) +) :: Int -> Int
-  , (id (id x) +) :: Int -> Int
-  , (id (id (id _)) +) :: Int -> Int
-  , (id (negate _) +) :: Int -> Int
-  , (id (head _) +) :: Int -> Int
-  , (id (_ + _) +) :: Int -> Int
-  , (negate 0 +) :: Int -> Int
-  , (negate _ +) :: Int -> Int
-  , (negate x +) :: Int -> Int
-  , (negate (id _) +) :: Int -> Int
-  , (head [] +) :: Int -> Int
-  , (head _ +) :: Int -> Int
-  , (head xs +) :: Int -> Int
-  , (head (_:_) +) :: Int -> Int
-  , (_ * _ +) :: Int -> Int
-  , ((0 + _) +) :: Int -> Int
-  , ((_ + 0) +) :: Int -> Int
-  , ((_ + _) +) :: Int -> Int
-  , ((_ + x) +) :: Int -> Int
-  , ((_ + id _) +) :: Int -> Int
-  , ((x + _) +) :: Int -> Int
-  , ((id _ + _) +) :: Int -> Int
-  , False && False :: Bool
-  , False && True :: Bool
-  , False && _ :: Bool
-  , False && p :: Bool
-  , False && not _ :: Bool
-  , True && False :: Bool
-  , True && True :: Bool
-  , True && _ :: Bool
-  , True && p :: Bool
-  , True && not _ :: Bool
-  , _ && False :: Bool
-  , _ && True :: Bool
-  , _ && _ :: Bool
-  , _ && p :: Bool
-  , _ && q :: Bool
-  , _ && not False :: Bool
-  , _ && not True :: Bool
-  , _ && not _ :: Bool
-  , _ && not p :: Bool
-  , _ && not (not _) :: Bool
-  , _ && (_ || _) :: Bool
-  , p && False :: Bool
-  , p && True :: Bool
-  , p && _ :: Bool
-  , p && p :: Bool
-  , p && not _ :: Bool
-  , q && _ :: Bool
-  , not False && _ :: Bool
-  , not True && _ :: Bool
-  , not _ && False :: Bool
-  , not _ && True :: Bool
-  , not _ && _ :: Bool
-  , not _ && p :: Bool
-  , not _ && not _ :: Bool
-  , not p && _ :: Bool
-  , not (not _) && _ :: Bool
-  , (_ || _) && _ :: Bool
-  , _ < _ :: Bool
-  , False <= _ :: Bool
-  , True <= _ :: Bool
-  , _ <= False :: Bool
-  , _ <= True :: Bool
-  , _ <= _ :: Bool
-  , _ <= p :: Bool
-  , _ <= not _ :: Bool
-  , p <= _ :: Bool
-  , not _ <= _ :: Bool
-  , False == False :: Bool
-  , False == True :: Bool
-  , False == _ :: Bool
-  , False == p :: Bool
-  , False == not _ :: Bool
-  , True == False :: Bool
-  , True == True :: Bool
-  , True == _ :: Bool
-  , True == p :: Bool
-  , True == not _ :: Bool
-  , _ == False :: Bool
-  , _ == True :: Bool
-  , _ == _ :: Bool
-  , _ == p :: Bool
-  , _ == q :: Bool
-  , _ == not False :: Bool
-  , _ == not True :: Bool
-  , _ == not _ :: Bool
-  , _ == not p :: Bool
-  , _ == not (not _) :: Bool
-  , _ == (_ || _) :: Bool
-  , p == False :: Bool
-  , p == True :: Bool
-  , p == _ :: Bool
-  , p == p :: Bool
-  , p == not _ :: Bool
-  , q == _ :: Bool
-  , not False == _ :: Bool
-  , not True == _ :: Bool
-  , not _ == False :: Bool
-  , not _ == True :: Bool
-  , not _ == _ :: Bool
-  , not _ == p :: Bool
-  , not _ == not _ :: Bool
-  , not p == _ :: Bool
-  , not (not _) == _ :: Bool
-  , (_ || _) == _ :: Bool
-  , False ==> _ :: Bool
-  , True ==> _ :: Bool
-  , _ ==> False :: Bool
-  , _ ==> True :: Bool
-  , _ ==> _ :: Bool
-  , _ ==> p :: Bool
-  , _ ==> not _ :: Bool
-  , p ==> _ :: Bool
-  , not _ ==> _ :: Bool
-  , False || False :: Bool
-  , False || True :: Bool
-  , False || _ :: Bool
-  , False || p :: Bool
-  , False || q :: Bool
-  , False || not False :: Bool
-  , False || not True :: Bool
-  , False || not _ :: Bool
-  , False || not p :: Bool
-  , False || not (not _) :: Bool
-  , False || (_ || _) :: Bool
-  , True || False :: Bool
-  , True || True :: Bool
-  , True || _ :: Bool
-  , True || p :: Bool
-  , True || q :: Bool
-  , True || not False :: Bool
-  , True || not True :: Bool
-  , True || not _ :: Bool
-  , True || not p :: Bool
-  , True || not (not _) :: Bool
-  , True || (_ || _) :: Bool
-  , _ || False :: Bool
-  , _ || True :: Bool
-  , _ || _ :: Bool
-  , _ || p :: Bool
-  , _ || q :: Bool
-  , _ || r :: Bool
-  , _ || not False :: Bool
-  , _ || not True :: Bool
-  , _ || not _ :: Bool
-  , _ || not p :: Bool
-  , _ || not q :: Bool
-  , _ || not (not False) :: Bool
-  , _ || not (not True) :: Bool
-  , _ || not (not _) :: Bool
-  , _ || not (not p) :: Bool
-  , _ || not (not (not _)) :: Bool
-  , _ || not (_ || _) :: Bool
-  , _ || even _ :: Bool
-  , _ || odd _ :: Bool
-  , _ || _ && _ :: Bool
-  , _ || _ == _ :: Bool
-  , _ || (False || _) :: Bool
-  , _ || (True || _) :: Bool
-  , _ || (_ || False) :: Bool
-  , _ || (_ || True) :: Bool
-  , _ || (_ || _) :: Bool
-  , _ || (_ || p) :: Bool
-  , _ || (_ || not _) :: Bool
-  , _ || (p || _) :: Bool
-  , _ || (not _ || _) :: Bool
-  , _ || _ == _ :: Bool
-  , _ || elem _ _ :: Bool
-  , p || False :: Bool
-  , p || True :: Bool
-  , p || _ :: Bool
-  , p || p :: Bool
-  , p || q :: Bool
-  , p || not False :: Bool
-  , p || not True :: Bool
-  , p || not _ :: Bool
-  , p || not p :: Bool
-  , p || not (not _) :: Bool
-  , p || (_ || _) :: Bool
-  , q || False :: Bool
-  , q || True :: Bool
-  , q || _ :: Bool
-  , q || p :: Bool
-  , q || not _ :: Bool
-  , r || _ :: Bool
-  , not False || False :: Bool
-  , not False || True :: Bool
-  , not False || _ :: Bool
-  , not False || p :: Bool
-  , not False || not _ :: Bool
-  , not True || False :: Bool
-  , not True || True :: Bool
-  , not True || _ :: Bool
-  , not True || p :: Bool
-  , not True || not _ :: Bool
-  , not _ || False :: Bool
-  , not _ || True :: Bool
-  , not _ || _ :: Bool
-  , not _ || p :: Bool
-  , not _ || q :: Bool
-  , not _ || not False :: Bool
-  , not _ || not True :: Bool
-  , not _ || not _ :: Bool
-  , not _ || not p :: Bool
-  , not _ || not (not _) :: Bool
-  , not _ || (_ || _) :: Bool
-  , not p || False :: Bool
-  , not p || True :: Bool
-  , not p || _ :: Bool
-  , not p || p :: Bool
-  , not p || not _ :: Bool
-  , not q || _ :: Bool
-  , not (not False) || _ :: Bool
-  , not (not True) || _ :: Bool
-  , not (not _) || False :: Bool
-  , not (not _) || True :: Bool
-  , not (not _) || _ :: Bool
-  , not (not _) || p :: Bool
-  , not (not _) || not _ :: Bool
-  , not (not p) || _ :: Bool
-  , not (not (not _)) || _ :: Bool
-  , not (_ || _) || _ :: Bool
-  , even _ || _ :: Bool
-  , odd _ || _ :: Bool
-  , _ && _ || _ :: Bool
-  , _ == _ || _ :: Bool
-  , (False || _) || _ :: Bool
-  , (True || _) || _ :: Bool
-  , (_ || False) || _ :: Bool
-  , (_ || True) || _ :: Bool
-  , (_ || _) || False :: Bool
-  , (_ || _) || True :: Bool
-  , (_ || _) || _ :: Bool
-  , (_ || _) || p :: Bool
-  , (_ || _) || not _ :: Bool
-  , (_ || p) || _ :: Bool
-  , (_ || not _) || _ :: Bool
-  , (p || _) || _ :: Bool
-  , (not _ || _) || _ :: Bool
-  , _ == _ || _ :: Bool
-  , elem _ _ || _ :: Bool
-  , _ < _ :: Bool
-  , 0 <= _ :: Bool
-  , _ <= 0 :: Bool
-  , _ <= _ :: Bool
-  , _ <= x :: Bool
-  , _ <= id _ :: Bool
-  , x <= _ :: Bool
-  , id _ <= _ :: Bool
-  , 0 == 0 :: Bool
-  , 0 == _ :: Bool
-  , 0 == x :: Bool
-  , 0 == id _ :: Bool
-  , 1 == _ :: Bool
-  , _ == 0 :: Bool
-  , _ == 1 :: Bool
-  , _ == _ :: Bool
-  , _ == x :: Bool
-  , _ == y :: Bool
-  , _ == ord _ :: Bool
-  , _ == abs _ :: Bool
-  , _ == id 0 :: Bool
-  , _ == id _ :: Bool
-  , _ == id x :: Bool
-  , _ == id (id _) :: Bool
-  , _ == negate _ :: Bool
-  , _ == head _ :: Bool
-  , _ == _ + _ :: Bool
-  , x == 0 :: Bool
-  , x == _ :: Bool
-  , x == x :: Bool
-  , x == id _ :: Bool
-  , y == _ :: Bool
-  , ord _ == _ :: Bool
-  , abs _ == _ :: Bool
-  , id 0 == _ :: Bool
-  , id _ == 0 :: Bool
-  , id _ == _ :: Bool
-  , id _ == x :: Bool
-  , id _ == id _ :: Bool
-  , id x == _ :: Bool
-  , id (id _) == _ :: Bool
-  , negate _ == _ :: Bool
-  , head _ == _ :: Bool
-  , _ + _ == _ :: Bool
-  , (-1) * _ :: Int
-  , 0 * 0 :: Int
-  , 0 * 1 :: Int
-  , 0 * _ :: Int
-  , 0 * x :: Int
-  , 0 * y :: Int
-  , 0 * ord _ :: Int
-  , 0 * abs _ :: Int
-  , 0 * id 0 :: Int
-  , 0 * id _ :: Int
-  , 0 * id x :: Int
-  , 0 * id (id _) :: Int
-  , 0 * negate _ :: Int
-  , 0 * head _ :: Int
-  , 0 * (_ + _) :: Int
-  , 1 * 0 :: Int
-  , 1 * _ :: Int
-  , 1 * x :: Int
-  , 1 * id _ :: Int
-  , _ * (-1) :: Int
-  , _ * 0 :: Int
-  , _ * 1 :: Int
-  , _ * _ :: Int
-  , _ * x :: Int
-  , _ * y :: Int
-  , _ * z :: Int
-  , _ * ord 'a' :: Int
-  , _ * ord _ :: Int
-  , _ * ord c :: Int
-  , _ * f _ :: Int
-  , _ * abs 0 :: Int
-  , _ * abs _ :: Int
-  , _ * abs x :: Int
-  , _ * abs (id _) :: Int
-  , _ * id 0 :: Int
-  , _ * id 1 :: Int
-  , _ * id _ :: Int
-  , _ * id x :: Int
-  , _ * id y :: Int
-  , _ * id (ord _) :: Int
-  , _ * id (abs _) :: Int
-  , _ * id (id 0) :: Int
-  , _ * id (id _) :: Int
-  , _ * id (id x) :: Int
-  , _ * id (id (id _)) :: Int
-  , _ * id (negate _) :: Int
-  , _ * id (head _) :: Int
-  , _ * id (_ + _) :: Int
-  , _ * negate 0 :: Int
-  , _ * negate _ :: Int
-  , _ * negate x :: Int
-  , _ * negate (id _) :: Int
-  , _ * head [] :: Int
-  , _ * head _ :: Int
-  , _ * head xs :: Int
-  , _ * head (_:_) :: Int
-  , _ * (_ * _) :: Int
-  , _ * (0 + _) :: Int
-  , _ * (_ + 0) :: Int
-  , _ * (_ + _) :: Int
-  , _ * (_ + x) :: Int
-  , _ * (_ + id _) :: Int
-  , _ * (x + _) :: Int
-  , _ * (id _ + _) :: Int
-  , x * 0 :: Int
-  , x * 1 :: Int
-  , x * _ :: Int
-  , x * x :: Int
-  , x * y :: Int
-  , x * ord _ :: Int
-  , x * abs _ :: Int
-  , x * id 0 :: Int
-  , x * id _ :: Int
-  , x * id x :: Int
-  , x * id (id _) :: Int
-  , x * negate _ :: Int
-  , x * head _ :: Int
-  , x * (_ + _) :: Int
-  , y * 0 :: Int
-  , y * _ :: Int
-  , y * x :: Int
-  , y * id _ :: Int
-  , z * _ :: Int
-  , ord 'a' * _ :: Int
-  , ord _ * 0 :: Int
-  , ord _ * _ :: Int
-  , ord _ * x :: Int
-  , ord _ * id _ :: Int
-  , ord c * _ :: Int
-  , f _ * _ :: Int
-  , abs 0 * _ :: Int
-  , abs _ * 0 :: Int
-  , abs _ * _ :: Int
-  , abs _ * x :: Int
-  , abs _ * id _ :: Int
-  , abs x * _ :: Int
-  , abs (id _) * _ :: Int
-  , id 0 * 0 :: Int
-  , id 0 * _ :: Int
-  , id 0 * x :: Int
-  , id 0 * id _ :: Int
-  , id 1 * _ :: Int
-  , id _ * 0 :: Int
-  , id _ * 1 :: Int
-  , id _ * _ :: Int
-  , id _ * x :: Int
-  , id _ * y :: Int
-  , id _ * ord _ :: Int
-  , id _ * abs _ :: Int
-  , id _ * id 0 :: Int
-  , id _ * id _ :: Int
-  , id _ * id x :: Int
-  , id _ * id (id _) :: Int
-  , id _ * negate _ :: Int
-  , id _ * head _ :: Int
-  , id _ * (_ + _) :: Int
-  , id x * 0 :: Int
-  , id x * _ :: Int
-  , id x * x :: Int
-  , id x * id _ :: Int
-  , id y * _ :: Int
-  , id (ord _) * _ :: Int
-  , id (abs _) * _ :: Int
-  , id (id 0) * _ :: Int
-  , id (id _) * 0 :: Int
-  , id (id _) * _ :: Int
-  , id (id _) * x :: Int
-  , id (id _) * id _ :: Int
-  , id (id x) * _ :: Int
-  , id (id (id _)) * _ :: Int
-  , id (negate _) * _ :: Int
-  , id (head _) * _ :: Int
-  , id (_ + _) * _ :: Int
-  , negate 0 * _ :: Int
-  , negate _ * 0 :: Int
-  , negate _ * _ :: Int
-  , negate _ * x :: Int
-  , negate _ * id _ :: Int
-  , negate x * _ :: Int
-  , negate (id _) * _ :: Int
-  , head [] * _ :: Int
-  , head _ * 0 :: Int
-  , head _ * _ :: Int
-  , head _ * x :: Int
-  , head _ * id _ :: Int
-  , head xs * _ :: Int
-  , head (_:_) * _ :: Int
-  , (_ * _) * _ :: Int
-  , (0 + _) * _ :: Int
-  , (_ + 0) * _ :: Int
-  , (_ + _) * 0 :: Int
-  , (_ + _) * _ :: Int
-  , (_ + _) * x :: Int
-  , (_ + _) * id _ :: Int
-  , (_ + x) * _ :: Int
-  , (_ + id _) * _ :: Int
-  , (x + _) * _ :: Int
-  , (id _ + _) * _ :: Int
-  , (-1) + 0 :: Int
-  , (-1) + _ :: Int
-  , (-1) + x :: Int
-  , (-1) + id _ :: Int
-  , 0 + (-1) :: Int
-  , 0 + 0 :: Int
-  , 0 + 1 :: Int
-  , 0 + _ :: Int
-  , 0 + x :: Int
-  , 0 + y :: Int
-  , 0 + z :: Int
-  , 0 + ord 'a' :: Int
-  , 0 + ord _ :: Int
-  , 0 + ord c :: Int
-  , 0 + f _ :: Int
-  , 0 + abs 0 :: Int
-  , 0 + abs _ :: Int
-  , 0 + abs x :: Int
-  , 0 + abs (id _) :: Int
-  , 0 + id 0 :: Int
-  , 0 + id 1 :: Int
-  , 0 + id _ :: Int
-  , 0 + id x :: Int
-  , 0 + id y :: Int
-  , 0 + id (ord _) :: Int
-  , 0 + id (abs _) :: Int
-  , 0 + id (id 0) :: Int
-  , 0 + id (id _) :: Int
-  , 0 + id (id x) :: Int
-  , 0 + id (id (id _)) :: Int
-  , 0 + id (negate _) :: Int
-  , 0 + id (head _) :: Int
-  , 0 + id (_ + _) :: Int
-  , 0 + negate 0 :: Int
-  , 0 + negate _ :: Int
-  , 0 + negate x :: Int
-  , 0 + negate (id _) :: Int
-  , 0 + head [] :: Int
-  , 0 + head _ :: Int
-  , 0 + head xs :: Int
-  , 0 + head (_:_) :: Int
-  , 0 + _ * _ :: Int
-  , 0 + (0 + _) :: Int
-  , 0 + (_ + 0) :: Int
-  , 0 + (_ + _) :: Int
-  , 0 + (_ + x) :: Int
-  , 0 + (_ + id _) :: Int
-  , 0 + (x + _) :: Int
-  , 0 + (id _ + _) :: Int
-  , 1 + 0 :: Int
-  , 1 + 1 :: Int
-  , 1 + _ :: Int
-  , 1 + x :: Int
-  , 1 + y :: Int
-  , 1 + ord _ :: Int
-  , 1 + abs _ :: Int
-  , 1 + id 0 :: Int
-  , 1 + id _ :: Int
-  , 1 + id x :: Int
-  , 1 + id (id _) :: Int
-  , 1 + negate _ :: Int
-  , 1 + head _ :: Int
-  , 1 + (_ + _) :: Int
-  , 2 + _ :: Int
-  , _ + (-1) :: Int
-  , _ + 0 :: Int
-  , _ + 1 :: Int
-  , _ + 2 :: Int
-  , _ + _ :: Int
-  , _ + x :: Int
-  , _ + x' :: Int
-  , _ + y :: Int
-  , _ + z :: Int
-  , _ + ord ' ' :: Int
-  , _ + ord 'a' :: Int
-  , _ + ord _ :: Int
-  , _ + ord c :: Int
-  , _ + ord d :: Int
-  , _ + f 0 :: Int
-  , _ + f _ :: Int
-  , _ + f x :: Int
-  , _ + f (id _) :: Int
-  , _ + g _ :: Int
-  , _ + abs 0 :: Int
-  , _ + abs 1 :: Int
-  , _ + abs _ :: Int
-  , _ + abs x :: Int
-  , _ + abs y :: Int
-  , _ + abs (ord _) :: Int
-  , _ + abs (abs _) :: Int
-  , _ + abs (id 0) :: Int
-  , _ + abs (id _) :: Int
-  , _ + abs (id x) :: Int
-  , _ + abs (id (id _)) :: Int
-  , _ + abs (negate _) :: Int
-  , _ + abs (head _) :: Int
-  , _ + abs (_ + _) :: Int
-  , _ + id (-1) :: Int
-  , _ + id 0 :: Int
-  , _ + id 1 :: Int
-  , _ + id _ :: Int
-  , _ + id x :: Int
-  , _ + id y :: Int
-  , _ + id z :: Int
-  , _ + id (ord 'a') :: Int
-  , _ + id (ord _) :: Int
-  , _ + id (ord c) :: Int
-  , _ + id (f _) :: Int
-  , _ + id (abs 0) :: Int
-  , _ + id (abs _) :: Int
-  , _ + id (abs x) :: Int
-  , _ + id (abs (id _)) :: Int
-  , _ + id (id 0) :: Int
-  , _ + id (id 1) :: Int
-  , _ + id (id _) :: Int
-  , _ + id (id x) :: Int
-  , _ + id (id y) :: Int
-  , _ + id (id (ord _)) :: Int
-  , _ + id (id (abs _)) :: Int
-  , _ + id (id (id 0)) :: Int
-  , _ + id (id (id _)) :: Int
-  , _ + id (id (id x)) :: Int
-  , _ + id (id (id (id _))) :: Int
-  , _ + id (id (negate _)) :: Int
-  , _ + id (id (head _)) :: Int
-  , _ + id (id (_ + _)) :: Int
-  , _ + id (negate 0) :: Int
-  , _ + id (negate _) :: Int
-  , _ + id (negate x) :: Int
-  , _ + id (negate (id _)) :: Int
-  , _ + id (head []) :: Int
-  , _ + id (head _) :: Int
-  , _ + id (head xs) :: Int
-  , _ + id (head (_:_)) :: Int
-  , _ + id (_ * _) :: Int
-  , _ + id (0 + _) :: Int
-  , _ + id (_ + 0) :: Int
-  , _ + id (_ + _) :: Int
-  , _ + id (_ + x) :: Int
-  , _ + id (_ + id _) :: Int
-  , _ + id (x + _) :: Int
-  , _ + id (id _ + _) :: Int
-  , _ + negate 0 :: Int
-  , _ + negate 1 :: Int
-  , _ + negate _ :: Int
-  , _ + negate x :: Int
-  , _ + negate y :: Int
-  , _ + negate (ord _) :: Int
-  , _ + negate (abs _) :: Int
-  , _ + negate (id 0) :: Int
-  , _ + negate (id _) :: Int
-  , _ + negate (id x) :: Int
-  , _ + negate (id (id _)) :: Int
-  , _ + negate (negate _) :: Int
-  , _ + negate (head _) :: Int
-  , _ + negate (_ + _) :: Int
-  , _ + head [0] :: Int
-  , _ + head [] :: Int
-  , _ + head _ :: Int
-  , _ + head xs :: Int
-  , _ + head ys :: Int
-  , _ + head (tail _) :: Int
-  , _ + head (0:_) :: Int
-  , _ + head [_] :: Int
-  , _ + head (_:_) :: Int
-  , _ + head (_:xs) :: Int
-  , _ + head (_:_:_) :: Int
-  , _ + head (x:_) :: Int
-  , _ + head (id _:_) :: Int
-  , _ + head (_ ++ _) :: Int
-  , _ + 0 * _ :: Int
-  , _ + _ * 0 :: Int
-  , _ + _ * _ :: Int
-  , _ + _ * x :: Int
-  , _ + _ * id _ :: Int
-  , _ + x * _ :: Int
-  , _ + id _ * _ :: Int
-  , _ + (0 + 0) :: Int
-  , _ + (0 + _) :: Int
-  , _ + (0 + x) :: Int
-  , _ + (0 + id _) :: Int
-  , _ + (1 + _) :: Int
-  , _ + (_ + 0) :: Int
-  , _ + (_ + 1) :: Int
-  , _ + (_ + _) :: Int
-  , _ + (_ + x) :: Int
-  , _ + (_ + y) :: Int
-  , _ + (_ + ord _) :: Int
-  , _ + (_ + abs _) :: Int
-  , _ + (_ + id 0) :: Int
-  , _ + (_ + id _) :: Int
-  , _ + (_ + id x) :: Int
-  , _ + (_ + id (id _)) :: Int
-  , _ + (_ + negate _) :: Int
-  , _ + (_ + head _) :: Int
-  , _ + (_ + (_ + _)) :: Int
-  , _ + (x + 0) :: Int
-  , _ + (x + _) :: Int
-  , _ + (x + x) :: Int
-  , _ + (x + id _) :: Int
-  , _ + (y + _) :: Int
-  , _ + (ord _ + _) :: Int
-  , _ + (abs _ + _) :: Int
-  , _ + (id 0 + _) :: Int
-  , _ + (id _ + 0) :: Int
-  , _ + (id _ + _) :: Int
-  , _ + (id _ + x) :: Int
-  , _ + (id _ + id _) :: Int
-  , _ + (id x + _) :: Int
-  , _ + (id (id _) + _) :: Int
-  , _ + (negate _ + _) :: Int
-  , _ + (head _ + _) :: Int
-  , _ + ((_ + _) + _) :: Int
-  , x + (-1) :: Int
-  , x + 0 :: Int
-  , x + 1 :: Int
-  , x + _ :: Int
-  , x + x :: Int
-  , x + y :: Int
-  , x + z :: Int
-  , x + ord 'a' :: Int
-  , x + ord _ :: Int
-  , x + ord c :: Int
-  , x + f _ :: Int
-  , x + abs 0 :: Int
-  , x + abs _ :: Int
-  , x + abs x :: Int
-  , x + abs (id _) :: Int
-  , x + id 0 :: Int
-  , x + id 1 :: Int
-  , x + id _ :: Int
-  , x + id x :: Int
-  , x + id y :: Int
-  , x + id (ord _) :: Int
-  , x + id (abs _) :: Int
-  , x + id (id 0) :: Int
-  , x + id (id _) :: Int
-  , x + id (id x) :: Int
-  , x + id (id (id _)) :: Int
-  , x + id (negate _) :: Int
-  , x + id (head _) :: Int
-  , x + id (_ + _) :: Int
-  , x + negate 0 :: Int
-  , x + negate _ :: Int
-  , x + negate x :: Int
-  , x + negate (id _) :: Int
-  , x + head [] :: Int
-  , x + head _ :: Int
-  , x + head xs :: Int
-  , x + head (_:_) :: Int
-  , x + _ * _ :: Int
-  , x + (0 + _) :: Int
-  , x + (_ + 0) :: Int
-  , x + (_ + _) :: Int
-  , x + (_ + x) :: Int
-  , x + (_ + id _) :: Int
-  , x + (x + _) :: Int
-  , x + (id _ + _) :: Int
-  , x' + _ :: Int
-  , y + 0 :: Int
-  , y + 1 :: Int
-  , y + _ :: Int
-  , y + x :: Int
-  , y + y :: Int
-  , y + ord _ :: Int
-  , y + abs _ :: Int
-  , y + id 0 :: Int
-  , y + id _ :: Int
-  , y + id x :: Int
-  , y + id (id _) :: Int
-  , y + negate _ :: Int
-  , y + head _ :: Int
-  , y + (_ + _) :: Int
-  , z + 0 :: Int
-  , z + _ :: Int
-  , z + x :: Int
-  , z + id _ :: Int
-  , ord ' ' + _ :: Int
-  , ord 'a' + 0 :: Int
-  , ord 'a' + _ :: Int
-  , ord 'a' + x :: Int
-  , ord 'a' + id _ :: Int
-  , ord _ + 0 :: Int
-  , ord _ + 1 :: Int
-  , ord _ + _ :: Int
-  , ord _ + x :: Int
-  , ord _ + y :: Int
-  , ord _ + ord _ :: Int
-  , ord _ + abs _ :: Int
-  , ord _ + id 0 :: Int
-  , ord _ + id _ :: Int
-  , ord _ + id x :: Int
-  , ord _ + id (id _) :: Int
-  , ord _ + negate _ :: Int
-  , ord _ + head _ :: Int
-  , ord _ + (_ + _) :: Int
-  , ord c + 0 :: Int
-  , ord c + _ :: Int
-  , ord c + x :: Int
-  , ord c + id _ :: Int
-  , ord d + _ :: Int
-  , f 0 + _ :: Int
-  , f _ + 0 :: Int
-  , f _ + _ :: Int
-  , f _ + x :: Int
-  , f _ + id _ :: Int
-  , f x + _ :: Int
-  , f (id _) + _ :: Int
-  , g _ + _ :: Int
-  , abs 0 + 0 :: Int
-  , abs 0 + _ :: Int
-  , abs 0 + x :: Int
-  , abs 0 + id _ :: Int
-  , abs 1 + _ :: Int
-  , abs _ + 0 :: Int
-  , abs _ + 1 :: Int
-  , abs _ + _ :: Int
-  , abs _ + x :: Int
-  , abs _ + y :: Int
-  , abs _ + ord _ :: Int
-  , abs _ + abs _ :: Int
-  , abs _ + id 0 :: Int
-  , abs _ + id _ :: Int
-  , abs _ + id x :: Int
-  , abs _ + id (id _) :: Int
-  , abs _ + negate _ :: Int
-  , abs _ + head _ :: Int
-  , abs _ + (_ + _) :: Int
-  , abs x + 0 :: Int
-  , abs x + _ :: Int
-  , abs x + x :: Int
-  , abs x + id _ :: Int
-  , abs y + _ :: Int
-  , abs (ord _) + _ :: Int
-  , abs (abs _) + _ :: Int
-  , abs (id 0) + _ :: Int
-  , abs (id _) + 0 :: Int
-  , abs (id _) + _ :: Int
-  , abs (id _) + x :: Int
-  , abs (id _) + id _ :: Int
-  , abs (id x) + _ :: Int
-  , abs (id (id _)) + _ :: Int
-  , abs (negate _) + _ :: Int
-  , abs (head _) + _ :: Int
-  , abs (_ + _) + _ :: Int
-  , id (-1) + _ :: Int
-  , id 0 + 0 :: Int
-  , id 0 + 1 :: Int
-  , id 0 + _ :: Int
-  , id 0 + x :: Int
-  , id 0 + y :: Int
-  , id 0 + ord _ :: Int
-  , id 0 + abs _ :: Int
-  , id 0 + id 0 :: Int
-  , id 0 + id _ :: Int
-  , id 0 + id x :: Int
-  , id 0 + id (id _) :: Int
-  , id 0 + negate _ :: Int
-  , id 0 + head _ :: Int
-  , id 0 + (_ + _) :: Int
-  , id 1 + 0 :: Int
-  , id 1 + _ :: Int
-  , id 1 + x :: Int
-  , id 1 + id _ :: Int
-  , id _ + (-1) :: Int
-  , id _ + 0 :: Int
-  , id _ + 1 :: Int
-  , id _ + _ :: Int
-  , id _ + x :: Int
-  , id _ + y :: Int
-  , id _ + z :: Int
-  , id _ + ord 'a' :: Int
-  , id _ + ord _ :: Int
-  , id _ + ord c :: Int
-  , id _ + f _ :: Int
-  , id _ + abs 0 :: Int
-  , id _ + abs _ :: Int
-  , id _ + abs x :: Int
-  , id _ + abs (id _) :: Int
-  , id _ + id 0 :: Int
-  , id _ + id 1 :: Int
-  , id _ + id _ :: Int
-  , id _ + id x :: Int
-  , id _ + id y :: Int
-  , id _ + id (ord _) :: Int
-  , id _ + id (abs _) :: Int
-  , id _ + id (id 0) :: Int
-  , id _ + id (id _) :: Int
-  , id _ + id (id x) :: Int
-  , id _ + id (id (id _)) :: Int
-  , id _ + id (negate _) :: Int
-  , id _ + id (head _) :: Int
-  , id _ + id (_ + _) :: Int
-  , id _ + negate 0 :: Int
-  , id _ + negate _ :: Int
-  , id _ + negate x :: Int
-  , id _ + negate (id _) :: Int
-  , id _ + head [] :: Int
-  , id _ + head _ :: Int
-  , id _ + head xs :: Int
-  , id _ + head (_:_) :: Int
-  , id _ + _ * _ :: Int
-  , id _ + (0 + _) :: Int
-  , id _ + (_ + 0) :: Int
-  , id _ + (_ + _) :: Int
-  , id _ + (_ + x) :: Int
-  , id _ + (_ + id _) :: Int
-  , id _ + (x + _) :: Int
-  , id _ + (id _ + _) :: Int
-  , id x + 0 :: Int
-  , id x + 1 :: Int
-  , id x + _ :: Int
-  , id x + x :: Int
-  , id x + y :: Int
-  , id x + ord _ :: Int
-  , id x + abs _ :: Int
-  , id x + id 0 :: Int
-  , id x + id _ :: Int
-  , id x + id x :: Int
-  , id x + id (id _) :: Int
-  , id x + negate _ :: Int
-  , id x + head _ :: Int
-  , id x + (_ + _) :: Int
-  , id y + 0 :: Int
-  , id y + _ :: Int
-  , id y + x :: Int
-  , id y + id _ :: Int
-  , id z + _ :: Int
-  , id (ord 'a') + _ :: Int
-  , id (ord _) + 0 :: Int
-  , id (ord _) + _ :: Int
-  , id (ord _) + x :: Int
-  , id (ord _) + id _ :: Int
-  , id (ord c) + _ :: Int
-  , id (f _) + _ :: Int
-  , id (abs 0) + _ :: Int
-  , id (abs _) + 0 :: Int
-  , id (abs _) + _ :: Int
-  , id (abs _) + x :: Int
-  , id (abs _) + id _ :: Int
-  , id (abs x) + _ :: Int
-  , id (abs (id _)) + _ :: Int
-  , id (id 0) + 0 :: Int
-  , id (id 0) + _ :: Int
-  , id (id 0) + x :: Int
-  , id (id 0) + id _ :: Int
-  , id (id 1) + _ :: Int
-  , id (id _) + 0 :: Int
-  , id (id _) + 1 :: Int
-  , id (id _) + _ :: Int
-  , id (id _) + x :: Int
-  , id (id _) + y :: Int
-  , id (id _) + ord _ :: Int
-  , id (id _) + abs _ :: Int
-  , id (id _) + id 0 :: Int
-  , id (id _) + id _ :: Int
-  , id (id _) + id x :: Int
-  , id (id _) + id (id _) :: Int
-  , id (id _) + negate _ :: Int
-  , id (id _) + head _ :: Int
-  , id (id _) + (_ + _) :: Int
-  , id (id x) + 0 :: Int
-  , id (id x) + _ :: Int
-  , id (id x) + x :: Int
-  , id (id x) + id _ :: Int
-  , id (id y) + _ :: Int
-  , id (id (ord _)) + _ :: Int
-  , id (id (abs _)) + _ :: Int
-  , id (id (id 0)) + _ :: Int
-  , id (id (id _)) + 0 :: Int
-  , id (id (id _)) + _ :: Int
-  , id (id (id _)) + x :: Int
-  , id (id (id _)) + id _ :: Int
-  , id (id (id x)) + _ :: Int
-  , id (id (id (id _))) + _ :: Int
-  , id (id (negate _)) + _ :: Int
-  , id (id (head _)) + _ :: Int
-  , id (id (_ + _)) + _ :: Int
-  , id (negate 0) + _ :: Int
-  , id (negate _) + 0 :: Int
-  , id (negate _) + _ :: Int
-  , id (negate _) + x :: Int
-  , id (negate _) + id _ :: Int
-  , id (negate x) + _ :: Int
-  , id (negate (id _)) + _ :: Int
-  , id (head []) + _ :: Int
-  , id (head _) + 0 :: Int
-  , id (head _) + _ :: Int
-  , id (head _) + x :: Int
-  , id (head _) + id _ :: Int
-  , id (head xs) + _ :: Int
-  , id (head (_:_)) + _ :: Int
-  , id (_ * _) + _ :: Int
-  , id (0 + _) + _ :: Int
-  , id (_ + 0) + _ :: Int
-  , id (_ + _) + 0 :: Int
-  , id (_ + _) + _ :: Int
-  , id (_ + _) + x :: Int
-  , id (_ + _) + id _ :: Int
-  , id (_ + x) + _ :: Int
-  , id (_ + id _) + _ :: Int
-  , id (x + _) + _ :: Int
-  , id (id _ + _) + _ :: Int
-  , negate 0 + 0 :: Int
-  , negate 0 + _ :: Int
-  , negate 0 + x :: Int
-  , negate 0 + id _ :: Int
-  , negate 1 + _ :: Int
-  , negate _ + 0 :: Int
-  , negate _ + 1 :: Int
-  , negate _ + _ :: Int
-  , negate _ + x :: Int
-  , negate _ + y :: Int
-  , negate _ + ord _ :: Int
-  , negate _ + abs _ :: Int
-  , negate _ + id 0 :: Int
-  , negate _ + id _ :: Int
-  , negate _ + id x :: Int
-  , negate _ + id (id _) :: Int
-  , negate _ + negate _ :: Int
-  , negate _ + head _ :: Int
-  , negate _ + (_ + _) :: Int
-  , negate x + 0 :: Int
-  , negate x + _ :: Int
-  , negate x + x :: Int
-  , negate x + id _ :: Int
-  , negate y + _ :: Int
-  , negate (ord _) + _ :: Int
-  , negate (abs _) + _ :: Int
-  , negate (id 0) + _ :: Int
-  , negate (id _) + 0 :: Int
-  , negate (id _) + _ :: Int
-  , negate (id _) + x :: Int
-  , negate (id _) + id _ :: Int
-  , negate (id x) + _ :: Int
-  , negate (id (id _)) + _ :: Int
-  , negate (negate _) + _ :: Int
-  , negate (head _) + _ :: Int
-  , negate (_ + _) + _ :: Int
-  , head [0] + _ :: Int
-  , head [] + 0 :: Int
-  , head [] + _ :: Int
-  , head [] + x :: Int
-  , head [] + id _ :: Int
-  , head _ + 0 :: Int
-  , head _ + 1 :: Int
-  , head _ + _ :: Int
-  , head _ + x :: Int
-  , head _ + y :: Int
-  , head _ + ord _ :: Int
-  , head _ + abs _ :: Int
-  , head _ + id 0 :: Int
-  , head _ + id _ :: Int
-  , head _ + id x :: Int
-  , head _ + id (id _) :: Int
-  , head _ + negate _ :: Int
-  , head _ + head _ :: Int
-  , head _ + (_ + _) :: Int
-  , head xs + 0 :: Int
-  , head xs + _ :: Int
-  , head xs + x :: Int
-  , head xs + id _ :: Int
-  , head ys + _ :: Int
-  , head (tail _) + _ :: Int
-  , head (0:_) + _ :: Int
-  , head [_] + _ :: Int
-  , head (_:_) + 0 :: Int
-  , head (_:_) + _ :: Int
-  , head (_:_) + x :: Int
-  , head (_:_) + id _ :: Int
-  , head (_:xs) + _ :: Int
-  , head (_:_:_) + _ :: Int
-  , head (x:_) + _ :: Int
-  , head (id _:_) + _ :: Int
-  , head (_ ++ _) + _ :: Int
-  , 0 * _ + _ :: Int
-  , _ * 0 + _ :: Int
-  , _ * _ + 0 :: Int
-  , _ * _ + _ :: Int
-  , _ * _ + x :: Int
-  , _ * _ + id _ :: Int
-  , _ * x + _ :: Int
-  , _ * id _ + _ :: Int
-  , x * _ + _ :: Int
-  , id _ * _ + _ :: Int
-  , (0 + 0) + _ :: Int
-  , (0 + _) + 0 :: Int
-  , (0 + _) + _ :: Int
-  , (0 + _) + x :: Int
-  , (0 + _) + id _ :: Int
-  , (0 + x) + _ :: Int
-  , (0 + id _) + _ :: Int
-  , (1 + _) + _ :: Int
-  , (_ + 0) + 0 :: Int
-  , (_ + 0) + _ :: Int
-  , (_ + 0) + x :: Int
-  , (_ + 0) + id _ :: Int
-  , (_ + 1) + _ :: Int
-  , (_ + _) + 0 :: Int
-  , (_ + _) + 1 :: Int
-  , (_ + _) + _ :: Int
-  , (_ + _) + x :: Int
-  , (_ + _) + y :: Int
-  , (_ + _) + ord _ :: Int
-  , (_ + _) + abs _ :: Int
-  , (_ + _) + id 0 :: Int
-  , (_ + _) + id _ :: Int
-  , (_ + _) + id x :: Int
-  , (_ + _) + id (id _) :: Int
-  , (_ + _) + negate _ :: Int
-  , (_ + _) + head _ :: Int
-  , (_ + _) + (_ + _) :: Int
-  , (_ + x) + 0 :: Int
-  , (_ + x) + _ :: Int
-  , (_ + x) + x :: Int
-  , (_ + x) + id _ :: Int
-  , (_ + y) + _ :: Int
-  , (_ + ord _) + _ :: Int
-  , (_ + abs _) + _ :: Int
-  , (_ + id 0) + _ :: Int
-  , (_ + id _) + 0 :: Int
-  , (_ + id _) + _ :: Int
-  , (_ + id _) + x :: Int
-  , (_ + id _) + id _ :: Int
-  , (_ + id x) + _ :: Int
-  , (_ + id (id _)) + _ :: Int
-  , (_ + negate _) + _ :: Int
-  , (_ + head _) + _ :: Int
-  , (_ + (_ + _)) + _ :: Int
-  , (x + 0) + _ :: Int
-  , (x + _) + 0 :: Int
-  , (x + _) + _ :: Int
-  , (x + _) + x :: Int
-  , (x + _) + id _ :: Int
-  , (x + x) + _ :: Int
-  , (x + id _) + _ :: Int
-  , (y + _) + _ :: Int
-  , (ord _ + _) + _ :: Int
-  , (abs _ + _) + _ :: Int
-  , (id 0 + _) + _ :: Int
-  , (id _ + 0) + _ :: Int
-  , (id _ + _) + 0 :: Int
-  , (id _ + _) + _ :: Int
-  , (id _ + _) + x :: Int
-  , (id _ + _) + id _ :: Int
-  , (id _ + x) + _ :: Int
-  , (id _ + id _) + _ :: Int
-  , (id x + _) + _ :: Int
-  , (id (id _) + _) + _ :: Int
-  , (negate _ + _) + _ :: Int
-  , (head _ + _) + _ :: Int
-  , ((_ + _) + _) + _ :: Int
-  , elem 0 [] :: Bool
-  , elem 0 _ :: Bool
-  , elem 0 xs :: Bool
-  , elem 0 (_:_) :: Bool
-  , elem 1 _ :: Bool
-  , elem _ [0] :: Bool
-  , elem _ [] :: Bool
-  , elem _ _ :: Bool
-  , elem _ xs :: Bool
-  , elem _ ys :: Bool
-  , elem _ (tail _) :: Bool
-  , elem _ (0:_) :: Bool
-  , elem _ [_] :: Bool
-  , elem _ (_:_) :: Bool
-  , elem _ (_:xs) :: Bool
-  , elem _ (_:_:_) :: Bool
-  , elem _ (x:_) :: Bool
-  , elem _ (id _:_) :: Bool
-  , elem _ (_ ++ _) :: Bool
-  , elem x [] :: Bool
-  , elem x _ :: Bool
-  , elem x xs :: Bool
-  , elem x (_:_) :: Bool
-  , elem y _ :: Bool
-  , elem (ord _) _ :: Bool
-  , elem (abs _) _ :: Bool
-  , elem (id 0) _ :: Bool
-  , elem (id _) [] :: Bool
-  , elem (id _) _ :: Bool
-  , elem (id _) xs :: Bool
-  , elem (id _) (_:_) :: Bool
-  , elem (id x) _ :: Bool
-  , elem (id (id _)) _ :: Bool
-  , elem (negate _) _ :: Bool
-  , elem (head _) _ :: Bool
-  , elem (_ + _) _ :: Bool
-  , [-1] :: [Int]
-  , (-1):_ :: [Int]
-  , (-1):xs :: [Int]
-  , (-1):_:_ :: [Int]
-  , [0,0,0] :: [Int]
-  , [0,0] :: [Int]
-  , [0,1] :: [Int]
-  , [0] :: [Int]
-  , 0:_ :: [Int]
-  , 0:xs :: [Int]
-  , 0:ys :: [Int]
-  , 0:zs :: [Int]
-  , 0:sort _ :: [Int]
-  , 0:tail [] :: [Int]
-  , 0:tail _ :: [Int]
-  , 0:tail xs :: [Int]
-  , 0:tail (_:_) :: [Int]
-  , [0,0] :: [Int]
-  , 0:0:_ :: [Int]
-  , 0:0:xs :: [Int]
-  , 0:0:_:_ :: [Int]
-  , 0:1:_ :: [Int]
-  , [0,_,0] :: [Int]
-  , [0,_] :: [Int]
-  , 0:_:_ :: [Int]
-  , 0:_:xs :: [Int]
-  , 0:_:ys :: [Int]
-  , 0:_:tail _ :: [Int]
-  , 0:_:0:_ :: [Int]
-  , [0,_,_] :: [Int]
-  , 0:_:_:_ :: [Int]
-  , 0:_:_:xs :: [Int]
-  , 0:_:_:_:_ :: [Int]
-  , 0:_:x:_ :: [Int]
-  , 0:_:id _:_ :: [Int]
-  , 0:_:(_ ++ _) :: [Int]
-  , [0,x] :: [Int]
-  , 0:x:_ :: [Int]
-  , 0:x:xs :: [Int]
-  , 0:x:_:_ :: [Int]
-  , 0:y:_ :: [Int]
-  , 0:ord _:_ :: [Int]
-  , 0:abs _:_ :: [Int]
-  , 0:id 0:_ :: [Int]
-  , [0,id _] :: [Int]
-  , 0:id _:_ :: [Int]
-  , 0:id _:xs :: [Int]
-  , 0:id _:_:_ :: [Int]
-  , 0:id x:_ :: [Int]
-  , 0:id (id _):_ :: [Int]
-  , 0:negate _:_ :: [Int]
-  , 0:head _:_ :: [Int]
-  , 0:_ + _:_ :: [Int]
-  , 0:insert _ _ :: [Int]
-  , 0:([] ++ _) :: [Int]
-  , 0:(_ ++ []) :: [Int]
-  , 0:(_ ++ _) :: [Int]
-  , 0:(_ ++ xs) :: [Int]
-  , 0:(_ ++ (_:_)) :: [Int]
-  , 0:(xs ++ _) :: [Int]
-  , 0:((_:_) ++ _) :: [Int]
-  , [1,0] :: [Int]
-  , [1] :: [Int]
-  , 1:_ :: [Int]
-  , 1:xs :: [Int]
-  , 1:ys :: [Int]
-  , 1:tail _ :: [Int]
-  , 1:0:_ :: [Int]
-  , [1,_] :: [Int]
-  , 1:_:_ :: [Int]
-  , 1:_:xs :: [Int]
-  , 1:_:_:_ :: [Int]
-  , 1:x:_ :: [Int]
-  , 1:id _:_ :: [Int]
-  , 1:(_ ++ _) :: [Int]
-  , 2:_ :: [Int]
-  , [_,-1] :: [Int]
-  , [_,0,0,0] :: [Int]
-  , [_,0,0] :: [Int]
-  , [_,0,1] :: [Int]
-  , [_,0] :: [Int]
-  , [_,1,0] :: [Int]
-  , [_,1] :: [Int]
-  , [_] :: [Int]
-  , _:_ :: [Int]
-  , _:xs :: [Int]
-  , _:xs' :: [Int]
-  , _:ys :: [Int]
-  , _:zs :: [Int]
-  , _:sort [] :: [Int]
-  , _:sort _ :: [Int]
-  , _:sort xs :: [Int]
-  , _:sort (_:_) :: [Int]
-  , _:tail [0] :: [Int]
-  , _:tail [] :: [Int]
-  , _:tail _ :: [Int]
-  , _:tail xs :: [Int]
-  , _:tail ys :: [Int]
-  , _:tail (tail _) :: [Int]
-  , _:tail (0:_) :: [Int]
-  , _:tail [_] :: [Int]
-  , _:tail (_:_) :: [Int]
-  , _:tail (_:xs) :: [Int]
-  , _:tail (_:_:_) :: [Int]
-  , _:tail (x:_) :: [Int]
-  , _:tail (id _:_) :: [Int]
-  , _:tail (_ ++ _) :: [Int]
-  , _:(-1):_ :: [Int]
-  , [_,0,0] :: [Int]
-  , [_,0] :: [Int]
-  , _:0:_ :: [Int]
-  , _:0:xs :: [Int]
-  , _:0:ys :: [Int]
-  , _:0:tail _ :: [Int]
-  , _:0:0:_ :: [Int]
-  , [_,0,_] :: [Int]
-  , _:0:_:_ :: [Int]
-  , _:0:_:xs :: [Int]
-  , _:0:_:_:_ :: [Int]
-  , _:0:x:_ :: [Int]
-  , _:0:id _:_ :: [Int]
-  , _:0:(_ ++ _) :: [Int]
-  , [_,1] :: [Int]
-  , _:1:_ :: [Int]
-  , _:1:xs :: [Int]
-  , _:1:_:_ :: [Int]
-  , [_,_,0,0] :: [Int]
-  , [_,_,0] :: [Int]
-  , [_,_,1] :: [Int]
-  , [_,_] :: [Int]
-  , _:_:_ :: [Int]
-  , _:_:xs :: [Int]
-  , _:_:ys :: [Int]
-  , _:_:zs :: [Int]
-  , _:_:sort _ :: [Int]
-  , _:_:tail [] :: [Int]
-  , _:_:tail _ :: [Int]
-  , _:_:tail xs :: [Int]
-  , _:_:tail (_:_) :: [Int]
-  , [_,_,0] :: [Int]
-  , _:_:0:_ :: [Int]
-  , _:_:0:xs :: [Int]
-  , _:_:0:_:_ :: [Int]
-  , _:_:1:_ :: [Int]
-  , [_,_,_,0] :: [Int]
-  , [_,_,_] :: [Int]
-  , _:_:_:_ :: [Int]
-  , _:_:_:xs :: [Int]
-  , _:_:_:ys :: [Int]
-  , _:_:_:tail _ :: [Int]
-  , _:_:_:0:_ :: [Int]
-  , [_,_,_,_] :: [Int]
-  , _:_:_:_:_ :: [Int]
-  , _:_:_:_:xs :: [Int]
-  , _:_:_:_:_:_ :: [Int]
-  , _:_:_:x:_ :: [Int]
-  , _:_:_:id _:_ :: [Int]
-  , _:_:_:(_ ++ _) :: [Int]
-  , [_,_,x] :: [Int]
-  , _:_:x:_ :: [Int]
-  , _:_:x:xs :: [Int]
-  , _:_:x:_:_ :: [Int]
-  , _:_:y:_ :: [Int]
-  , _:_:ord _:_ :: [Int]
-  , _:_:abs _:_ :: [Int]
-  , _:_:id 0:_ :: [Int]
-  , [_,_,id _] :: [Int]
-  , _:_:id _:_ :: [Int]
-  , _:_:id _:xs :: [Int]
-  , _:_:id _:_:_ :: [Int]
-  , _:_:id x:_ :: [Int]
-  , _:_:id (id _):_ :: [Int]
-  , _:_:negate _:_ :: [Int]
-  , _:_:head _:_ :: [Int]
-  , _:_:_ + _:_ :: [Int]
-  , _:_:insert _ _ :: [Int]
-  , [_,_,] ++ _ :: [Int]
-  , _:_:(_ ++ []) :: [Int]
-  , _:_:(_ ++ _) :: [Int]
-  , _:_:(_ ++ xs) :: [Int]
-  , _:_:(_ ++ (_:_)) :: [Int]
-  , _:_:(xs ++ _) :: [Int]
-  , _:_:((_:_) ++ _) :: [Int]
-  , [_,x,0] :: [Int]
-  , [_,x] :: [Int]
-  , _:x:_ :: [Int]
-  , _:x:xs :: [Int]
-  , _:x:ys :: [Int]
-  , _:x:tail _ :: [Int]
-  , _:x:0:_ :: [Int]
-  , [_,x,_] :: [Int]
-  , _:x:_:_ :: [Int]
-  , _:x:_:xs :: [Int]
-  , _:x:_:_:_ :: [Int]
-  , _:x:x:_ :: [Int]
-  , _:x:id _:_ :: [Int]
-  , _:x:(_ ++ _) :: [Int]
-  , [_,y] :: [Int]
-  , _:y:_ :: [Int]
-  , _:y:xs :: [Int]
-  , _:y:_:_ :: [Int]
-  , _:z:_ :: [Int]
-  , _:ord 'a':_ :: [Int]
-  , [_,ord _] :: [Int]
-  , _:ord _:_ :: [Int]
-  , _:ord _:xs :: [Int]
-  , _:ord _:_:_ :: [Int]
-  , _:ord c:_ :: [Int]
-  , _:f _:_ :: [Int]
-  , _:abs 0:_ :: [Int]
-  , [_,abs _] :: [Int]
-  , _:abs _:_ :: [Int]
-  , _:abs _:xs :: [Int]
-  , _:abs _:_:_ :: [Int]
-  , _:abs x:_ :: [Int]
-  , _:abs (id _):_ :: [Int]
-  , [_,id 0] :: [Int]
-  , _:id 0:_ :: [Int]
-  , _:id 0:xs :: [Int]
-  , _:id 0:_:_ :: [Int]
-  , _:id 1:_ :: [Int]
-  , [_,id _,0] :: [Int]
-  , [_,id _] :: [Int]
-  , _:id _:_ :: [Int]
-  , _:id _:xs :: [Int]
-  , _:id _:ys :: [Int]
-  , _:id _:tail _ :: [Int]
-  , _:id _:0:_ :: [Int]
-  , [_,id _,_] :: [Int]
-  , _:id _:_:_ :: [Int]
-  , _:id _:_:xs :: [Int]
-  , _:id _:_:_:_ :: [Int]
-  , _:id _:x:_ :: [Int]
-  , _:id _:id _:_ :: [Int]
-  , _:id _:(_ ++ _) :: [Int]
-  , [_,id x] :: [Int]
-  , _:id x:_ :: [Int]
-  , _:id x:xs :: [Int]
-  , _:id x:_:_ :: [Int]
-  , _:id y:_ :: [Int]
-  , _:id (ord _):_ :: [Int]
-  , _:id (abs _):_ :: [Int]
-  , _:id (id 0):_ :: [Int]
-  , [_,id (id _)] :: [Int]
-  , _:id (id _):_ :: [Int]
-  , _:id (id _):xs :: [Int]
-  , _:id (id _):_:_ :: [Int]
-  , _:id (id x):_ :: [Int]
-  , _:id (id (id _)):_ :: [Int]
-  , _:id (negate _):_ :: [Int]
-  , _:id (head _):_ :: [Int]
-  , _:id (_ + _):_ :: [Int]
-  , _:negate 0:_ :: [Int]
-  , [_,negate _] :: [Int]
-  , _:negate _:_ :: [Int]
-  , _:negate _:xs :: [Int]
-  , _:negate _:_:_ :: [Int]
-  , _:negate x:_ :: [Int]
-  , _:negate (id _):_ :: [Int]
-  , _:head []:_ :: [Int]
-  , [_,head _] :: [Int]
-  , _:head _:_ :: [Int]
-  , _:head _:xs :: [Int]
-  , _:head _:_:_ :: [Int]
-  , _:head xs:_ :: [Int]
-  , _:head (_:_):_ :: [Int]
-  , _:_ * _:_ :: [Int]
-  , _:0 + _:_ :: [Int]
-  , _:_ + 0:_ :: [Int]
-  , [_,_ + _] :: [Int]
-  , _:_ + _:_ :: [Int]
-  , _:_ + _:xs :: [Int]
-  , _:_ + _:_:_ :: [Int]
-  , _:_ + x:_ :: [Int]
-  , _:_ + id _:_ :: [Int]
-  , _:x + _:_ :: [Int]
-  , _:id _ + _:_ :: [Int]
-  , _:insert 0 _ :: [Int]
-  , _:insert _ [] :: [Int]
-  , _:insert _ _ :: [Int]
-  , _:insert _ xs :: [Int]
-  , _:insert _ (_:_) :: [Int]
-  , _:insert x _ :: [Int]
-  , _:insert (id _) _ :: [Int]
-  , _:([0] ++ _) :: [Int]
-  , _:([] ++ []) :: [Int]
-  , _:([] ++ _) :: [Int]
-  , _:([] ++ xs) :: [Int]
-  , _:([] ++ (_:_)) :: [Int]
-  , _:(_ ++ [0]) :: [Int]
-  , _:(_ ++ []) :: [Int]
-  , _:(_ ++ _) :: [Int]
-  , _:(_ ++ xs) :: [Int]
-  , _:(_ ++ ys) :: [Int]
-  , _:(_ ++ tail _) :: [Int]
-  , _:(_ ++ (0:_)) :: [Int]
-  , _:(_ ++ [_]) :: [Int]
-  , _:(_ ++ (_:_)) :: [Int]
-  , _:(_ ++ (_:xs)) :: [Int]
-  , _:(_ ++ (_:_:_)) :: [Int]
-  , _:(_ ++ (x:_)) :: [Int]
-  , _:(_ ++ (id _:_)) :: [Int]
-  , _:(_ ++ (_ ++ _)) :: [Int]
-  , _:(xs ++ []) :: [Int]
-  , _:(xs ++ _) :: [Int]
-  , _:(xs ++ xs) :: [Int]
-  , _:(xs ++ (_:_)) :: [Int]
-  , _:(ys ++ _) :: [Int]
-  , _:(tail _ ++ _) :: [Int]
-  , _:((0:_) ++ _) :: [Int]
-  , _:([_] ++ _) :: [Int]
-  , _:((_:_) ++ []) :: [Int]
-  , _:((_:_) ++ _) :: [Int]
-  , _:((_:_) ++ xs) :: [Int]
-  , _:((_:_) ++ (_:_)) :: [Int]
-  , _:((_:xs) ++ _) :: [Int]
-  , _:((_:_:_) ++ _) :: [Int]
-  , _:((x:_) ++ _) :: [Int]
-  , _:((id _:_) ++ _) :: [Int]
-  , _:((_ ++ _) ++ _) :: [Int]
-  , [x,0,0] :: [Int]
-  , [x,0] :: [Int]
-  , [x,1] :: [Int]
-  , [x] :: [Int]
-  , x:_ :: [Int]
-  , x:xs :: [Int]
-  , x:ys :: [Int]
-  , x:zs :: [Int]
-  , x:sort _ :: [Int]
-  , x:tail [] :: [Int]
-  , x:tail _ :: [Int]
-  , x:tail xs :: [Int]
-  , x:tail (_:_) :: [Int]
-  , [x,0] :: [Int]
-  , x:0:_ :: [Int]
-  , x:0:xs :: [Int]
-  , x:0:_:_ :: [Int]
-  , x:1:_ :: [Int]
-  , [x,_,0] :: [Int]
-  , [x,_] :: [Int]
-  , x:_:_ :: [Int]
-  , x:_:xs :: [Int]
-  , x:_:ys :: [Int]
-  , x:_:tail _ :: [Int]
-  , x:_:0:_ :: [Int]
-  , [x,_,_] :: [Int]
-  , x:_:_:_ :: [Int]
-  , x:_:_:xs :: [Int]
-  , x:_:_:_:_ :: [Int]
-  , x:_:x:_ :: [Int]
-  , x:_:id _:_ :: [Int]
-  , x:_:(_ ++ _) :: [Int]
-  , [x,x] :: [Int]
-  , x:x:_ :: [Int]
-  , x:x:xs :: [Int]
-  , x:x:_:_ :: [Int]
-  , x:y:_ :: [Int]
-  , x:ord _:_ :: [Int]
-  , x:abs _:_ :: [Int]
-  , x:id 0:_ :: [Int]
-  , [x,id _] :: [Int]
-  , x:id _:_ :: [Int]
-  , x:id _:xs :: [Int]
-  , x:id _:_:_ :: [Int]
-  , x:id x:_ :: [Int]
-  , x:id (id _):_ :: [Int]
-  , x:negate _:_ :: [Int]
-  , x:head _:_ :: [Int]
-  , x:_ + _:_ :: [Int]
-  , x:insert _ _ :: [Int]
-  , x:([] ++ _) :: [Int]
-  , x:(_ ++ []) :: [Int]
-  , x:(_ ++ _) :: [Int]
-  , x:(_ ++ xs) :: [Int]
-  , x:(_ ++ (_:_)) :: [Int]
-  , x:(xs ++ _) :: [Int]
-  , x:((_:_) ++ _) :: [Int]
-  , x':_ :: [Int]
-  , [y,0] :: [Int]
-  , [y] :: [Int]
-  , y:_ :: [Int]
-  , y:xs :: [Int]
-  , y:ys :: [Int]
-  , y:tail _ :: [Int]
-  , y:0:_ :: [Int]
-  , [y,_] :: [Int]
-  , y:_:_ :: [Int]
-  , y:_:xs :: [Int]
-  , y:_:_:_ :: [Int]
-  , y:x:_ :: [Int]
-  , y:id _:_ :: [Int]
-  , y:(_ ++ _) :: [Int]
-  , [z] :: [Int]
-  , z:_ :: [Int]
-  , z:xs :: [Int]
-  , z:_:_ :: [Int]
-  , ord ' ':_ :: [Int]
-  , [ord 'a'] :: [Int]
-  , ord 'a':_ :: [Int]
-  , ord 'a':xs :: [Int]
-  , ord 'a':_:_ :: [Int]
-  , [ord _,0] :: [Int]
-  , [ord _] :: [Int]
-  , ord _:_ :: [Int]
-  , ord _:xs :: [Int]
-  , ord _:ys :: [Int]
-  , ord _:tail _ :: [Int]
-  , ord _:0:_ :: [Int]
-  , [ord _,_] :: [Int]
-  , ord _:_:_ :: [Int]
-  , ord _:_:xs :: [Int]
-  , ord _:_:_:_ :: [Int]
-  , ord _:x:_ :: [Int]
-  , ord _:id _:_ :: [Int]
-  , ord _:(_ ++ _) :: [Int]
-  , [ord c] :: [Int]
-  , ord c:_ :: [Int]
-  , ord c:xs :: [Int]
-  , ord c:_:_ :: [Int]
-  , ord d:_ :: [Int]
-  , f 0:_ :: [Int]
-  , [f _] :: [Int]
-  , f _:_ :: [Int]
-  , f _:xs :: [Int]
-  , f _:_:_ :: [Int]
-  , f x:_ :: [Int]
-  , f (id _):_ :: [Int]
-  , g _:_ :: [Int]
-  , [abs 0] :: [Int]
-  , abs 0:_ :: [Int]
-  , abs 0:xs :: [Int]
-  , abs 0:_:_ :: [Int]
-  , abs 1:_ :: [Int]
-  , [abs _,0] :: [Int]
-  , [abs _] :: [Int]
-  , abs _:_ :: [Int]
-  , abs _:xs :: [Int]
-  , abs _:ys :: [Int]
-  , abs _:tail _ :: [Int]
-  , abs _:0:_ :: [Int]
-  , [abs _,_] :: [Int]
-  , abs _:_:_ :: [Int]
-  , abs _:_:xs :: [Int]
-  , abs _:_:_:_ :: [Int]
-  , abs _:x:_ :: [Int]
-  , abs _:id _:_ :: [Int]
-  , abs _:(_ ++ _) :: [Int]
-  , [abs x] :: [Int]
-  , abs x:_ :: [Int]
-  , abs x:xs :: [Int]
-  , abs x:_:_ :: [Int]
-  , abs y:_ :: [Int]
-  , abs (ord _):_ :: [Int]
-  , abs (abs _):_ :: [Int]
-  , abs (id 0):_ :: [Int]
-  , [abs (id _)] :: [Int]
-  , abs (id _):_ :: [Int]
-  , abs (id _):xs :: [Int]
-  , abs (id _):_:_ :: [Int]
-  , abs (id x):_ :: [Int]
-  , abs (id (id _)):_ :: [Int]
-  , abs (negate _):_ :: [Int]
-  , abs (head _):_ :: [Int]
-  , abs (_ + _):_ :: [Int]
-  , id (-1):_ :: [Int]
-  , [id 0,0] :: [Int]
-  , [id 0] :: [Int]
-  , id 0:_ :: [Int]
-  , id 0:xs :: [Int]
-  , id 0:ys :: [Int]
-  , id 0:tail _ :: [Int]
-  , id 0:0:_ :: [Int]
-  , [id 0,_] :: [Int]
-  , id 0:_:_ :: [Int]
-  , id 0:_:xs :: [Int]
-  , id 0:_:_:_ :: [Int]
-  , id 0:x:_ :: [Int]
-  , id 0:id _:_ :: [Int]
-  , id 0:(_ ++ _) :: [Int]
-  , [id 1] :: [Int]
-  , id 1:_ :: [Int]
-  , id 1:xs :: [Int]
-  , id 1:_:_ :: [Int]
-  , [id _,0,0] :: [Int]
-  , [id _,0] :: [Int]
-  , [id _,1] :: [Int]
-  , [id _] :: [Int]
-  , id _:_ :: [Int]
-  , id _:xs :: [Int]
-  , id _:ys :: [Int]
-  , id _:zs :: [Int]
-  , id _:sort _ :: [Int]
-  , id _:tail [] :: [Int]
-  , id _:tail _ :: [Int]
-  , id _:tail xs :: [Int]
-  , id _:tail (_:_) :: [Int]
-  , [id _,0] :: [Int]
-  , id _:0:_ :: [Int]
-  , id _:0:xs :: [Int]
-  , id _:0:_:_ :: [Int]
-  , id _:1:_ :: [Int]
-  , [id _,_,0] :: [Int]
-  , [id _,_] :: [Int]
-  , id _:_:_ :: [Int]
-  , id _:_:xs :: [Int]
-  , id _:_:ys :: [Int]
-  , id _:_:tail _ :: [Int]
-  , id _:_:0:_ :: [Int]
-  , [id _,_,_] :: [Int]
-  , id _:_:_:_ :: [Int]
-  , id _:_:_:xs :: [Int]
-  , id _:_:_:_:_ :: [Int]
-  , id _:_:x:_ :: [Int]
-  , id _:_:id _:_ :: [Int]
-  , id _:_:(_ ++ _) :: [Int]
-  , [id _,x] :: [Int]
-  , id _:x:_ :: [Int]
-  , id _:x:xs :: [Int]
-  , id _:x:_:_ :: [Int]
-  , id _:y:_ :: [Int]
-  , id _:ord _:_ :: [Int]
-  , id _:abs _:_ :: [Int]
-  , id _:id 0:_ :: [Int]
-  , [id _,id _] :: [Int]
-  , id _:id _:_ :: [Int]
-  , id _:id _:xs :: [Int]
-  , id _:id _:_:_ :: [Int]
-  , id _:id x:_ :: [Int]
-  , id _:id (id _):_ :: [Int]
-  , id _:negate _:_ :: [Int]
-  , id _:head _:_ :: [Int]
-  , id _:_ + _:_ :: [Int]
-  , id _:insert _ _ :: [Int]
-  , id _:([] ++ _) :: [Int]
-  , id _:(_ ++ []) :: [Int]
-  , id _:(_ ++ _) :: [Int]
-  , id _:(_ ++ xs) :: [Int]
-  , id _:(_ ++ (_:_)) :: [Int]
-  , id _:(xs ++ _) :: [Int]
-  , id _:((_:_) ++ _) :: [Int]
-  , [id x,0] :: [Int]
-  , [id x] :: [Int]
-  , id x:_ :: [Int]
-  , id x:xs :: [Int]
-  , id x:ys :: [Int]
-  , id x:tail _ :: [Int]
-  , id x:0:_ :: [Int]
-  , [id x,_] :: [Int]
-  , id x:_:_ :: [Int]
-  , id x:_:xs :: [Int]
-  , id x:_:_:_ :: [Int]
-  , id x:x:_ :: [Int]
-  , id x:id _:_ :: [Int]
-  , id x:(_ ++ _) :: [Int]
-  , [id y] :: [Int]
-  , id y:_ :: [Int]
-  , id y:xs :: [Int]
-  , id y:_:_ :: [Int]
-  , id z:_ :: [Int]
-  , id (ord 'a'):_ :: [Int]
-  , [id (ord _)] :: [Int]
-  , id (ord _):_ :: [Int]
-  , id (ord _):xs :: [Int]
-  , id (ord _):_:_ :: [Int]
-  , id (ord c):_ :: [Int]
-  , id (f _):_ :: [Int]
-  , id (abs 0):_ :: [Int]
-  , [id (abs _)] :: [Int]
-  , id (abs _):_ :: [Int]
-  , id (abs _):xs :: [Int]
-  , id (abs _):_:_ :: [Int]
-  , id (abs x):_ :: [Int]
-  , id (abs (id _)):_ :: [Int]
-  , [id (id 0)] :: [Int]
-  , id (id 0):_ :: [Int]
-  , id (id 0):xs :: [Int]
-  , id (id 0):_:_ :: [Int]
-  , id (id 1):_ :: [Int]
-  , [id (id _),0] :: [Int]
-  , [id (id _)] :: [Int]
-  , id (id _):_ :: [Int]
-  , id (id _):xs :: [Int]
-  , id (id _):ys :: [Int]
-  , id (id _):tail _ :: [Int]
-  , id (id _):0:_ :: [Int]
-  , [id (id _),_] :: [Int]
-  , id (id _):_:_ :: [Int]
-  , id (id _):_:xs :: [Int]
-  , id (id _):_:_:_ :: [Int]
-  , id (id _):x:_ :: [Int]
-  , id (id _):id _:_ :: [Int]
-  , id (id _):(_ ++ _) :: [Int]
-  , [id (id x)] :: [Int]
-  , id (id x):_ :: [Int]
-  , id (id x):xs :: [Int]
-  , id (id x):_:_ :: [Int]
-  , id (id y):_ :: [Int]
-  , id (id (ord _)):_ :: [Int]
-  , id (id (abs _)):_ :: [Int]
-  , id (id (id 0)):_ :: [Int]
-  , [id (id (id _))] :: [Int]
-  , id (id (id _)):_ :: [Int]
-  , id (id (id _)):xs :: [Int]
-  , id (id (id _)):_:_ :: [Int]
-  , id (id (id x)):_ :: [Int]
-  , id (id (id (id _))):_ :: [Int]
-  , id (id (negate _)):_ :: [Int]
-  , id (id (head _)):_ :: [Int]
-  , id (id (_ + _)):_ :: [Int]
-  , id (negate 0):_ :: [Int]
-  , [id (negate _)] :: [Int]
-  , id (negate _):_ :: [Int]
-  , id (negate _):xs :: [Int]
-  , id (negate _):_:_ :: [Int]
-  , id (negate x):_ :: [Int]
-  , id (negate (id _)):_ :: [Int]
-  , id (head []):_ :: [Int]
-  , [id (head _)] :: [Int]
-  , id (head _):_ :: [Int]
-  , id (head _):xs :: [Int]
-  , id (head _):_:_ :: [Int]
-  , id (head xs):_ :: [Int]
-  , id (head (_:_)):_ :: [Int]
-  , id (_ * _):_ :: [Int]
-  , id (0 + _):_ :: [Int]
-  , id (_ + 0):_ :: [Int]
-  , [id (_ + _)] :: [Int]
-  , id (_ + _):_ :: [Int]
-  , id (_ + _):xs :: [Int]
-  , id (_ + _):_:_ :: [Int]
-  , id (_ + x):_ :: [Int]
-  , id (_ + id _):_ :: [Int]
-  , id (x + _):_ :: [Int]
-  , id (id _ + _):_ :: [Int]
-  , [negate 0] :: [Int]
-  , negate 0:_ :: [Int]
-  , negate 0:xs :: [Int]
-  , negate 0:_:_ :: [Int]
-  , negate 1:_ :: [Int]
-  , [negate _,0] :: [Int]
-  , [negate _] :: [Int]
-  , negate _:_ :: [Int]
-  , negate _:xs :: [Int]
-  , negate _:ys :: [Int]
-  , negate _:tail _ :: [Int]
-  , negate _:0:_ :: [Int]
-  , [negate _,_] :: [Int]
-  , negate _:_:_ :: [Int]
-  , negate _:_:xs :: [Int]
-  , negate _:_:_:_ :: [Int]
-  , negate _:x:_ :: [Int]
-  , negate _:id _:_ :: [Int]
-  , negate _:(_ ++ _) :: [Int]
-  , [negate x] :: [Int]
-  , negate x:_ :: [Int]
-  , negate x:xs :: [Int]
-  , negate x:_:_ :: [Int]
-  , negate y:_ :: [Int]
-  , negate (ord _):_ :: [Int]
-  , negate (abs _):_ :: [Int]
-  , negate (id 0):_ :: [Int]
-  , [negate (id _)] :: [Int]
-  , negate (id _):_ :: [Int]
-  , negate (id _):xs :: [Int]
-  , negate (id _):_:_ :: [Int]
-  , negate (id x):_ :: [Int]
-  , negate (id (id _)):_ :: [Int]
-  , negate (negate _):_ :: [Int]
-  , negate (head _):_ :: [Int]
-  , negate (_ + _):_ :: [Int]
-  , head [0]:_ :: [Int]
-  , [head []] :: [Int]
-  , head []:_ :: [Int]
-  , head []:xs :: [Int]
-  , head []:_:_ :: [Int]
-  , [head _,0] :: [Int]
-  , [head _] :: [Int]
-  , head _:_ :: [Int]
-  , head _:xs :: [Int]
-  , head _:ys :: [Int]
-  , head _:tail _ :: [Int]
-  , head _:0:_ :: [Int]
-  , [head _,_] :: [Int]
-  , head _:_:_ :: [Int]
-  , head _:_:xs :: [Int]
-  , head _:_:_:_ :: [Int]
-  , head _:x:_ :: [Int]
-  , head _:id _:_ :: [Int]
-  , head _:(_ ++ _) :: [Int]
-  , [head xs] :: [Int]
-  , head xs:_ :: [Int]
-  , head xs:xs :: [Int]
-  , head xs:_:_ :: [Int]
-  , head ys:_ :: [Int]
-  , head (tail _):_ :: [Int]
-  , head (0:_):_ :: [Int]
-  , head [_]:_ :: [Int]
-  , [head (_:_)] :: [Int]
-  , head (_:_):_ :: [Int]
-  , head (_:_):xs :: [Int]
-  , head (_:_):_:_ :: [Int]
-  , head (_:xs):_ :: [Int]
-  , head (_:_:_):_ :: [Int]
-  , head (x:_):_ :: [Int]
-  , head (id _:_):_ :: [Int]
-  , head (_ ++ _):_ :: [Int]
-  , 0 * _:_ :: [Int]
-  , _ * 0:_ :: [Int]
-  , [_ * _] :: [Int]
-  , _ * _:_ :: [Int]
-  , _ * _:xs :: [Int]
-  , _ * _:_:_ :: [Int]
-  , _ * x:_ :: [Int]
-  , _ * id _:_ :: [Int]
-  , x * _:_ :: [Int]
-  , id _ * _:_ :: [Int]
-  , 0 + 0:_ :: [Int]
-  , [0 + _] :: [Int]
-  , 0 + _:_ :: [Int]
-  , 0 + _:xs :: [Int]
-  , 0 + _:_:_ :: [Int]
-  , 0 + x:_ :: [Int]
-  , 0 + id _:_ :: [Int]
-  , 1 + _:_ :: [Int]
-  , [_ + 0] :: [Int]
-  , _ + 0:_ :: [Int]
-  , _ + 0:xs :: [Int]
-  , _ + 0:_:_ :: [Int]
-  , _ + 1:_ :: [Int]
-  , [_ + _,0] :: [Int]
-  , [_ + _] :: [Int]
-  , _ + _:_ :: [Int]
-  , _ + _:xs :: [Int]
-  , _ + _:ys :: [Int]
-  , _ + _:tail _ :: [Int]
-  , _ + _:0:_ :: [Int]
-  , [_ + _,_] :: [Int]
-  , _ + _:_:_ :: [Int]
-  , _ + _:_:xs :: [Int]
-  , _ + _:_:_:_ :: [Int]
-  , _ + _:x:_ :: [Int]
-  , _ + _:id _:_ :: [Int]
-  , _ + _:(_ ++ _) :: [Int]
-  , [_ + x] :: [Int]
-  , _ + x:_ :: [Int]
-  , _ + x:xs :: [Int]
-  , _ + x:_:_ :: [Int]
-  , _ + y:_ :: [Int]
-  , _ + ord _:_ :: [Int]
-  , _ + abs _:_ :: [Int]
-  , _ + id 0:_ :: [Int]
-  , [_ + id _] :: [Int]
-  , _ + id _:_ :: [Int]
-  , _ + id _:xs :: [Int]
-  , _ + id _:_:_ :: [Int]
-  , _ + id x:_ :: [Int]
-  , _ + id (id _):_ :: [Int]
-  , _ + negate _:_ :: [Int]
-  , _ + head _:_ :: [Int]
-  , _ + (_ + _):_ :: [Int]
-  , x + 0:_ :: [Int]
-  , [x + _] :: [Int]
-  , x + _:_ :: [Int]
-  , x + _:xs :: [Int]
-  , x + _:_:_ :: [Int]
-  , x + x:_ :: [Int]
-  , x + id _:_ :: [Int]
-  , y + _:_ :: [Int]
-  , ord _ + _:_ :: [Int]
-  , abs _ + _:_ :: [Int]
-  , id 0 + _:_ :: [Int]
-  , id _ + 0:_ :: [Int]
-  , [id _ + _] :: [Int]
-  , id _ + _:_ :: [Int]
-  , id _ + _:xs :: [Int]
-  , id _ + _:_:_ :: [Int]
-  , id _ + x:_ :: [Int]
-  , id _ + id _:_ :: [Int]
-  , id x + _:_ :: [Int]
-  , id (id _) + _:_ :: [Int]
-  , negate _ + _:_ :: [Int]
-  , head _ + _:_ :: [Int]
-  , (_ + _) + _:_ :: [Int]
-  , insert 0 [] :: [Int]
-  , insert 0 _ :: [Int]
-  , insert 0 xs :: [Int]
-  , insert 0 (_:_) :: [Int]
-  , insert 1 _ :: [Int]
-  , insert _ [0] :: [Int]
-  , insert _ [] :: [Int]
-  , insert _ _ :: [Int]
-  , insert _ xs :: [Int]
-  , insert _ ys :: [Int]
-  , insert _ (tail _) :: [Int]
-  , insert _ (0:_) :: [Int]
-  , insert _ [_] :: [Int]
-  , insert _ (_:_) :: [Int]
-  , insert _ (_:xs) :: [Int]
-  , insert _ (_:_:_) :: [Int]
-  , insert _ (x:_) :: [Int]
-  , insert _ (id _:_) :: [Int]
-  , insert _ (_ ++ _) :: [Int]
-  , insert x [] :: [Int]
-  , insert x _ :: [Int]
-  , insert x xs :: [Int]
-  , insert x (_:_) :: [Int]
-  , insert y _ :: [Int]
-  , insert (ord _) _ :: [Int]
-  , insert (abs _) _ :: [Int]
-  , insert (id 0) _ :: [Int]
-  , insert (id _) [] :: [Int]
-  , insert (id _) _ :: [Int]
-  , insert (id _) xs :: [Int]
-  , insert (id _) (_:_) :: [Int]
-  , insert (id x) _ :: [Int]
-  , insert (id (id _)) _ :: [Int]
-  , insert (negate _) _ :: [Int]
-  , insert (head _) _ :: [Int]
-  , insert (_ + _) _ :: [Int]
-  , [0,0] ++ _ :: [Int]
-  , [0] ++ [] :: [Int]
-  , [0] ++ _ :: [Int]
-  , [0] ++ xs :: [Int]
-  , [0] ++ (_:_) :: [Int]
-  , [1] ++ _ :: [Int]
-  , [] ++ [0] :: [Int]
-  , [] ++ [] :: [Int]
-  , [] ++ _ :: [Int]
-  , [] ++ xs :: [Int]
-  , [] ++ ys :: [Int]
-  , [] ++ tail _ :: [Int]
-  , [] ++ (0:_) :: [Int]
-  , [] ++ [_] :: [Int]
-  , [] ++ (_:_) :: [Int]
-  , [] ++ (_:xs) :: [Int]
-  , [] ++ (_:_:_) :: [Int]
-  , [] ++ (x:_) :: [Int]
-  , [] ++ (id _:_) :: [Int]
-  , [] ++ (_ ++ _) :: [Int]
-  , _ ++ [0,0] :: [Int]
-  , _ ++ [0] :: [Int]
-  , _ ++ [1] :: [Int]
-  , _ ++ [] :: [Int]
-  , _ ++ _ :: [Int]
-  , _ ++ xs :: [Int]
-  , _ ++ ys :: [Int]
-  , _ ++ zs :: [Int]
-  , _ ++ sort _ :: [Int]
-  , _ ++ tail [] :: [Int]
-  , _ ++ tail _ :: [Int]
-  , _ ++ tail xs :: [Int]
-  , _ ++ tail (_:_) :: [Int]
-  , _ ++ [0] :: [Int]
-  , _ ++ (0:_) :: [Int]
-  , _ ++ (0:xs) :: [Int]
-  , _ ++ (0:_:_) :: [Int]
-  , _ ++ (1:_) :: [Int]
-  , _ ++ [_,0] :: [Int]
-  , _ ++ [_] :: [Int]
-  , _ ++ (_:_) :: [Int]
-  , _ ++ (_:xs) :: [Int]
-  , _ ++ (_:ys) :: [Int]
-  , _ ++ (_:tail _) :: [Int]
-  , _ ++ (_:0:_) :: [Int]
-  , _ ++ [_,_] :: [Int]
-  , _ ++ (_:_:_) :: [Int]
-  , _ ++ (_:_:xs) :: [Int]
-  , _ ++ (_:_:_:_) :: [Int]
-  , _ ++ (_:x:_) :: [Int]
-  , _ ++ (_:id _:_) :: [Int]
-  , _ ++ (_:(_ ++ _)) :: [Int]
-  , _ ++ [x] :: [Int]
-  , _ ++ (x:_) :: [Int]
-  , _ ++ (x:xs) :: [Int]
-  , _ ++ (x:_:_) :: [Int]
-  , _ ++ (y:_) :: [Int]
-  , _ ++ (ord _:_) :: [Int]
-  , _ ++ (abs _:_) :: [Int]
-  , _ ++ (id 0:_) :: [Int]
-  , _ ++ [id _] :: [Int]
-  , _ ++ (id _:_) :: [Int]
-  , _ ++ (id _:xs) :: [Int]
-  , _ ++ (id _:_:_) :: [Int]
-  , _ ++ (id x:_) :: [Int]
-  , _ ++ (id (id _):_) :: [Int]
-  , _ ++ (negate _:_) :: [Int]
-  , _ ++ (head _:_) :: [Int]
-  , _ ++ (_ + _:_) :: [Int]
-  , _ ++ insert _ _ :: [Int]
-  , _ ++ ([] ++ _) :: [Int]
-  , _ ++ (_ ++ []) :: [Int]
-  , _ ++ (_ ++ _) :: [Int]
-  , _ ++ (_ ++ xs) :: [Int]
-  , _ ++ (_ ++ (_:_)) :: [Int]
-  , _ ++ (xs ++ _) :: [Int]
-  , _ ++ ((_:_) ++ _) :: [Int]
-  , xs ++ [0] :: [Int]
-  , xs ++ [] :: [Int]
-  , xs ++ _ :: [Int]
-  , xs ++ xs :: [Int]
-  , xs ++ ys :: [Int]
-  , xs ++ tail _ :: [Int]
-  , xs ++ (0:_) :: [Int]
-  , xs ++ [_] :: [Int]
-  , xs ++ (_:_) :: [Int]
-  , xs ++ (_:xs) :: [Int]
-  , xs ++ (_:_:_) :: [Int]
-  , xs ++ (x:_) :: [Int]
-  , xs ++ (id _:_) :: [Int]
-  , xs ++ (_ ++ _) :: [Int]
-  , ys ++ [] :: [Int]
-  , ys ++ _ :: [Int]
-  , ys ++ xs :: [Int]
-  , ys ++ (_:_) :: [Int]
-  , zs ++ _ :: [Int]
-  , sort _ ++ _ :: [Int]
-  , tail [] ++ _ :: [Int]
-  , tail _ ++ [] :: [Int]
-  , tail _ ++ _ :: [Int]
-  , tail _ ++ xs :: [Int]
-  , tail _ ++ (_:_) :: [Int]
-  , tail xs ++ _ :: [Int]
-  , tail (_:_) ++ _ :: [Int]
-  , [0] ++ _ :: [Int]
-  , (0:_) ++ [] :: [Int]
-  , (0:_) ++ _ :: [Int]
-  , (0:_) ++ xs :: [Int]
-  , (0:_) ++ (_:_) :: [Int]
-  , (0:xs) ++ _ :: [Int]
-  , (0:_:_) ++ _ :: [Int]
-  , (1:_) ++ _ :: [Int]
-  , [_,0] ++ _ :: [Int]
-  , [_] ++ [] :: [Int]
-  , [_] ++ _ :: [Int]
-  , [_] ++ xs :: [Int]
-  , [_] ++ (_:_) :: [Int]
-  , (_:_) ++ [0] :: [Int]
-  , (_:_) ++ [] :: [Int]
-  , (_:_) ++ _ :: [Int]
-  , (_:_) ++ xs :: [Int]
-  , (_:_) ++ ys :: [Int]
-  , (_:_) ++ tail _ :: [Int]
-  , (_:_) ++ (0:_) :: [Int]
-  , (_:_) ++ [_] :: [Int]
-  , (_:_) ++ (_:_) :: [Int]
-  , (_:_) ++ (_:xs) :: [Int]
-  , (_:_) ++ (_:_:_) :: [Int]
-  , (_:_) ++ (x:_) :: [Int]
-  , (_:_) ++ (id _:_) :: [Int]
-  , (_:_) ++ (_ ++ _) :: [Int]
-  , (_:xs) ++ [] :: [Int]
-  , (_:xs) ++ _ :: [Int]
-  , (_:xs) ++ xs :: [Int]
-  , (_:xs) ++ (_:_) :: [Int]
-  , (_:ys) ++ _ :: [Int]
-  , (_:tail _) ++ _ :: [Int]
-  , (_:0:_) ++ _ :: [Int]
-  , [_,_] ++ _ :: [Int]
-  , (_:_:_) ++ [] :: [Int]
-  , (_:_:_) ++ _ :: [Int]
-  , (_:_:_) ++ xs :: [Int]
-  , (_:_:_) ++ (_:_) :: [Int]
-  , (_:_:xs) ++ _ :: [Int]
-  , (_:_:_:_) ++ _ :: [Int]
-  , (_:x:_) ++ _ :: [Int]
-  , (_:id _:_) ++ _ :: [Int]
-  , (_:(_ ++ _)) ++ _ :: [Int]
-  , [x] ++ _ :: [Int]
-  , (x:_) ++ [] :: [Int]
-  , (x:_) ++ _ :: [Int]
-  , (x:_) ++ xs :: [Int]
-  , (x:_) ++ (_:_) :: [Int]
-  , (x:xs) ++ _ :: [Int]
-  , (x:_:_) ++ _ :: [Int]
-  , (y:_) ++ _ :: [Int]
-  , (ord _:_) ++ _ :: [Int]
-  , (abs _:_) ++ _ :: [Int]
-  , (id 0:_) ++ _ :: [Int]
-  , [id _] ++ _ :: [Int]
-  , (id _:_) ++ [] :: [Int]
-  , (id _:_) ++ _ :: [Int]
-  , (id _:_) ++ xs :: [Int]
-  , (id _:_) ++ (_:_) :: [Int]
-  , (id _:xs) ++ _ :: [Int]
-  , (id _:_:_) ++ _ :: [Int]
-  , (id x:_) ++ _ :: [Int]
-  , (id (id _):_) ++ _ :: [Int]
-  , (negate _:_) ++ _ :: [Int]
-  , (head _:_) ++ _ :: [Int]
-  , (_ + _:_) ++ _ :: [Int]
-  , insert _ _ ++ _ :: [Int]
-  , ([] ++ _) ++ _ :: [Int]
-  , (_ ++ []) ++ _ :: [Int]
-  , (_ ++ _) ++ [] :: [Int]
-  , (_ ++ _) ++ _ :: [Int]
-  , (_ ++ _) ++ xs :: [Int]
-  , (_ ++ _) ++ (_:_) :: [Int]
-  , (_ ++ xs) ++ _ :: [Int]
-  , (_ ++ (_:_)) ++ _ :: [Int]
-  , (xs ++ _) ++ _ :: [Int]
-  , ((_:_) ++ _) ++ _ :: [Int]
-  ]
-
diff --git a/test/model/bench/tiers.out b/test/model/bench/tiers.out
deleted file mode 100644
--- a/test/model/bench/tiers.out
+++ /dev/null
@@ -1,3624 +0,0 @@
-isNub (list :: [Expr])  =  True
-map length (tiers :: [[ Expr ]])  =  [1,6,21,55,177,674,2679,11128,47899,...]
-tiers :: [[ Expr ]]  =
-  [ [_ :: Int]
-  , [ x :: Int
-    , 0 :: Int
-    , id _ :: Int
-    , _ :: Bool
-    , _ :: Char
-    , _ :: [Int]
-    ]
-  , [ y :: Int
-    , 1 :: Int
-    , id x :: Int
-    , id 0 :: Int
-    , id (id _) :: Int
-    , negate _ :: Int
-    , abs _ :: Int
-    , _ + _ :: Int
-    , head _ :: Int
-    , ord _ :: Int
-    , p :: Bool
-    , False :: Bool
-    , True :: Bool
-    , not _ :: Bool
-    , c :: Char
-    , 'a' :: Char
-    , xs :: [Int]
-    , [] :: [Int]
-    , _:_ :: [Int]
-    , id :: Int -> Int
-    , (+) :: Int -> Int -> Int
-    ]
-  , [ z :: Int
-    , -1 :: Int
-    , id y :: Int
-    , id 1 :: Int
-    , id (id x) :: Int
-    , id (id 0) :: Int
-    , id (id (id _)) :: Int
-    , id (negate _) :: Int
-    , id (abs _) :: Int
-    , id (_ + _) :: Int
-    , id (head _) :: Int
-    , id (ord _) :: Int
-    , negate x :: Int
-    , negate 0 :: Int
-    , negate (id _) :: Int
-    , abs x :: Int
-    , abs 0 :: Int
-    , abs (id _) :: Int
-    , _ + x :: Int
-    , _ + 0 :: Int
-    , _ + id _ :: Int
-    , x + _ :: Int
-    , 0 + _ :: Int
-    , id _ + _ :: Int
-    , _ * _ :: Int
-    , f _ :: Int
-    , head xs :: Int
-    , head [] :: Int
-    , head (_:_) :: Int
-    , ord c :: Int
-    , ord 'a' :: Int
-    , q :: Bool
-    , not p :: Bool
-    , not False :: Bool
-    , not True :: Bool
-    , not (not _) :: Bool
-    , _ || _ :: Bool
-    , d :: Char
-    , ' ' :: Char
-    , ys :: [Int]
-    , [0] :: [Int]
-    , _:xs :: [Int]
-    , [_] :: [Int]
-    , _:_:_ :: [Int]
-    , x:_ :: [Int]
-    , 0:_ :: [Int]
-    , id _:_ :: [Int]
-    , tail _ :: [Int]
-    , _ ++ _ :: [Int]
-    , negate :: Int -> Int
-    , abs :: Int -> Int
-    , (_ +) :: Int -> Int
-    , (*) :: Int -> Int -> Int
-    , not :: Bool -> Bool
-    , (||) :: Bool -> Bool -> Bool
-    ]
-  , [ x' :: Int
-    , 2 :: Int
-    , id z :: Int
-    , id (-1) :: Int
-    , id (id y) :: Int
-    , id (id 1) :: Int
-    , id (id (id x)) :: Int
-    , id (id (id 0)) :: Int
-    , id (id (id (id _))) :: Int
-    , id (id (negate _)) :: Int
-    , id (id (abs _)) :: Int
-    , id (id (_ + _)) :: Int
-    , id (id (head _)) :: Int
-    , id (id (ord _)) :: Int
-    , id (negate x) :: Int
-    , id (negate 0) :: Int
-    , id (negate (id _)) :: Int
-    , id (abs x) :: Int
-    , id (abs 0) :: Int
-    , id (abs (id _)) :: Int
-    , id (_ + x) :: Int
-    , id (_ + 0) :: Int
-    , id (_ + id _) :: Int
-    , id (x + _) :: Int
-    , id (0 + _) :: Int
-    , id (id _ + _) :: Int
-    , id (_ * _) :: Int
-    , id (f _) :: Int
-    , id (head xs) :: Int
-    , id (head []) :: Int
-    , id (head (_:_)) :: Int
-    , id (ord c) :: Int
-    , id (ord 'a') :: Int
-    , negate y :: Int
-    , negate 1 :: Int
-    , negate (id x) :: Int
-    , negate (id 0) :: Int
-    , negate (id (id _)) :: Int
-    , negate (negate _) :: Int
-    , negate (abs _) :: Int
-    , negate (_ + _) :: Int
-    , negate (head _) :: Int
-    , negate (ord _) :: Int
-    , abs y :: Int
-    , abs 1 :: Int
-    , abs (id x) :: Int
-    , abs (id 0) :: Int
-    , abs (id (id _)) :: Int
-    , abs (negate _) :: Int
-    , abs (abs _) :: Int
-    , abs (_ + _) :: Int
-    , abs (head _) :: Int
-    , abs (ord _) :: Int
-    , _ + y :: Int
-    , _ + 1 :: Int
-    , _ + id x :: Int
-    , _ + id 0 :: Int
-    , _ + id (id _) :: Int
-    , _ + negate _ :: Int
-    , _ + abs _ :: Int
-    , _ + (_ + _) :: Int
-    , _ + head _ :: Int
-    , _ + ord _ :: Int
-    , x + x :: Int
-    , x + 0 :: Int
-    , x + id _ :: Int
-    , 0 + x :: Int
-    , 0 + 0 :: Int
-    , 0 + id _ :: Int
-    , id _ + x :: Int
-    , id _ + 0 :: Int
-    , id _ + id _ :: Int
-    , _ * x :: Int
-    , _ * 0 :: Int
-    , _ * id _ :: Int
-    , f x :: Int
-    , f 0 :: Int
-    , f (id _) :: Int
-    , y + _ :: Int
-    , 1 + _ :: Int
-    , id x + _ :: Int
-    , id 0 + _ :: Int
-    , id (id _) + _ :: Int
-    , negate _ + _ :: Int
-    , abs _ + _ :: Int
-    , (_ + _) + _ :: Int
-    , head _ + _ :: Int
-    , ord _ + _ :: Int
-    , x * _ :: Int
-    , 0 * _ :: Int
-    , id _ * _ :: Int
-    , g _ :: Int
-    , head ys :: Int
-    , head [0] :: Int
-    , head (_:xs) :: Int
-    , head [_] :: Int
-    , head (_:_:_) :: Int
-    , head (x:_) :: Int
-    , head (0:_) :: Int
-    , head (id _:_) :: Int
-    , head (tail _) :: Int
-    , head (_ ++ _) :: Int
-    , ord d :: Int
-    , ord ' ' :: Int
-    , r :: Bool
-    , not q :: Bool
-    , not (not p) :: Bool
-    , not (not False) :: Bool
-    , not (not True) :: Bool
-    , not (not (not _)) :: Bool
-    , not (_ || _) :: Bool
-    , _ || p :: Bool
-    , _ || False :: Bool
-    , _ || True :: Bool
-    , _ || not _ :: Bool
-    , p || _ :: Bool
-    , False || _ :: Bool
-    , True || _ :: Bool
-    , not _ || _ :: Bool
-    , _ && _ :: Bool
-    , _ == _ :: Bool
-    , _ == _ :: Bool
-    , odd _ :: Bool
-    , even _ :: Bool
-    , elem _ _ :: Bool
-    , e :: Char
-    , 'b' :: Char
-    , zs :: [Int]
-    , [0,0] :: [Int]
-    , [1] :: [Int]
-    , _:ys :: [Int]
-    , [_,0] :: [Int]
-    , _:_:xs :: [Int]
-    , [_,_] :: [Int]
-    , _:_:_:_ :: [Int]
-    , _:x:_ :: [Int]
-    , _:0:_ :: [Int]
-    , _:id _:_ :: [Int]
-    , _:tail _ :: [Int]
-    , _:(_ ++ _) :: [Int]
-    , x:xs :: [Int]
-    , [x] :: [Int]
-    , x:_:_ :: [Int]
-    , 0:xs :: [Int]
-    , [0] :: [Int]
-    , 0:_:_ :: [Int]
-    , id _:xs :: [Int]
-    , [id _] :: [Int]
-    , id _:_:_ :: [Int]
-    , y:_ :: [Int]
-    , 1:_ :: [Int]
-    , id x:_ :: [Int]
-    , id 0:_ :: [Int]
-    , id (id _):_ :: [Int]
-    , negate _:_ :: [Int]
-    , abs _:_ :: [Int]
-    , _ + _:_ :: [Int]
-    , head _:_ :: [Int]
-    , ord _:_ :: [Int]
-    , tail xs :: [Int]
-    , tail [] :: [Int]
-    , tail (_:_) :: [Int]
-    , _ ++ xs :: [Int]
-    , _ ++ [] :: [Int]
-    , _ ++ (_:_) :: [Int]
-    , xs ++ _ :: [Int]
-    , [] ++ _ :: [Int]
-    , (_:_) ++ _ :: [Int]
-    , sort _ :: [Int]
-    , insert _ _ :: [Int]
-    , (x +) :: Int -> Int
-    , (0 +) :: Int -> Int
-    , (id _ +) :: Int -> Int
-    , (_ *) :: Int -> Int
-    , f :: Int -> Int
-    , (_ ||) :: Bool -> Bool
-    , (&&) :: Bool -> Bool -> Bool
-    ]
-  , [ y' :: Int
-    , -2 :: Int
-    , id x' :: Int
-    , id 2 :: Int
-    , id (id z) :: Int
-    , id (id (-1)) :: Int
-    , id (id (id y)) :: Int
-    , id (id (id 1)) :: Int
-    , id (id (id (id x))) :: Int
-    , id (id (id (id 0))) :: Int
-    , id (id (id (id (id _)))) :: Int
-    , id (id (id (negate _))) :: Int
-    , id (id (id (abs _))) :: Int
-    , id (id (id (_ + _))) :: Int
-    , id (id (id (head _))) :: Int
-    , id (id (id (ord _))) :: Int
-    , id (id (negate x)) :: Int
-    , id (id (negate 0)) :: Int
-    , id (id (negate (id _))) :: Int
-    , id (id (abs x)) :: Int
-    , id (id (abs 0)) :: Int
-    , id (id (abs (id _))) :: Int
-    , id (id (_ + x)) :: Int
-    , id (id (_ + 0)) :: Int
-    , id (id (_ + id _)) :: Int
-    , id (id (x + _)) :: Int
-    , id (id (0 + _)) :: Int
-    , id (id (id _ + _)) :: Int
-    , id (id (_ * _)) :: Int
-    , id (id (f _)) :: Int
-    , id (id (head xs)) :: Int
-    , id (id (head [])) :: Int
-    , id (id (head (_:_))) :: Int
-    , id (id (ord c)) :: Int
-    , id (id (ord 'a')) :: Int
-    , id (negate y) :: Int
-    , id (negate 1) :: Int
-    , id (negate (id x)) :: Int
-    , id (negate (id 0)) :: Int
-    , id (negate (id (id _))) :: Int
-    , id (negate (negate _)) :: Int
-    , id (negate (abs _)) :: Int
-    , id (negate (_ + _)) :: Int
-    , id (negate (head _)) :: Int
-    , id (negate (ord _)) :: Int
-    , id (abs y) :: Int
-    , id (abs 1) :: Int
-    , id (abs (id x)) :: Int
-    , id (abs (id 0)) :: Int
-    , id (abs (id (id _))) :: Int
-    , id (abs (negate _)) :: Int
-    , id (abs (abs _)) :: Int
-    , id (abs (_ + _)) :: Int
-    , id (abs (head _)) :: Int
-    , id (abs (ord _)) :: Int
-    , id (_ + y) :: Int
-    , id (_ + 1) :: Int
-    , id (_ + id x) :: Int
-    , id (_ + id 0) :: Int
-    , id (_ + id (id _)) :: Int
-    , id (_ + negate _) :: Int
-    , id (_ + abs _) :: Int
-    , id (_ + (_ + _)) :: Int
-    , id (_ + head _) :: Int
-    , id (_ + ord _) :: Int
-    , id (x + x) :: Int
-    , id (x + 0) :: Int
-    , id (x + id _) :: Int
-    , id (0 + x) :: Int
-    , id (0 + 0) :: Int
-    , id (0 + id _) :: Int
-    , id (id _ + x) :: Int
-    , id (id _ + 0) :: Int
-    , id (id _ + id _) :: Int
-    , id (_ * x) :: Int
-    , id (_ * 0) :: Int
-    , id (_ * id _) :: Int
-    , id (f x) :: Int
-    , id (f 0) :: Int
-    , id (f (id _)) :: Int
-    , id (y + _) :: Int
-    , id (1 + _) :: Int
-    , id (id x + _) :: Int
-    , id (id 0 + _) :: Int
-    , id (id (id _) + _) :: Int
-    , id (negate _ + _) :: Int
-    , id (abs _ + _) :: Int
-    , id ((_ + _) + _) :: Int
-    , id (head _ + _) :: Int
-    , id (ord _ + _) :: Int
-    , id (x * _) :: Int
-    , id (0 * _) :: Int
-    , id (id _ * _) :: Int
-    , id (g _) :: Int
-    , id (head ys) :: Int
-    , id (head [0]) :: Int
-    , id (head (_:xs)) :: Int
-    , id (head [_]) :: Int
-    , id (head (_:_:_)) :: Int
-    , id (head (x:_)) :: Int
-    , id (head (0:_)) :: Int
-    , id (head (id _:_)) :: Int
-    , id (head (tail _)) :: Int
-    , id (head (_ ++ _)) :: Int
-    , id (ord d) :: Int
-    , id (ord ' ') :: Int
-    , negate z :: Int
-    , negate (-1) :: Int
-    , negate (id y) :: Int
-    , negate (id 1) :: Int
-    , negate (id (id x)) :: Int
-    , negate (id (id 0)) :: Int
-    , negate (id (id (id _))) :: Int
-    , negate (id (negate _)) :: Int
-    , negate (id (abs _)) :: Int
-    , negate (id (_ + _)) :: Int
-    , negate (id (head _)) :: Int
-    , negate (id (ord _)) :: Int
-    , negate (negate x) :: Int
-    , negate (negate 0) :: Int
-    , negate (negate (id _)) :: Int
-    , negate (abs x) :: Int
-    , negate (abs 0) :: Int
-    , negate (abs (id _)) :: Int
-    , negate (_ + x) :: Int
-    , negate (_ + 0) :: Int
-    , negate (_ + id _) :: Int
-    , negate (x + _) :: Int
-    , negate (0 + _) :: Int
-    , negate (id _ + _) :: Int
-    , negate (_ * _) :: Int
-    , negate (f _) :: Int
-    , negate (head xs) :: Int
-    , negate (head []) :: Int
-    , negate (head (_:_)) :: Int
-    , negate (ord c) :: Int
-    , negate (ord 'a') :: Int
-    , abs z :: Int
-    , abs (-1) :: Int
-    , abs (id y) :: Int
-    , abs (id 1) :: Int
-    , abs (id (id x)) :: Int
-    , abs (id (id 0)) :: Int
-    , abs (id (id (id _))) :: Int
-    , abs (id (negate _)) :: Int
-    , abs (id (abs _)) :: Int
-    , abs (id (_ + _)) :: Int
-    , abs (id (head _)) :: Int
-    , abs (id (ord _)) :: Int
-    , abs (negate x) :: Int
-    , abs (negate 0) :: Int
-    , abs (negate (id _)) :: Int
-    , abs (abs x) :: Int
-    , abs (abs 0) :: Int
-    , abs (abs (id _)) :: Int
-    , abs (_ + x) :: Int
-    , abs (_ + 0) :: Int
-    , abs (_ + id _) :: Int
-    , abs (x + _) :: Int
-    , abs (0 + _) :: Int
-    , abs (id _ + _) :: Int
-    , abs (_ * _) :: Int
-    , abs (f _) :: Int
-    , abs (head xs) :: Int
-    , abs (head []) :: Int
-    , abs (head (_:_)) :: Int
-    , abs (ord c) :: Int
-    , abs (ord 'a') :: Int
-    , _ + z :: Int
-    , _ + (-1) :: Int
-    , _ + id y :: Int
-    , _ + id 1 :: Int
-    , _ + id (id x) :: Int
-    , _ + id (id 0) :: Int
-    , _ + id (id (id _)) :: Int
-    , _ + id (negate _) :: Int
-    , _ + id (abs _) :: Int
-    , _ + id (_ + _) :: Int
-    , _ + id (head _) :: Int
-    , _ + id (ord _) :: Int
-    , _ + negate x :: Int
-    , _ + negate 0 :: Int
-    , _ + negate (id _) :: Int
-    , _ + abs x :: Int
-    , _ + abs 0 :: Int
-    , _ + abs (id _) :: Int
-    , _ + (_ + x) :: Int
-    , _ + (_ + 0) :: Int
-    , _ + (_ + id _) :: Int
-    , _ + (x + _) :: Int
-    , _ + (0 + _) :: Int
-    , _ + (id _ + _) :: Int
-    , _ + _ * _ :: Int
-    , _ + f _ :: Int
-    , _ + head xs :: Int
-    , _ + head [] :: Int
-    , _ + head (_:_) :: Int
-    , _ + ord c :: Int
-    , _ + ord 'a' :: Int
-    , x + y :: Int
-    , x + 1 :: Int
-    , x + id x :: Int
-    , x + id 0 :: Int
-    , x + id (id _) :: Int
-    , x + negate _ :: Int
-    , x + abs _ :: Int
-    , x + (_ + _) :: Int
-    , x + head _ :: Int
-    , x + ord _ :: Int
-    , 0 + y :: Int
-    , 0 + 1 :: Int
-    , 0 + id x :: Int
-    , 0 + id 0 :: Int
-    , 0 + id (id _) :: Int
-    , 0 + negate _ :: Int
-    , 0 + abs _ :: Int
-    , 0 + (_ + _) :: Int
-    , 0 + head _ :: Int
-    , 0 + ord _ :: Int
-    , id _ + y :: Int
-    , id _ + 1 :: Int
-    , id _ + id x :: Int
-    , id _ + id 0 :: Int
-    , id _ + id (id _) :: Int
-    , id _ + negate _ :: Int
-    , id _ + abs _ :: Int
-    , id _ + (_ + _) :: Int
-    , id _ + head _ :: Int
-    , id _ + ord _ :: Int
-    , _ * y :: Int
-    , _ * 1 :: Int
-    , _ * id x :: Int
-    , _ * id 0 :: Int
-    , _ * id (id _) :: Int
-    , _ * negate _ :: Int
-    , _ * abs _ :: Int
-    , _ * (_ + _) :: Int
-    , _ * head _ :: Int
-    , _ * ord _ :: Int
-    , f y :: Int
-    , f 1 :: Int
-    , f (id x) :: Int
-    , f (id 0) :: Int
-    , f (id (id _)) :: Int
-    , f (negate _) :: Int
-    , f (abs _) :: Int
-    , f (_ + _) :: Int
-    , f (head _) :: Int
-    , f (ord _) :: Int
-    , y + x :: Int
-    , y + 0 :: Int
-    , y + id _ :: Int
-    , 1 + x :: Int
-    , 1 + 0 :: Int
-    , 1 + id _ :: Int
-    , id x + x :: Int
-    , id x + 0 :: Int
-    , id x + id _ :: Int
-    , id 0 + x :: Int
-    , id 0 + 0 :: Int
-    , id 0 + id _ :: Int
-    , id (id _) + x :: Int
-    , id (id _) + 0 :: Int
-    , id (id _) + id _ :: Int
-    , negate _ + x :: Int
-    , negate _ + 0 :: Int
-    , negate _ + id _ :: Int
-    , abs _ + x :: Int
-    , abs _ + 0 :: Int
-    , abs _ + id _ :: Int
-    , (_ + _) + x :: Int
-    , (_ + _) + 0 :: Int
-    , (_ + _) + id _ :: Int
-    , head _ + x :: Int
-    , head _ + 0 :: Int
-    , head _ + id _ :: Int
-    , ord _ + x :: Int
-    , ord _ + 0 :: Int
-    , ord _ + id _ :: Int
-    , x * x :: Int
-    , x * 0 :: Int
-    , x * id _ :: Int
-    , 0 * x :: Int
-    , 0 * 0 :: Int
-    , 0 * id _ :: Int
-    , id _ * x :: Int
-    , id _ * 0 :: Int
-    , id _ * id _ :: Int
-    , g x :: Int
-    , g 0 :: Int
-    , g (id _) :: Int
-    , z + _ :: Int
-    , (-1) + _ :: Int
-    , id y + _ :: Int
-    , id 1 + _ :: Int
-    , id (id x) + _ :: Int
-    , id (id 0) + _ :: Int
-    , id (id (id _)) + _ :: Int
-    , id (negate _) + _ :: Int
-    , id (abs _) + _ :: Int
-    , id (_ + _) + _ :: Int
-    , id (head _) + _ :: Int
-    , id (ord _) + _ :: Int
-    , negate x + _ :: Int
-    , negate 0 + _ :: Int
-    , negate (id _) + _ :: Int
-    , abs x + _ :: Int
-    , abs 0 + _ :: Int
-    , abs (id _) + _ :: Int
-    , (_ + x) + _ :: Int
-    , (_ + 0) + _ :: Int
-    , (_ + id _) + _ :: Int
-    , (x + _) + _ :: Int
-    , (0 + _) + _ :: Int
-    , (id _ + _) + _ :: Int
-    , _ * _ + _ :: Int
-    , f _ + _ :: Int
-    , head xs + _ :: Int
-    , head [] + _ :: Int
-    , head (_:_) + _ :: Int
-    , ord c + _ :: Int
-    , ord 'a' + _ :: Int
-    , y * _ :: Int
-    , 1 * _ :: Int
-    , id x * _ :: Int
-    , id 0 * _ :: Int
-    , id (id _) * _ :: Int
-    , negate _ * _ :: Int
-    , abs _ * _ :: Int
-    , (_ + _) * _ :: Int
-    , head _ * _ :: Int
-    , ord _ * _ :: Int
-    , h _ :: Int
-    , head zs :: Int
-    , head [0,0] :: Int
-    , head [1] :: Int
-    , head (_:ys) :: Int
-    , head [_,0] :: Int
-    , head (_:_:xs) :: Int
-    , head [_,_] :: Int
-    , head (_:_:_:_) :: Int
-    , head (_:x:_) :: Int
-    , head (_:0:_) :: Int
-    , head (_:id _:_) :: Int
-    , head (_:tail _) :: Int
-    , head (_:(_ ++ _)) :: Int
-    , head (x:xs) :: Int
-    , head [x] :: Int
-    , head (x:_:_) :: Int
-    , head (0:xs) :: Int
-    , head [0] :: Int
-    , head (0:_:_) :: Int
-    , head (id _:xs) :: Int
-    , head [id _] :: Int
-    , head (id _:_:_) :: Int
-    , head (y:_) :: Int
-    , head (1:_) :: Int
-    , head (id x:_) :: Int
-    , head (id 0:_) :: Int
-    , head (id (id _):_) :: Int
-    , head (negate _:_) :: Int
-    , head (abs _:_) :: Int
-    , head (_ + _:_) :: Int
-    , head (head _:_) :: Int
-    , head (ord _:_) :: Int
-    , head (tail xs) :: Int
-    , head (tail []) :: Int
-    , head (tail (_:_)) :: Int
-    , head (_ ++ xs) :: Int
-    , head (_ ++ []) :: Int
-    , head (_ ++ (_:_)) :: Int
-    , head (xs ++ _) :: Int
-    , head ([] ++ _) :: Int
-    , head ((_:_) ++ _) :: Int
-    , head (sort _) :: Int
-    , head (insert _ _) :: Int
-    , ord e :: Int
-    , ord 'b' :: Int
-    , p' :: Bool
-    , not r :: Bool
-    , not (not q) :: Bool
-    , not (not (not p)) :: Bool
-    , not (not (not False)) :: Bool
-    , not (not (not True)) :: Bool
-    , not (not (not (not _))) :: Bool
-    , not (not (_ || _)) :: Bool
-    , not (_ || p) :: Bool
-    , not (_ || False) :: Bool
-    , not (_ || True) :: Bool
-    , not (_ || not _) :: Bool
-    , not (p || _) :: Bool
-    , not (False || _) :: Bool
-    , not (True || _) :: Bool
-    , not (not _ || _) :: Bool
-    , not (_ && _) :: Bool
-    , not (_ == _) :: Bool
-    , not (_ == _) :: Bool
-    , not (odd _) :: Bool
-    , not (even _) :: Bool
-    , not (elem _ _) :: Bool
-    , _ || q :: Bool
-    , _ || not p :: Bool
-    , _ || not False :: Bool
-    , _ || not True :: Bool
-    , _ || not (not _) :: Bool
-    , _ || (_ || _) :: Bool
-    , p || p :: Bool
-    , p || False :: Bool
-    , p || True :: Bool
-    , p || not _ :: Bool
-    , False || p :: Bool
-    , False || False :: Bool
-    , False || True :: Bool
-    , False || not _ :: Bool
-    , True || p :: Bool
-    , True || False :: Bool
-    , True || True :: Bool
-    , True || not _ :: Bool
-    , not _ || p :: Bool
-    , not _ || False :: Bool
-    , not _ || True :: Bool
-    , not _ || not _ :: Bool
-    , _ && p :: Bool
-    , _ && False :: Bool
-    , _ && True :: Bool
-    , _ && not _ :: Bool
-    , q || _ :: Bool
-    , not p || _ :: Bool
-    , not False || _ :: Bool
-    , not True || _ :: Bool
-    , not (not _) || _ :: Bool
-    , (_ || _) || _ :: Bool
-    , p && _ :: Bool
-    , False && _ :: Bool
-    , True && _ :: Bool
-    , not _ && _ :: Bool
-    , _ ==> _ :: Bool
-    , _ == x :: Bool
-    , _ == 0 :: Bool
-    , _ == id _ :: Bool
-    , x == _ :: Bool
-    , 0 == _ :: Bool
-    , id _ == _ :: Bool
-    , _ == p :: Bool
-    , _ == False :: Bool
-    , _ == True :: Bool
-    , _ == not _ :: Bool
-    , p == _ :: Bool
-    , False == _ :: Bool
-    , True == _ :: Bool
-    , not _ == _ :: Bool
-    , _ <= _ :: Bool
-    , _ <= _ :: Bool
-    , odd x :: Bool
-    , odd 0 :: Bool
-    , odd (id _) :: Bool
-    , even x :: Bool
-    , even 0 :: Bool
-    , even (id _) :: Bool
-    , elem _ xs :: Bool
-    , elem _ [] :: Bool
-    , elem _ (_:_) :: Bool
-    , elem x _ :: Bool
-    , elem 0 _ :: Bool
-    , elem (id _) _ :: Bool
-    , c' :: Char
-    , 'A' :: Char
-    , xs' :: [Int]
-    , [0,0,0] :: [Int]
-    , [0,1] :: [Int]
-    , [1,0] :: [Int]
-    , [-1] :: [Int]
-    , _:zs :: [Int]
-    , [_,0,0] :: [Int]
-    , [_,1] :: [Int]
-    , _:_:ys :: [Int]
-    , [_,_,0] :: [Int]
-    , _:_:_:xs :: [Int]
-    , [_,_,_] :: [Int]
-    , _:_:_:_:_ :: [Int]
-    , _:_:x:_ :: [Int]
-    , _:_:0:_ :: [Int]
-    , _:_:id _:_ :: [Int]
-    , _:_:tail _ :: [Int]
-    , _:_:(_ ++ _) :: [Int]
-    , _:x:xs :: [Int]
-    , [_,x] :: [Int]
-    , _:x:_:_ :: [Int]
-    , _:0:xs :: [Int]
-    , [_,0] :: [Int]
-    , _:0:_:_ :: [Int]
-    , _:id _:xs :: [Int]
-    , [_,id _] :: [Int]
-    , _:id _:_:_ :: [Int]
-    , _:y:_ :: [Int]
-    , _:1:_ :: [Int]
-    , _:id x:_ :: [Int]
-    , _:id 0:_ :: [Int]
-    , _:id (id _):_ :: [Int]
-    , _:negate _:_ :: [Int]
-    , _:abs _:_ :: [Int]
-    , _:_ + _:_ :: [Int]
-    , _:head _:_ :: [Int]
-    , _:ord _:_ :: [Int]
-    , _:tail xs :: [Int]
-    , _:tail [] :: [Int]
-    , _:tail (_:_) :: [Int]
-    , _:(_ ++ xs) :: [Int]
-    , _:(_ ++ []) :: [Int]
-    , _:(_ ++ (_:_)) :: [Int]
-    , _:(xs ++ _) :: [Int]
-    , _:([] ++ _) :: [Int]
-    , _:((_:_) ++ _) :: [Int]
-    , _:sort _ :: [Int]
-    , _:insert _ _ :: [Int]
-    , x:ys :: [Int]
-    , [x,0] :: [Int]
-    , x:_:xs :: [Int]
-    , [x,_] :: [Int]
-    , x:_:_:_ :: [Int]
-    , x:x:_ :: [Int]
-    , x:0:_ :: [Int]
-    , x:id _:_ :: [Int]
-    , x:tail _ :: [Int]
-    , x:(_ ++ _) :: [Int]
-    , 0:ys :: [Int]
-    , [0,0] :: [Int]
-    , 0:_:xs :: [Int]
-    , [0,_] :: [Int]
-    , 0:_:_:_ :: [Int]
-    , 0:x:_ :: [Int]
-    , 0:0:_ :: [Int]
-    , 0:id _:_ :: [Int]
-    , 0:tail _ :: [Int]
-    , 0:(_ ++ _) :: [Int]
-    , id _:ys :: [Int]
-    , [id _,0] :: [Int]
-    , id _:_:xs :: [Int]
-    , [id _,_] :: [Int]
-    , id _:_:_:_ :: [Int]
-    , id _:x:_ :: [Int]
-    , id _:0:_ :: [Int]
-    , id _:id _:_ :: [Int]
-    , id _:tail _ :: [Int]
-    , id _:(_ ++ _) :: [Int]
-    , y:xs :: [Int]
-    , [y] :: [Int]
-    , y:_:_ :: [Int]
-    , 1:xs :: [Int]
-    , [1] :: [Int]
-    , 1:_:_ :: [Int]
-    , id x:xs :: [Int]
-    , [id x] :: [Int]
-    , id x:_:_ :: [Int]
-    , id 0:xs :: [Int]
-    , [id 0] :: [Int]
-    , id 0:_:_ :: [Int]
-    , id (id _):xs :: [Int]
-    , [id (id _)] :: [Int]
-    , id (id _):_:_ :: [Int]
-    , negate _:xs :: [Int]
-    , [negate _] :: [Int]
-    , negate _:_:_ :: [Int]
-    , abs _:xs :: [Int]
-    , [abs _] :: [Int]
-    , abs _:_:_ :: [Int]
-    , _ + _:xs :: [Int]
-    , [_ + _] :: [Int]
-    , _ + _:_:_ :: [Int]
-    , head _:xs :: [Int]
-    , [head _] :: [Int]
-    , head _:_:_ :: [Int]
-    , ord _:xs :: [Int]
-    , [ord _] :: [Int]
-    , ord _:_:_ :: [Int]
-    , z:_ :: [Int]
-    , (-1):_ :: [Int]
-    , id y:_ :: [Int]
-    , id 1:_ :: [Int]
-    , id (id x):_ :: [Int]
-    , id (id 0):_ :: [Int]
-    , id (id (id _)):_ :: [Int]
-    , id (negate _):_ :: [Int]
-    , id (abs _):_ :: [Int]
-    , id (_ + _):_ :: [Int]
-    , id (head _):_ :: [Int]
-    , id (ord _):_ :: [Int]
-    , negate x:_ :: [Int]
-    , negate 0:_ :: [Int]
-    , negate (id _):_ :: [Int]
-    , abs x:_ :: [Int]
-    , abs 0:_ :: [Int]
-    , abs (id _):_ :: [Int]
-    , _ + x:_ :: [Int]
-    , _ + 0:_ :: [Int]
-    , _ + id _:_ :: [Int]
-    , x + _:_ :: [Int]
-    , 0 + _:_ :: [Int]
-    , id _ + _:_ :: [Int]
-    , _ * _:_ :: [Int]
-    , f _:_ :: [Int]
-    , head xs:_ :: [Int]
-    , head []:_ :: [Int]
-    , head (_:_):_ :: [Int]
-    , ord c:_ :: [Int]
-    , ord 'a':_ :: [Int]
-    , tail ys :: [Int]
-    , tail [0] :: [Int]
-    , tail (_:xs) :: [Int]
-    , tail [_] :: [Int]
-    , tail (_:_:_) :: [Int]
-    , tail (x:_) :: [Int]
-    , tail (0:_) :: [Int]
-    , tail (id _:_) :: [Int]
-    , tail (tail _) :: [Int]
-    , tail (_ ++ _) :: [Int]
-    , _ ++ ys :: [Int]
-    , _ ++ [0] :: [Int]
-    , _ ++ (_:xs) :: [Int]
-    , _ ++ [_] :: [Int]
-    , _ ++ (_:_:_) :: [Int]
-    , _ ++ (x:_) :: [Int]
-    , _ ++ (0:_) :: [Int]
-    , _ ++ (id _:_) :: [Int]
-    , _ ++ tail _ :: [Int]
-    , _ ++ (_ ++ _) :: [Int]
-    , xs ++ xs :: [Int]
-    , xs ++ [] :: [Int]
-    , xs ++ (_:_) :: [Int]
-    , [] ++ xs :: [Int]
-    , [] ++ [] :: [Int]
-    , [] ++ (_:_) :: [Int]
-    , (_:_) ++ xs :: [Int]
-    , (_:_) ++ [] :: [Int]
-    , (_:_) ++ (_:_) :: [Int]
-    , ys ++ _ :: [Int]
-    , [0] ++ _ :: [Int]
-    , (_:xs) ++ _ :: [Int]
-    , [_] ++ _ :: [Int]
-    , (_:_:_) ++ _ :: [Int]
-    , (x:_) ++ _ :: [Int]
-    , (0:_) ++ _ :: [Int]
-    , (id _:_) ++ _ :: [Int]
-    , tail _ ++ _ :: [Int]
-    , (_ ++ _) ++ _ :: [Int]
-    , sort xs :: [Int]
-    , sort [] :: [Int]
-    , sort (_:_) :: [Int]
-    , insert _ xs :: [Int]
-    , insert _ [] :: [Int]
-    , insert _ (_:_) :: [Int]
-    , insert x _ :: [Int]
-    , insert 0 _ :: [Int]
-    , insert (id _) _ :: [Int]
-    , (y +) :: Int -> Int
-    , (1 +) :: Int -> Int
-    , (id x +) :: Int -> Int
-    , (id 0 +) :: Int -> Int
-    , (id (id _) +) :: Int -> Int
-    , (negate _ +) :: Int -> Int
-    , (abs _ +) :: Int -> Int
-    , ((_ + _) +) :: Int -> Int
-    , (head _ +) :: Int -> Int
-    , (ord _ +) :: Int -> Int
-    , (x *) :: Int -> Int
-    , (0 *) :: Int -> Int
-    , (id _ *) :: Int -> Int
-    , g :: Int -> Int
-    , (p ||) :: Bool -> Bool
-    , (False ||) :: Bool -> Bool
-    , (True ||) :: Bool -> Bool
-    , (not _ ||) :: Bool -> Bool
-    , (_ &&) :: Bool -> Bool
-    , (==>) :: Bool -> Bool -> Bool
-    ]
-  , [ z' :: Int
-    , 3 :: Int
-    , id y' :: Int
-    , id (-2) :: Int
-    , id (id x') :: Int
-    , id (id 2) :: Int
-    , id (id (id z)) :: Int
-    , id (id (id (-1))) :: Int
-    , id (id (id (id y))) :: Int
-    , id (id (id (id 1))) :: Int
-    , id (id (id (id (id x)))) :: Int
-    , id (id (id (id (id 0)))) :: Int
-    , id (id (id (id (id (id _))))) :: Int
-    , id (id (id (id (negate _)))) :: Int
-    , id (id (id (id (abs _)))) :: Int
-    , id (id (id (id (_ + _)))) :: Int
-    , id (id (id (id (head _)))) :: Int
-    , id (id (id (id (ord _)))) :: Int
-    , id (id (id (negate x))) :: Int
-    , id (id (id (negate 0))) :: Int
-    , id (id (id (negate (id _)))) :: Int
-    , id (id (id (abs x))) :: Int
-    , id (id (id (abs 0))) :: Int
-    , id (id (id (abs (id _)))) :: Int
-    , id (id (id (_ + x))) :: Int
-    , id (id (id (_ + 0))) :: Int
-    , id (id (id (_ + id _))) :: Int
-    , id (id (id (x + _))) :: Int
-    , id (id (id (0 + _))) :: Int
-    , id (id (id (id _ + _))) :: Int
-    , id (id (id (_ * _))) :: Int
-    , id (id (id (f _))) :: Int
-    , id (id (id (head xs))) :: Int
-    , id (id (id (head []))) :: Int
-    , id (id (id (head (_:_)))) :: Int
-    , id (id (id (ord c))) :: Int
-    , id (id (id (ord 'a'))) :: Int
-    , id (id (negate y)) :: Int
-    , id (id (negate 1)) :: Int
-    , id (id (negate (id x))) :: Int
-    , id (id (negate (id 0))) :: Int
-    , id (id (negate (id (id _)))) :: Int
-    , id (id (negate (negate _))) :: Int
-    , id (id (negate (abs _))) :: Int
-    , id (id (negate (_ + _))) :: Int
-    , id (id (negate (head _))) :: Int
-    , id (id (negate (ord _))) :: Int
-    , id (id (abs y)) :: Int
-    , id (id (abs 1)) :: Int
-    , id (id (abs (id x))) :: Int
-    , id (id (abs (id 0))) :: Int
-    , id (id (abs (id (id _)))) :: Int
-    , id (id (abs (negate _))) :: Int
-    , id (id (abs (abs _))) :: Int
-    , id (id (abs (_ + _))) :: Int
-    , id (id (abs (head _))) :: Int
-    , id (id (abs (ord _))) :: Int
-    , id (id (_ + y)) :: Int
-    , id (id (_ + 1)) :: Int
-    , id (id (_ + id x)) :: Int
-    , id (id (_ + id 0)) :: Int
-    , id (id (_ + id (id _))) :: Int
-    , id (id (_ + negate _)) :: Int
-    , id (id (_ + abs _)) :: Int
-    , id (id (_ + (_ + _))) :: Int
-    , id (id (_ + head _)) :: Int
-    , id (id (_ + ord _)) :: Int
-    , id (id (x + x)) :: Int
-    , id (id (x + 0)) :: Int
-    , id (id (x + id _)) :: Int
-    , id (id (0 + x)) :: Int
-    , id (id (0 + 0)) :: Int
-    , id (id (0 + id _)) :: Int
-    , id (id (id _ + x)) :: Int
-    , id (id (id _ + 0)) :: Int
-    , id (id (id _ + id _)) :: Int
-    , id (id (_ * x)) :: Int
-    , id (id (_ * 0)) :: Int
-    , id (id (_ * id _)) :: Int
-    , id (id (f x)) :: Int
-    , id (id (f 0)) :: Int
-    , id (id (f (id _))) :: Int
-    , id (id (y + _)) :: Int
-    , id (id (1 + _)) :: Int
-    , id (id (id x + _)) :: Int
-    , id (id (id 0 + _)) :: Int
-    , id (id (id (id _) + _)) :: Int
-    , id (id (negate _ + _)) :: Int
-    , id (id (abs _ + _)) :: Int
-    , id (id ((_ + _) + _)) :: Int
-    , id (id (head _ + _)) :: Int
-    , id (id (ord _ + _)) :: Int
-    , id (id (x * _)) :: Int
-    , id (id (0 * _)) :: Int
-    , id (id (id _ * _)) :: Int
-    , id (id (g _)) :: Int
-    , id (id (head ys)) :: Int
-    , id (id (head [0])) :: Int
-    , id (id (head (_:xs))) :: Int
-    , id (id (head [_])) :: Int
-    , id (id (head (_:_:_))) :: Int
-    , id (id (head (x:_))) :: Int
-    , id (id (head (0:_))) :: Int
-    , id (id (head (id _:_))) :: Int
-    , id (id (head (tail _))) :: Int
-    , id (id (head (_ ++ _))) :: Int
-    , id (id (ord d)) :: Int
-    , id (id (ord ' ')) :: Int
-    , id (negate z) :: Int
-    , id (negate (-1)) :: Int
-    , id (negate (id y)) :: Int
-    , id (negate (id 1)) :: Int
-    , id (negate (id (id x))) :: Int
-    , id (negate (id (id 0))) :: Int
-    , id (negate (id (id (id _)))) :: Int
-    , id (negate (id (negate _))) :: Int
-    , id (negate (id (abs _))) :: Int
-    , id (negate (id (_ + _))) :: Int
-    , id (negate (id (head _))) :: Int
-    , id (negate (id (ord _))) :: Int
-    , id (negate (negate x)) :: Int
-    , id (negate (negate 0)) :: Int
-    , id (negate (negate (id _))) :: Int
-    , id (negate (abs x)) :: Int
-    , id (negate (abs 0)) :: Int
-    , id (negate (abs (id _))) :: Int
-    , id (negate (_ + x)) :: Int
-    , id (negate (_ + 0)) :: Int
-    , id (negate (_ + id _)) :: Int
-    , id (negate (x + _)) :: Int
-    , id (negate (0 + _)) :: Int
-    , id (negate (id _ + _)) :: Int
-    , id (negate (_ * _)) :: Int
-    , id (negate (f _)) :: Int
-    , id (negate (head xs)) :: Int
-    , id (negate (head [])) :: Int
-    , id (negate (head (_:_))) :: Int
-    , id (negate (ord c)) :: Int
-    , id (negate (ord 'a')) :: Int
-    , id (abs z) :: Int
-    , id (abs (-1)) :: Int
-    , id (abs (id y)) :: Int
-    , id (abs (id 1)) :: Int
-    , id (abs (id (id x))) :: Int
-    , id (abs (id (id 0))) :: Int
-    , id (abs (id (id (id _)))) :: Int
-    , id (abs (id (negate _))) :: Int
-    , id (abs (id (abs _))) :: Int
-    , id (abs (id (_ + _))) :: Int
-    , id (abs (id (head _))) :: Int
-    , id (abs (id (ord _))) :: Int
-    , id (abs (negate x)) :: Int
-    , id (abs (negate 0)) :: Int
-    , id (abs (negate (id _))) :: Int
-    , id (abs (abs x)) :: Int
-    , id (abs (abs 0)) :: Int
-    , id (abs (abs (id _))) :: Int
-    , id (abs (_ + x)) :: Int
-    , id (abs (_ + 0)) :: Int
-    , id (abs (_ + id _)) :: Int
-    , id (abs (x + _)) :: Int
-    , id (abs (0 + _)) :: Int
-    , id (abs (id _ + _)) :: Int
-    , id (abs (_ * _)) :: Int
-    , id (abs (f _)) :: Int
-    , id (abs (head xs)) :: Int
-    , id (abs (head [])) :: Int
-    , id (abs (head (_:_))) :: Int
-    , id (abs (ord c)) :: Int
-    , id (abs (ord 'a')) :: Int
-    , id (_ + z) :: Int
-    , id (_ + (-1)) :: Int
-    , id (_ + id y) :: Int
-    , id (_ + id 1) :: Int
-    , id (_ + id (id x)) :: Int
-    , id (_ + id (id 0)) :: Int
-    , id (_ + id (id (id _))) :: Int
-    , id (_ + id (negate _)) :: Int
-    , id (_ + id (abs _)) :: Int
-    , id (_ + id (_ + _)) :: Int
-    , id (_ + id (head _)) :: Int
-    , id (_ + id (ord _)) :: Int
-    , id (_ + negate x) :: Int
-    , id (_ + negate 0) :: Int
-    , id (_ + negate (id _)) :: Int
-    , id (_ + abs x) :: Int
-    , id (_ + abs 0) :: Int
-    , id (_ + abs (id _)) :: Int
-    , id (_ + (_ + x)) :: Int
-    , id (_ + (_ + 0)) :: Int
-    , id (_ + (_ + id _)) :: Int
-    , id (_ + (x + _)) :: Int
-    , id (_ + (0 + _)) :: Int
-    , id (_ + (id _ + _)) :: Int
-    , id (_ + _ * _) :: Int
-    , id (_ + f _) :: Int
-    , id (_ + head xs) :: Int
-    , id (_ + head []) :: Int
-    , id (_ + head (_:_)) :: Int
-    , id (_ + ord c) :: Int
-    , id (_ + ord 'a') :: Int
-    , id (x + y) :: Int
-    , id (x + 1) :: Int
-    , id (x + id x) :: Int
-    , id (x + id 0) :: Int
-    , id (x + id (id _)) :: Int
-    , id (x + negate _) :: Int
-    , id (x + abs _) :: Int
-    , id (x + (_ + _)) :: Int
-    , id (x + head _) :: Int
-    , id (x + ord _) :: Int
-    , id (0 + y) :: Int
-    , id (0 + 1) :: Int
-    , id (0 + id x) :: Int
-    , id (0 + id 0) :: Int
-    , id (0 + id (id _)) :: Int
-    , id (0 + negate _) :: Int
-    , id (0 + abs _) :: Int
-    , id (0 + (_ + _)) :: Int
-    , id (0 + head _) :: Int
-    , id (0 + ord _) :: Int
-    , id (id _ + y) :: Int
-    , id (id _ + 1) :: Int
-    , id (id _ + id x) :: Int
-    , id (id _ + id 0) :: Int
-    , id (id _ + id (id _)) :: Int
-    , id (id _ + negate _) :: Int
-    , id (id _ + abs _) :: Int
-    , id (id _ + (_ + _)) :: Int
-    , id (id _ + head _) :: Int
-    , id (id _ + ord _) :: Int
-    , id (_ * y) :: Int
-    , id (_ * 1) :: Int
-    , id (_ * id x) :: Int
-    , id (_ * id 0) :: Int
-    , id (_ * id (id _)) :: Int
-    , id (_ * negate _) :: Int
-    , id (_ * abs _) :: Int
-    , id (_ * (_ + _)) :: Int
-    , id (_ * head _) :: Int
-    , id (_ * ord _) :: Int
-    , id (f y) :: Int
-    , id (f 1) :: Int
-    , id (f (id x)) :: Int
-    , id (f (id 0)) :: Int
-    , id (f (id (id _))) :: Int
-    , id (f (negate _)) :: Int
-    , id (f (abs _)) :: Int
-    , id (f (_ + _)) :: Int
-    , id (f (head _)) :: Int
-    , id (f (ord _)) :: Int
-    , id (y + x) :: Int
-    , id (y + 0) :: Int
-    , id (y + id _) :: Int
-    , id (1 + x) :: Int
-    , id (1 + 0) :: Int
-    , id (1 + id _) :: Int
-    , id (id x + x) :: Int
-    , id (id x + 0) :: Int
-    , id (id x + id _) :: Int
-    , id (id 0 + x) :: Int
-    , id (id 0 + 0) :: Int
-    , id (id 0 + id _) :: Int
-    , id (id (id _) + x) :: Int
-    , id (id (id _) + 0) :: Int
-    , id (id (id _) + id _) :: Int
-    , id (negate _ + x) :: Int
-    , id (negate _ + 0) :: Int
-    , id (negate _ + id _) :: Int
-    , id (abs _ + x) :: Int
-    , id (abs _ + 0) :: Int
-    , id (abs _ + id _) :: Int
-    , id ((_ + _) + x) :: Int
-    , id ((_ + _) + 0) :: Int
-    , id ((_ + _) + id _) :: Int
-    , id (head _ + x) :: Int
-    , id (head _ + 0) :: Int
-    , id (head _ + id _) :: Int
-    , id (ord _ + x) :: Int
-    , id (ord _ + 0) :: Int
-    , id (ord _ + id _) :: Int
-    , id (x * x) :: Int
-    , id (x * 0) :: Int
-    , id (x * id _) :: Int
-    , id (0 * x) :: Int
-    , id (0 * 0) :: Int
-    , id (0 * id _) :: Int
-    , id (id _ * x) :: Int
-    , id (id _ * 0) :: Int
-    , id (id _ * id _) :: Int
-    , id (g x) :: Int
-    , id (g 0) :: Int
-    , id (g (id _)) :: Int
-    , id (z + _) :: Int
-    , id ((-1) + _) :: Int
-    , id (id y + _) :: Int
-    , id (id 1 + _) :: Int
-    , id (id (id x) + _) :: Int
-    , id (id (id 0) + _) :: Int
-    , id (id (id (id _)) + _) :: Int
-    , id (id (negate _) + _) :: Int
-    , id (id (abs _) + _) :: Int
-    , id (id (_ + _) + _) :: Int
-    , id (id (head _) + _) :: Int
-    , id (id (ord _) + _) :: Int
-    , id (negate x + _) :: Int
-    , id (negate 0 + _) :: Int
-    , id (negate (id _) + _) :: Int
-    , id (abs x + _) :: Int
-    , id (abs 0 + _) :: Int
-    , id (abs (id _) + _) :: Int
-    , id ((_ + x) + _) :: Int
-    , id ((_ + 0) + _) :: Int
-    , id ((_ + id _) + _) :: Int
-    , id ((x + _) + _) :: Int
-    , id ((0 + _) + _) :: Int
-    , id ((id _ + _) + _) :: Int
-    , id (_ * _ + _) :: Int
-    , id (f _ + _) :: Int
-    , id (head xs + _) :: Int
-    , id (head [] + _) :: Int
-    , id (head (_:_) + _) :: Int
-    , id (ord c + _) :: Int
-    , id (ord 'a' + _) :: Int
-    , id (y * _) :: Int
-    , id (1 * _) :: Int
-    , id (id x * _) :: Int
-    , id (id 0 * _) :: Int
-    , id (id (id _) * _) :: Int
-    , id (negate _ * _) :: Int
-    , id (abs _ * _) :: Int
-    , id ((_ + _) * _) :: Int
-    , id (head _ * _) :: Int
-    , id (ord _ * _) :: Int
-    , id (h _) :: Int
-    , id (head zs) :: Int
-    , id (head [0,0]) :: Int
-    , id (head [1]) :: Int
-    , id (head (_:ys)) :: Int
-    , id (head [_,0]) :: Int
-    , id (head (_:_:xs)) :: Int
-    , id (head [_,_]) :: Int
-    , id (head (_:_:_:_)) :: Int
-    , id (head (_:x:_)) :: Int
-    , id (head (_:0:_)) :: Int
-    , id (head (_:id _:_)) :: Int
-    , id (head (_:tail _)) :: Int
-    , id (head (_:(_ ++ _))) :: Int
-    , id (head (x:xs)) :: Int
-    , id (head [x]) :: Int
-    , id (head (x:_:_)) :: Int
-    , id (head (0:xs)) :: Int
-    , id (head [0]) :: Int
-    , id (head (0:_:_)) :: Int
-    , id (head (id _:xs)) :: Int
-    , id (head [id _]) :: Int
-    , id (head (id _:_:_)) :: Int
-    , id (head (y:_)) :: Int
-    , id (head (1:_)) :: Int
-    , id (head (id x:_)) :: Int
-    , id (head (id 0:_)) :: Int
-    , id (head (id (id _):_)) :: Int
-    , id (head (negate _:_)) :: Int
-    , id (head (abs _:_)) :: Int
-    , id (head (_ + _:_)) :: Int
-    , id (head (head _:_)) :: Int
-    , id (head (ord _:_)) :: Int
-    , id (head (tail xs)) :: Int
-    , id (head (tail [])) :: Int
-    , id (head (tail (_:_))) :: Int
-    , id (head (_ ++ xs)) :: Int
-    , id (head (_ ++ [])) :: Int
-    , id (head (_ ++ (_:_))) :: Int
-    , id (head (xs ++ _)) :: Int
-    , id (head ([] ++ _)) :: Int
-    , id (head ((_:_) ++ _)) :: Int
-    , id (head (sort _)) :: Int
-    , id (head (insert _ _)) :: Int
-    , id (ord e) :: Int
-    , id (ord 'b') :: Int
-    , negate x' :: Int
-    , negate 2 :: Int
-    , negate (id z) :: Int
-    , negate (id (-1)) :: Int
-    , negate (id (id y)) :: Int
-    , negate (id (id 1)) :: Int
-    , negate (id (id (id x))) :: Int
-    , negate (id (id (id 0))) :: Int
-    , negate (id (id (id (id _)))) :: Int
-    , negate (id (id (negate _))) :: Int
-    , negate (id (id (abs _))) :: Int
-    , negate (id (id (_ + _))) :: Int
-    , negate (id (id (head _))) :: Int
-    , negate (id (id (ord _))) :: Int
-    , negate (id (negate x)) :: Int
-    , negate (id (negate 0)) :: Int
-    , negate (id (negate (id _))) :: Int
-    , negate (id (abs x)) :: Int
-    , negate (id (abs 0)) :: Int
-    , negate (id (abs (id _))) :: Int
-    , negate (id (_ + x)) :: Int
-    , negate (id (_ + 0)) :: Int
-    , negate (id (_ + id _)) :: Int
-    , negate (id (x + _)) :: Int
-    , negate (id (0 + _)) :: Int
-    , negate (id (id _ + _)) :: Int
-    , negate (id (_ * _)) :: Int
-    , negate (id (f _)) :: Int
-    , negate (id (head xs)) :: Int
-    , negate (id (head [])) :: Int
-    , negate (id (head (_:_))) :: Int
-    , negate (id (ord c)) :: Int
-    , negate (id (ord 'a')) :: Int
-    , negate (negate y) :: Int
-    , negate (negate 1) :: Int
-    , negate (negate (id x)) :: Int
-    , negate (negate (id 0)) :: Int
-    , negate (negate (id (id _))) :: Int
-    , negate (negate (negate _)) :: Int
-    , negate (negate (abs _)) :: Int
-    , negate (negate (_ + _)) :: Int
-    , negate (negate (head _)) :: Int
-    , negate (negate (ord _)) :: Int
-    , negate (abs y) :: Int
-    , negate (abs 1) :: Int
-    , negate (abs (id x)) :: Int
-    , negate (abs (id 0)) :: Int
-    , negate (abs (id (id _))) :: Int
-    , negate (abs (negate _)) :: Int
-    , negate (abs (abs _)) :: Int
-    , negate (abs (_ + _)) :: Int
-    , negate (abs (head _)) :: Int
-    , negate (abs (ord _)) :: Int
-    , negate (_ + y) :: Int
-    , negate (_ + 1) :: Int
-    , negate (_ + id x) :: Int
-    , negate (_ + id 0) :: Int
-    , negate (_ + id (id _)) :: Int
-    , negate (_ + negate _) :: Int
-    , negate (_ + abs _) :: Int
-    , negate (_ + (_ + _)) :: Int
-    , negate (_ + head _) :: Int
-    , negate (_ + ord _) :: Int
-    , negate (x + x) :: Int
-    , negate (x + 0) :: Int
-    , negate (x + id _) :: Int
-    , negate (0 + x) :: Int
-    , negate (0 + 0) :: Int
-    , negate (0 + id _) :: Int
-    , negate (id _ + x) :: Int
-    , negate (id _ + 0) :: Int
-    , negate (id _ + id _) :: Int
-    , negate (_ * x) :: Int
-    , negate (_ * 0) :: Int
-    , negate (_ * id _) :: Int
-    , negate (f x) :: Int
-    , negate (f 0) :: Int
-    , negate (f (id _)) :: Int
-    , negate (y + _) :: Int
-    , negate (1 + _) :: Int
-    , negate (id x + _) :: Int
-    , negate (id 0 + _) :: Int
-    , negate (id (id _) + _) :: Int
-    , negate (negate _ + _) :: Int
-    , negate (abs _ + _) :: Int
-    , negate ((_ + _) + _) :: Int
-    , negate (head _ + _) :: Int
-    , negate (ord _ + _) :: Int
-    , negate (x * _) :: Int
-    , negate (0 * _) :: Int
-    , negate (id _ * _) :: Int
-    , negate (g _) :: Int
-    , negate (head ys) :: Int
-    , negate (head [0]) :: Int
-    , negate (head (_:xs)) :: Int
-    , negate (head [_]) :: Int
-    , negate (head (_:_:_)) :: Int
-    , negate (head (x:_)) :: Int
-    , negate (head (0:_)) :: Int
-    , negate (head (id _:_)) :: Int
-    , negate (head (tail _)) :: Int
-    , negate (head (_ ++ _)) :: Int
-    , negate (ord d) :: Int
-    , negate (ord ' ') :: Int
-    , abs x' :: Int
-    , abs 2 :: Int
-    , abs (id z) :: Int
-    , abs (id (-1)) :: Int
-    , abs (id (id y)) :: Int
-    , abs (id (id 1)) :: Int
-    , abs (id (id (id x))) :: Int
-    , abs (id (id (id 0))) :: Int
-    , abs (id (id (id (id _)))) :: Int
-    , abs (id (id (negate _))) :: Int
-    , abs (id (id (abs _))) :: Int
-    , abs (id (id (_ + _))) :: Int
-    , abs (id (id (head _))) :: Int
-    , abs (id (id (ord _))) :: Int
-    , abs (id (negate x)) :: Int
-    , abs (id (negate 0)) :: Int
-    , abs (id (negate (id _))) :: Int
-    , abs (id (abs x)) :: Int
-    , abs (id (abs 0)) :: Int
-    , abs (id (abs (id _))) :: Int
-    , abs (id (_ + x)) :: Int
-    , abs (id (_ + 0)) :: Int
-    , abs (id (_ + id _)) :: Int
-    , abs (id (x + _)) :: Int
-    , abs (id (0 + _)) :: Int
-    , abs (id (id _ + _)) :: Int
-    , abs (id (_ * _)) :: Int
-    , abs (id (f _)) :: Int
-    , abs (id (head xs)) :: Int
-    , abs (id (head [])) :: Int
-    , abs (id (head (_:_))) :: Int
-    , abs (id (ord c)) :: Int
-    , abs (id (ord 'a')) :: Int
-    , abs (negate y) :: Int
-    , abs (negate 1) :: Int
-    , abs (negate (id x)) :: Int
-    , abs (negate (id 0)) :: Int
-    , abs (negate (id (id _))) :: Int
-    , abs (negate (negate _)) :: Int
-    , abs (negate (abs _)) :: Int
-    , abs (negate (_ + _)) :: Int
-    , abs (negate (head _)) :: Int
-    , abs (negate (ord _)) :: Int
-    , abs (abs y) :: Int
-    , abs (abs 1) :: Int
-    , abs (abs (id x)) :: Int
-    , abs (abs (id 0)) :: Int
-    , abs (abs (id (id _))) :: Int
-    , abs (abs (negate _)) :: Int
-    , abs (abs (abs _)) :: Int
-    , abs (abs (_ + _)) :: Int
-    , abs (abs (head _)) :: Int
-    , abs (abs (ord _)) :: Int
-    , abs (_ + y) :: Int
-    , abs (_ + 1) :: Int
-    , abs (_ + id x) :: Int
-    , abs (_ + id 0) :: Int
-    , abs (_ + id (id _)) :: Int
-    , abs (_ + negate _) :: Int
-    , abs (_ + abs _) :: Int
-    , abs (_ + (_ + _)) :: Int
-    , abs (_ + head _) :: Int
-    , abs (_ + ord _) :: Int
-    , abs (x + x) :: Int
-    , abs (x + 0) :: Int
-    , abs (x + id _) :: Int
-    , abs (0 + x) :: Int
-    , abs (0 + 0) :: Int
-    , abs (0 + id _) :: Int
-    , abs (id _ + x) :: Int
-    , abs (id _ + 0) :: Int
-    , abs (id _ + id _) :: Int
-    , abs (_ * x) :: Int
-    , abs (_ * 0) :: Int
-    , abs (_ * id _) :: Int
-    , abs (f x) :: Int
-    , abs (f 0) :: Int
-    , abs (f (id _)) :: Int
-    , abs (y + _) :: Int
-    , abs (1 + _) :: Int
-    , abs (id x + _) :: Int
-    , abs (id 0 + _) :: Int
-    , abs (id (id _) + _) :: Int
-    , abs (negate _ + _) :: Int
-    , abs (abs _ + _) :: Int
-    , abs ((_ + _) + _) :: Int
-    , abs (head _ + _) :: Int
-    , abs (ord _ + _) :: Int
-    , abs (x * _) :: Int
-    , abs (0 * _) :: Int
-    , abs (id _ * _) :: Int
-    , abs (g _) :: Int
-    , abs (head ys) :: Int
-    , abs (head [0]) :: Int
-    , abs (head (_:xs)) :: Int
-    , abs (head [_]) :: Int
-    , abs (head (_:_:_)) :: Int
-    , abs (head (x:_)) :: Int
-    , abs (head (0:_)) :: Int
-    , abs (head (id _:_)) :: Int
-    , abs (head (tail _)) :: Int
-    , abs (head (_ ++ _)) :: Int
-    , abs (ord d) :: Int
-    , abs (ord ' ') :: Int
-    , _ + x' :: Int
-    , _ + 2 :: Int
-    , _ + id z :: Int
-    , _ + id (-1) :: Int
-    , _ + id (id y) :: Int
-    , _ + id (id 1) :: Int
-    , _ + id (id (id x)) :: Int
-    , _ + id (id (id 0)) :: Int
-    , _ + id (id (id (id _))) :: Int
-    , _ + id (id (negate _)) :: Int
-    , _ + id (id (abs _)) :: Int
-    , _ + id (id (_ + _)) :: Int
-    , _ + id (id (head _)) :: Int
-    , _ + id (id (ord _)) :: Int
-    , _ + id (negate x) :: Int
-    , _ + id (negate 0) :: Int
-    , _ + id (negate (id _)) :: Int
-    , _ + id (abs x) :: Int
-    , _ + id (abs 0) :: Int
-    , _ + id (abs (id _)) :: Int
-    , _ + id (_ + x) :: Int
-    , _ + id (_ + 0) :: Int
-    , _ + id (_ + id _) :: Int
-    , _ + id (x + _) :: Int
-    , _ + id (0 + _) :: Int
-    , _ + id (id _ + _) :: Int
-    , _ + id (_ * _) :: Int
-    , _ + id (f _) :: Int
-    , _ + id (head xs) :: Int
-    , _ + id (head []) :: Int
-    , _ + id (head (_:_)) :: Int
-    , _ + id (ord c) :: Int
-    , _ + id (ord 'a') :: Int
-    , _ + negate y :: Int
-    , _ + negate 1 :: Int
-    , _ + negate (id x) :: Int
-    , _ + negate (id 0) :: Int
-    , _ + negate (id (id _)) :: Int
-    , _ + negate (negate _) :: Int
-    , _ + negate (abs _) :: Int
-    , _ + negate (_ + _) :: Int
-    , _ + negate (head _) :: Int
-    , _ + negate (ord _) :: Int
-    , _ + abs y :: Int
-    , _ + abs 1 :: Int
-    , _ + abs (id x) :: Int
-    , _ + abs (id 0) :: Int
-    , _ + abs (id (id _)) :: Int
-    , _ + abs (negate _) :: Int
-    , _ + abs (abs _) :: Int
-    , _ + abs (_ + _) :: Int
-    , _ + abs (head _) :: Int
-    , _ + abs (ord _) :: Int
-    , _ + (_ + y) :: Int
-    , _ + (_ + 1) :: Int
-    , _ + (_ + id x) :: Int
-    , _ + (_ + id 0) :: Int
-    , _ + (_ + id (id _)) :: Int
-    , _ + (_ + negate _) :: Int
-    , _ + (_ + abs _) :: Int
-    , _ + (_ + (_ + _)) :: Int
-    , _ + (_ + head _) :: Int
-    , _ + (_ + ord _) :: Int
-    , _ + (x + x) :: Int
-    , _ + (x + 0) :: Int
-    , _ + (x + id _) :: Int
-    , _ + (0 + x) :: Int
-    , _ + (0 + 0) :: Int
-    , _ + (0 + id _) :: Int
-    , _ + (id _ + x) :: Int
-    , _ + (id _ + 0) :: Int
-    , _ + (id _ + id _) :: Int
-    , _ + _ * x :: Int
-    , _ + _ * 0 :: Int
-    , _ + _ * id _ :: Int
-    , _ + f x :: Int
-    , _ + f 0 :: Int
-    , _ + f (id _) :: Int
-    , _ + (y + _) :: Int
-    , _ + (1 + _) :: Int
-    , _ + (id x + _) :: Int
-    , _ + (id 0 + _) :: Int
-    , _ + (id (id _) + _) :: Int
-    , _ + (negate _ + _) :: Int
-    , _ + (abs _ + _) :: Int
-    , _ + ((_ + _) + _) :: Int
-    , _ + (head _ + _) :: Int
-    , _ + (ord _ + _) :: Int
-    , _ + x * _ :: Int
-    , _ + 0 * _ :: Int
-    , _ + id _ * _ :: Int
-    , _ + g _ :: Int
-    , _ + head ys :: Int
-    , _ + head [0] :: Int
-    , _ + head (_:xs) :: Int
-    , _ + head [_] :: Int
-    , _ + head (_:_:_) :: Int
-    , _ + head (x:_) :: Int
-    , _ + head (0:_) :: Int
-    , _ + head (id _:_) :: Int
-    , _ + head (tail _) :: Int
-    , _ + head (_ ++ _) :: Int
-    , _ + ord d :: Int
-    , _ + ord ' ' :: Int
-    , x + z :: Int
-    , x + (-1) :: Int
-    , x + id y :: Int
-    , x + id 1 :: Int
-    , x + id (id x) :: Int
-    , x + id (id 0) :: Int
-    , x + id (id (id _)) :: Int
-    , x + id (negate _) :: Int
-    , x + id (abs _) :: Int
-    , x + id (_ + _) :: Int
-    , x + id (head _) :: Int
-    , x + id (ord _) :: Int
-    , x + negate x :: Int
-    , x + negate 0 :: Int
-    , x + negate (id _) :: Int
-    , x + abs x :: Int
-    , x + abs 0 :: Int
-    , x + abs (id _) :: Int
-    , x + (_ + x) :: Int
-    , x + (_ + 0) :: Int
-    , x + (_ + id _) :: Int
-    , x + (x + _) :: Int
-    , x + (0 + _) :: Int
-    , x + (id _ + _) :: Int
-    , x + _ * _ :: Int
-    , x + f _ :: Int
-    , x + head xs :: Int
-    , x + head [] :: Int
-    , x + head (_:_) :: Int
-    , x + ord c :: Int
-    , x + ord 'a' :: Int
-    , 0 + z :: Int
-    , 0 + (-1) :: Int
-    , 0 + id y :: Int
-    , 0 + id 1 :: Int
-    , 0 + id (id x) :: Int
-    , 0 + id (id 0) :: Int
-    , 0 + id (id (id _)) :: Int
-    , 0 + id (negate _) :: Int
-    , 0 + id (abs _) :: Int
-    , 0 + id (_ + _) :: Int
-    , 0 + id (head _) :: Int
-    , 0 + id (ord _) :: Int
-    , 0 + negate x :: Int
-    , 0 + negate 0 :: Int
-    , 0 + negate (id _) :: Int
-    , 0 + abs x :: Int
-    , 0 + abs 0 :: Int
-    , 0 + abs (id _) :: Int
-    , 0 + (_ + x) :: Int
-    , 0 + (_ + 0) :: Int
-    , 0 + (_ + id _) :: Int
-    , 0 + (x + _) :: Int
-    , 0 + (0 + _) :: Int
-    , 0 + (id _ + _) :: Int
-    , 0 + _ * _ :: Int
-    , 0 + f _ :: Int
-    , 0 + head xs :: Int
-    , 0 + head [] :: Int
-    , 0 + head (_:_) :: Int
-    , 0 + ord c :: Int
-    , 0 + ord 'a' :: Int
-    , id _ + z :: Int
-    , id _ + (-1) :: Int
-    , id _ + id y :: Int
-    , id _ + id 1 :: Int
-    , id _ + id (id x) :: Int
-    , id _ + id (id 0) :: Int
-    , id _ + id (id (id _)) :: Int
-    , id _ + id (negate _) :: Int
-    , id _ + id (abs _) :: Int
-    , id _ + id (_ + _) :: Int
-    , id _ + id (head _) :: Int
-    , id _ + id (ord _) :: Int
-    , id _ + negate x :: Int
-    , id _ + negate 0 :: Int
-    , id _ + negate (id _) :: Int
-    , id _ + abs x :: Int
-    , id _ + abs 0 :: Int
-    , id _ + abs (id _) :: Int
-    , id _ + (_ + x) :: Int
-    , id _ + (_ + 0) :: Int
-    , id _ + (_ + id _) :: Int
-    , id _ + (x + _) :: Int
-    , id _ + (0 + _) :: Int
-    , id _ + (id _ + _) :: Int
-    , id _ + _ * _ :: Int
-    , id _ + f _ :: Int
-    , id _ + head xs :: Int
-    , id _ + head [] :: Int
-    , id _ + head (_:_) :: Int
-    , id _ + ord c :: Int
-    , id _ + ord 'a' :: Int
-    , _ * z :: Int
-    , _ * (-1) :: Int
-    , _ * id y :: Int
-    , _ * id 1 :: Int
-    , _ * id (id x) :: Int
-    , _ * id (id 0) :: Int
-    , _ * id (id (id _)) :: Int
-    , _ * id (negate _) :: Int
-    , _ * id (abs _) :: Int
-    , _ * id (_ + _) :: Int
-    , _ * id (head _) :: Int
-    , _ * id (ord _) :: Int
-    , _ * negate x :: Int
-    , _ * negate 0 :: Int
-    , _ * negate (id _) :: Int
-    , _ * abs x :: Int
-    , _ * abs 0 :: Int
-    , _ * abs (id _) :: Int
-    , _ * (_ + x) :: Int
-    , _ * (_ + 0) :: Int
-    , _ * (_ + id _) :: Int
-    , _ * (x + _) :: Int
-    , _ * (0 + _) :: Int
-    , _ * (id _ + _) :: Int
-    , _ * (_ * _) :: Int
-    , _ * f _ :: Int
-    , _ * head xs :: Int
-    , _ * head [] :: Int
-    , _ * head (_:_) :: Int
-    , _ * ord c :: Int
-    , _ * ord 'a' :: Int
-    , f z :: Int
-    , f (-1) :: Int
-    , f (id y) :: Int
-    , f (id 1) :: Int
-    , f (id (id x)) :: Int
-    , f (id (id 0)) :: Int
-    , f (id (id (id _))) :: Int
-    , f (id (negate _)) :: Int
-    , f (id (abs _)) :: Int
-    , f (id (_ + _)) :: Int
-    , f (id (head _)) :: Int
-    , f (id (ord _)) :: Int
-    , f (negate x) :: Int
-    , f (negate 0) :: Int
-    , f (negate (id _)) :: Int
-    , f (abs x) :: Int
-    , f (abs 0) :: Int
-    , f (abs (id _)) :: Int
-    , f (_ + x) :: Int
-    , f (_ + 0) :: Int
-    , f (_ + id _) :: Int
-    , f (x + _) :: Int
-    , f (0 + _) :: Int
-    , f (id _ + _) :: Int
-    , f (_ * _) :: Int
-    , f (f _) :: Int
-    , f (head xs) :: Int
-    , f (head []) :: Int
-    , f (head (_:_)) :: Int
-    , f (ord c) :: Int
-    , f (ord 'a') :: Int
-    , y + y :: Int
-    , y + 1 :: Int
-    , y + id x :: Int
-    , y + id 0 :: Int
-    , y + id (id _) :: Int
-    , y + negate _ :: Int
-    , y + abs _ :: Int
-    , y + (_ + _) :: Int
-    , y + head _ :: Int
-    , y + ord _ :: Int
-    , 1 + y :: Int
-    , 1 + 1 :: Int
-    , 1 + id x :: Int
-    , 1 + id 0 :: Int
-    , 1 + id (id _) :: Int
-    , 1 + negate _ :: Int
-    , 1 + abs _ :: Int
-    , 1 + (_ + _) :: Int
-    , 1 + head _ :: Int
-    , 1 + ord _ :: Int
-    , id x + y :: Int
-    , id x + 1 :: Int
-    , id x + id x :: Int
-    , id x + id 0 :: Int
-    , id x + id (id _) :: Int
-    , id x + negate _ :: Int
-    , id x + abs _ :: Int
-    , id x + (_ + _) :: Int
-    , id x + head _ :: Int
-    , id x + ord _ :: Int
-    , id 0 + y :: Int
-    , id 0 + 1 :: Int
-    , id 0 + id x :: Int
-    , id 0 + id 0 :: Int
-    , id 0 + id (id _) :: Int
-    , id 0 + negate _ :: Int
-    , id 0 + abs _ :: Int
-    , id 0 + (_ + _) :: Int
-    , id 0 + head _ :: Int
-    , id 0 + ord _ :: Int
-    , id (id _) + y :: Int
-    , id (id _) + 1 :: Int
-    , id (id _) + id x :: Int
-    , id (id _) + id 0 :: Int
-    , id (id _) + id (id _) :: Int
-    , id (id _) + negate _ :: Int
-    , id (id _) + abs _ :: Int
-    , id (id _) + (_ + _) :: Int
-    , id (id _) + head _ :: Int
-    , id (id _) + ord _ :: Int
-    , negate _ + y :: Int
-    , negate _ + 1 :: Int
-    , negate _ + id x :: Int
-    , negate _ + id 0 :: Int
-    , negate _ + id (id _) :: Int
-    , negate _ + negate _ :: Int
-    , negate _ + abs _ :: Int
-    , negate _ + (_ + _) :: Int
-    , negate _ + head _ :: Int
-    , negate _ + ord _ :: Int
-    , abs _ + y :: Int
-    , abs _ + 1 :: Int
-    , abs _ + id x :: Int
-    , abs _ + id 0 :: Int
-    , abs _ + id (id _) :: Int
-    , abs _ + negate _ :: Int
-    , abs _ + abs _ :: Int
-    , abs _ + (_ + _) :: Int
-    , abs _ + head _ :: Int
-    , abs _ + ord _ :: Int
-    , (_ + _) + y :: Int
-    , (_ + _) + 1 :: Int
-    , (_ + _) + id x :: Int
-    , (_ + _) + id 0 :: Int
-    , (_ + _) + id (id _) :: Int
-    , (_ + _) + negate _ :: Int
-    , (_ + _) + abs _ :: Int
-    , (_ + _) + (_ + _) :: Int
-    , (_ + _) + head _ :: Int
-    , (_ + _) + ord _ :: Int
-    , head _ + y :: Int
-    , head _ + 1 :: Int
-    , head _ + id x :: Int
-    , head _ + id 0 :: Int
-    , head _ + id (id _) :: Int
-    , head _ + negate _ :: Int
-    , head _ + abs _ :: Int
-    , head _ + (_ + _) :: Int
-    , head _ + head _ :: Int
-    , head _ + ord _ :: Int
-    , ord _ + y :: Int
-    , ord _ + 1 :: Int
-    , ord _ + id x :: Int
-    , ord _ + id 0 :: Int
-    , ord _ + id (id _) :: Int
-    , ord _ + negate _ :: Int
-    , ord _ + abs _ :: Int
-    , ord _ + (_ + _) :: Int
-    , ord _ + head _ :: Int
-    , ord _ + ord _ :: Int
-    , x * y :: Int
-    , x * 1 :: Int
-    , x * id x :: Int
-    , x * id 0 :: Int
-    , x * id (id _) :: Int
-    , x * negate _ :: Int
-    , x * abs _ :: Int
-    , x * (_ + _) :: Int
-    , x * head _ :: Int
-    , x * ord _ :: Int
-    , 0 * y :: Int
-    , 0 * 1 :: Int
-    , 0 * id x :: Int
-    , 0 * id 0 :: Int
-    , 0 * id (id _) :: Int
-    , 0 * negate _ :: Int
-    , 0 * abs _ :: Int
-    , 0 * (_ + _) :: Int
-    , 0 * head _ :: Int
-    , 0 * ord _ :: Int
-    , id _ * y :: Int
-    , id _ * 1 :: Int
-    , id _ * id x :: Int
-    , id _ * id 0 :: Int
-    , id _ * id (id _) :: Int
-    , id _ * negate _ :: Int
-    , id _ * abs _ :: Int
-    , id _ * (_ + _) :: Int
-    , id _ * head _ :: Int
-    , id _ * ord _ :: Int
-    , g y :: Int
-    , g 1 :: Int
-    , g (id x) :: Int
-    , g (id 0) :: Int
-    , g (id (id _)) :: Int
-    , g (negate _) :: Int
-    , g (abs _) :: Int
-    , g (_ + _) :: Int
-    , g (head _) :: Int
-    , g (ord _) :: Int
-    , z + x :: Int
-    , z + 0 :: Int
-    , z + id _ :: Int
-    , (-1) + x :: Int
-    , (-1) + 0 :: Int
-    , (-1) + id _ :: Int
-    , id y + x :: Int
-    , id y + 0 :: Int
-    , id y + id _ :: Int
-    , id 1 + x :: Int
-    , id 1 + 0 :: Int
-    , id 1 + id _ :: Int
-    , id (id x) + x :: Int
-    , id (id x) + 0 :: Int
-    , id (id x) + id _ :: Int
-    , id (id 0) + x :: Int
-    , id (id 0) + 0 :: Int
-    , id (id 0) + id _ :: Int
-    , id (id (id _)) + x :: Int
-    , id (id (id _)) + 0 :: Int
-    , id (id (id _)) + id _ :: Int
-    , id (negate _) + x :: Int
-    , id (negate _) + 0 :: Int
-    , id (negate _) + id _ :: Int
-    , id (abs _) + x :: Int
-    , id (abs _) + 0 :: Int
-    , id (abs _) + id _ :: Int
-    , id (_ + _) + x :: Int
-    , id (_ + _) + 0 :: Int
-    , id (_ + _) + id _ :: Int
-    , id (head _) + x :: Int
-    , id (head _) + 0 :: Int
-    , id (head _) + id _ :: Int
-    , id (ord _) + x :: Int
-    , id (ord _) + 0 :: Int
-    , id (ord _) + id _ :: Int
-    , negate x + x :: Int
-    , negate x + 0 :: Int
-    , negate x + id _ :: Int
-    , negate 0 + x :: Int
-    , negate 0 + 0 :: Int
-    , negate 0 + id _ :: Int
-    , negate (id _) + x :: Int
-    , negate (id _) + 0 :: Int
-    , negate (id _) + id _ :: Int
-    , abs x + x :: Int
-    , abs x + 0 :: Int
-    , abs x + id _ :: Int
-    , abs 0 + x :: Int
-    , abs 0 + 0 :: Int
-    , abs 0 + id _ :: Int
-    , abs (id _) + x :: Int
-    , abs (id _) + 0 :: Int
-    , abs (id _) + id _ :: Int
-    , (_ + x) + x :: Int
-    , (_ + x) + 0 :: Int
-    , (_ + x) + id _ :: Int
-    , (_ + 0) + x :: Int
-    , (_ + 0) + 0 :: Int
-    , (_ + 0) + id _ :: Int
-    , (_ + id _) + x :: Int
-    , (_ + id _) + 0 :: Int
-    , (_ + id _) + id _ :: Int
-    , (x + _) + x :: Int
-    , (x + _) + 0 :: Int
-    , (x + _) + id _ :: Int
-    , (0 + _) + x :: Int
-    , (0 + _) + 0 :: Int
-    , (0 + _) + id _ :: Int
-    , (id _ + _) + x :: Int
-    , (id _ + _) + 0 :: Int
-    , (id _ + _) + id _ :: Int
-    , _ * _ + x :: Int
-    , _ * _ + 0 :: Int
-    , _ * _ + id _ :: Int
-    , f _ + x :: Int
-    , f _ + 0 :: Int
-    , f _ + id _ :: Int
-    , head xs + x :: Int
-    , head xs + 0 :: Int
-    , head xs + id _ :: Int
-    , head [] + x :: Int
-    , head [] + 0 :: Int
-    , head [] + id _ :: Int
-    , head (_:_) + x :: Int
-    , head (_:_) + 0 :: Int
-    , head (_:_) + id _ :: Int
-    , ord c + x :: Int
-    , ord c + 0 :: Int
-    , ord c + id _ :: Int
-    , ord 'a' + x :: Int
-    , ord 'a' + 0 :: Int
-    , ord 'a' + id _ :: Int
-    , y * x :: Int
-    , y * 0 :: Int
-    , y * id _ :: Int
-    , 1 * x :: Int
-    , 1 * 0 :: Int
-    , 1 * id _ :: Int
-    , id x * x :: Int
-    , id x * 0 :: Int
-    , id x * id _ :: Int
-    , id 0 * x :: Int
-    , id 0 * 0 :: Int
-    , id 0 * id _ :: Int
-    , id (id _) * x :: Int
-    , id (id _) * 0 :: Int
-    , id (id _) * id _ :: Int
-    , negate _ * x :: Int
-    , negate _ * 0 :: Int
-    , negate _ * id _ :: Int
-    , abs _ * x :: Int
-    , abs _ * 0 :: Int
-    , abs _ * id _ :: Int
-    , (_ + _) * x :: Int
-    , (_ + _) * 0 :: Int
-    , (_ + _) * id _ :: Int
-    , head _ * x :: Int
-    , head _ * 0 :: Int
-    , head _ * id _ :: Int
-    , ord _ * x :: Int
-    , ord _ * 0 :: Int
-    , ord _ * id _ :: Int
-    , h x :: Int
-    , h 0 :: Int
-    , h (id _) :: Int
-    , x' + _ :: Int
-    , 2 + _ :: Int
-    , id z + _ :: Int
-    , id (-1) + _ :: Int
-    , id (id y) + _ :: Int
-    , id (id 1) + _ :: Int
-    , id (id (id x)) + _ :: Int
-    , id (id (id 0)) + _ :: Int
-    , id (id (id (id _))) + _ :: Int
-    , id (id (negate _)) + _ :: Int
-    , id (id (abs _)) + _ :: Int
-    , id (id (_ + _)) + _ :: Int
-    , id (id (head _)) + _ :: Int
-    , id (id (ord _)) + _ :: Int
-    , id (negate x) + _ :: Int
-    , id (negate 0) + _ :: Int
-    , id (negate (id _)) + _ :: Int
-    , id (abs x) + _ :: Int
-    , id (abs 0) + _ :: Int
-    , id (abs (id _)) + _ :: Int
-    , id (_ + x) + _ :: Int
-    , id (_ + 0) + _ :: Int
-    , id (_ + id _) + _ :: Int
-    , id (x + _) + _ :: Int
-    , id (0 + _) + _ :: Int
-    , id (id _ + _) + _ :: Int
-    , id (_ * _) + _ :: Int
-    , id (f _) + _ :: Int
-    , id (head xs) + _ :: Int
-    , id (head []) + _ :: Int
-    , id (head (_:_)) + _ :: Int
-    , id (ord c) + _ :: Int
-    , id (ord 'a') + _ :: Int
-    , negate y + _ :: Int
-    , negate 1 + _ :: Int
-    , negate (id x) + _ :: Int
-    , negate (id 0) + _ :: Int
-    , negate (id (id _)) + _ :: Int
-    , negate (negate _) + _ :: Int
-    , negate (abs _) + _ :: Int
-    , negate (_ + _) + _ :: Int
-    , negate (head _) + _ :: Int
-    , negate (ord _) + _ :: Int
-    , abs y + _ :: Int
-    , abs 1 + _ :: Int
-    , abs (id x) + _ :: Int
-    , abs (id 0) + _ :: Int
-    , abs (id (id _)) + _ :: Int
-    , abs (negate _) + _ :: Int
-    , abs (abs _) + _ :: Int
-    , abs (_ + _) + _ :: Int
-    , abs (head _) + _ :: Int
-    , abs (ord _) + _ :: Int
-    , (_ + y) + _ :: Int
-    , (_ + 1) + _ :: Int
-    , (_ + id x) + _ :: Int
-    , (_ + id 0) + _ :: Int
-    , (_ + id (id _)) + _ :: Int
-    , (_ + negate _) + _ :: Int
-    , (_ + abs _) + _ :: Int
-    , (_ + (_ + _)) + _ :: Int
-    , (_ + head _) + _ :: Int
-    , (_ + ord _) + _ :: Int
-    , (x + x) + _ :: Int
-    , (x + 0) + _ :: Int
-    , (x + id _) + _ :: Int
-    , (0 + x) + _ :: Int
-    , (0 + 0) + _ :: Int
-    , (0 + id _) + _ :: Int
-    , (id _ + x) + _ :: Int
-    , (id _ + 0) + _ :: Int
-    , (id _ + id _) + _ :: Int
-    , _ * x + _ :: Int
-    , _ * 0 + _ :: Int
-    , _ * id _ + _ :: Int
-    , f x + _ :: Int
-    , f 0 + _ :: Int
-    , f (id _) + _ :: Int
-    , (y + _) + _ :: Int
-    , (1 + _) + _ :: Int
-    , (id x + _) + _ :: Int
-    , (id 0 + _) + _ :: Int
-    , (id (id _) + _) + _ :: Int
-    , (negate _ + _) + _ :: Int
-    , (abs _ + _) + _ :: Int
-    , ((_ + _) + _) + _ :: Int
-    , (head _ + _) + _ :: Int
-    , (ord _ + _) + _ :: Int
-    , x * _ + _ :: Int
-    , 0 * _ + _ :: Int
-    , id _ * _ + _ :: Int
-    , g _ + _ :: Int
-    , head ys + _ :: Int
-    , head [0] + _ :: Int
-    , head (_:xs) + _ :: Int
-    , head [_] + _ :: Int
-    , head (_:_:_) + _ :: Int
-    , head (x:_) + _ :: Int
-    , head (0:_) + _ :: Int
-    , head (id _:_) + _ :: Int
-    , head (tail _) + _ :: Int
-    , head (_ ++ _) + _ :: Int
-    , ord d + _ :: Int
-    , ord ' ' + _ :: Int
-    , z * _ :: Int
-    , (-1) * _ :: Int
-    , id y * _ :: Int
-    , id 1 * _ :: Int
-    , id (id x) * _ :: Int
-    , id (id 0) * _ :: Int
-    , id (id (id _)) * _ :: Int
-    , id (negate _) * _ :: Int
-    , id (abs _) * _ :: Int
-    , id (_ + _) * _ :: Int
-    , id (head _) * _ :: Int
-    , id (ord _) * _ :: Int
-    , negate x * _ :: Int
-    , negate 0 * _ :: Int
-    , negate (id _) * _ :: Int
-    , abs x * _ :: Int
-    , abs 0 * _ :: Int
-    , abs (id _) * _ :: Int
-    , (_ + x) * _ :: Int
-    , (_ + 0) * _ :: Int
-    , (_ + id _) * _ :: Int
-    , (x + _) * _ :: Int
-    , (0 + _) * _ :: Int
-    , (id _ + _) * _ :: Int
-    , (_ * _) * _ :: Int
-    , f _ * _ :: Int
-    , head xs * _ :: Int
-    , head [] * _ :: Int
-    , head (_:_) * _ :: Int
-    , ord c * _ :: Int
-    , ord 'a' * _ :: Int
-    , f' _ :: Int
-    , head xs' :: Int
-    , head [0,0,0] :: Int
-    , head [0,1] :: Int
-    , head [1,0] :: Int
-    , head [-1] :: Int
-    , head (_:zs) :: Int
-    , head [_,0,0] :: Int
-    , head [_,1] :: Int
-    , head (_:_:ys) :: Int
-    , head [_,_,0] :: Int
-    , head (_:_:_:xs) :: Int
-    , head [_,_,_] :: Int
-    , head (_:_:_:_:_) :: Int
-    , head (_:_:x:_) :: Int
-    , head (_:_:0:_) :: Int
-    , head (_:_:id _:_) :: Int
-    , head (_:_:tail _) :: Int
-    , head (_:_:(_ ++ _)) :: Int
-    , head (_:x:xs) :: Int
-    , head [_,x] :: Int
-    , head (_:x:_:_) :: Int
-    , head (_:0:xs) :: Int
-    , head [_,0] :: Int
-    , head (_:0:_:_) :: Int
-    , head (_:id _:xs) :: Int
-    , head [_,id _] :: Int
-    , head (_:id _:_:_) :: Int
-    , head (_:y:_) :: Int
-    , head (_:1:_) :: Int
-    , head (_:id x:_) :: Int
-    , head (_:id 0:_) :: Int
-    , head (_:id (id _):_) :: Int
-    , head (_:negate _:_) :: Int
-    , head (_:abs _:_) :: Int
-    , head (_:_ + _:_) :: Int
-    , head (_:head _:_) :: Int
-    , head (_:ord _:_) :: Int
-    , head (_:tail xs) :: Int
-    , head (_:tail []) :: Int
-    , head (_:tail (_:_)) :: Int
-    , head (_:(_ ++ xs)) :: Int
-    , head (_:(_ ++ [])) :: Int
-    , head (_:(_ ++ (_:_))) :: Int
-    , head (_:(xs ++ _)) :: Int
-    , head (_:([] ++ _)) :: Int
-    , head (_:((_:_) ++ _)) :: Int
-    , head (_:sort _) :: Int
-    , head (_:insert _ _) :: Int
-    , head (x:ys) :: Int
-    , head [x,0] :: Int
-    , head (x:_:xs) :: Int
-    , head [x,_] :: Int
-    , head (x:_:_:_) :: Int
-    , head (x:x:_) :: Int
-    , head (x:0:_) :: Int
-    , head (x:id _:_) :: Int
-    , head (x:tail _) :: Int
-    , head (x:(_ ++ _)) :: Int
-    , head (0:ys) :: Int
-    , head [0,0] :: Int
-    , head (0:_:xs) :: Int
-    , head [0,_] :: Int
-    , head (0:_:_:_) :: Int
-    , head (0:x:_) :: Int
-    , head (0:0:_) :: Int
-    , head (0:id _:_) :: Int
-    , head (0:tail _) :: Int
-    , head (0:(_ ++ _)) :: Int
-    , head (id _:ys) :: Int
-    , head [id _,0] :: Int
-    , head (id _:_:xs) :: Int
-    , head [id _,_] :: Int
-    , head (id _:_:_:_) :: Int
-    , head (id _:x:_) :: Int
-    , head (id _:0:_) :: Int
-    , head (id _:id _:_) :: Int
-    , head (id _:tail _) :: Int
-    , head (id _:(_ ++ _)) :: Int
-    , head (y:xs) :: Int
-    , head [y] :: Int
-    , head (y:_:_) :: Int
-    , head (1:xs) :: Int
-    , head [1] :: Int
-    , head (1:_:_) :: Int
-    , head (id x:xs) :: Int
-    , head [id x] :: Int
-    , head (id x:_:_) :: Int
-    , head (id 0:xs) :: Int
-    , head [id 0] :: Int
-    , head (id 0:_:_) :: Int
-    , head (id (id _):xs) :: Int
-    , head [id (id _)] :: Int
-    , head (id (id _):_:_) :: Int
-    , head (negate _:xs) :: Int
-    , head [negate _] :: Int
-    , head (negate _:_:_) :: Int
-    , head (abs _:xs) :: Int
-    , head [abs _] :: Int
-    , head (abs _:_:_) :: Int
-    , head (_ + _:xs) :: Int
-    , head [_ + _] :: Int
-    , head (_ + _:_:_) :: Int
-    , head (head _:xs) :: Int
-    , head [head _] :: Int
-    , head (head _:_:_) :: Int
-    , head (ord _:xs) :: Int
-    , head [ord _] :: Int
-    , head (ord _:_:_) :: Int
-    , head (z:_) :: Int
-    , head ((-1):_) :: Int
-    , head (id y:_) :: Int
-    , head (id 1:_) :: Int
-    , head (id (id x):_) :: Int
-    , head (id (id 0):_) :: Int
-    , head (id (id (id _)):_) :: Int
-    , head (id (negate _):_) :: Int
-    , head (id (abs _):_) :: Int
-    , head (id (_ + _):_) :: Int
-    , head (id (head _):_) :: Int
-    , head (id (ord _):_) :: Int
-    , head (negate x:_) :: Int
-    , head (negate 0:_) :: Int
-    , head (negate (id _):_) :: Int
-    , head (abs x:_) :: Int
-    , head (abs 0:_) :: Int
-    , head (abs (id _):_) :: Int
-    , head (_ + x:_) :: Int
-    , head (_ + 0:_) :: Int
-    , head (_ + id _:_) :: Int
-    , head (x + _:_) :: Int
-    , head (0 + _:_) :: Int
-    , head (id _ + _:_) :: Int
-    , head (_ * _:_) :: Int
-    , head (f _:_) :: Int
-    , head (head xs:_) :: Int
-    , head (head []:_) :: Int
-    , head (head (_:_):_) :: Int
-    , head (ord c:_) :: Int
-    , head (ord 'a':_) :: Int
-    , head (tail ys) :: Int
-    , head (tail [0]) :: Int
-    , head (tail (_:xs)) :: Int
-    , head (tail [_]) :: Int
-    , head (tail (_:_:_)) :: Int
-    , head (tail (x:_)) :: Int
-    , head (tail (0:_)) :: Int
-    , head (tail (id _:_)) :: Int
-    , head (tail (tail _)) :: Int
-    , head (tail (_ ++ _)) :: Int
-    , head (_ ++ ys) :: Int
-    , head (_ ++ [0]) :: Int
-    , head (_ ++ (_:xs)) :: Int
-    , head (_ ++ [_]) :: Int
-    , head (_ ++ (_:_:_)) :: Int
-    , head (_ ++ (x:_)) :: Int
-    , head (_ ++ (0:_)) :: Int
-    , head (_ ++ (id _:_)) :: Int
-    , head (_ ++ tail _) :: Int
-    , head (_ ++ (_ ++ _)) :: Int
-    , head (xs ++ xs) :: Int
-    , head (xs ++ []) :: Int
-    , head (xs ++ (_:_)) :: Int
-    , head ([] ++ xs) :: Int
-    , head ([] ++ []) :: Int
-    , head ([] ++ (_:_)) :: Int
-    , head ((_:_) ++ xs) :: Int
-    , head ((_:_) ++ []) :: Int
-    , head ((_:_) ++ (_:_)) :: Int
-    , head (ys ++ _) :: Int
-    , head ([0] ++ _) :: Int
-    , head ((_:xs) ++ _) :: Int
-    , head ([_] ++ _) :: Int
-    , head ((_:_:_) ++ _) :: Int
-    , head ((x:_) ++ _) :: Int
-    , head ((0:_) ++ _) :: Int
-    , head ((id _:_) ++ _) :: Int
-    , head (tail _ ++ _) :: Int
-    , head ((_ ++ _) ++ _) :: Int
-    , head (sort xs) :: Int
-    , head (sort []) :: Int
-    , head (sort (_:_)) :: Int
-    , head (insert _ xs) :: Int
-    , head (insert _ []) :: Int
-    , head (insert _ (_:_)) :: Int
-    , head (insert x _) :: Int
-    , head (insert 0 _) :: Int
-    , head (insert (id _) _) :: Int
-    , ord c' :: Int
-    , ord 'A' :: Int
-    , q' :: Bool
-    , not p' :: Bool
-    , not (not r) :: Bool
-    , not (not (not q)) :: Bool
-    , not (not (not (not p))) :: Bool
-    , not (not (not (not False))) :: Bool
-    , not (not (not (not True))) :: Bool
-    , not (not (not (not (not _)))) :: Bool
-    , not (not (not (_ || _))) :: Bool
-    , not (not (_ || p)) :: Bool
-    , not (not (_ || False)) :: Bool
-    , not (not (_ || True)) :: Bool
-    , not (not (_ || not _)) :: Bool
-    , not (not (p || _)) :: Bool
-    , not (not (False || _)) :: Bool
-    , not (not (True || _)) :: Bool
-    , not (not (not _ || _)) :: Bool
-    , not (not (_ && _)) :: Bool
-    , not (not (_ == _)) :: Bool
-    , not (not (_ == _)) :: Bool
-    , not (not (odd _)) :: Bool
-    , not (not (even _)) :: Bool
-    , not (not (elem _ _)) :: Bool
-    , not (_ || q) :: Bool
-    , not (_ || not p) :: Bool
-    , not (_ || not False) :: Bool
-    , not (_ || not True) :: Bool
-    , not (_ || not (not _)) :: Bool
-    , not (_ || (_ || _)) :: Bool
-    , not (p || p) :: Bool
-    , not (p || False) :: Bool
-    , not (p || True) :: Bool
-    , not (p || not _) :: Bool
-    , not (False || p) :: Bool
-    , not (False || False) :: Bool
-    , not (False || True) :: Bool
-    , not (False || not _) :: Bool
-    , not (True || p) :: Bool
-    , not (True || False) :: Bool
-    , not (True || True) :: Bool
-    , not (True || not _) :: Bool
-    , not (not _ || p) :: Bool
-    , not (not _ || False) :: Bool
-    , not (not _ || True) :: Bool
-    , not (not _ || not _) :: Bool
-    , not (_ && p) :: Bool
-    , not (_ && False) :: Bool
-    , not (_ && True) :: Bool
-    , not (_ && not _) :: Bool
-    , not (q || _) :: Bool
-    , not (not p || _) :: Bool
-    , not (not False || _) :: Bool
-    , not (not True || _) :: Bool
-    , not (not (not _) || _) :: Bool
-    , not ((_ || _) || _) :: Bool
-    , not (p && _) :: Bool
-    , not (False && _) :: Bool
-    , not (True && _) :: Bool
-    , not (not _ && _) :: Bool
-    , not (_ ==> _) :: Bool
-    , not (_ == x) :: Bool
-    , not (_ == 0) :: Bool
-    , not (_ == id _) :: Bool
-    , not (x == _) :: Bool
-    , not (0 == _) :: Bool
-    , not (id _ == _) :: Bool
-    , not (_ == p) :: Bool
-    , not (_ == False) :: Bool
-    , not (_ == True) :: Bool
-    , not (_ == not _) :: Bool
-    , not (p == _) :: Bool
-    , not (False == _) :: Bool
-    , not (True == _) :: Bool
-    , not (not _ == _) :: Bool
-    , not (_ <= _) :: Bool
-    , not (_ <= _) :: Bool
-    , not (odd x) :: Bool
-    , not (odd 0) :: Bool
-    , not (odd (id _)) :: Bool
-    , not (even x) :: Bool
-    , not (even 0) :: Bool
-    , not (even (id _)) :: Bool
-    , not (elem _ xs) :: Bool
-    , not (elem _ []) :: Bool
-    , not (elem _ (_:_)) :: Bool
-    , not (elem x _) :: Bool
-    , not (elem 0 _) :: Bool
-    , not (elem (id _) _) :: Bool
-    , _ || r :: Bool
-    , _ || not q :: Bool
-    , _ || not (not p) :: Bool
-    , _ || not (not False) :: Bool
-    , _ || not (not True) :: Bool
-    , _ || not (not (not _)) :: Bool
-    , _ || not (_ || _) :: Bool
-    , _ || (_ || p) :: Bool
-    , _ || (_ || False) :: Bool
-    , _ || (_ || True) :: Bool
-    , _ || (_ || not _) :: Bool
-    , _ || (p || _) :: Bool
-    , _ || (False || _) :: Bool
-    , _ || (True || _) :: Bool
-    , _ || (not _ || _) :: Bool
-    , _ || _ && _ :: Bool
-    , _ || _ == _ :: Bool
-    , _ || _ == _ :: Bool
-    , _ || odd _ :: Bool
-    , _ || even _ :: Bool
-    , _ || elem _ _ :: Bool
-    , p || q :: Bool
-    , p || not p :: Bool
-    , p || not False :: Bool
-    , p || not True :: Bool
-    , p || not (not _) :: Bool
-    , p || (_ || _) :: Bool
-    , False || q :: Bool
-    , False || not p :: Bool
-    , False || not False :: Bool
-    , False || not True :: Bool
-    , False || not (not _) :: Bool
-    , False || (_ || _) :: Bool
-    , True || q :: Bool
-    , True || not p :: Bool
-    , True || not False :: Bool
-    , True || not True :: Bool
-    , True || not (not _) :: Bool
-    , True || (_ || _) :: Bool
-    , not _ || q :: Bool
-    , not _ || not p :: Bool
-    , not _ || not False :: Bool
-    , not _ || not True :: Bool
-    , not _ || not (not _) :: Bool
-    , not _ || (_ || _) :: Bool
-    , _ && q :: Bool
-    , _ && not p :: Bool
-    , _ && not False :: Bool
-    , _ && not True :: Bool
-    , _ && not (not _) :: Bool
-    , _ && (_ || _) :: Bool
-    , q || p :: Bool
-    , q || False :: Bool
-    , q || True :: Bool
-    , q || not _ :: Bool
-    , not p || p :: Bool
-    , not p || False :: Bool
-    , not p || True :: Bool
-    , not p || not _ :: Bool
-    , not False || p :: Bool
-    , not False || False :: Bool
-    , not False || True :: Bool
-    , not False || not _ :: Bool
-    , not True || p :: Bool
-    , not True || False :: Bool
-    , not True || True :: Bool
-    , not True || not _ :: Bool
-    , not (not _) || p :: Bool
-    , not (not _) || False :: Bool
-    , not (not _) || True :: Bool
-    , not (not _) || not _ :: Bool
-    , (_ || _) || p :: Bool
-    , (_ || _) || False :: Bool
-    , (_ || _) || True :: Bool
-    , (_ || _) || not _ :: Bool
-    , p && p :: Bool
-    , p && False :: Bool
-    , p && True :: Bool
-    , p && not _ :: Bool
-    , False && p :: Bool
-    , False && False :: Bool
-    , False && True :: Bool
-    , False && not _ :: Bool
-    , True && p :: Bool
-    , True && False :: Bool
-    , True && True :: Bool
-    , True && not _ :: Bool
-    , not _ && p :: Bool
-    , not _ && False :: Bool
-    , not _ && True :: Bool
-    , not _ && not _ :: Bool
-    , _ ==> p :: Bool
-    , _ ==> False :: Bool
-    , _ ==> True :: Bool
-    , _ ==> not _ :: Bool
-    , r || _ :: Bool
-    , not q || _ :: Bool
-    , not (not p) || _ :: Bool
-    , not (not False) || _ :: Bool
-    , not (not True) || _ :: Bool
-    , not (not (not _)) || _ :: Bool
-    , not (_ || _) || _ :: Bool
-    , (_ || p) || _ :: Bool
-    , (_ || False) || _ :: Bool
-    , (_ || True) || _ :: Bool
-    , (_ || not _) || _ :: Bool
-    , (p || _) || _ :: Bool
-    , (False || _) || _ :: Bool
-    , (True || _) || _ :: Bool
-    , (not _ || _) || _ :: Bool
-    , _ && _ || _ :: Bool
-    , _ == _ || _ :: Bool
-    , _ == _ || _ :: Bool
-    , odd _ || _ :: Bool
-    , even _ || _ :: Bool
-    , elem _ _ || _ :: Bool
-    , q && _ :: Bool
-    , not p && _ :: Bool
-    , not False && _ :: Bool
-    , not True && _ :: Bool
-    , not (not _) && _ :: Bool
-    , (_ || _) && _ :: Bool
-    , p ==> _ :: Bool
-    , False ==> _ :: Bool
-    , True ==> _ :: Bool
-    , not _ ==> _ :: Bool
-    , _ == y :: Bool
-    , _ == 1 :: Bool
-    , _ == id x :: Bool
-    , _ == id 0 :: Bool
-    , _ == id (id _) :: Bool
-    , _ == negate _ :: Bool
-    , _ == abs _ :: Bool
-    , _ == _ + _ :: Bool
-    , _ == head _ :: Bool
-    , _ == ord _ :: Bool
-    , x == x :: Bool
-    , x == 0 :: Bool
-    , x == id _ :: Bool
-    , 0 == x :: Bool
-    , 0 == 0 :: Bool
-    , 0 == id _ :: Bool
-    , id _ == x :: Bool
-    , id _ == 0 :: Bool
-    , id _ == id _ :: Bool
-    , y == _ :: Bool
-    , 1 == _ :: Bool
-    , id x == _ :: Bool
-    , id 0 == _ :: Bool
-    , id (id _) == _ :: Bool
-    , negate _ == _ :: Bool
-    , abs _ == _ :: Bool
-    , _ + _ == _ :: Bool
-    , head _ == _ :: Bool
-    , ord _ == _ :: Bool
-    , _ == q :: Bool
-    , _ == not p :: Bool
-    , _ == not False :: Bool
-    , _ == not True :: Bool
-    , _ == not (not _) :: Bool
-    , _ == (_ || _) :: Bool
-    , p == p :: Bool
-    , p == False :: Bool
-    , p == True :: Bool
-    , p == not _ :: Bool
-    , False == p :: Bool
-    , False == False :: Bool
-    , False == True :: Bool
-    , False == not _ :: Bool
-    , True == p :: Bool
-    , True == False :: Bool
-    , True == True :: Bool
-    , True == not _ :: Bool
-    , not _ == p :: Bool
-    , not _ == False :: Bool
-    , not _ == True :: Bool
-    , not _ == not _ :: Bool
-    , q == _ :: Bool
-    , not p == _ :: Bool
-    , not False == _ :: Bool
-    , not True == _ :: Bool
-    , not (not _) == _ :: Bool
-    , (_ || _) == _ :: Bool
-    , _ <= x :: Bool
-    , _ <= 0 :: Bool
-    , _ <= id _ :: Bool
-    , x <= _ :: Bool
-    , 0 <= _ :: Bool
-    , id _ <= _ :: Bool
-    , _ <= p :: Bool
-    , _ <= False :: Bool
-    , _ <= True :: Bool
-    , _ <= not _ :: Bool
-    , p <= _ :: Bool
-    , False <= _ :: Bool
-    , True <= _ :: Bool
-    , not _ <= _ :: Bool
-    , _ < _ :: Bool
-    , _ < _ :: Bool
-    , odd y :: Bool
-    , odd 1 :: Bool
-    , odd (id x) :: Bool
-    , odd (id 0) :: Bool
-    , odd (id (id _)) :: Bool
-    , odd (negate _) :: Bool
-    , odd (abs _) :: Bool
-    , odd (_ + _) :: Bool
-    , odd (head _) :: Bool
-    , odd (ord _) :: Bool
-    , even y :: Bool
-    , even 1 :: Bool
-    , even (id x) :: Bool
-    , even (id 0) :: Bool
-    , even (id (id _)) :: Bool
-    , even (negate _) :: Bool
-    , even (abs _) :: Bool
-    , even (_ + _) :: Bool
-    , even (head _) :: Bool
-    , even (ord _) :: Bool
-    , elem _ ys :: Bool
-    , elem _ [0] :: Bool
-    , elem _ (_:xs) :: Bool
-    , elem _ [_] :: Bool
-    , elem _ (_:_:_) :: Bool
-    , elem _ (x:_) :: Bool
-    , elem _ (0:_) :: Bool
-    , elem _ (id _:_) :: Bool
-    , elem _ (tail _) :: Bool
-    , elem _ (_ ++ _) :: Bool
-    , elem x xs :: Bool
-    , elem x [] :: Bool
-    , elem x (_:_) :: Bool
-    , elem 0 xs :: Bool
-    , elem 0 [] :: Bool
-    , elem 0 (_:_) :: Bool
-    , elem (id _) xs :: Bool
-    , elem (id _) [] :: Bool
-    , elem (id _) (_:_) :: Bool
-    , elem y _ :: Bool
-    , elem 1 _ :: Bool
-    , elem (id x) _ :: Bool
-    , elem (id 0) _ :: Bool
-    , elem (id (id _)) _ :: Bool
-    , elem (negate _) _ :: Bool
-    , elem (abs _) _ :: Bool
-    , elem (_ + _) _ :: Bool
-    , elem (head _) _ :: Bool
-    , elem (ord _) _ :: Bool
-    , d' :: Char
-    , 'c' :: Char
-    , ys' :: [Int]
-    , [0,0,0,0] :: [Int]
-    , [0,0,1] :: [Int]
-    , [0,1,0] :: [Int]
-    , [0,-1] :: [Int]
-    , [1,0,0] :: [Int]
-    , [1,1] :: [Int]
-    , [-1,0] :: [Int]
-    , [2] :: [Int]
-    , _:xs' :: [Int]
-    , [_,0,0,0] :: [Int]
-    , [_,0,1] :: [Int]
-    , [_,1,0] :: [Int]
-    , [_,-1] :: [Int]
-    , _:_:zs :: [Int]
-    , [_,_,0,0] :: [Int]
-    , [_,_,1] :: [Int]
-    , _:_:_:ys :: [Int]
-    , [_,_,_,0] :: [Int]
-    , _:_:_:_:xs :: [Int]
-    , [_,_,_,_] :: [Int]
-    , _:_:_:_:_:_ :: [Int]
-    , _:_:_:x:_ :: [Int]
-    , _:_:_:0:_ :: [Int]
-    , _:_:_:id _:_ :: [Int]
-    , _:_:_:tail _ :: [Int]
-    , _:_:_:(_ ++ _) :: [Int]
-    , _:_:x:xs :: [Int]
-    , [_,_,x] :: [Int]
-    , _:_:x:_:_ :: [Int]
-    , _:_:0:xs :: [Int]
-    , [_,_,0] :: [Int]
-    , _:_:0:_:_ :: [Int]
-    , _:_:id _:xs :: [Int]
-    , [_,_,id _] :: [Int]
-    , _:_:id _:_:_ :: [Int]
-    , _:_:y:_ :: [Int]
-    , _:_:1:_ :: [Int]
-    , _:_:id x:_ :: [Int]
-    , _:_:id 0:_ :: [Int]
-    , _:_:id (id _):_ :: [Int]
-    , _:_:negate _:_ :: [Int]
-    , _:_:abs _:_ :: [Int]
-    , _:_:_ + _:_ :: [Int]
-    , _:_:head _:_ :: [Int]
-    , _:_:ord _:_ :: [Int]
-    , _:_:tail xs :: [Int]
-    , _:_:tail [] :: [Int]
-    , _:_:tail (_:_) :: [Int]
-    , _:_:(_ ++ xs) :: [Int]
-    , _:_:(_ ++ []) :: [Int]
-    , _:_:(_ ++ (_:_)) :: [Int]
-    , _:_:(xs ++ _) :: [Int]
-    , [_,_,] ++ _ :: [Int]
-    , _:_:((_:_) ++ _) :: [Int]
-    , _:_:sort _ :: [Int]
-    , _:_:insert _ _ :: [Int]
-    , _:x:ys :: [Int]
-    , [_,x,0] :: [Int]
-    , _:x:_:xs :: [Int]
-    , [_,x,_] :: [Int]
-    , _:x:_:_:_ :: [Int]
-    , _:x:x:_ :: [Int]
-    , _:x:0:_ :: [Int]
-    , _:x:id _:_ :: [Int]
-    , _:x:tail _ :: [Int]
-    , _:x:(_ ++ _) :: [Int]
-    , _:0:ys :: [Int]
-    , [_,0,0] :: [Int]
-    , _:0:_:xs :: [Int]
-    , [_,0,_] :: [Int]
-    , _:0:_:_:_ :: [Int]
-    , _:0:x:_ :: [Int]
-    , _:0:0:_ :: [Int]
-    , _:0:id _:_ :: [Int]
-    , _:0:tail _ :: [Int]
-    , _:0:(_ ++ _) :: [Int]
-    , _:id _:ys :: [Int]
-    , [_,id _,0] :: [Int]
-    , _:id _:_:xs :: [Int]
-    , [_,id _,_] :: [Int]
-    , _:id _:_:_:_ :: [Int]
-    , _:id _:x:_ :: [Int]
-    , _:id _:0:_ :: [Int]
-    , _:id _:id _:_ :: [Int]
-    , _:id _:tail _ :: [Int]
-    , _:id _:(_ ++ _) :: [Int]
-    , _:y:xs :: [Int]
-    , [_,y] :: [Int]
-    , _:y:_:_ :: [Int]
-    , _:1:xs :: [Int]
-    , [_,1] :: [Int]
-    , _:1:_:_ :: [Int]
-    , _:id x:xs :: [Int]
-    , [_,id x] :: [Int]
-    , _:id x:_:_ :: [Int]
-    , _:id 0:xs :: [Int]
-    , [_,id 0] :: [Int]
-    , _:id 0:_:_ :: [Int]
-    , _:id (id _):xs :: [Int]
-    , [_,id (id _)] :: [Int]
-    , _:id (id _):_:_ :: [Int]
-    , _:negate _:xs :: [Int]
-    , [_,negate _] :: [Int]
-    , _:negate _:_:_ :: [Int]
-    , _:abs _:xs :: [Int]
-    , [_,abs _] :: [Int]
-    , _:abs _:_:_ :: [Int]
-    , _:_ + _:xs :: [Int]
-    , [_,_ + _] :: [Int]
-    , _:_ + _:_:_ :: [Int]
-    , _:head _:xs :: [Int]
-    , [_,head _] :: [Int]
-    , _:head _:_:_ :: [Int]
-    , _:ord _:xs :: [Int]
-    , [_,ord _] :: [Int]
-    , _:ord _:_:_ :: [Int]
-    , _:z:_ :: [Int]
-    , _:(-1):_ :: [Int]
-    , _:id y:_ :: [Int]
-    , _:id 1:_ :: [Int]
-    , _:id (id x):_ :: [Int]
-    , _:id (id 0):_ :: [Int]
-    , _:id (id (id _)):_ :: [Int]
-    , _:id (negate _):_ :: [Int]
-    , _:id (abs _):_ :: [Int]
-    , _:id (_ + _):_ :: [Int]
-    , _:id (head _):_ :: [Int]
-    , _:id (ord _):_ :: [Int]
-    , _:negate x:_ :: [Int]
-    , _:negate 0:_ :: [Int]
-    , _:negate (id _):_ :: [Int]
-    , _:abs x:_ :: [Int]
-    , _:abs 0:_ :: [Int]
-    , _:abs (id _):_ :: [Int]
-    , _:_ + x:_ :: [Int]
-    , _:_ + 0:_ :: [Int]
-    , _:_ + id _:_ :: [Int]
-    , _:x + _:_ :: [Int]
-    , _:0 + _:_ :: [Int]
-    , _:id _ + _:_ :: [Int]
-    , _:_ * _:_ :: [Int]
-    , _:f _:_ :: [Int]
-    , _:head xs:_ :: [Int]
-    , _:head []:_ :: [Int]
-    , _:head (_:_):_ :: [Int]
-    , _:ord c:_ :: [Int]
-    , _:ord 'a':_ :: [Int]
-    , _:tail ys :: [Int]
-    , _:tail [0] :: [Int]
-    , _:tail (_:xs) :: [Int]
-    , _:tail [_] :: [Int]
-    , _:tail (_:_:_) :: [Int]
-    , _:tail (x:_) :: [Int]
-    , _:tail (0:_) :: [Int]
-    , _:tail (id _:_) :: [Int]
-    , _:tail (tail _) :: [Int]
-    , _:tail (_ ++ _) :: [Int]
-    , _:(_ ++ ys) :: [Int]
-    , _:(_ ++ [0]) :: [Int]
-    , _:(_ ++ (_:xs)) :: [Int]
-    , _:(_ ++ [_]) :: [Int]
-    , _:(_ ++ (_:_:_)) :: [Int]
-    , _:(_ ++ (x:_)) :: [Int]
-    , _:(_ ++ (0:_)) :: [Int]
-    , _:(_ ++ (id _:_)) :: [Int]
-    , _:(_ ++ tail _) :: [Int]
-    , _:(_ ++ (_ ++ _)) :: [Int]
-    , _:(xs ++ xs) :: [Int]
-    , _:(xs ++ []) :: [Int]
-    , _:(xs ++ (_:_)) :: [Int]
-    , _:([] ++ xs) :: [Int]
-    , _:([] ++ []) :: [Int]
-    , _:([] ++ (_:_)) :: [Int]
-    , _:((_:_) ++ xs) :: [Int]
-    , _:((_:_) ++ []) :: [Int]
-    , _:((_:_) ++ (_:_)) :: [Int]
-    , _:(ys ++ _) :: [Int]
-    , _:([0] ++ _) :: [Int]
-    , _:((_:xs) ++ _) :: [Int]
-    , _:([_] ++ _) :: [Int]
-    , _:((_:_:_) ++ _) :: [Int]
-    , _:((x:_) ++ _) :: [Int]
-    , _:((0:_) ++ _) :: [Int]
-    , _:((id _:_) ++ _) :: [Int]
-    , _:(tail _ ++ _) :: [Int]
-    , _:((_ ++ _) ++ _) :: [Int]
-    , _:sort xs :: [Int]
-    , _:sort [] :: [Int]
-    , _:sort (_:_) :: [Int]
-    , _:insert _ xs :: [Int]
-    , _:insert _ [] :: [Int]
-    , _:insert _ (_:_) :: [Int]
-    , _:insert x _ :: [Int]
-    , _:insert 0 _ :: [Int]
-    , _:insert (id _) _ :: [Int]
-    , x:zs :: [Int]
-    , [x,0,0] :: [Int]
-    , [x,1] :: [Int]
-    , x:_:ys :: [Int]
-    , [x,_,0] :: [Int]
-    , x:_:_:xs :: [Int]
-    , [x,_,_] :: [Int]
-    , x:_:_:_:_ :: [Int]
-    , x:_:x:_ :: [Int]
-    , x:_:0:_ :: [Int]
-    , x:_:id _:_ :: [Int]
-    , x:_:tail _ :: [Int]
-    , x:_:(_ ++ _) :: [Int]
-    , x:x:xs :: [Int]
-    , [x,x] :: [Int]
-    , x:x:_:_ :: [Int]
-    , x:0:xs :: [Int]
-    , [x,0] :: [Int]
-    , x:0:_:_ :: [Int]
-    , x:id _:xs :: [Int]
-    , [x,id _] :: [Int]
-    , x:id _:_:_ :: [Int]
-    , x:y:_ :: [Int]
-    , x:1:_ :: [Int]
-    , x:id x:_ :: [Int]
-    , x:id 0:_ :: [Int]
-    , x:id (id _):_ :: [Int]
-    , x:negate _:_ :: [Int]
-    , x:abs _:_ :: [Int]
-    , x:_ + _:_ :: [Int]
-    , x:head _:_ :: [Int]
-    , x:ord _:_ :: [Int]
-    , x:tail xs :: [Int]
-    , x:tail [] :: [Int]
-    , x:tail (_:_) :: [Int]
-    , x:(_ ++ xs) :: [Int]
-    , x:(_ ++ []) :: [Int]
-    , x:(_ ++ (_:_)) :: [Int]
-    , x:(xs ++ _) :: [Int]
-    , x:([] ++ _) :: [Int]
-    , x:((_:_) ++ _) :: [Int]
-    , x:sort _ :: [Int]
-    , x:insert _ _ :: [Int]
-    , 0:zs :: [Int]
-    , [0,0,0] :: [Int]
-    , [0,1] :: [Int]
-    , 0:_:ys :: [Int]
-    , [0,_,0] :: [Int]
-    , 0:_:_:xs :: [Int]
-    , [0,_,_] :: [Int]
-    , 0:_:_:_:_ :: [Int]
-    , 0:_:x:_ :: [Int]
-    , 0:_:0:_ :: [Int]
-    , 0:_:id _:_ :: [Int]
-    , 0:_:tail _ :: [Int]
-    , 0:_:(_ ++ _) :: [Int]
-    , 0:x:xs :: [Int]
-    , [0,x] :: [Int]
-    , 0:x:_:_ :: [Int]
-    , 0:0:xs :: [Int]
-    , [0,0] :: [Int]
-    , 0:0:_:_ :: [Int]
-    , 0:id _:xs :: [Int]
-    , [0,id _] :: [Int]
-    , 0:id _:_:_ :: [Int]
-    , 0:y:_ :: [Int]
-    , 0:1:_ :: [Int]
-    , 0:id x:_ :: [Int]
-    , 0:id 0:_ :: [Int]
-    , 0:id (id _):_ :: [Int]
-    , 0:negate _:_ :: [Int]
-    , 0:abs _:_ :: [Int]
-    , 0:_ + _:_ :: [Int]
-    , 0:head _:_ :: [Int]
-    , 0:ord _:_ :: [Int]
-    , 0:tail xs :: [Int]
-    , 0:tail [] :: [Int]
-    , 0:tail (_:_) :: [Int]
-    , 0:(_ ++ xs) :: [Int]
-    , 0:(_ ++ []) :: [Int]
-    , 0:(_ ++ (_:_)) :: [Int]
-    , 0:(xs ++ _) :: [Int]
-    , 0:([] ++ _) :: [Int]
-    , 0:((_:_) ++ _) :: [Int]
-    , 0:sort _ :: [Int]
-    , 0:insert _ _ :: [Int]
-    , id _:zs :: [Int]
-    , [id _,0,0] :: [Int]
-    , [id _,1] :: [Int]
-    , id _:_:ys :: [Int]
-    , [id _,_,0] :: [Int]
-    , id _:_:_:xs :: [Int]
-    , [id _,_,_] :: [Int]
-    , id _:_:_:_:_ :: [Int]
-    , id _:_:x:_ :: [Int]
-    , id _:_:0:_ :: [Int]
-    , id _:_:id _:_ :: [Int]
-    , id _:_:tail _ :: [Int]
-    , id _:_:(_ ++ _) :: [Int]
-    , id _:x:xs :: [Int]
-    , [id _,x] :: [Int]
-    , id _:x:_:_ :: [Int]
-    , id _:0:xs :: [Int]
-    , [id _,0] :: [Int]
-    , id _:0:_:_ :: [Int]
-    , id _:id _:xs :: [Int]
-    , [id _,id _] :: [Int]
-    , id _:id _:_:_ :: [Int]
-    , id _:y:_ :: [Int]
-    , id _:1:_ :: [Int]
-    , id _:id x:_ :: [Int]
-    , id _:id 0:_ :: [Int]
-    , id _:id (id _):_ :: [Int]
-    , id _:negate _:_ :: [Int]
-    , id _:abs _:_ :: [Int]
-    , id _:_ + _:_ :: [Int]
-    , id _:head _:_ :: [Int]
-    , id _:ord _:_ :: [Int]
-    , id _:tail xs :: [Int]
-    , id _:tail [] :: [Int]
-    , id _:tail (_:_) :: [Int]
-    , id _:(_ ++ xs) :: [Int]
-    , id _:(_ ++ []) :: [Int]
-    , id _:(_ ++ (_:_)) :: [Int]
-    , id _:(xs ++ _) :: [Int]
-    , id _:([] ++ _) :: [Int]
-    , id _:((_:_) ++ _) :: [Int]
-    , id _:sort _ :: [Int]
-    , id _:insert _ _ :: [Int]
-    , y:ys :: [Int]
-    , [y,0] :: [Int]
-    , y:_:xs :: [Int]
-    , [y,_] :: [Int]
-    , y:_:_:_ :: [Int]
-    , y:x:_ :: [Int]
-    , y:0:_ :: [Int]
-    , y:id _:_ :: [Int]
-    , y:tail _ :: [Int]
-    , y:(_ ++ _) :: [Int]
-    , 1:ys :: [Int]
-    , [1,0] :: [Int]
-    , 1:_:xs :: [Int]
-    , [1,_] :: [Int]
-    , 1:_:_:_ :: [Int]
-    , 1:x:_ :: [Int]
-    , 1:0:_ :: [Int]
-    , 1:id _:_ :: [Int]
-    , 1:tail _ :: [Int]
-    , 1:(_ ++ _) :: [Int]
-    , id x:ys :: [Int]
-    , [id x,0] :: [Int]
-    , id x:_:xs :: [Int]
-    , [id x,_] :: [Int]
-    , id x:_:_:_ :: [Int]
-    , id x:x:_ :: [Int]
-    , id x:0:_ :: [Int]
-    , id x:id _:_ :: [Int]
-    , id x:tail _ :: [Int]
-    , id x:(_ ++ _) :: [Int]
-    , id 0:ys :: [Int]
-    , [id 0,0] :: [Int]
-    , id 0:_:xs :: [Int]
-    , [id 0,_] :: [Int]
-    , id 0:_:_:_ :: [Int]
-    , id 0:x:_ :: [Int]
-    , id 0:0:_ :: [Int]
-    , id 0:id _:_ :: [Int]
-    , id 0:tail _ :: [Int]
-    , id 0:(_ ++ _) :: [Int]
-    , id (id _):ys :: [Int]
-    , [id (id _),0] :: [Int]
-    , id (id _):_:xs :: [Int]
-    , [id (id _),_] :: [Int]
-    , id (id _):_:_:_ :: [Int]
-    , id (id _):x:_ :: [Int]
-    , id (id _):0:_ :: [Int]
-    , id (id _):id _:_ :: [Int]
-    , id (id _):tail _ :: [Int]
-    , id (id _):(_ ++ _) :: [Int]
-    , negate _:ys :: [Int]
-    , [negate _,0] :: [Int]
-    , negate _:_:xs :: [Int]
-    , [negate _,_] :: [Int]
-    , negate _:_:_:_ :: [Int]
-    , negate _:x:_ :: [Int]
-    , negate _:0:_ :: [Int]
-    , negate _:id _:_ :: [Int]
-    , negate _:tail _ :: [Int]
-    , negate _:(_ ++ _) :: [Int]
-    , abs _:ys :: [Int]
-    , [abs _,0] :: [Int]
-    , abs _:_:xs :: [Int]
-    , [abs _,_] :: [Int]
-    , abs _:_:_:_ :: [Int]
-    , abs _:x:_ :: [Int]
-    , abs _:0:_ :: [Int]
-    , abs _:id _:_ :: [Int]
-    , abs _:tail _ :: [Int]
-    , abs _:(_ ++ _) :: [Int]
-    , _ + _:ys :: [Int]
-    , [_ + _,0] :: [Int]
-    , _ + _:_:xs :: [Int]
-    , [_ + _,_] :: [Int]
-    , _ + _:_:_:_ :: [Int]
-    , _ + _:x:_ :: [Int]
-    , _ + _:0:_ :: [Int]
-    , _ + _:id _:_ :: [Int]
-    , _ + _:tail _ :: [Int]
-    , _ + _:(_ ++ _) :: [Int]
-    , head _:ys :: [Int]
-    , [head _,0] :: [Int]
-    , head _:_:xs :: [Int]
-    , [head _,_] :: [Int]
-    , head _:_:_:_ :: [Int]
-    , head _:x:_ :: [Int]
-    , head _:0:_ :: [Int]
-    , head _:id _:_ :: [Int]
-    , head _:tail _ :: [Int]
-    , head _:(_ ++ _) :: [Int]
-    , ord _:ys :: [Int]
-    , [ord _,0] :: [Int]
-    , ord _:_:xs :: [Int]
-    , [ord _,_] :: [Int]
-    , ord _:_:_:_ :: [Int]
-    , ord _:x:_ :: [Int]
-    , ord _:0:_ :: [Int]
-    , ord _:id _:_ :: [Int]
-    , ord _:tail _ :: [Int]
-    , ord _:(_ ++ _) :: [Int]
-    , z:xs :: [Int]
-    , [z] :: [Int]
-    , z:_:_ :: [Int]
-    , (-1):xs :: [Int]
-    , [-1] :: [Int]
-    , (-1):_:_ :: [Int]
-    , id y:xs :: [Int]
-    , [id y] :: [Int]
-    , id y:_:_ :: [Int]
-    , id 1:xs :: [Int]
-    , [id 1] :: [Int]
-    , id 1:_:_ :: [Int]
-    , id (id x):xs :: [Int]
-    , [id (id x)] :: [Int]
-    , id (id x):_:_ :: [Int]
-    , id (id 0):xs :: [Int]
-    , [id (id 0)] :: [Int]
-    , id (id 0):_:_ :: [Int]
-    , id (id (id _)):xs :: [Int]
-    , [id (id (id _))] :: [Int]
-    , id (id (id _)):_:_ :: [Int]
-    , id (negate _):xs :: [Int]
-    , [id (negate _)] :: [Int]
-    , id (negate _):_:_ :: [Int]
-    , id (abs _):xs :: [Int]
-    , [id (abs _)] :: [Int]
-    , id (abs _):_:_ :: [Int]
-    , id (_ + _):xs :: [Int]
-    , [id (_ + _)] :: [Int]
-    , id (_ + _):_:_ :: [Int]
-    , id (head _):xs :: [Int]
-    , [id (head _)] :: [Int]
-    , id (head _):_:_ :: [Int]
-    , id (ord _):xs :: [Int]
-    , [id (ord _)] :: [Int]
-    , id (ord _):_:_ :: [Int]
-    , negate x:xs :: [Int]
-    , [negate x] :: [Int]
-    , negate x:_:_ :: [Int]
-    , negate 0:xs :: [Int]
-    , [negate 0] :: [Int]
-    , negate 0:_:_ :: [Int]
-    , negate (id _):xs :: [Int]
-    , [negate (id _)] :: [Int]
-    , negate (id _):_:_ :: [Int]
-    , abs x:xs :: [Int]
-    , [abs x] :: [Int]
-    , abs x:_:_ :: [Int]
-    , abs 0:xs :: [Int]
-    , [abs 0] :: [Int]
-    , abs 0:_:_ :: [Int]
-    , abs (id _):xs :: [Int]
-    , [abs (id _)] :: [Int]
-    , abs (id _):_:_ :: [Int]
-    , _ + x:xs :: [Int]
-    , [_ + x] :: [Int]
-    , _ + x:_:_ :: [Int]
-    , _ + 0:xs :: [Int]
-    , [_ + 0] :: [Int]
-    , _ + 0:_:_ :: [Int]
-    , _ + id _:xs :: [Int]
-    , [_ + id _] :: [Int]
-    , _ + id _:_:_ :: [Int]
-    , x + _:xs :: [Int]
-    , [x + _] :: [Int]
-    , x + _:_:_ :: [Int]
-    , 0 + _:xs :: [Int]
-    , [0 + _] :: [Int]
-    , 0 + _:_:_ :: [Int]
-    , id _ + _:xs :: [Int]
-    , [id _ + _] :: [Int]
-    , id _ + _:_:_ :: [Int]
-    , _ * _:xs :: [Int]
-    , [_ * _] :: [Int]
-    , _ * _:_:_ :: [Int]
-    , f _:xs :: [Int]
-    , [f _] :: [Int]
-    , f _:_:_ :: [Int]
-    , head xs:xs :: [Int]
-    , [head xs] :: [Int]
-    , head xs:_:_ :: [Int]
-    , head []:xs :: [Int]
-    , [head []] :: [Int]
-    , head []:_:_ :: [Int]
-    , head (_:_):xs :: [Int]
-    , [head (_:_)] :: [Int]
-    , head (_:_):_:_ :: [Int]
-    , ord c:xs :: [Int]
-    , [ord c] :: [Int]
-    , ord c:_:_ :: [Int]
-    , ord 'a':xs :: [Int]
-    , [ord 'a'] :: [Int]
-    , ord 'a':_:_ :: [Int]
-    , x':_ :: [Int]
-    , 2:_ :: [Int]
-    , id z:_ :: [Int]
-    , id (-1):_ :: [Int]
-    , id (id y):_ :: [Int]
-    , id (id 1):_ :: [Int]
-    , id (id (id x)):_ :: [Int]
-    , id (id (id 0)):_ :: [Int]
-    , id (id (id (id _))):_ :: [Int]
-    , id (id (negate _)):_ :: [Int]
-    , id (id (abs _)):_ :: [Int]
-    , id (id (_ + _)):_ :: [Int]
-    , id (id (head _)):_ :: [Int]
-    , id (id (ord _)):_ :: [Int]
-    , id (negate x):_ :: [Int]
-    , id (negate 0):_ :: [Int]
-    , id (negate (id _)):_ :: [Int]
-    , id (abs x):_ :: [Int]
-    , id (abs 0):_ :: [Int]
-    , id (abs (id _)):_ :: [Int]
-    , id (_ + x):_ :: [Int]
-    , id (_ + 0):_ :: [Int]
-    , id (_ + id _):_ :: [Int]
-    , id (x + _):_ :: [Int]
-    , id (0 + _):_ :: [Int]
-    , id (id _ + _):_ :: [Int]
-    , id (_ * _):_ :: [Int]
-    , id (f _):_ :: [Int]
-    , id (head xs):_ :: [Int]
-    , id (head []):_ :: [Int]
-    , id (head (_:_)):_ :: [Int]
-    , id (ord c):_ :: [Int]
-    , id (ord 'a'):_ :: [Int]
-    , negate y:_ :: [Int]
-    , negate 1:_ :: [Int]
-    , negate (id x):_ :: [Int]
-    , negate (id 0):_ :: [Int]
-    , negate (id (id _)):_ :: [Int]
-    , negate (negate _):_ :: [Int]
-    , negate (abs _):_ :: [Int]
-    , negate (_ + _):_ :: [Int]
-    , negate (head _):_ :: [Int]
-    , negate (ord _):_ :: [Int]
-    , abs y:_ :: [Int]
-    , abs 1:_ :: [Int]
-    , abs (id x):_ :: [Int]
-    , abs (id 0):_ :: [Int]
-    , abs (id (id _)):_ :: [Int]
-    , abs (negate _):_ :: [Int]
-    , abs (abs _):_ :: [Int]
-    , abs (_ + _):_ :: [Int]
-    , abs (head _):_ :: [Int]
-    , abs (ord _):_ :: [Int]
-    , _ + y:_ :: [Int]
-    , _ + 1:_ :: [Int]
-    , _ + id x:_ :: [Int]
-    , _ + id 0:_ :: [Int]
-    , _ + id (id _):_ :: [Int]
-    , _ + negate _:_ :: [Int]
-    , _ + abs _:_ :: [Int]
-    , _ + (_ + _):_ :: [Int]
-    , _ + head _:_ :: [Int]
-    , _ + ord _:_ :: [Int]
-    , x + x:_ :: [Int]
-    , x + 0:_ :: [Int]
-    , x + id _:_ :: [Int]
-    , 0 + x:_ :: [Int]
-    , 0 + 0:_ :: [Int]
-    , 0 + id _:_ :: [Int]
-    , id _ + x:_ :: [Int]
-    , id _ + 0:_ :: [Int]
-    , id _ + id _:_ :: [Int]
-    , _ * x:_ :: [Int]
-    , _ * 0:_ :: [Int]
-    , _ * id _:_ :: [Int]
-    , f x:_ :: [Int]
-    , f 0:_ :: [Int]
-    , f (id _):_ :: [Int]
-    , y + _:_ :: [Int]
-    , 1 + _:_ :: [Int]
-    , id x + _:_ :: [Int]
-    , id 0 + _:_ :: [Int]
-    , id (id _) + _:_ :: [Int]
-    , negate _ + _:_ :: [Int]
-    , abs _ + _:_ :: [Int]
-    , (_ + _) + _:_ :: [Int]
-    , head _ + _:_ :: [Int]
-    , ord _ + _:_ :: [Int]
-    , x * _:_ :: [Int]
-    , 0 * _:_ :: [Int]
-    , id _ * _:_ :: [Int]
-    , g _:_ :: [Int]
-    , head ys:_ :: [Int]
-    , head [0]:_ :: [Int]
-    , head (_:xs):_ :: [Int]
-    , head [_]:_ :: [Int]
-    , head (_:_:_):_ :: [Int]
-    , head (x:_):_ :: [Int]
-    , head (0:_):_ :: [Int]
-    , head (id _:_):_ :: [Int]
-    , head (tail _):_ :: [Int]
-    , head (_ ++ _):_ :: [Int]
-    , ord d:_ :: [Int]
-    , ord ' ':_ :: [Int]
-    , tail zs :: [Int]
-    , tail [0,0] :: [Int]
-    , tail [1] :: [Int]
-    , tail (_:ys) :: [Int]
-    , tail [_,0] :: [Int]
-    , tail (_:_:xs) :: [Int]
-    , tail [_,_] :: [Int]
-    , tail (_:_:_:_) :: [Int]
-    , tail (_:x:_) :: [Int]
-    , tail (_:0:_) :: [Int]
-    , tail (_:id _:_) :: [Int]
-    , tail (_:tail _) :: [Int]
-    , tail (_:(_ ++ _)) :: [Int]
-    , tail (x:xs) :: [Int]
-    , tail [x] :: [Int]
-    , tail (x:_:_) :: [Int]
-    , tail (0:xs) :: [Int]
-    , tail [0] :: [Int]
-    , tail (0:_:_) :: [Int]
-    , tail (id _:xs) :: [Int]
-    , tail [id _] :: [Int]
-    , tail (id _:_:_) :: [Int]
-    , tail (y:_) :: [Int]
-    , tail (1:_) :: [Int]
-    , tail (id x:_) :: [Int]
-    , tail (id 0:_) :: [Int]
-    , tail (id (id _):_) :: [Int]
-    , tail (negate _:_) :: [Int]
-    , tail (abs _:_) :: [Int]
-    , tail (_ + _:_) :: [Int]
-    , tail (head _:_) :: [Int]
-    , tail (ord _:_) :: [Int]
-    , tail (tail xs) :: [Int]
-    , tail (tail []) :: [Int]
-    , tail (tail (_:_)) :: [Int]
-    , tail (_ ++ xs) :: [Int]
-    , tail (_ ++ []) :: [Int]
-    , tail (_ ++ (_:_)) :: [Int]
-    , tail (xs ++ _) :: [Int]
-    , tail ([] ++ _) :: [Int]
-    , tail ((_:_) ++ _) :: [Int]
-    , tail (sort _) :: [Int]
-    , tail (insert _ _) :: [Int]
-    , _ ++ zs :: [Int]
-    , _ ++ [0,0] :: [Int]
-    , _ ++ [1] :: [Int]
-    , _ ++ (_:ys) :: [Int]
-    , _ ++ [_,0] :: [Int]
-    , _ ++ (_:_:xs) :: [Int]
-    , _ ++ [_,_] :: [Int]
-    , _ ++ (_:_:_:_) :: [Int]
-    , _ ++ (_:x:_) :: [Int]
-    , _ ++ (_:0:_) :: [Int]
-    , _ ++ (_:id _:_) :: [Int]
-    , _ ++ (_:tail _) :: [Int]
-    , _ ++ (_:(_ ++ _)) :: [Int]
-    , _ ++ (x:xs) :: [Int]
-    , _ ++ [x] :: [Int]
-    , _ ++ (x:_:_) :: [Int]
-    , _ ++ (0:xs) :: [Int]
-    , _ ++ [0] :: [Int]
-    , _ ++ (0:_:_) :: [Int]
-    , _ ++ (id _:xs) :: [Int]
-    , _ ++ [id _] :: [Int]
-    , _ ++ (id _:_:_) :: [Int]
-    , _ ++ (y:_) :: [Int]
-    , _ ++ (1:_) :: [Int]
-    , _ ++ (id x:_) :: [Int]
-    , _ ++ (id 0:_) :: [Int]
-    , _ ++ (id (id _):_) :: [Int]
-    , _ ++ (negate _:_) :: [Int]
-    , _ ++ (abs _:_) :: [Int]
-    , _ ++ (_ + _:_) :: [Int]
-    , _ ++ (head _:_) :: [Int]
-    , _ ++ (ord _:_) :: [Int]
-    , _ ++ tail xs :: [Int]
-    , _ ++ tail [] :: [Int]
-    , _ ++ tail (_:_) :: [Int]
-    , _ ++ (_ ++ xs) :: [Int]
-    , _ ++ (_ ++ []) :: [Int]
-    , _ ++ (_ ++ (_:_)) :: [Int]
-    , _ ++ (xs ++ _) :: [Int]
-    , _ ++ ([] ++ _) :: [Int]
-    , _ ++ ((_:_) ++ _) :: [Int]
-    , _ ++ sort _ :: [Int]
-    , _ ++ insert _ _ :: [Int]
-    , xs ++ ys :: [Int]
-    , xs ++ [0] :: [Int]
-    , xs ++ (_:xs) :: [Int]
-    , xs ++ [_] :: [Int]
-    , xs ++ (_:_:_) :: [Int]
-    , xs ++ (x:_) :: [Int]
-    , xs ++ (0:_) :: [Int]
-    , xs ++ (id _:_) :: [Int]
-    , xs ++ tail _ :: [Int]
-    , xs ++ (_ ++ _) :: [Int]
-    , [] ++ ys :: [Int]
-    , [] ++ [0] :: [Int]
-    , [] ++ (_:xs) :: [Int]
-    , [] ++ [_] :: [Int]
-    , [] ++ (_:_:_) :: [Int]
-    , [] ++ (x:_) :: [Int]
-    , [] ++ (0:_) :: [Int]
-    , [] ++ (id _:_) :: [Int]
-    , [] ++ tail _ :: [Int]
-    , [] ++ (_ ++ _) :: [Int]
-    , (_:_) ++ ys :: [Int]
-    , (_:_) ++ [0] :: [Int]
-    , (_:_) ++ (_:xs) :: [Int]
-    , (_:_) ++ [_] :: [Int]
-    , (_:_) ++ (_:_:_) :: [Int]
-    , (_:_) ++ (x:_) :: [Int]
-    , (_:_) ++ (0:_) :: [Int]
-    , (_:_) ++ (id _:_) :: [Int]
-    , (_:_) ++ tail _ :: [Int]
-    , (_:_) ++ (_ ++ _) :: [Int]
-    , ys ++ xs :: [Int]
-    , ys ++ [] :: [Int]
-    , ys ++ (_:_) :: [Int]
-    , [0] ++ xs :: [Int]
-    , [0] ++ [] :: [Int]
-    , [0] ++ (_:_) :: [Int]
-    , (_:xs) ++ xs :: [Int]
-    , (_:xs) ++ [] :: [Int]
-    , (_:xs) ++ (_:_) :: [Int]
-    , [_] ++ xs :: [Int]
-    , [_] ++ [] :: [Int]
-    , [_] ++ (_:_) :: [Int]
-    , (_:_:_) ++ xs :: [Int]
-    , (_:_:_) ++ [] :: [Int]
-    , (_:_:_) ++ (_:_) :: [Int]
-    , (x:_) ++ xs :: [Int]
-    , (x:_) ++ [] :: [Int]
-    , (x:_) ++ (_:_) :: [Int]
-    , (0:_) ++ xs :: [Int]
-    , (0:_) ++ [] :: [Int]
-    , (0:_) ++ (_:_) :: [Int]
-    , (id _:_) ++ xs :: [Int]
-    , (id _:_) ++ [] :: [Int]
-    , (id _:_) ++ (_:_) :: [Int]
-    , tail _ ++ xs :: [Int]
-    , tail _ ++ [] :: [Int]
-    , tail _ ++ (_:_) :: [Int]
-    , (_ ++ _) ++ xs :: [Int]
-    , (_ ++ _) ++ [] :: [Int]
-    , (_ ++ _) ++ (_:_) :: [Int]
-    , zs ++ _ :: [Int]
-    , [0,0] ++ _ :: [Int]
-    , [1] ++ _ :: [Int]
-    , (_:ys) ++ _ :: [Int]
-    , [_,0] ++ _ :: [Int]
-    , (_:_:xs) ++ _ :: [Int]
-    , [_,_] ++ _ :: [Int]
-    , (_:_:_:_) ++ _ :: [Int]
-    , (_:x:_) ++ _ :: [Int]
-    , (_:0:_) ++ _ :: [Int]
-    , (_:id _:_) ++ _ :: [Int]
-    , (_:tail _) ++ _ :: [Int]
-    , (_:(_ ++ _)) ++ _ :: [Int]
-    , (x:xs) ++ _ :: [Int]
-    , [x] ++ _ :: [Int]
-    , (x:_:_) ++ _ :: [Int]
-    , (0:xs) ++ _ :: [Int]
-    , [0] ++ _ :: [Int]
-    , (0:_:_) ++ _ :: [Int]
-    , (id _:xs) ++ _ :: [Int]
-    , [id _] ++ _ :: [Int]
-    , (id _:_:_) ++ _ :: [Int]
-    , (y:_) ++ _ :: [Int]
-    , (1:_) ++ _ :: [Int]
-    , (id x:_) ++ _ :: [Int]
-    , (id 0:_) ++ _ :: [Int]
-    , (id (id _):_) ++ _ :: [Int]
-    , (negate _:_) ++ _ :: [Int]
-    , (abs _:_) ++ _ :: [Int]
-    , (_ + _:_) ++ _ :: [Int]
-    , (head _:_) ++ _ :: [Int]
-    , (ord _:_) ++ _ :: [Int]
-    , tail xs ++ _ :: [Int]
-    , tail [] ++ _ :: [Int]
-    , tail (_:_) ++ _ :: [Int]
-    , (_ ++ xs) ++ _ :: [Int]
-    , (_ ++ []) ++ _ :: [Int]
-    , (_ ++ (_:_)) ++ _ :: [Int]
-    , (xs ++ _) ++ _ :: [Int]
-    , ([] ++ _) ++ _ :: [Int]
-    , ((_:_) ++ _) ++ _ :: [Int]
-    , sort _ ++ _ :: [Int]
-    , insert _ _ ++ _ :: [Int]
-    , sort ys :: [Int]
-    , sort [0] :: [Int]
-    , sort (_:xs) :: [Int]
-    , sort [_] :: [Int]
-    , sort (_:_:_) :: [Int]
-    , sort (x:_) :: [Int]
-    , sort (0:_) :: [Int]
-    , sort (id _:_) :: [Int]
-    , sort (tail _) :: [Int]
-    , sort (_ ++ _) :: [Int]
-    , insert _ ys :: [Int]
-    , insert _ [0] :: [Int]
-    , insert _ (_:xs) :: [Int]
-    , insert _ [_] :: [Int]
-    , insert _ (_:_:_) :: [Int]
-    , insert _ (x:_) :: [Int]
-    , insert _ (0:_) :: [Int]
-    , insert _ (id _:_) :: [Int]
-    , insert _ (tail _) :: [Int]
-    , insert _ (_ ++ _) :: [Int]
-    , insert x xs :: [Int]
-    , insert x [] :: [Int]
-    , insert x (_:_) :: [Int]
-    , insert 0 xs :: [Int]
-    , insert 0 [] :: [Int]
-    , insert 0 (_:_) :: [Int]
-    , insert (id _) xs :: [Int]
-    , insert (id _) [] :: [Int]
-    , insert (id _) (_:_) :: [Int]
-    , insert y _ :: [Int]
-    , insert 1 _ :: [Int]
-    , insert (id x) _ :: [Int]
-    , insert (id 0) _ :: [Int]
-    , insert (id (id _)) _ :: [Int]
-    , insert (negate _) _ :: [Int]
-    , insert (abs _) _ :: [Int]
-    , insert (_ + _) _ :: [Int]
-    , insert (head _) _ :: [Int]
-    , insert (ord _) _ :: [Int]
-    , (z +) :: Int -> Int
-    , ((-1) +) :: Int -> Int
-    , (id y +) :: Int -> Int
-    , (id 1 +) :: Int -> Int
-    , (id (id x) +) :: Int -> Int
-    , (id (id 0) +) :: Int -> Int
-    , (id (id (id _)) +) :: Int -> Int
-    , (id (negate _) +) :: Int -> Int
-    , (id (abs _) +) :: Int -> Int
-    , (id (_ + _) +) :: Int -> Int
-    , (id (head _) +) :: Int -> Int
-    , (id (ord _) +) :: Int -> Int
-    , (negate x +) :: Int -> Int
-    , (negate 0 +) :: Int -> Int
-    , (negate (id _) +) :: Int -> Int
-    , (abs x +) :: Int -> Int
-    , (abs 0 +) :: Int -> Int
-    , (abs (id _) +) :: Int -> Int
-    , ((_ + x) +) :: Int -> Int
-    , ((_ + 0) +) :: Int -> Int
-    , ((_ + id _) +) :: Int -> Int
-    , ((x + _) +) :: Int -> Int
-    , ((0 + _) +) :: Int -> Int
-    , ((id _ + _) +) :: Int -> Int
-    , (_ * _ +) :: Int -> Int
-    , (f _ +) :: Int -> Int
-    , (head xs +) :: Int -> Int
-    , (head [] +) :: Int -> Int
-    , (head (_:_) +) :: Int -> Int
-    , (ord c +) :: Int -> Int
-    , (ord 'a' +) :: Int -> Int
-    , (y *) :: Int -> Int
-    , (1 *) :: Int -> Int
-    , (id x *) :: Int -> Int
-    , (id 0 *) :: Int -> Int
-    , (id (id _) *) :: Int -> Int
-    , (negate _ *) :: Int -> Int
-    , (abs _ *) :: Int -> Int
-    , ((_ + _) *) :: Int -> Int
-    , (head _ *) :: Int -> Int
-    , (ord _ *) :: Int -> Int
-    , h :: Int -> Int
-    , (q ||) :: Bool -> Bool
-    , (not p ||) :: Bool -> Bool
-    , (not False ||) :: Bool -> Bool
-    , (not True ||) :: Bool -> Bool
-    , (not (not _) ||) :: Bool -> Bool
-    , ((_ || _) ||) :: Bool -> Bool
-    , (p &&) :: Bool -> Bool
-    , (False &&) :: Bool -> Bool
-    , (True &&) :: Bool -> Bool
-    , (not _ &&) :: Bool -> Bool
-    , (_ ==>) :: Bool -> Bool
-    ]
-  , ...
-  ]
diff --git a/test/model/eg/u-conjure.out b/test/model/eg/u-conjure.out
deleted file mode 100644
--- a/test/model/eg/u-conjure.out
+++ /dev/null
@@ -1,24 +0,0 @@
-square :: Int -> Int
-square x  =  x * x
-
-add :: Int -> Int -> Int
-add x y  =  x + y
-
-factorial :: Int -> Int
-cannot conjure
-
-factorial :: Int -> Int
-factorial x  =  foldr (*) 1 (enumFromTo 1 x)
-
-second :: [Int] -> Int
-second xs  =  head (tail xs)
-
-(++) :: [Int] -> [Int] -> [Int]
-xs ++ ys  =  foldr (:) ys xs
-
-reverse :: [Int] -> [Int]
-cannot conjure
-
-reverse :: [Int] -> [Int]
-reverse xs  =  foldr (foldr (:) . unit) [] xs
-
diff --git a/test/model/eg/u-extrapolate.out b/test/model/eg/u-extrapolate.out
deleted file mode 100644
--- a/test/model/eg/u-extrapolate.out
+++ /dev/null
@@ -1,26 +0,0 @@
-sort . sort = sort
-+++ Tests passed.
-
-length . nub = length  (incorrect when there are repeated elements)
-*** Falsified, counterexample:  [0,0]
-               generalization:  x:x:xs
-
-xs `union` ys == ys `union` xs  (incorrect for repeated elements)
-*** Falsified, counterexample:  ([],[0,0])
-               generalization:  (xs,x:x:xs)
-               generalization:  ([],x:x:xs)
-
-\(x,y) -> x + y == y + x
-+++ Tests passed.
-
-\x -> x == x + 1  (always incorrect)
-*** Falsified, counterexample:  0
-               generalization:  x
-
-\(x,y) -> x + y == x + x  (incorrect)
-*** Falsified, counterexample:  (0,1)
-
-\(x,y) -> x /= y  (incorrect whenever x and y are equal)
-*** Falsified, counterexample:  (0,0)
-               generalization:  (x,x)
-
diff --git a/test/model/eg/u-speculate.out b/test/model/eg/u-speculate.out
deleted file mode 100644
--- a/test/model/eg/u-speculate.out
+++ /dev/null
@@ -1,45 +0,0 @@
-Equations about _, 0, (+), abs:
-abs 0  =  0
-x + 0  =  x
-0 + x  =  x
-abs (abs x)  =  abs x
-x + y  =  y + x
-abs (x + y)  =  abs (y + x)
-abs (x + abs x)  =  x + abs x
-abs (abs x + x)  =  x + abs x
-abs x + abs x  =  abs (x + x)
-x + (y + z)  =  x + (z + y)
-x + (y + z)  =  y + (x + z)
-x + (y + z)  =  y + (z + x)
-x + (y + z)  =  z + (x + y)
-x + (y + z)  =  z + (y + x)
-(x + y) + z  =  x + (y + z)
-(x + y) + z  =  x + (z + y)
-(x + y) + z  =  y + (x + z)
-(x + y) + z  =  y + (z + x)
-(x + y) + z  =  z + (y + x)
-(x + y) + z  =  (x + z) + y
-(x + y) + z  =  (y + x) + z
-(x + y) + z  =  (y + z) + x
-(x + y) + z  =  (z + x) + y
-(x + y) + z  =  (z + y) + x
-
-Equations about _, False, True, not:
-not False  =  True
-not True  =  False
-not (not p)  =  p
-
-Equations about _, _, [], (:), (++), sort:
-sort []  =  []
-xs ++ []  =  xs
-[] ++ xs  =  xs
-sort (sort xs)  =  sort xs
-sort [x]  =  [x]
-[x] ++ xs  =  x:xs
-sort (xs ++ ys)  =  sort (ys ++ xs)
-sort (x:sort xs)  =  sort (x:xs)
-sort (xs ++ sort ys)  =  sort (xs ++ ys)
-sort (sort xs ++ ys)  =  sort (xs ++ ys)
-(x:xs) ++ ys  =  x:(xs ++ ys)
-(xs ++ ys) ++ zs  =  xs ++ (ys ++ zs)
-
diff --git a/test/name-derive.hs b/test/name-derive.hs
--- a/test/name-derive.hs
+++ b/test/name-derive.hs
@@ -1,4 +1,4 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 {-# LANGUAGE TemplateHaskell #-}
 
@@ -6,10 +6,10 @@
 
 import Data.Express.Utils.List
 
-data Peano = Zero | Succ Peano deriving Show
-data List a = a :- List a | Nil deriving Show
-data Bush a = Bush a :-: Bush a | Leaf a deriving (Show, Eq)
-data Tree a = Node (Tree a) a (Tree a) | Null deriving (Show, Eq)
+data Peano  =  Zero | Succ Peano deriving Show
+data List a  =  a :- List a | Nil deriving Show
+data Bush a  =  Bush a :-: Bush a | Leaf a deriving (Show, Eq)
+data Tree a  =  Node (Tree a) a (Tree a) | Null deriving (Show, Eq)
 
 instance Num Peano where
   Zero + n  =  n
@@ -49,10 +49,10 @@
 deriveNameIfNeeded ''Either
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   , name (undefined :: Peano) == "x"
diff --git a/test/name.hs b/test/name.hs
--- a/test/name.hs
+++ b/test/name.hs
@@ -1,14 +1,14 @@
--- Copyright (c) 2017-2021 Rudy Matela.
+-- Copyright (c) 2017-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
 import Data.Express.Utils.List
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   -- simple types
diff --git a/test/ord.hs b/test/ord.hs
--- a/test/ord.hs
+++ b/test/ord.hs
@@ -1,12 +1,12 @@
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   , holds n $ (okEqOrd :: Expr -> Expr -> Expr -> Bool)
diff --git a/test/sdist b/test/sdist
--- a/test/sdist
+++ b/test/sdist
@@ -2,7 +2,7 @@
 #
 # test/sdist: tests the package generated by "cabal sdist".
 #
-# Copyright (c) 2015-2023 Rudy Matela.
+# Copyright (c) 2015-2024 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 
 set -xe
diff --git a/test/show.hs b/test/show.hs
--- a/test/show.hs
+++ b/test/show.hs
@@ -1,14 +1,14 @@
--- Copyright (c) 2017-2021 Rudy Matela.
+-- Copyright (c) 2017-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
 import Data.Express.Utils.List
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   -- showing expressions
@@ -43,6 +43,8 @@
   , show (space -:- emptyString) == "\" \" :: [Char]"
   , show (space -:- ccs)         == "' ':cs :: [Char]"
   , show (ae -:- bee -:- emptyString) == "\"ab\" :: [Char]"
+  , show (ae -:- bee -:- nilChar) == "['a','b'] :: [Char]"
+  , show (ae -:- cc -:- nilChar) == "['a',c] :: [Char]"
   , show (ae -:- bee -:- ccs)         == "'a':'b':cs :: [Char]"
   , show (ae -:- space -:- bee -:- lineBreak -:- emptyString) == "\"a b\\n\" :: [Char]"
   , show (cc -:- space -:- dd -:- lineBreak -:- emptyString)  == "c:' ':d:\"\\n\" :: [Char]"
@@ -147,4 +149,18 @@
   , show (val ([0,1,2] :: [A])) == "[0,1,2] :: [A]"
   , show (var "xs" (undefined :: [A])) == "xs :: [A]"
   , show (value "id" (id :: [A] -> [A]) :$ var "xs" (undefined :: [A])) == "id xs :: [A]"
+
+  , show (xx -:- nil -++- is_) == "x:([] ++ _) :: [Int]"
+  , show (xx -:- yy -:- nil -++- is_) == "x:y:([] ++ _) :: [Int]"
+
+  , show (cc -:- emptyString -++- cs_) == "c:(\"\" ++ _) :: [Char]"
+  , show (cc -:- dd -:- emptyString -++- cs_) == "c:d:(\"\" ++ _) :: [Char]"
+  , show (ae -:- bee -:- emptyString -++- cs_) == "'a':'b':(\"\" ++ _) :: [Char]"
+
+  -- list pretty-printing only works with explicit val [] terminator
+  -- other terminating consts are not unpacked
+  , show (zero -:- one -:- two -:- nil) == "[0,1,2] :: [Int]"
+  , show (zero -:- val [1,2::Int]) == "0:[1,2] :: [Int]"
+  , show (xx -:- yy -:- three -:- four -:- nil) == "[x,y,3,4] :: [Int]"
+  , show (xx -:- yy -:- val [3,4::Int]) == "x:y:[3,4] :: [Int]"
   ]
diff --git a/test/triexpr.hs b/test/triexpr.hs
--- a/test/triexpr.hs
+++ b/test/triexpr.hs
@@ -16,8 +16,8 @@
   [ True
 
   , length allRules == 99
-  , all isWellTyped $ map fst allRules
-  , all isWellTyped $ map snd allRules
+  , all (isWellTyped . fst) allRules
+  , all (isWellTyped . snd) allRules
 
   , T.lookup zero  trie == []
   , T.lookup one   trie == []
diff --git a/test/typecheck.hs b/test/typecheck.hs
--- a/test/typecheck.hs
+++ b/test/typecheck.hs
@@ -2,7 +2,7 @@
 --
 -- to be used for triggering typechecking using runhugs
 --
--- Copyright (c) 2019-2021 Rudy Matela.
+-- Copyright (c) 2019-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Data.Express.Core
 import Data.Express.Hole
diff --git a/test/utils.hs b/test/utils.hs
--- a/test/utils.hs
+++ b/test/utils.hs
@@ -1,4 +1,4 @@
--- Copyright (c) 2017-2021 Rudy Matela.
+-- Copyright (c) 2017-2024 Rudy Matela.
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 import Test
 
@@ -7,10 +7,10 @@
 import Data.Express.Utils.Typeable
 
 main :: IO ()
-main = mainTest tests 5040
+main  =  mainTest tests 5040
 
 tests :: Int -> [Bool]
-tests n =
+tests n  =
   [ True
 
   , holds n $ \xs -> nubSort xs == nub (sort xs :: [Int])
