diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,7 @@
 eg/u-speculate
 bench/compare
 bench/pairs
+bench/sort
 bench/tiers
 test/canon
 test/core
diff --git a/.travis.yml b/.travis.yml
--- a/.travis.yml
+++ b/.travis.yml
@@ -45,7 +45,8 @@
 
 matrix:
   allow_failures:
-  - ghc: 'head'
+  - env:                   GHCVER=head        CABALVER=head    STACKVER=nightly-2021-04-06
+  - env:                   GHCVER=9.0.1       CABALVER=head    STACKVER=nightly-2021-04-06
   include:
   - ghc: 'head'
     env:                   GHCVER=head        CABALVER=head    STACKVER=nightly-2021-04-06
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -27,6 +27,7 @@
   eg/u-speculate \
   bench/compare \
   bench/pairs \
+  bench/sort \
   bench/tiers \
   $(EGS)
 GHCIMPORTDIRS = src:test
diff --git a/TODO.md b/TODO.md
--- a/TODO.md
+++ b/TODO.md
@@ -3,12 +3,9 @@
 
 Here is a list of things TO DO for express:
 
-* review Haddock of `Data.Express`
-
-* document the `Instances` module,
-  including note about linear time on searches
+* document and test the `Instances` module
 
-* test the `Instances` module
+* review Haddock of `Data.Express`
 
 * sweep occurrences of `TODO:` throughout source files
 
diff --git a/bench/compare.hs b/bench/compare.hs
--- a/bench/compare.hs
+++ b/bench/compare.hs
@@ -9,7 +9,7 @@
 main  =  do
   as <- getArgs
   let n = case as of
-          [] -> 1000
+          [] -> 5040
           (n:_) -> read n
   putStrLn . unlines . map showCompare $ take n (list :: [(Expr,Expr)])
   where
diff --git a/bench/runtime/zero/bench/ord.runtime b/bench/runtime/zero/bench/ord.runtime
--- a/bench/runtime/zero/bench/ord.runtime
+++ b/bench/runtime/zero/bench/ord.runtime
@@ -1,1 +1,1 @@
-0.00
+0.16
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.00
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.21
+0.18
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.00
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.33
+0.30
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.6.5
+GHC 8.10.4
diff --git a/bench/sort.hs b/bench/sort.hs
new file mode 100644
--- /dev/null
+++ b/bench/sort.hs
@@ -0,0 +1,25 @@
+-- ord.hs -- prints different expression sortins:
+--
+-- Copyright (c) 2019-2021 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
+
+showL :: Show a => [a] -> String
+showL xs  =  "  [ " ++ intercalate "\n  , " (map show xs) ++ "\n  ]\n"
+
+printL :: Show a => [a] -> IO ()
+printL =  putStrLn . showL
+
+main :: IO ()
+main  =  do
+  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 compareQuickly $ take 5040 $ list  ::  [ Expr ]  ="
+  printL (sortBy compareQuickly $ take 5040 $ list :: [Expr])
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: 0.1.4
+version: 0.1.6
 synopsis: Dynamically-typed expressions involving applications and variables.
 description:
   Express is a library for manipulating dynamically typed Haskell expressions.
@@ -58,7 +58,7 @@
 source-repository this
   type:           git
   location:       https://github.com/rudymatela/express
-  tag:            v0.1.4
+  tag:            v0.1.6
 
 library
   exposed-modules:     Data.Express
@@ -88,7 +88,7 @@
   main-is:             main.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite core
@@ -96,7 +96,7 @@
   main-is:             core.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite canon
@@ -104,7 +104,7 @@
   main-is:             canon.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite hole
@@ -112,7 +112,7 @@
   main-is:             hole.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite match
@@ -120,7 +120,7 @@
   main-is:             match.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite map
@@ -128,7 +128,7 @@
   main-is:             map.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite fixtures
@@ -136,7 +136,7 @@
   main-is:             fixtures.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite instances
@@ -144,7 +144,7 @@
   main-is:             instances.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite express-instances
@@ -152,7 +152,7 @@
   main-is:             express.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite express-derive
@@ -160,7 +160,7 @@
   main-is:             express-derive.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite ord
@@ -168,7 +168,7 @@
   main-is:             ord.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite listable
@@ -176,7 +176,7 @@
   main-is:             listable.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite name
@@ -184,7 +184,7 @@
   main-is:             name.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite name-derive
@@ -192,7 +192,7 @@
   main-is:             name-derive.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite fold
@@ -200,7 +200,7 @@
   main-is:             fold.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite show
@@ -208,7 +208,7 @@
   main-is:             show.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 test-suite utils
@@ -216,7 +216,7 @@
   main-is:             utils.hs
   hs-source-dirs:      test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 benchmark compare
@@ -224,7 +224,7 @@
   main-is:             compare.hs
   hs-source-dirs:      bench, test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 benchmark pairs
@@ -232,27 +232,35 @@
   main-is:             pairs.hs
   hs-source-dirs:      bench, test
   other-modules:       Test, Test.ListableExpr
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
+benchmark sort
+  type:                exitcode-stdio-1.0
+  main-is:             sort.hs
+  hs-source-dirs:      bench, test
+  other-modules:       Test, Test.ListableExpr
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
+  default-language:    Haskell2010
+
 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.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 benchmark u-extrapolate
   type:                exitcode-stdio-1.0
   main-is:             u-extrapolate.hs
   hs-source-dirs:      eg
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
 
 benchmark u-speculate
   type:                exitcode-stdio-1.0
   main-is:             u-speculate.hs
   hs-source-dirs:      eg
-  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.3
+  build-depends:       base >= 4 && < 5, express, leancheck >= 0.9.4
   default-language:    Haskell2010
diff --git a/mk/depend.mk b/mk/depend.mk
--- a/mk/depend.mk
+++ b/mk/depend.mk
@@ -52,6 +52,33 @@
   test/Test/ListableExpr.hs \
   bench/pairs.hs \
   mk/toplibs
+bench/sort.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/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/sort.hs
+bench/sort: \
+  test/Test.hs \
+  test/Test/ListableExpr.hs \
+  bench/sort.hs \
+  mk/toplibs
 bench/tiers.o: \
   test/Test.hs \
   test/Test/ListableExpr.hs \
diff --git a/mk/haskell.mk b/mk/haskell.mk
--- a/mk/haskell.mk
+++ b/mk/haskell.mk
@@ -80,7 +80,8 @@
 
 
 # Cleaning rule (add as a clean dependency)
-.PHONY: clean-hi-o
+clean-hs: clean-hi-o clean-haddock clean-cabal clean-stack
+
 clean-hi-o:
 	find $(ALL_HSS) | sed -e 's/hs$$/o/'      | xargs rm -f
 	find $(ALL_HSS) | sed -e 's/hs$$/hi/'     | xargs rm -f
@@ -113,6 +114,11 @@
 	  $(HADDOCK_HLNK_SRC) \
 	  $(HADDOCKFLAGS)
 
+clean-cabal:
+	rm -rf dist/ dist-newstyle/ cabal.project.local cabal.project.local~
+
+clean-stack:
+	rm -rf .stack-work/ stack.yaml.lock
 
 # lists all Haskell source files
 list-all-hss:
diff --git a/src/Data/Express.hs b/src/Data/Express.hs
--- a/src/Data/Express.hs
+++ b/src/Data/Express.hs
@@ -109,7 +109,7 @@
 -- In this documentation,
 -- the complexity of most functions is given in big O notation
 -- where /n/ is the size of the expression being manipulated or produced.
--- There may still be a /m/ cost associated with the values being stored in 'Expr's.
+-- There may still be a /m/ cost associated with the values stored in 'Expr's.
 {-# LANGUAGE CPP #-}
 module Data.Express
   ( 
@@ -146,6 +146,8 @@
 
   -- ** Comparing Exprs
   , compareComplexity
+  , compareLexicographically
+  , compareQuickly
 
   -- ** Properties of Exprs
   , arity
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
@@ -170,11 +170,22 @@
 -- > > canonicalVariations $ ord' bee
 -- > [ord 'b' :: Int]
 --
+-- When applying this to expressions already containing variables
+-- new variables are introduced so name clashes are avoided:
+--
+-- > > canonicalVariations $ i_ -+- ii -+- jj -+- i_
+-- > [ x + y + z + x' :: Int
+-- > , x + y + z + x :: Int ]
+--
 -- > > canonicalVariations $ ii -+- jj
--- > [i + j :: Int]
+-- > [x + y :: Int]
 --
--- Behaviour is undefined when applying this function to expressions already
--- containing variables.
+-- > > canonicalVariations $ xx -+- i_ -+- i_ -+- length' (c_ -:- unit c_) -+- yy
+-- > [ (((x + y) + z) + length (c:d:"")) + x' :: Int
+-- > , (((x + y) + z) + length (c:c:"")) + x' :: Int
+-- > , (((x + y) + y) + length (c:d:"")) + z :: Int
+-- > , (((x + y) + y) + length (c:c:"")) + z :: Int
+-- > ]
 canonicalVariations :: Expr -> [Expr]
 canonicalVariations = map canonicalize . fastCanonicalVariations
 
@@ -209,9 +220,6 @@
 -- > > mostGeneralCanonicalVariation $ ord' bee
 -- > ord 'b' :: Int
 --
--- Behaviour is undefined when applying this function to expressions already
--- containing variables.
---
 -- This function is the same as taking the 'head' of 'canonicalVariations'
 -- but a bit faster.
 mostGeneralCanonicalVariation :: Expr -> Expr
@@ -248,9 +256,6 @@
 -- > > mostSpecificCanonicalVariation $ ord' bee
 -- > ord 'b' :: Int
 --
--- Behaviour is undefined when applying this function to expressions already
--- containing variables.
---
 -- This function is the same as taking the 'last' of 'canonicalVariations'
 -- but a bit faster.
 mostSpecificCanonicalVariation :: Expr -> Expr
@@ -289,7 +294,7 @@
   hs' = holes e
   h' = head hs'
 
-  names  =  variableNamesFromTemplate "x"
+  names  =  variableNamesFromTemplate "x" \\ varnames e
 
   fillings :: Int -> [Expr] -> [[Expr]]
   fillings i []  =  [[]] -- no holes, single empty filling
@@ -305,7 +310,9 @@
 --
 -- The same caveats of 'fastCanonicalVariations' do apply here.
 fastMostGeneralVariation :: Expr -> Expr
-fastMostGeneralVariation e  =  fill e (zipWith varAsTypeOf (variableNamesFromTemplate "x") (holes e))
+fastMostGeneralVariation e  =  fill e (zipWith varAsTypeOf names (holes e))
+  where
+  names  =  variableNamesFromTemplate "x" \\ varnames e
 
 -- |
 -- A faster version of 'mostSpecificCanonicalVariation'
@@ -314,4 +321,12 @@
 --
 -- The same caveats of 'fastCanonicalVariations' do apply here.
 fastMostSpecificVariation :: Expr -> Expr
-fastMostSpecificVariation e  =  fill e (map ("x" `varAsTypeOf`) (holes e))
+fastMostSpecificVariation e  =  fill e (map (name `varAsTypeOf`) (holes e))
+  where
+  name  =  head $ variableNamesFromTemplate "x" \\ varnames e
+
+-- |
+-- Variable names existing in a given Expr.
+-- This function is not exported.
+varnames :: Expr -> [String]
+varnames e  =  [n | Value ('_':n) _ <- vars e]
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
@@ -48,6 +48,8 @@
 
   -- * Comparison
   , compareComplexity
+  , compareLexicographically
+  , compareQuickly
 
   -- * Properties
   , arity
@@ -217,7 +219,7 @@
 
 -- | /O(n)/.
 -- Computes the type of an expression.  This raises errors, but this should
--- not happen if expressions are smart-constructed.
+-- not happen if expressions are smart-constructed with '$$'.
 --
 -- > > let one = val (1 :: Int)
 -- > > let bee = val 'b'
@@ -369,7 +371,7 @@
 evaluate :: Typeable a => Expr -> Maybe a
 evaluate e = toDynamic e >>= fromDynamic
 
--- | /O(n)/. 
+-- | /O(n)/.
 -- Evaluates an expression when possible (correct type).
 -- Returns a default value otherwise.
 --
@@ -423,12 +425,15 @@
                            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
--- TODO: document Show Expr
 
 showsTypeExpr :: Expr -> String -> String
 showsTypeExpr e = case etyp e of
@@ -526,18 +531,26 @@
 showExpr = showPrecExpr (-1)
 
 -- | /O(n)/.
---   Does not evaluate values when comparing, but rather uses their
---   representation as strings and their types.
+-- Does not evaluate values when comparing, but rather uses their
+-- representation as strings and their types.
 --
---   This instance works for ill-typed expressions.
+-- This instance works for ill-typed expressions.
 instance Eq Expr where
   Value s1 d1 == Value s2 d2  =  s1 == s2 && dynTypeRep d1 == dynTypeRep d2
   ef1 :$ ex1  == ef2 :$ ex2   =  ef1 == ef2 && ex1 == ex2
   _           == _            =  False
 
+-- | /O(n)/.
+-- Does not evaluate values when comparing, but rather uses their
+-- representation as strings and their types.
+--
+-- This instance works for ill-typed expressions.
+--
+-- Expressions come first
+-- when they have smaller complexity ('compareComplexity')
+-- or when they come first lexicographically ('compareLexicographically').
 instance Ord Expr where
-  compare = compareComplexity <> lexicompare
--- TODO: document Ord Expr
+  compare = compareComplexity <> compareLexicographically
 
 -- | /O(n)/.
 -- Compares the complexity of two 'Expr's.
@@ -576,34 +589,61 @@
 --
 -- > > (zero -+- one) `compareComplexity` (one -+- zero)
 -- > EQ
+--
+-- This comparison is not a total order.
 compareComplexity :: Expr -> Expr -> Ordering
 compareComplexity  =  (compare      `on` length . values)
                    <> (flip compare `on` length . nubVars)
                    <> (flip compare `on` length . vars)
                    <> (compare      `on` length . nubConsts)
 
-lexicompareBy :: (Expr -> Expr -> Ordering) -> Expr -> Expr -> Ordering
-lexicompareBy compareConstants = cmp
+-- | /O(n)./
+-- Lexicographical structural comparison of 'Expr's
+-- where variables < constants < applications
+-- then types are compared before string representations.
+--
+-- > > compareLexicographically one (one -+- one)
+-- > LT
+-- > > compareLexicographically one zero
+-- > GT
+-- > > compareLexicographically (xx -+- zero) (zero -+- xx)
+-- > LT
+-- > > compareLexicographically (zero -+- xx) (zero -+- xx)
+-- > EQ
+--
+-- (cf. 'compareTy')
+--
+-- This comparison is a total order.
+compareLexicographically :: Expr -> Expr -> Ordering
+compareLexicographically  =  cmp
   where
-  e1@(Value ('_':s1) _) `cmp` e2@(Value ('_':s2) _)  =  typ e1 `compareTy` typ e2
-                                                     <> s1 `compare` s2
-  (f :$ x)        `cmp` (g :$ y)                     =  f  `cmp` g <> x `cmp` y
-  (_ :$ _)        `cmp` _                            =  GT
-  _               `cmp` (_ :$ _)                     =  LT
-  _               `cmp` Value ('_':_) _              =  GT
-  Value ('_':_) _ `cmp` _                            =  LT
-  e1@(Value _ _)        `cmp` e2@(Value _ _)         =  e1 `compareConstants` e2
-  -- Var < Constants < Apps
+  (f :$ x) `cmp` (g :$ y)  =  f  `cmp` g <> x `cmp` y
+  (_ :$ _) `cmp` _         =  GT
+  _        `cmp` (_ :$ _)  =  LT
+  e1@(Value s1 _) `cmp` e2@(Value s2 _)  =  isConst e1 `compare` isConst e2 -- var<const
+                                         <> typ e1 `compareTy` typ e2
+                                         <> s1 `cmpbool` s2 -- False<True
+                                         <> length s1 `compare` length s2 -- 2<10
+                                         <> s1 `compare` s2
+  "False" `cmpbool` "True"   =  LT
+  "True"  `cmpbool` "False"  =  GT
+  _       `cmpbool` _        =  EQ
 
-lexicompareConstants :: Expr -> Expr -> Ordering
-lexicompareConstants = cmp
+-- | /O(n)./
+-- A fast total order between 'Expr's
+-- that can be used when sorting 'Expr' values.
+--
+-- This is lazier than its counterparts
+-- 'compareComplexity' and 'compareLexicographically'
+-- and tries to evaluate the given 'Expr's as least as possible.
+compareQuickly :: Expr -> Expr -> Ordering
+compareQuickly  =  cmp
   where
-  e1 `cmp` e2 | typ e1 /= typ e2 = typ e1 `compareTy` typ e2
-  Value s1 _ `cmp` Value s2 _ = s1 `compare` s2
-  _ `cmp` _ = error "lexicompareConstants can only compare constants"
-
-lexicompare :: Expr -> Expr -> Ordering
-lexicompare = lexicompareBy lexicompareConstants
+  (f :$ x)       `cmp` (g :$ y)        =  f  `cmp` g <> x `cmp` y
+  (_ :$ _)       `cmp` _               =  GT
+  _              `cmp` (_ :$ _)        =  LT
+  x@(Value n1 _) `cmp` y@(Value n2 _)  =  typ x `compareTy` typ y
+                                       <> n1 `compare` n2
 
 -- | /O(n)/.
 -- Unfold a function application 'Expr' into a list of function and
@@ -755,7 +795,7 @@
 -- > False
 --
 -- > > isApp $ value "not" not :$ var "p" (undefined :: Bool)
--- > True 
+-- > True
 --
 -- This is equivalent to pattern matching the ':$' constructor.
 --
@@ -803,7 +843,7 @@
   s e@(e1 :$ e2)  =  (e:) . s e1 . s e2
   s e             =  (e:)
 
--- | Average /O(n log n)/ for the spine, /O(n^2)/ for full evaluation.
+-- | /O(n^3)/ for full evaluation.
 -- Lists all subexpressions of a given expression without repetitions.
 -- This includes the expression itself and partial function applications.
 -- (cf. 'subexprs')
@@ -825,8 +865,11 @@
 -- > , p && (p && True) :: Bool
 -- > ]
 --
--- While this is /O(n log n)/ on average it is /O(n^2)/ in the worst-case
--- (f (g (h (i (j (k (l (m (n x))))))))).
+-- Runtime averages to
+-- /O(n^2 log n)/ on evenly distributed expressions
+-- such as @(f x + g y) + (h z + f w)@;
+-- and to /O(n^3)/ on deep expressions
+-- such as @f (g (h (f (g (h x)))))@.
 nubSubexprs :: Expr -> [Expr]
 nubSubexprs  =  s
   where
@@ -871,7 +914,7 @@
   v (e1 :$ e2)  =  v e1 . v e2
   v e           =  (e:)
 
--- | /O(n log n)/.
+-- | /O(n^2)/.
 -- Lists all terminal values in an expression without repetitions.
 -- (cf. 'values')
 --
@@ -900,6 +943,12 @@
 -- > [ p :: Bool
 -- > , (&&) :: Bool -> Bool -> Bool
 -- > ]
+--
+-- Runtime averages to
+-- /O(n log n)/ on evenly distributed expressions
+-- such as @(f x + g y) + (h z + f w)@;
+-- and to /O(n^2)/ on deep expressions
+-- such as @f (g (h (f (g (h x)))))@.
 nubValues :: Expr -> [Expr]
 nubValues  =  v
   where
@@ -933,7 +982,7 @@
 consts :: Expr -> [Expr]
 consts  =  filter isConst . values
 
--- | /O(n log n)/.
+-- | /O(n^2)/.
 -- List terminal constants in an expression without repetitions.
 -- (cf. 'consts')
 --
@@ -947,6 +996,12 @@
 -- > [ True :: Bool
 -- > , (&&) :: Bool -> Bool -> Bool
 -- > ]
+--
+-- Runtime averages to
+-- /O(n log n)/ on evenly distributed expressions
+-- such as @(f x + g y) + (h z + f w)@;
+-- and to /O(n^2)/ on deep expressions
+-- such as @f (g (h (f (g (h x)))))@.
 nubConsts :: Expr -> [Expr]
 nubConsts  =  c
   where
@@ -976,7 +1031,7 @@
 vars :: Expr -> [Expr]
 vars  =  filter isVar . values
 
--- | /O(n log n)/.
+-- | /O(n^2)/.
 -- Lists all variables in an expression without repetitions.
 -- (cf. 'vars')
 --
@@ -995,6 +1050,12 @@
 --
 -- > > nubVars (pp -&&- true)
 -- > [p :: Bool]
+--
+-- Runtime averages to
+-- /O(n log n)/ on evenly distributed expressions
+-- such as @(f x + g y) + (h z + f w)@;
+-- and to /O(n^2)/ on deep expressions
+-- such as @f (g (h (f (g (h x)))))@.
 nubVars :: Expr -> [Expr]
 nubVars  =  v
   where
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
@@ -110,7 +110,7 @@
 holes :: Expr -> [Expr]
 holes  =  filter isHole . values
 
--- | /O(n log n)/.
+-- | /O(n^2)/.
 -- Lists all holes in an expression without repetitions.
 -- (cf. 'holes')
 --
@@ -122,6 +122,12 @@
 --
 -- > > nubHoles $ hole (undefined :: Bool->Bool) :$ hole (undefined::Bool)
 -- > [_ :: Bool,_ :: Bool -> Bool]
+--
+-- Runtime averages to
+-- /O(n log n)/ on evenly distributed expressions
+-- such as @(f x + g y) + (h z + f w)@;
+-- and to /O(n^2)/ on deep expressions
+-- such as @f (g (h (f (g (h x)))))@.
 nubHoles :: Expr -> [Expr]
 nubHoles  =  nubSort . holes
 
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -4,4 +4,4 @@
 - .
 
 extra-deps:
-- leancheck-0.9.3
+- leancheck-0.9.4
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -17,6 +17,7 @@
   , module Test.ListableExpr
   , module Data.Maybe
   , module Data.Either
+  , module Data.Monoid
   , mainTest
 
   , tyBool
@@ -34,6 +35,7 @@
 
 import Data.Maybe
 import Data.Either
+import Data.Monoid
 import Test.LeanCheck
 import Test.LeanCheck.Utils
 import Test.LeanCheck.Derive
diff --git a/test/Test/ListableExpr.hs b/test/Test/ListableExpr.hs
--- a/test/Test/ListableExpr.hs
+++ b/test/Test/ListableExpr.hs
@@ -69,7 +69,7 @@
 -- | Constant terminal value of 'Int' type.
 newtype IntE0  =  IntE0 { unIntE0 :: Expr }
 
--- | Varialbe of 'Int' type.
+-- | Variable of 'Int' type.
 newtype IntEV  =  IntEV { unIntEV :: Expr }
 
 -- | Functions from Int to Int
diff --git a/test/canon.hs b/test/canon.hs
--- a/test/canon.hs
+++ b/test/canon.hs
@@ -87,15 +87,17 @@
        , xx -+- xx -+- xx -+- yy
        , xx -+- xx -+- xx -+- xx
        ]
+  , canonicalVariations (i_ -+- ii -+- jj -+- i_)
+    == [ xx -+- yy -+- zz -+- xx'
+       , xx -+- yy -+- zz -+- xx ]
 
-  , holds n $ \e -> all isHole (vars e)
-                ==> let xs = map (length . nubVars) $ canonicalVariations e
+
+  , holds n $ \e -> let xs = map (length . nubVars) $ canonicalVariations e
                     in (head xs >) `all` tail xs
                     && (last xs <) `all` init xs
   , holds n $ \e -> all isHole (vars e)
                 ==> isNub (vars (head (canonicalVariations e)))
-  , holds n $ \e -> all isHole (vars e)
-                ==> let es = canonicalVariations e
+  , holds n $ \e -> let es = canonicalVariations e
                     in (`isInstanceOf` head es) `all` tail es
                     && (last es `isInstanceOf`) `all` init es
   , holds n $ \e -> let es = canonicalVariations e
@@ -103,8 +105,8 @@
   , holds n $ \e -> length (canonicalVariations e)
                  == product (map (bell . snd) . counts $ holes e)
 
-  , holds n $ \e -> all isHole (vars e) ==> head (canonicalVariations e) == mostGeneralCanonicalVariation e
-  , holds n $ \e -> all isHole (vars e) ==> last (canonicalVariations e) == mostSpecificCanonicalVariation e
+  , holds n $ \e -> head (canonicalVariations e) == mostGeneralCanonicalVariation e
+  , holds n $ \e -> last (canonicalVariations e) == mostSpecificCanonicalVariation e
   ]
 
 -- O(1) bell number implementation
diff --git a/test/model/bench/compare.out b/test/model/bench/compare.out
--- a/test/model/bench/compare.out
+++ b/test/model/bench/compare.out
@@ -192,810 +192,4850 @@
 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  =  GT
-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  =  LT
-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  =  GT
-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  =  GT
-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
+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/sort.out b/test/model/bench/sort.out
new file mode 100644
--- /dev/null
+++ b/test/model/bench/sort.out
@@ -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/test/ord.hs b/test/ord.hs
--- a/test/ord.hs
+++ b/test/ord.hs
@@ -11,6 +11,15 @@
 
   , holds n $ (okEqOrd :: Expr -> Expr -> Expr -> Bool)
   , holds n $ \(Ill e0) (Ill e1) (Ill e2) -> okEqOrd e0 e1 e2
+  , holds n $ compare ==== compareComplexity <> compareLexicographically
+
+  , holds n $ isComparison (compare :: Expr -> Expr -> Ordering)
+  , holds n $ isComparison compareLexicographically
+  , holds n $ isComparison compareQuickly
+
+  , exists n $ \e1 e2 ->        e1 `compare` e2 /= e1 `compareLexicographically` e2
+  , exists n $ \e1 e2 ->        e1 `compare` e2 /= e1 `compareQuickly` e2
+  , exists n $ \e1 e2 -> e1 `compareQuickly` e2 /= e1 `compareLexicographically` e2
 
   -- Holes < Values < Apps
   , xx < zero
