express 0.1.10 → 0.1.12
raw patch · 25 files changed
+3466/−129 lines, 25 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Express.Fixtures: (-.-) :: Expr -> Expr -> Expr
+ Data.Express.Fixtures: compose :: Expr
+ Data.Express.Fixtures: four :: Expr
+ Data.Express.Fixtures: hh :: Expr -> Expr
+ Data.Express.Fixtures: hhE :: Expr
+ Data.Express.Fixtures: map' :: Expr -> Expr -> Expr
+ Data.Express.Fixtures: mapE :: Expr
+ Data.Express.Fixtures: signum' :: Expr -> Expr
+ Data.Express.Fixtures: signumE :: Expr
+ Data.Express.Fixtures: zzs :: Expr
+ Data.Express.Triexpr: Triexpr :: [(Maybe Expr, Either (Triexpr a) (Expr, a))] -> Triexpr a
+ Data.Express.Triexpr: data Triexpr a
+ Data.Express.Triexpr: empty :: Triexpr a
+ Data.Express.Triexpr: fromList :: [(Expr, a)] -> Triexpr a
+ Data.Express.Triexpr: insert :: Expr -> a -> Triexpr a -> Triexpr a
+ Data.Express.Triexpr: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Express.Triexpr.Triexpr a)
+ Data.Express.Triexpr: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Express.Triexpr.Triexpr a)
+ Data.Express.Triexpr: instance GHC.Show.Show a => GHC.Show.Show (Data.Express.Triexpr.Triexpr a)
+ Data.Express.Triexpr: lookup :: Expr -> Triexpr a -> [(Expr, [(Expr, Expr)], a)]
+ Data.Express.Triexpr: map :: (a -> b) -> Triexpr a -> Triexpr b
+ Data.Express.Triexpr: merge :: Triexpr a -> Triexpr a -> Triexpr a
+ Data.Express.Triexpr: toList :: Triexpr a -> [(Expr, a)]
+ Data.Express.Triexpr: unit :: Expr -> a -> Triexpr a
Files
- .gitignore +4/−0
- .travis.yml +0/−94
- Makefile +6/−1
- bench/match-list.hs +24/−0
- bench/match-noop.hs +24/−0
- bench/match-triexpr.hs +27/−0
- bench/runtime/zero/bench/match-list.runtime +1/−0
- bench/runtime/zero/bench/match-noop.runtime +1/−0
- bench/runtime/zero/bench/match-triexpr.runtime +1/−0
- bench/runtime/zero/bench/tiers.runtime +1/−1
- bench/runtime/zero/eg/u-conjure.runtime +1/−1
- changelog.md +18/−0
- eg/u-extrapolate.hs +7/−11
- eg/u-speculate.hs +7/−8
- express.cabal +35/−3
- mk/All.hs +1/−0
- mk/Toplibs.hs +2/−0
- mk/depend.mk +131/−0
- src/Data/Express/Fixtures.hs +97/−10
- src/Data/Express/Triexpr.hs +101/−0
- test/Test.hs +141/−0
- test/model/bench/match-list.out +795/−0
- test/model/bench/match-noop.out +1182/−0
- test/model/bench/match-triexpr.out +795/−0
- test/triexpr.hs +64/−0
.gitignore view
@@ -19,6 +19,9 @@ eg/u-speculate eg/u-conjure bench/compare+bench/match-noop+bench/match-list+bench/match-triexpr bench/pairs bench/sort bench/tiers@@ -39,6 +42,7 @@ test/fold test/ord test/show+test/triexpr doc/**/*.html doc/**/*.css doc/**/*.js
− .travis.yml
@@ -1,94 +0,0 @@-# .travis.yml file for Express-#-# Copyright: (c) 2017-2021 Rudy Matela-# License: 3-Clause BSD (see the file LICENSE)-# Maintainer: Rudy Matela <rudy@matela.com.br>--language: c # not really--notifications:- email:- on_failure: change--sudo: false--cache:- directories:- - $HOME/.ghc- - $HOME/.cabal- - $HOME/.stack--before_install:-- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH-- ghc --version-- cabal --version-- haddock --version-- du -hd3 ~/.cabal ~/.ghc || true-- du -hd4 ~/.stack || true-- rm -f ~/.cabal/config && cabal update-# Download and unpack the stack executable-# "Once Travis whitelists the stack.dev files," simply include stack in the-# addons section. -- https://docs.haskellstack.org/en/stable/travis_ci/-- mkdir -p ~/.local/bin-- export PATH=$HOME/.local/bin:$PATH-- travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'-- stack config set system-ghc --global true-- stack --version-- cabal install leancheck || cabal install leancheck --lib--script:-- make && make test-- make haddock-- make test-sdist-- cabal test main --ghc-option=-O0-- stack --resolver $STACKVER --no-terminal --skip-ghc-check test --ghc-options=-O0--matrix:- allow_failures:- - 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- addons: {apt: {packages: [ghc-head, cabal-install-head], sources: hvr-ghc}}- - ghc: '9.0'- env: GHCVER=9.0.1 CABALVER=head STACKVER=nightly-2021-04-06- addons: {apt: {packages: [ghc-9.0.1, cabal-install-head], sources: hvr-ghc}}- - ghc: '8.10'- env: GHCVER=8.10.4 CABALVER=3.2 STACKVER=lts-17.9- addons: {apt: {packages: [ghc-8.10.4, cabal-install-3.2], sources: hvr-ghc}}- - ghc: '8.8'- env: GHCVER=8.8.4 CABALVER=3.0 STACKVER=lts-16.31- addons: {apt: {packages: [ghc-8.8.4, cabal-install-3.0], sources: hvr-ghc}}- - ghc: '8.6'- env: GHCVER=8.6.5 CABALVER=2.4 STACKVER=lts-14.27- addons: {apt: {packages: [ghc-8.6.5, cabal-install-2.4], sources: hvr-ghc}}- - ghc: '8.4'- env: GHCVER=8.4.4 CABALVER=2.2 STACKVER=lts-12.26- addons: {apt: {packages: [ghc-8.4.4, cabal-install-2.2], sources: hvr-ghc}}- - ghc: '8.2'- env: GHCVER=8.2.2 CABALVER=2.0 STACKVER=lts-11.22- addons: {apt: {packages: [ghc-8.2.2, cabal-install-2.0], sources: hvr-ghc}}- - ghc: '8.0'- env: GHCVER=8.0.2 CABALVER=1.24 STACKVER=lts-9.21- addons: {apt: {packages: [ghc-8.0.2, cabal-install-1.24], sources: hvr-ghc}}- - ghc: '7.10'- env: GHCVER=7.10.3 CABALVER=1.22 STACKVER=lts-6.35- addons: {apt: {packages: [ghc-7.10.3, cabal-install-1.22], sources: hvr-ghc}}- # we only support stack with GHC >= 7.10- - ghc: '7.8'- env: GHCVER=7.8.4 CABALVER=1.18- addons: {apt: {packages: [ghc-7.8.4, cabal-install-1.18], sources: hvr-ghc}}- before_install:- - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH- - ghc --version- - cabal --version- - haddock --version- - rm -f ~/.cabal/config && cabal update- - cabal install Cabal==1.18.*- - cabal install leancheck- script:- - make && make test- - make haddock HADDOCKFLAGS=- - make test-sdist- - cabal test
Makefile view
@@ -20,6 +20,7 @@ test/fold \ test/show \ test/ord \+ test/triexpr \ test/listable EGS = BENCHS = \@@ -27,6 +28,9 @@ eg/u-speculate \ eg/u-conjure \ bench/compare \+ bench/match-list \+ bench/match-noop \+ bench/match-triexpr \ bench/pairs \ bench/sort \ bench/tiers \@@ -59,7 +63,8 @@ .PHONY: %.bench %.bench: % @mkdir -p bench/runtime/$$HOSTNAME/$<- @printf "%-18s " $<+ @rmdir bench/runtime/$$HOSTNAME/$<+ @printf "%-20s " $< @/usr/bin/time -f%e ./$< 2>&1 >/dev/null | tee bench/runtime/$$HOSTNAME/$<.runtime clean: clean-hi-o clean-haddock
+ bench/match-list.hs view
@@ -0,0 +1,24 @@+-- match-list.hs -- how long it takes to match expression in a list?+--+-- Copyright (c) 2021 Rudy Matela.+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).+--+-- This program has the same parameters as other match*.hs benchmarks.+import Test++++showEq :: (Expr, Expr) -> String+showEq (lhs, rhs) = showExpr lhs ++ " = " ++ showExpr rhs++exprs :: [Expr]+exprs = take 360360 list++query :: Expr -> Maybe (Expr,[(Expr,Expr)],Expr)+query e = listToMaybe [(e1,ms,e2) | (e1,e2) <- sort allRules, ms <- maybeToList (e `match` e1)]++main :: IO ()+main = do+ putStrLn $ unlines $ map showEq $ allRules+ putStrLn $ unlines $ map show $ mapMaybe query $ take 1080 $ exprs+ print $ (== ']') $ last $ show $ mapMaybe query exprs
+ bench/match-noop.hs view
@@ -0,0 +1,24 @@+-- exprs.hs -- how long it takes to enumerate expressions?+--+-- Copyright (c) 2021 Rudy Matela.+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).+--+-- This program has the same parameters as other match*.hs benchmarks.+import Test++++showEq :: (Expr, Expr) -> String+showEq (lhs, rhs) = showExpr lhs ++ " = " ++ showExpr rhs++exprs :: [Expr]+exprs = take 360360 list++query :: Expr -> Maybe (Expr,[(Expr,Expr)],Expr)+query e = Just (e,[],e)++main :: IO ()+main = do+ putStrLn $ unlines $ map showEq $ allRules+ putStrLn $ unlines $ map show $ mapMaybe query $ take 1080 $ exprs+ print $ (== ']') $ last $ show $ mapMaybe query exprs
+ bench/match-triexpr.hs view
@@ -0,0 +1,27 @@+-- triexpr.hs -- how long it takes to match expressions in a Triexpr?+--+-- Copyright (c) 2021 Rudy Matela.+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).+--+-- This program has the same parameters as other match*.hs benchmarks.+import Test+import Data.Express.Triexpr (Triexpr)+import qualified Data.Express.Triexpr as T++showEq :: (Expr, Expr) -> String+showEq (lhs, rhs) = showExpr lhs ++ " = " ++ showExpr rhs++exprs :: [Expr]+exprs = take 360360 list++query :: Expr -> Maybe (Expr,[(Expr,Expr)],Expr)+query e = listToMaybe $ T.lookup e trie++main :: IO ()+main = do+ putStrLn $ unlines $ map showEq $ allRules+ putStrLn $ unlines $ map show $ mapMaybe query $ take 1080 $ exprs+ print $ (== ']') $ last $ show $ mapMaybe query exprs++trie :: Triexpr Expr+trie = T.fromList allRules
+ bench/runtime/zero/bench/match-list.runtime view
@@ -0,0 +1,1 @@+2.36
+ bench/runtime/zero/bench/match-noop.runtime view
@@ -0,0 +1,1 @@+2.00
+ bench/runtime/zero/bench/match-triexpr.runtime view
@@ -0,0 +1,1 @@+2.59
bench/runtime/zero/bench/tiers.runtime view
@@ -1,1 +1,1 @@-0.20+0.19
bench/runtime/zero/eg/u-conjure.runtime view
@@ -1,1 +1,1 @@-0.34+0.33
changelog.md view
@@ -2,6 +2,24 @@ ===================== +v0.1.12+-------++* `Data.Express.Fixtures`, add several symbols:+ - `hh` and `hhE`;+ - `four` and `zzs`;+ - `signum'` and `signumE`;+ - `compose` and `-.-`;+ - `mapE` and `map'`.++* Add the experimental `Triexpr` module, including:+ - the `Triexpr` type;+ - tests;+ - benchmarks.++* Retire Travis as the CI++ v0.1.10 -------
eg/u-extrapolate.hs view
@@ -75,18 +75,14 @@ , all (not . prop . evl) (take maxTests $ grounds g) ] candidateGeneralizations :: Expr -> [Expr]-candidateGeneralizations = map canonicalize- . concatMap canonicalVariations- . gen+candidateGeneralizations = concatMap canonicalVariations . gen where- gen e@(e1 :$ e2) =- [holeAsTypeOf e | isListable e]- ++ [g1 :$ g2 | g1 <- gen e1, g2 <- gen e2]- ++ map (:$ e2) (gen e1)- ++ map (e1 :$) (gen e2)- gen e- | isVar e = []- | otherwise = [holeAsTypeOf e | isListable e]+ gen e@(e1 :$ e2) = [holeAsTypeOf e | isListable e]+ ++ [g1 :$ g2 | g1 <- gen e1, g2 <- gen e2]+ ++ map (:$ e2) (gen e1)+ ++ map (e1 :$) (gen e2)+ gen e | isVar e = []+ | otherwise = [holeAsTypeOf e | isListable e] isListable = not . null . tiersFor grounds :: Expr -> [Expr]
eg/u-speculate.hs view
@@ -114,15 +114,14 @@ _ -> [] (-==-) :: Expr -> Expr -> Expr-ex -==- ey = headOr (val False) . map (:$ ey) $ mapMaybe ($$ ex)- [ value "==" ((==) :: Int -> Int -> Bool)- , value "==" ((==) :: Bool -> Bool -> Bool)- , value "==" ((==) :: [Int] -> [Int] -> Bool)- , value "==" ((==) :: [Bool] -> [Bool] -> Bool)- ]+ex -==- ey = head $+ [eqn | eq <- eqs, let eqn = eq :$ ex :$ ey, isWellTyped eqn] ++ [val False] where- headOr x [] = x- headOr _ (x:_) = x+ eqs = [ value "==" ((==) :: Int -> Int -> Bool)+ , value "==" ((==) :: Bool -> Bool -> Bool)+ , value "==" ((==) :: [Int] -> [Int] -> Bool)+ , value "==" ((==) :: [Bool] -> [Bool] -> Bool)+ ] lhs, rhs :: Expr -> Expr lhs (((Value "==" _) :$ e) :$ _) = e
express.cabal view
@@ -1,6 +1,6 @@ -- Cabal file for express name: express-version: 0.1.10+version: 0.1.12 synopsis: Dynamically-typed expressions involving applications and variables. description: Express is a library for manipulating dynamically typed Haskell expressions.@@ -26,7 +26,6 @@ , changelog.md , doc/express.svg extra-source-files: .gitignore- , .travis.yml , .github/workflows/build.yml , Makefile , mk/depend.mk@@ -62,7 +61,7 @@ source-repository this type: git location: https://github.com/rudymatela/express- tag: v0.1.10+ tag: v0.1.12 library exposed-modules: Data.Express@@ -79,6 +78,7 @@ , Data.Express.Name.Derive , Data.Express.Canon , Data.Express.Match+ , Data.Express.Triexpr , Data.Express.Utils.List , Data.Express.Utils.String , Data.Express.Utils.Typeable@@ -215,6 +215,14 @@ build-depends: base >= 4 && < 5, express, leancheck >= 0.9.4 default-language: Haskell2010 +test-suite triexpr+ type: exitcode-stdio-1.0+ main-is: triexpr.hs+ hs-source-dirs: test+ other-modules: Test, Test.ListableExpr+ build-depends: base >= 4 && < 5, express, leancheck >= 0.9.4+ default-language: Haskell2010+ test-suite utils type: exitcode-stdio-1.0 main-is: utils.hs@@ -250,6 +258,30 @@ 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.4+ default-language: Haskell2010++benchmark match-list+ type: exitcode-stdio-1.0+ main-is: match-list.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 match-noop+ type: exitcode-stdio-1.0+ main-is: match-noop.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 match-triexpr+ type: exitcode-stdio-1.0+ main-is: match-triexpr.hs hs-source-dirs: bench, test other-modules: Test, Test.ListableExpr build-depends: base >= 4 && < 5, express, leancheck >= 0.9.4
mk/All.hs view
@@ -6,3 +6,4 @@ import Data.Express import Data.Express.Fixtures+import Data.Express.Triexpr ()
mk/Toplibs.hs view
@@ -2,4 +2,6 @@ module Toplibs () where import Data.Express ()+import Data.Express.Fixtures ()+import Data.Express.Triexpr () import Test ()
mk/depend.mk view
@@ -25,6 +25,88 @@ test/Test/ListableExpr.hs \ bench/compare.hs \ mk/toplibs+bench/match-list.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/match-list.hs+bench/match-list: \+ test/Test.hs \+ test/Test/ListableExpr.hs \+ bench/match-list.hs \+ mk/toplibs+bench/match-noop.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/match-noop.hs+bench/match-noop: \+ test/Test.hs \+ test/Test/ListableExpr.hs \+ bench/match-noop.hs \+ mk/toplibs+bench/match-triexpr.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/Triexpr.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/match-triexpr.hs+bench/match-triexpr: \+ test/Test.hs \+ test/Test/ListableExpr.hs \+ bench/match-triexpr.hs \+ mk/toplibs bench/pairs.o: \ test/Test.hs \ test/Test/ListableExpr.hs \@@ -177,6 +259,7 @@ src/Data/Express/Utils/TH.hs \ src/Data/Express/Utils/String.hs \ src/Data/Express/Utils/List.hs \+ src/Data/Express/Triexpr.hs \ src/Data/Express.hs \ src/Data/Express/Name.hs \ src/Data/Express/Name/Derive.hs \@@ -199,6 +282,7 @@ src/Data/Express/Utils/TH.hs \ src/Data/Express/Utils/String.hs \ src/Data/Express/Utils/List.hs \+ src/Data/Express/Triexpr.hs \ src/Data/Express.hs \ src/Data/Express/Name.hs \ src/Data/Express/Name/Derive.hs \@@ -344,6 +428,25 @@ src/Data/Express/Core.hs \ src/Data/Express/Canon.hs \ src/Data/Express/Basic.hs+src/Data/Express/Triexpr.o: \+ 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/Triexpr.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/Express.hs \+ src/Data/Express/Express/Derive.hs \+ src/Data/Express/Core.hs \+ src/Data/Express/Canon.hs \+ src/Data/Express/Basic.hs src/Data/Express/Utils/List.o: \ src/Data/Express/Utils/List.hs src/Data/Express/Utils/String.o: \@@ -827,6 +930,34 @@ src/Data/Express/Canon.hs \ src/Data/Express/Basic.hs test/Test: \+ test/Test.hs \+ test/Test/ListableExpr.hs \+ mk/toplibs+test/triexpr.o: \+ test/triexpr.hs \+ 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/Triexpr.hs \+ src/Data/Express.hs \+ src/Data/Express/Name.hs \+ src/Data/Express/Name/Derive.hs \+ src/Data/Express/Match.hs \+ src/Data/Express/Map.hs \+ src/Data/Express/Instances.hs \+ src/Data/Express/Hole.hs \+ src/Data/Express/Fold.hs \+ src/Data/Express/Fixtures.hs \+ src/Data/Express/Express.hs \+ src/Data/Express/Express/Derive.hs \+ src/Data/Express/Core.hs \+ src/Data/Express/Canon.hs \+ src/Data/Express/Basic.hs+test/triexpr: \+ test/triexpr.hs \ test/Test.hs \ test/Test/ListableExpr.hs \ mk/toplibs
src/Data/Express/Fixtures.hs view
@@ -116,19 +116,20 @@ , i_, xx, yy, zz, xx' , ii, jj, kk, ii' , ll, mm, nn- , zero, one, two, three, minusOne, minusTwo- , idE, negateE, absE+ , zero, one, two, three, four, minusOne, minusTwo+ , idE, negateE, absE, signumE , idInt , idBool , idChar , idInts , idBools , idString- , id', const', negate', abs'+ , id', const', negate', abs', signum' , plus, times , (-+-), (-*-) , ff, ffE , gg, ggE+ , hh, hhE , (-?-) , (-$-) , odd'@@ -146,6 +147,7 @@ , is_ , xxs , yys+ , zzs , nil , emptyString , nilInt@@ -186,6 +188,12 @@ , quadruple , quintuple , sixtuple++ -- ** Higher order+ , compose+ , mapE+ , (-.-)+ , map' ) where @@ -442,6 +450,13 @@ three :: Expr three = val (3 :: Int) +-- | The value @4@ bound to the 'Int' type encoded as an 'Expr'.+--+-- > > four+-- > 4 :: Int+four :: Expr+four = val (4 :: Int)+ -- | The value @-1@ bound to the 'Int' type encoded as an 'Expr'. -- -- > > minusOne@@ -483,6 +498,27 @@ gg :: Expr -> Expr gg = (ggE :$) +-- | A variable @g@ of 'Int -> Int' type encoded as an 'Expr'.+--+-- > > ggE+-- > g :: Int -> Int+ggE :: Expr+ggE = var "g" (undefined :: Int -> Int)++-- | A variable function @h@ of 'Int -> Int' type lifted over the 'Expr' type.+--+-- > > hh zz+-- > h z :: Int+hh :: Expr -> Expr+hh = (hhE :$)++-- | A variable @h@ of 'Int -> Int' type encoded as an 'Expr'.+--+-- > > hhE+-- > h :: Int -> Int+hhE :: Expr+hhE = var "h" (undefined :: Int -> Int)+ -- | A variable binary operator @?@ lifted over the 'Expr' type. -- Works for 'Int', 'Bool', 'Char', @[Int]@ and 'String'. --@@ -506,13 +542,6 @@ err = error $ "(-?-): cannot apply `(?) :: * -> * -> *` to `" ++ show ex ++ "' and `" ++ show ey ++ "'. Unhandled types?" --- | A variable @g@ of 'Int -> Int' type encoded as an 'Expr'.------ > > ggE--- > g :: Int -> Int-ggE :: Expr-ggE = var "g" (undefined :: Int -> Int)- -- | The operator '+' for the 'Int' type for use on 'Expr's. (See also 'plus'.) -- -- > > two -+- three@@ -671,6 +700,23 @@ absE :: Expr absE = value "abs" (abs :: Int -> Int) +-- | 'signum' over the 'Int' type lifted over the 'Expr' type.+--+-- > > signum' xx'+-- > signum x' :: Int+--+-- > > evl (signum' minusTwo) :: Int+-- > -1+signum' :: Expr -> Expr+signum' e = signumE :$ e++-- | 'signum' over the 'Int' type encoded as an 'Expr'.+--+-- > > signumE+-- > signum :: Int -> Int+signumE :: Expr+signumE = value "signum" (signum :: Int -> Int)+ odd' :: Expr -> Expr odd' = (oddE :$) where oddE = value "odd" (odd :: Int -> Bool) @@ -760,6 +806,13 @@ yys :: Expr yys = var "ys" [int] +-- | A variable named @zs@ of type @[Int]@ encoded as an 'Expr'.+--+-- > > yys+-- > ys :: [Int]+zzs :: Expr+zzs = var "zs" [int]+ -- | An empty list of type @[Int]@ encoded as an 'Expr'. -- -- > > nil@@ -1217,3 +1270,37 @@ headOr :: a -> [a] -> a headOr x [] = x headOr _ (x:_) = x++compose :: Expr+compose = value "." ((.) :: Compose Int)++(-.-) :: Expr -> Expr -> Expr+ex -.- ey = (:$ ey) . headOr err $ mapMaybe ($$ ex)+ [ value "." ((.) :: Compose ())+ , value "." ((.) :: Compose Int)+ , value "." ((.) :: Compose Bool)+ , value "." ((.) :: Compose Char)+ , value "." ((.) :: Compose [Int])+ , value "." ((.) :: Compose [Bool])+ , value "." ((.) :: Compose [Char])+ ]+ where+ err = error $ "(-.-): unhandled type " ++ show (typ ex)+type Compose a = (a -> a) -> (a -> a) -> (a -> a)++mapE :: Expr+mapE = value "map" (map :: Map Int)++map' :: Expr -> Expr -> Expr+map' ef exs = (:$ exs) . headOr err $ mapMaybe ($$ ef)+ [ value "map" (map :: Map ())+ , value "map" (map :: Map Int)+ , value "map" (map :: Map Bool)+ , value "map" (map :: Map Char)+ , value "map" (map :: Map [Int])+ , value "map" (map :: Map [Bool])+ , value "map" (map :: Map [Char])+ ]+ where+ err = error $ "map': unhandled type " ++ show (typ ef)+type Map a = (a -> a) -> [a] -> [a]
+ src/Data/Express/Triexpr.hs view
@@ -0,0 +1,101 @@+-- |+-- Module : Data.Express.Triexpr+-- Copyright : (c) 2019-2021 Rudy Matela+-- License : 3-Clause BSD (see the file LICENSE)+-- Maintainer : Rudy Matela <rudy@matela.com.br>+--+-- This module is part of Express.+--+-- An __experimental__ data structure for matching 'Expr's.+--+-- __Warning (1):__+-- Take care when importing this module,+-- the interface is experimental+-- and may change at every minor version.+--+-- __Warning (2):__+-- YMMV:+-- Do not expect this to be faster than manually matching in a list,+-- provisional experiments show that it can be slower depending+-- on the set of expressions being matched.+--+-- This module should be imported qualified+-- as it exports definitions called+-- 'map', 'lookup', 'toList', 'fromList', 'insert' and 'empty':+--+-- > import Data.Express.Triexpr (Triexpr)+-- > import qualified Data.Express.Triexpr as T+module Data.Express.Triexpr+ ( Triexpr (..)+ , empty+ , unit+ , merge+ , insert+ , toList+ , fromList+ , map+ , lookup+ )+where++import Data.Express+import Data.Maybe+import Prelude hiding (map, lookup)++-- "Nothing" should match an App, "Just Expr" an expression+data Triexpr a = Triexpr [(Maybe Expr, Either (Triexpr a) (Expr,a))]+ deriving (Eq, Ord, Show)++empty :: Triexpr a+empty = Triexpr []++unit :: Expr -> a -> Triexpr a+unit e x = u e (Right (e,x))+ where+ u :: Expr -> (Either (Triexpr a) (Expr,a)) -> Triexpr a+ u (e1 :$ e2) et = Triexpr [(Nothing, Left $ u e1 $ Left $ u e2 et)]+ u e et = Triexpr [(Just e, et)]++merge :: Triexpr a -> Triexpr a -> Triexpr a+merge (Triexpr ms1) (Triexpr ms2) = Triexpr $ m ms1 ms2+ where+ m [] ms = ms+ m ms [] = ms+ m ((e1,mt1):ms1) ((e2,mt2):ms2) = case compare e1 e2 of+ LT -> (e1,mt1) : m ms1 ((e2,mt2):ms2)+ GT -> (e2,mt2) : m ((e1,mt1):ms1) ms2+ EQ -> case (mt1,mt2) of+ (Left t1, Left t2) -> (e1, Left $ t1 `merge` t2) : m ms1 ms2+ (_,_) -> (e1,mt1) : (e2,mt2) : m ms1 ms2++insert :: Expr -> a -> Triexpr a -> Triexpr a+insert e x t = unit e x `merge` t++toList :: Triexpr a -> [(Expr, a)]+toList (Triexpr ms) = concatMap to ms+ where+ to (_, Right ex) = [ex]+ to (_, Left t) = toList t++fromList :: [(Expr, a)] -> Triexpr a+fromList = foldr (uncurry insert) empty++map :: (a -> b) -> Triexpr a -> Triexpr b+map f (Triexpr ms) = Triexpr [(ex, mapEither (map f) (mapSnd f) eth) | (ex, eth) <- ms]+ where+ mapEither :: (a -> c) -> (b -> d) -> Either a b -> Either c d+ mapEither f g (Left x) = Left (f x)+ mapEither f g (Right y) = Right (g y)+ mapSnd :: (a -> b) -> (c,a) -> (c,b)+ mapSnd f (x,y) = (x, f y)++lookup :: Expr -> Triexpr a -> [ (Expr, [(Expr,Expr)], a) ]+lookup e t = [(e, bs, x) | (bs, Right (e,x)) <- look (Just e) t []]+ where+ look :: Maybe Expr -> Triexpr a -> [(Expr, Expr)] -> [([(Expr,Expr)], Either (Triexpr a) (Expr,a))]+ look Nothing t@(Triexpr ms) bs = [(bs, mt) | (Nothing, mt) <- ms]+ look (Just e) t@(Triexpr ms) bs = [(bs', mt) | (Just e', mt) <- ms, bs' <- maybeToList (matchWith bs e e')]+ ++ [r | e1 :$ e2 <- [e]+ , (bs1, Left t1) <- look Nothing t bs+ , (bs2, Left t2) <- look (Just e1) t1 bs1+ , r <- look (Just e2) t2 bs2]
test/Test.hs view
@@ -25,6 +25,11 @@ , tyChar , tyInts , tyIntToInt++ , allRules+ , boolRules+ , intRules+ , listRules ) where @@ -77,3 +82,139 @@ tyIntToInt :: TypeRep tyIntToInt = typeOf (undefined :: Int -> Int)+++-- |+-- To be used when testing or benchmarking 'Triexpr'+allRules :: [(Expr,Expr)]+allRules = boolRules ++ intRules ++ listRules ++ boolintRules ++ funRules++boolRules :: [(Expr,Expr)]+boolRules =+ [ id' pp -=- pp+ , pp -&&- pp -=- pp+ , pp -||- pp -=- pp+ , pp -&&- qq -=- qq -&&- pp+ , pp -||- qq -=- qq -||- pp+ , not' (not' pp) -=- pp+ , pp -&&- true -=- pp+ , true -&&- pp -=- pp+ , pp -&&- false -=- false+ , false -&&- pp -=- false+ , pp -||- true -=- true+ , true -||- pp -=- true+ , pp -||- false -=- pp+ , false -||- pp -=- pp+ , pp -&&- not' pp -=- false+ , pp -||- not' pp -=- true+ , not' pp -&&- pp -=- false+ , not' pp -||- pp -=- true+ , (pp -&&- qq) -&&- rr -=- pp -&&- (qq -&&- rr)+ , (pp -||- qq) -||- rr -=- pp -||- (qq -||- rr)+ , not' (pp -&&- qq) -=- not' pp -||- not' qq+ , not' (pp -||- qq) -=- not' pp -&&- not' qq+ , not' false -=- true+ , not' true -=- false+ , not' (not' pp -&&- not' qq) -=- (pp -||- qq)+ , not' (not' pp -||- not' qq) -=- (pp -&&- qq)+ , pp -&&- not' (pp -&&- qq) -=- pp -&&- not' qq+--, pp -=- pp+ ]++intRules :: [(Expr,Expr)]+intRules =+ [ id' xx -=- xx+ , abs' (abs' xx) -=- abs' xx+ , xx -+- zero -=- xx+ , zero -+- xx -=- xx+ , xx -*- one -=- xx+ , one -*- xx -=- xx+ , xx -*- zero -=- zero+ , zero -*- xx -=- zero+ , xx -+- yy -=- yy -+- xx+ , xx -*- yy -=- yy -*- xx+ , (xx -+- yy) -+- zz -=- xx -+- (yy -+- zz)+ , (xx -*- yy) -*- zz -=- xx -*- (yy -*- zz)+ , (xx -+- xx) -*- yy -=- xx -*- (yy -+- yy)+ , xx -*- (yy -+- one) -=- xx -+- xx -*- yy+ , (xx -+- one) -*- yy -=- xx -+- xx -*- yy+ , xx -*- (yy -+- zz) -=- xx -*- yy -+- xx -*- zz+ , (xx -+- yy) -*- zz -=- xx -*- zz -+- yy -*- zz+ , negate' (negate' xx) -=- xx+ , xx -+- negate' xx -=- zero+ , negate' xx -+- xx -=- zero+ , abs' (negate' xx) -=- abs' xx+ , two -*- xx -=- xx -+- xx+ , xx -*- two -=- xx -+- xx+ , three -*- xx -=- xx -+- (xx -+- xx)+ , xx -*- three -=- xx -+- (xx -+- xx)+ , four -*- xx -=- xx -+- (xx -+- (xx -+- xx))+ , xx -*- four -=- xx -+- (xx -+- (xx -+- xx))+ , abs' (xx -*- xx) -=- xx -*- xx+ , abs' xx -*- abs' yy -=- abs' (xx -*- yy)+ , abs' xx -*- abs' xx -=- abs' (xx -+- xx)+ , abs' (abs' xx -+- abs' yy) -=- abs' xx -+- abs' yy+ , abs' (xx -+- xx) -*- yy -=- abs' xx -*- yy -+- abs' xx -*- yy+ , abs' xx -*- signum' xx -=- xx+ , signum' xx -*- abs' xx -=- xx+--, xx -=- xx+ ]++listRules :: [(Expr,Expr)]+listRules =+ [ id' xxs -=- xxs+ , head' (xx -:- xxs) -=- xx+ , tail' (xx -:- xxs) -=- xxs+ , xxs -++- nil -=- xxs+ , nil -++- xxs -=- xxs+ , unit xx -++- xxs -=- xx -:- xxs+ , (xx -:- xxs) -++- yys -=- xx -:- (xxs -++- yys)+ , (xxs -++- yys) -++- zzs -=- xxs -++- (yys -++- zzs)++ -- insertsort stuff+ , elem' xx (sort' xxs) -=- elem' xx xxs+ , elem' xx (insert' yy xxs) -=- elem' xx (yy -:- xxs)+ , sort' (sort' xxs) -=- sort' xxs+ , insert' xx nil -=- unit xx+ , sort' (xxs -++- yys) -=- sort' (yys -++- xxs)+ , sort' (insert' xx xxs) -=- insert' xx (sort' xxs)+ , sort' (xx -:- xxs) -=- insert' xx (sort' xxs)+ , sort' (xxs -++- sort' yys) -=- sort' (xxs -++- yys)+ , sort' (sort' xxs -++- yys) -=- sort' (xxs -++- yys)+ , insert' xx (insert' yy xxs) -=- insert' yy (insert' xx xxs)+ , insert' xx (xx -:- xxs) -=- xx -:- xx -:- xxs+ , insert' xx (unit yy) -=- insert' yy (unit xx)++ -- length stuff+ , length' (xx -:- xxs) -=- length' (yy -:- xxs)+ , length' (xxs -++- yys) -=- length' (yys -++- xxs)+ , length' (xx -:- yy -:- xxs) -=- length' (zz -:- xx' -:- xxs)+ , length' (xx -:- (xxs -++- yys)) -=- length' (yy -:- (yys -++- xxs))+ , length' (xxs -++- (yys -++- zzs)) -=- length' (xxs -++- (zzs -++- yys))++ ]++boolintRules :: [(Expr,Expr)]+boolintRules =+ [ not' (odd' xx) -=- even' xx+ , not' (even' xx) -=- odd' xx+ , (xx -==- xx) -=- true+ , (xx -/=- xx) -=- false+ , (pp -==- pp) -=- true+ , (pp -/=- pp) -=- false+ ]++funRules :: [(Expr,Expr)]+funRules =+ [ ff (gg xx) -=- (ffE -.- ggE) :$ xx+ , map' idE xxs -=- xxs+ , map' (ffE -.- ggE) xxs -=- map' ffE (map' ggE xxs)+ , ffE -.- idE -=- ffE+ , idE -.- ffE -=- ffE+ , (ffE -.- ggE) -.- hhE -=- ffE -.- (ggE -.- hhE)+ , notE -.- notE -=- idBool+ ]++(-=-) :: Expr -> Expr -> (Expr,Expr)+e1 -=- e2 = (e1, e2)+infix 0 -=-
+ test/model/bench/match-list.out view
@@ -0,0 +1,795 @@+id p = p+p && p = p+p || p = p+p && q = q && p+p || q = q || p+not (not p) = p+p && True = p+True && p = p+p && False = False+False && p = False+p || True = True+True || p = True+p || False = p+False || p = p+p && not p = False+p || not p = True+not p && p = False+not p || p = True+(p && q) && r = p && (q && r)+(p || q) || r = p || (q || r)+not (p && q) = not p || not q+not (p || q) = not p && not q+not False = True+not True = False+not (not p && not q) = p || q+not (not p || not q) = p && q+p && not (p && q) = p && not q+id x = x+abs (abs x) = abs x+x + 0 = x+0 + x = x+x * 1 = x+1 * x = x+x * 0 = 0+0 * x = 0+x + y = y + x+x * y = y * x+(x + y) + z = x + (y + z)+(x * y) * z = x * (y * z)+(x + x) * y = x * (y + y)+x * (y + 1) = x + x * y+(x + 1) * y = x + x * y+x * (y + z) = x * y + x * z+(x + y) * z = x * z + y * z+negate (negate x) = x+x + negate x = 0+negate x + x = 0+abs (negate x) = abs x+2 * x = x + x+x * 2 = x + x+3 * x = x + (x + x)+x * 3 = x + (x + x)+4 * x = x + (x + (x + x))+x * 4 = x + (x + (x + x))+abs (x * x) = x * x+abs x * abs y = abs (x * y)+abs x * abs x = abs (x + x)+abs (abs x + abs y) = abs x + abs y+abs (x + x) * y = abs x * y + abs x * y+abs x * signum x = x+signum x * abs x = x+id xs = xs+head (x:xs) = x+tail (x:xs) = xs+xs ++ [] = xs+[] ++ xs = xs+[x] ++ xs = x:xs+(x:xs) ++ ys = x:(xs ++ ys)+(xs ++ ys) ++ zs = xs ++ (ys ++ zs)+elem x (sort xs) = elem x xs+elem x (insert y xs) = elem x (y:xs)+sort (sort xs) = sort xs+insert x [] = [x]+sort (xs ++ ys) = sort (ys ++ xs)+sort (insert x xs) = insert x (sort xs)+sort (x:xs) = insert x (sort xs)+sort (xs ++ sort ys) = sort (xs ++ ys)+sort (sort xs ++ ys) = sort (xs ++ ys)+insert x (insert y xs) = insert y (insert x xs)+insert x (x:xs) = x:x:xs+insert x [y] = insert y [x]+length (x:xs) = length (y:xs)+length (xs ++ ys) = length (ys ++ xs)+length (x:y:xs) = length (z:x':xs)+length (x:(xs ++ ys)) = length (y:(ys ++ xs))+length (xs ++ (ys ++ zs)) = length (xs ++ (zs ++ ys))+not (odd x) = even x+not (even x) = odd x+x == x = True+x /= x = False+p == p = True+p /= p = False+f (g x) = (f . g) x+map id xs = xs+map (f . g) xs = map f (map g xs)+f . id = f+id . f = f+(f . g) . h = f . (g . h)+not . not = id++(id x :: Int,[(x :: Int,_ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id _ :: Int)],x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(id x :: Int,[(x :: Int,y :: Int)],x :: Int)+(id x :: Int,[(x :: Int,1 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord _ :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(not False :: Bool,[],True :: Bool)+(not True :: Bool,[],False :: Bool)+(not (not p) :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(id x :: Int,[(x :: Int,z :: Int)],x :: Int)+(id x :: Int,[(x :: Int,-1 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id y :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id 1 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (ord _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + id _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,x + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,0 + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id _ + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ * _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,f _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head xs :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head [] :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (_:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord c :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord 'a' :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y * x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)+(not (not p) :: Bool,[(p :: Bool,p :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,False :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,True :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not _ :: Bool)],p :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)+(x == x :: Bool,[(x :: Int,_ :: Int)],True :: Bool)+(p == p :: Bool,[(p :: Bool,_ :: Bool)],True :: Bool)+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])+(xs ++ [] :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])+([] ++ xs :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+(id x :: Int,[(x :: Int,x' :: Int)],x :: Int)+(id x :: Int,[(x :: Int,2 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id z :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (-1) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id y) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id 1) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id x)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id 0)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id (id _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (negate _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (abs _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (_ + _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (head _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (ord _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate (id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs (id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (x + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (0 + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id _ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ * _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (f _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head xs) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head []) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head (_:_)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (ord c) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (ord 'a') :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate y :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate 1 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id (id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (negate _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (abs _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (_ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (head _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (ord _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs y :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs 1 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (id x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (id 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (id (id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (negate _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (abs _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (_ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (head _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (ord _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + y :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + 1 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + id x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + id 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + id (id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + negate _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + abs _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + (_ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + head _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ + ord _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,x + x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,x + 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,x + id _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,0 + x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,0 + 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,0 + id _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id _ + x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id _ + 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id _ + id _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ * x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ * 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,_ * id _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,f x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,f 0 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,f (id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,y + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,1 + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id x + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id 0 + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id _) + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate _ + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs _ + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,(_ + _) + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head _ + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord _ + _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,x * _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,0 * _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id _ * _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,g _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head ys :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head [0] :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (_:xs) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head [_] :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (_:_:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (x:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (0:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (id _:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (tail _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (_ ++ _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord d :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord ' ' :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,z :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,-1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head xs :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,head [] :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,head (_:_) :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord c :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord 'a' :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,x :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x * y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,y :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,y :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(y +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,1 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,1 :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(1 +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id x :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id x +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id 0 +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id (id _) +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(negate _ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(abs _ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,((_ + _) +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,head _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,head _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(head _ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(ord _ +) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x *) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 *) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,g :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,z :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,-1 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id y :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 1 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id x) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id 0) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id (id _)) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (negate _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (abs _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (_ + _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (head _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (ord _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate (id _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs (id _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + id _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ * _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,f _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head xs :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head [] :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head (_:_) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord c :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord 'a' :: Int)],y + x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y * x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],ys :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[0] :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[_] :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],x:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],0:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],id _:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],tail _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ ++ _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,id _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,id _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,y :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,1 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id 0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id (id _) :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,negate _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,abs _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ + _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,head _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,ord _ :: Int)],x :: Int)+(not (not p) :: Bool,[(p :: Bool,q :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not p :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not False :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not True :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not (not _) :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,_ || _ :: Bool)],p :: Bool)+(not (p || q) :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],not p && not q :: Bool)+(not (p && q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p || not q :: Bool)+(not (odd x) :: Bool,[(x :: Int,_ :: Int)],even x :: Bool)+(not (even x) :: Bool,[(x :: Int,_ :: Int)],odd x :: Bool)+(p || q :: Bool,[(q :: Bool,q :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not (not _) :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ || _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)+(p && q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,q :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not (not _) :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ || _ :: Bool)],q || p :: Bool)+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q && p :: Bool)+(tail (x:xs) :: [Int],[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],xs :: [Int])+(xs ++ [] :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])+([] ++ xs :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])+(xs ++ [] :: [Int],[(xs :: [Int],[] :: [Int])],xs :: [Int])+([] ++ xs :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],xs :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+(xs ++ [] :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_:_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x:(xs ++ ys) :: [Int])+((xs ++ ys) ++ zs :: [Int],[(zs :: [Int],_ :: [Int]),(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int])],xs ++ (ys ++ zs) :: [Int])+(sort (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],insert x (sort xs) :: [Int])+(insert x [] :: [Int],[(x :: Int,_ :: Int)],[x] :: [Int])+(insert x (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:x:xs :: [Int])+(id x :: Int,[(x :: Int,y' :: Int)],x :: Int)+(id x :: Int,[(x :: Int,-2 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id x' :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id 2 :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id z) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (-1)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id y)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id 1)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id (id x))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id (id 0))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id (id (id _)))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id (negate _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id (abs _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id (_ + _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id (head _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id (ord _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (negate x)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (negate 0)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (negate (id _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (abs x)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (abs 0)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (abs (id _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (_ + x)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (_ + 0)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (_ + id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (x + _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (0 + _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id _ + _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (_ * _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (f _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (head xs)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (head [])) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (head (_:_))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (ord c)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (ord 'a')) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate y) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate 1) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate (id x)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate (id 0)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate (id (id _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate (negate _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate (abs _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate (_ + _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate (head _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate (ord _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs y) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs 1) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs (id x)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs (id 0)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs (id (id _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs (negate _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs (abs _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs (_ + _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs (head _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs (ord _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + y) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + 1) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + id x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + id 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + id (id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + negate _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + abs _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + (_ + _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + head _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ + ord _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (x + x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (x + 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (x + id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (0 + x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (0 + 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (0 + id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id _ + x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id _ + 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id _ + id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ * x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ * 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (_ * id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (f x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (f 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (f (id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (y + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (1 + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id x + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id 0 + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id (id _) + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (negate _ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (abs _ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id ((_ + _) + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head _ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (ord _ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (x * _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (0 * _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (id _ * _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (g _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head ys) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head [0]) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head (_:xs)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head [_]) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head (_:_:_)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head (x:_)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head (0:_)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head (id _:_)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head (tail _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (head (_ ++ _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (ord d) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,id (ord ' ') :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate z :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (-1) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id y) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id 1) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id (id x)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id (id 0)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id (id (id _))) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id (negate _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id (abs _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id (_ + _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id (head _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id (ord _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (negate x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (negate 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (negate (id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (abs x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (abs 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (abs (id _)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (_ + x) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (_ + 0) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (_ + id _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (x + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (0 + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (id _ + _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (_ * _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (f _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (head xs) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (head []) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (head (_:_)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (ord c) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,negate (ord 'a') :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs z :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (-1) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (id y) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (id 1) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (id (id x)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (id (id 0)) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,abs (id (id (id _))) :: Int)],x :: Int)++True
+ test/model/bench/match-noop.out view
@@ -0,0 +1,1182 @@+id p = p+p && p = p+p || p = p+p && q = q && p+p || q = q || p+not (not p) = p+p && True = p+True && p = p+p && False = False+False && p = False+p || True = True+True || p = True+p || False = p+False || p = p+p && not p = False+p || not p = True+not p && p = False+not p || p = True+(p && q) && r = p && (q && r)+(p || q) || r = p || (q || r)+not (p && q) = not p || not q+not (p || q) = not p && not q+not False = True+not True = False+not (not p && not q) = p || q+not (not p || not q) = p && q+p && not (p && q) = p && not q+id x = x+abs (abs x) = abs x+x + 0 = x+0 + x = x+x * 1 = x+1 * x = x+x * 0 = 0+0 * x = 0+x + y = y + x+x * y = y * x+(x + y) + z = x + (y + z)+(x * y) * z = x * (y * z)+(x + x) * y = x * (y + y)+x * (y + 1) = x + x * y+(x + 1) * y = x + x * y+x * (y + z) = x * y + x * z+(x + y) * z = x * z + y * z+negate (negate x) = x+x + negate x = 0+negate x + x = 0+abs (negate x) = abs x+2 * x = x + x+x * 2 = x + x+3 * x = x + (x + x)+x * 3 = x + (x + x)+4 * x = x + (x + (x + x))+x * 4 = x + (x + (x + x))+abs (x * x) = x * x+abs x * abs y = abs (x * y)+abs x * abs x = abs (x + x)+abs (abs x + abs y) = abs x + abs y+abs (x + x) * y = abs x * y + abs x * y+abs x * signum x = x+signum x * abs x = x+id xs = xs+head (x:xs) = x+tail (x:xs) = xs+xs ++ [] = xs+[] ++ xs = xs+[x] ++ xs = x:xs+(x:xs) ++ ys = x:(xs ++ ys)+(xs ++ ys) ++ zs = xs ++ (ys ++ zs)+elem x (sort xs) = elem x xs+elem x (insert y xs) = elem x (y:xs)+sort (sort xs) = sort xs+insert x [] = [x]+sort (xs ++ ys) = sort (ys ++ xs)+sort (insert x xs) = insert x (sort xs)+sort (x:xs) = insert x (sort xs)+sort (xs ++ sort ys) = sort (xs ++ ys)+sort (sort xs ++ ys) = sort (xs ++ ys)+insert x (insert y xs) = insert y (insert x xs)+insert x (x:xs) = x:x:xs+insert x [y] = insert y [x]+length (x:xs) = length (y:xs)+length (xs ++ ys) = length (ys ++ xs)+length (x:y:xs) = length (z:x':xs)+length (x:(xs ++ ys)) = length (y:(ys ++ xs))+length (xs ++ (ys ++ zs)) = length (xs ++ (zs ++ ys))+not (odd x) = even x+not (even x) = odd x+x == x = True+x /= x = False+p == p = True+p /= p = False+f (g x) = (f . g) x+map id xs = xs+map (f . g) xs = map f (map g xs)+f . id = f+id . f = f+(f . g) . h = f . (g . h)+not . not = id++(_ :: Int,[],_ :: Int)+(x :: Int,[],x :: Int)+(0 :: Int,[],0 :: Int)+(id _ :: Int,[],id _ :: Int)+(_ :: Bool,[],_ :: Bool)+(_ :: Char,[],_ :: Char)+(_ :: [Int],[],_ :: [Int])+(y :: Int,[],y :: Int)+(1 :: Int,[],1 :: Int)+(id x :: Int,[],id x :: Int)+(id 0 :: Int,[],id 0 :: Int)+(id (id _) :: Int,[],id (id _) :: Int)+(negate _ :: Int,[],negate _ :: Int)+(abs _ :: Int,[],abs _ :: Int)+(_ + _ :: Int,[],_ + _ :: Int)+(head _ :: Int,[],head _ :: Int)+(ord _ :: Int,[],ord _ :: Int)+(p :: Bool,[],p :: Bool)+(False :: Bool,[],False :: Bool)+(True :: Bool,[],True :: Bool)+(not _ :: Bool,[],not _ :: Bool)+(c :: Char,[],c :: Char)+('a' :: Char,[],'a' :: Char)+(xs :: [Int],[],xs :: [Int])+([] :: [Int],[],[] :: [Int])+(_:_ :: [Int],[],_:_ :: [Int])+(id :: Int -> Int,[],id :: Int -> Int)+((+) :: Int -> Int -> Int,[],(+) :: Int -> Int -> Int)+(z :: Int,[],z :: Int)+(-1 :: Int,[],-1 :: Int)+(id y :: Int,[],id y :: Int)+(id 1 :: Int,[],id 1 :: Int)+(id (id x) :: Int,[],id (id x) :: Int)+(id (id 0) :: Int,[],id (id 0) :: Int)+(id (id (id _)) :: Int,[],id (id (id _)) :: Int)+(id (negate _) :: Int,[],id (negate _) :: Int)+(id (abs _) :: Int,[],id (abs _) :: Int)+(id (_ + _) :: Int,[],id (_ + _) :: Int)+(id (head _) :: Int,[],id (head _) :: Int)+(id (ord _) :: Int,[],id (ord _) :: Int)+(negate x :: Int,[],negate x :: Int)+(negate 0 :: Int,[],negate 0 :: Int)+(negate (id _) :: Int,[],negate (id _) :: Int)+(abs x :: Int,[],abs x :: Int)+(abs 0 :: Int,[],abs 0 :: Int)+(abs (id _) :: Int,[],abs (id _) :: Int)+(_ + x :: Int,[],_ + x :: Int)+(_ + 0 :: Int,[],_ + 0 :: Int)+(_ + id _ :: Int,[],_ + id _ :: Int)+(x + _ :: Int,[],x + _ :: Int)+(0 + _ :: Int,[],0 + _ :: Int)+(id _ + _ :: Int,[],id _ + _ :: Int)+(_ * _ :: Int,[],_ * _ :: Int)+(f _ :: Int,[],f _ :: Int)+(head xs :: Int,[],head xs :: Int)+(head [] :: Int,[],head [] :: Int)+(head (_:_) :: Int,[],head (_:_) :: Int)+(ord c :: Int,[],ord c :: Int)+(ord 'a' :: Int,[],ord 'a' :: Int)+(q :: Bool,[],q :: Bool)+(not p :: Bool,[],not p :: Bool)+(not False :: Bool,[],not False :: Bool)+(not True :: Bool,[],not True :: Bool)+(not (not _) :: Bool,[],not (not _) :: Bool)+(_ || _ :: Bool,[],_ || _ :: Bool)+(d :: Char,[],d :: Char)+(' ' :: Char,[],' ' :: Char)+(ys :: [Int],[],ys :: [Int])+([0] :: [Int],[],[0] :: [Int])+(_:xs :: [Int],[],_:xs :: [Int])+([_] :: [Int],[],[_] :: [Int])+(_:_:_ :: [Int],[],_:_:_ :: [Int])+(x:_ :: [Int],[],x:_ :: [Int])+(0:_ :: [Int],[],0:_ :: [Int])+(id _:_ :: [Int],[],id _:_ :: [Int])+(tail _ :: [Int],[],tail _ :: [Int])+(_ ++ _ :: [Int],[],_ ++ _ :: [Int])+(negate :: Int -> Int,[],negate :: Int -> Int)+(abs :: Int -> Int,[],abs :: Int -> Int)+((_ +) :: Int -> Int,[],(_ +) :: Int -> Int)+((*) :: Int -> Int -> Int,[],(*) :: Int -> Int -> Int)+(not :: Bool -> Bool,[],not :: Bool -> Bool)+((||) :: Bool -> Bool -> Bool,[],(||) :: Bool -> Bool -> Bool)+(x' :: Int,[],x' :: Int)+(2 :: Int,[],2 :: Int)+(id z :: Int,[],id z :: Int)+(id (-1) :: Int,[],id (-1) :: Int)+(id (id y) :: Int,[],id (id y) :: Int)+(id (id 1) :: Int,[],id (id 1) :: Int)+(id (id (id x)) :: Int,[],id (id (id x)) :: Int)+(id (id (id 0)) :: Int,[],id (id (id 0)) :: Int)+(id (id (id (id _))) :: Int,[],id (id (id (id _))) :: Int)+(id (id (negate _)) :: Int,[],id (id (negate _)) :: Int)+(id (id (abs _)) :: Int,[],id (id (abs _)) :: Int)+(id (id (_ + _)) :: Int,[],id (id (_ + _)) :: Int)+(id (id (head _)) :: Int,[],id (id (head _)) :: Int)+(id (id (ord _)) :: Int,[],id (id (ord _)) :: Int)+(id (negate x) :: Int,[],id (negate x) :: Int)+(id (negate 0) :: Int,[],id (negate 0) :: Int)+(id (negate (id _)) :: Int,[],id (negate (id _)) :: Int)+(id (abs x) :: Int,[],id (abs x) :: Int)+(id (abs 0) :: Int,[],id (abs 0) :: Int)+(id (abs (id _)) :: Int,[],id (abs (id _)) :: Int)+(id (_ + x) :: Int,[],id (_ + x) :: Int)+(id (_ + 0) :: Int,[],id (_ + 0) :: Int)+(id (_ + id _) :: Int,[],id (_ + id _) :: Int)+(id (x + _) :: Int,[],id (x + _) :: Int)+(id (0 + _) :: Int,[],id (0 + _) :: Int)+(id (id _ + _) :: Int,[],id (id _ + _) :: Int)+(id (_ * _) :: Int,[],id (_ * _) :: Int)+(id (f _) :: Int,[],id (f _) :: Int)+(id (head xs) :: Int,[],id (head xs) :: Int)+(id (head []) :: Int,[],id (head []) :: Int)+(id (head (_:_)) :: Int,[],id (head (_:_)) :: Int)+(id (ord c) :: Int,[],id (ord c) :: Int)+(id (ord 'a') :: Int,[],id (ord 'a') :: Int)+(negate y :: Int,[],negate y :: Int)+(negate 1 :: Int,[],negate 1 :: Int)+(negate (id x) :: Int,[],negate (id x) :: Int)+(negate (id 0) :: Int,[],negate (id 0) :: Int)+(negate (id (id _)) :: Int,[],negate (id (id _)) :: Int)+(negate (negate _) :: Int,[],negate (negate _) :: Int)+(negate (abs _) :: Int,[],negate (abs _) :: Int)+(negate (_ + _) :: Int,[],negate (_ + _) :: Int)+(negate (head _) :: Int,[],negate (head _) :: Int)+(negate (ord _) :: Int,[],negate (ord _) :: Int)+(abs y :: Int,[],abs y :: Int)+(abs 1 :: Int,[],abs 1 :: Int)+(abs (id x) :: Int,[],abs (id x) :: Int)+(abs (id 0) :: Int,[],abs (id 0) :: Int)+(abs (id (id _)) :: Int,[],abs (id (id _)) :: Int)+(abs (negate _) :: Int,[],abs (negate _) :: Int)+(abs (abs _) :: Int,[],abs (abs _) :: Int)+(abs (_ + _) :: Int,[],abs (_ + _) :: Int)+(abs (head _) :: Int,[],abs (head _) :: Int)+(abs (ord _) :: Int,[],abs (ord _) :: Int)+(_ + y :: Int,[],_ + y :: Int)+(_ + 1 :: Int,[],_ + 1 :: Int)+(_ + id x :: Int,[],_ + id x :: Int)+(_ + id 0 :: Int,[],_ + id 0 :: Int)+(_ + id (id _) :: Int,[],_ + id (id _) :: Int)+(_ + negate _ :: Int,[],_ + negate _ :: Int)+(_ + abs _ :: Int,[],_ + abs _ :: Int)+(_ + (_ + _) :: Int,[],_ + (_ + _) :: Int)+(_ + head _ :: Int,[],_ + head _ :: Int)+(_ + ord _ :: Int,[],_ + ord _ :: Int)+(x + x :: Int,[],x + x :: Int)+(x + 0 :: Int,[],x + 0 :: Int)+(x + id _ :: Int,[],x + id _ :: Int)+(0 + x :: Int,[],0 + x :: Int)+(0 + 0 :: Int,[],0 + 0 :: Int)+(0 + id _ :: Int,[],0 + id _ :: Int)+(id _ + x :: Int,[],id _ + x :: Int)+(id _ + 0 :: Int,[],id _ + 0 :: Int)+(id _ + id _ :: Int,[],id _ + id _ :: Int)+(_ * x :: Int,[],_ * x :: Int)+(_ * 0 :: Int,[],_ * 0 :: Int)+(_ * id _ :: Int,[],_ * id _ :: Int)+(f x :: Int,[],f x :: Int)+(f 0 :: Int,[],f 0 :: Int)+(f (id _) :: Int,[],f (id _) :: Int)+(y + _ :: Int,[],y + _ :: Int)+(1 + _ :: Int,[],1 + _ :: Int)+(id x + _ :: Int,[],id x + _ :: Int)+(id 0 + _ :: Int,[],id 0 + _ :: Int)+(id (id _) + _ :: Int,[],id (id _) + _ :: Int)+(negate _ + _ :: Int,[],negate _ + _ :: Int)+(abs _ + _ :: Int,[],abs _ + _ :: Int)+((_ + _) + _ :: Int,[],(_ + _) + _ :: Int)+(head _ + _ :: Int,[],head _ + _ :: Int)+(ord _ + _ :: Int,[],ord _ + _ :: Int)+(x * _ :: Int,[],x * _ :: Int)+(0 * _ :: Int,[],0 * _ :: Int)+(id _ * _ :: Int,[],id _ * _ :: Int)+(g _ :: Int,[],g _ :: Int)+(head ys :: Int,[],head ys :: Int)+(head [0] :: Int,[],head [0] :: Int)+(head (_:xs) :: Int,[],head (_:xs) :: Int)+(head [_] :: Int,[],head [_] :: Int)+(head (_:_:_) :: Int,[],head (_:_:_) :: Int)+(head (x:_) :: Int,[],head (x:_) :: Int)+(head (0:_) :: Int,[],head (0:_) :: Int)+(head (id _:_) :: Int,[],head (id _:_) :: Int)+(head (tail _) :: Int,[],head (tail _) :: Int)+(head (_ ++ _) :: Int,[],head (_ ++ _) :: Int)+(ord d :: Int,[],ord d :: Int)+(ord ' ' :: Int,[],ord ' ' :: Int)+(r :: Bool,[],r :: Bool)+(not q :: Bool,[],not q :: Bool)+(not (not p) :: Bool,[],not (not p) :: Bool)+(not (not False) :: Bool,[],not (not False) :: Bool)+(not (not True) :: Bool,[],not (not True) :: Bool)+(not (not (not _)) :: Bool,[],not (not (not _)) :: Bool)+(not (_ || _) :: Bool,[],not (_ || _) :: Bool)+(_ || p :: Bool,[],_ || p :: Bool)+(_ || False :: Bool,[],_ || False :: Bool)+(_ || True :: Bool,[],_ || True :: Bool)+(_ || not _ :: Bool,[],_ || not _ :: Bool)+(p || _ :: Bool,[],p || _ :: Bool)+(False || _ :: Bool,[],False || _ :: Bool)+(True || _ :: Bool,[],True || _ :: Bool)+(not _ || _ :: Bool,[],not _ || _ :: Bool)+(_ && _ :: Bool,[],_ && _ :: Bool)+(_ == _ :: Bool,[],_ == _ :: Bool)+(_ == _ :: Bool,[],_ == _ :: Bool)+(odd _ :: Bool,[],odd _ :: Bool)+(even _ :: Bool,[],even _ :: Bool)+(elem _ _ :: Bool,[],elem _ _ :: Bool)+(e :: Char,[],e :: Char)+('b' :: Char,[],'b' :: Char)+(zs :: [Int],[],zs :: [Int])+([0,0] :: [Int],[],[0,0] :: [Int])+([1] :: [Int],[],[1] :: [Int])+(_:ys :: [Int],[],_:ys :: [Int])+([_,0] :: [Int],[],[_,0] :: [Int])+(_:_:xs :: [Int],[],_:_:xs :: [Int])+([_,_] :: [Int],[],[_,_] :: [Int])+(_:_:_:_ :: [Int],[],_:_:_:_ :: [Int])+(_:x:_ :: [Int],[],_:x:_ :: [Int])+(_:0:_ :: [Int],[],_:0:_ :: [Int])+(_:id _:_ :: [Int],[],_:id _:_ :: [Int])+(_:tail _ :: [Int],[],_:tail _ :: [Int])+(_:(_ ++ _) :: [Int],[],_:(_ ++ _) :: [Int])+(x:xs :: [Int],[],x:xs :: [Int])+([x] :: [Int],[],[x] :: [Int])+(x:_:_ :: [Int],[],x:_:_ :: [Int])+(0:xs :: [Int],[],0:xs :: [Int])+([0] :: [Int],[],[0] :: [Int])+(0:_:_ :: [Int],[],0:_:_ :: [Int])+(id _:xs :: [Int],[],id _:xs :: [Int])+([id _] :: [Int],[],[id _] :: [Int])+(id _:_:_ :: [Int],[],id _:_:_ :: [Int])+(y:_ :: [Int],[],y:_ :: [Int])+(1:_ :: [Int],[],1:_ :: [Int])+(id x:_ :: [Int],[],id x:_ :: [Int])+(id 0:_ :: [Int],[],id 0:_ :: [Int])+(id (id _):_ :: [Int],[],id (id _):_ :: [Int])+(negate _:_ :: [Int],[],negate _:_ :: [Int])+(abs _:_ :: [Int],[],abs _:_ :: [Int])+(_ + _:_ :: [Int],[],_ + _:_ :: [Int])+(head _:_ :: [Int],[],head _:_ :: [Int])+(ord _:_ :: [Int],[],ord _:_ :: [Int])+(tail xs :: [Int],[],tail xs :: [Int])+(tail [] :: [Int],[],tail [] :: [Int])+(tail (_:_) :: [Int],[],tail (_:_) :: [Int])+(_ ++ xs :: [Int],[],_ ++ xs :: [Int])+(_ ++ [] :: [Int],[],_ ++ [] :: [Int])+(_ ++ (_:_) :: [Int],[],_ ++ (_:_) :: [Int])+(xs ++ _ :: [Int],[],xs ++ _ :: [Int])+([] ++ _ :: [Int],[],[] ++ _ :: [Int])+((_:_) ++ _ :: [Int],[],(_:_) ++ _ :: [Int])+(sort _ :: [Int],[],sort _ :: [Int])+(insert _ _ :: [Int],[],insert _ _ :: [Int])+((x +) :: Int -> Int,[],(x +) :: Int -> Int)+((0 +) :: Int -> Int,[],(0 +) :: Int -> Int)+((id _ +) :: Int -> Int,[],(id _ +) :: Int -> Int)+((_ *) :: Int -> Int,[],(_ *) :: Int -> Int)+(f :: Int -> Int,[],f :: Int -> Int)+((_ ||) :: Bool -> Bool,[],(_ ||) :: Bool -> Bool)+((&&) :: Bool -> Bool -> Bool,[],(&&) :: Bool -> Bool -> Bool)+(y' :: Int,[],y' :: Int)+(-2 :: Int,[],-2 :: Int)+(id x' :: Int,[],id x' :: Int)+(id 2 :: Int,[],id 2 :: Int)+(id (id z) :: Int,[],id (id z) :: Int)+(id (id (-1)) :: Int,[],id (id (-1)) :: Int)+(id (id (id y)) :: Int,[],id (id (id y)) :: Int)+(id (id (id 1)) :: Int,[],id (id (id 1)) :: Int)+(id (id (id (id x))) :: Int,[],id (id (id (id x))) :: Int)+(id (id (id (id 0))) :: Int,[],id (id (id (id 0))) :: Int)+(id (id (id (id (id _)))) :: Int,[],id (id (id (id (id _)))) :: Int)+(id (id (id (negate _))) :: Int,[],id (id (id (negate _))) :: Int)+(id (id (id (abs _))) :: Int,[],id (id (id (abs _))) :: Int)+(id (id (id (_ + _))) :: Int,[],id (id (id (_ + _))) :: Int)+(id (id (id (head _))) :: Int,[],id (id (id (head _))) :: Int)+(id (id (id (ord _))) :: Int,[],id (id (id (ord _))) :: Int)+(id (id (negate x)) :: Int,[],id (id (negate x)) :: Int)+(id (id (negate 0)) :: Int,[],id (id (negate 0)) :: Int)+(id (id (negate (id _))) :: Int,[],id (id (negate (id _))) :: Int)+(id (id (abs x)) :: Int,[],id (id (abs x)) :: Int)+(id (id (abs 0)) :: Int,[],id (id (abs 0)) :: Int)+(id (id (abs (id _))) :: Int,[],id (id (abs (id _))) :: Int)+(id (id (_ + x)) :: Int,[],id (id (_ + x)) :: Int)+(id (id (_ + 0)) :: Int,[],id (id (_ + 0)) :: Int)+(id (id (_ + id _)) :: Int,[],id (id (_ + id _)) :: Int)+(id (id (x + _)) :: Int,[],id (id (x + _)) :: Int)+(id (id (0 + _)) :: Int,[],id (id (0 + _)) :: Int)+(id (id (id _ + _)) :: Int,[],id (id (id _ + _)) :: Int)+(id (id (_ * _)) :: Int,[],id (id (_ * _)) :: Int)+(id (id (f _)) :: Int,[],id (id (f _)) :: Int)+(id (id (head xs)) :: Int,[],id (id (head xs)) :: Int)+(id (id (head [])) :: Int,[],id (id (head [])) :: Int)+(id (id (head (_:_))) :: Int,[],id (id (head (_:_))) :: Int)+(id (id (ord c)) :: Int,[],id (id (ord c)) :: Int)+(id (id (ord 'a')) :: Int,[],id (id (ord 'a')) :: Int)+(id (negate y) :: Int,[],id (negate y) :: Int)+(id (negate 1) :: Int,[],id (negate 1) :: Int)+(id (negate (id x)) :: Int,[],id (negate (id x)) :: Int)+(id (negate (id 0)) :: Int,[],id (negate (id 0)) :: Int)+(id (negate (id (id _))) :: Int,[],id (negate (id (id _))) :: Int)+(id (negate (negate _)) :: Int,[],id (negate (negate _)) :: Int)+(id (negate (abs _)) :: Int,[],id (negate (abs _)) :: Int)+(id (negate (_ + _)) :: Int,[],id (negate (_ + _)) :: Int)+(id (negate (head _)) :: Int,[],id (negate (head _)) :: Int)+(id (negate (ord _)) :: Int,[],id (negate (ord _)) :: Int)+(id (abs y) :: Int,[],id (abs y) :: Int)+(id (abs 1) :: Int,[],id (abs 1) :: Int)+(id (abs (id x)) :: Int,[],id (abs (id x)) :: Int)+(id (abs (id 0)) :: Int,[],id (abs (id 0)) :: Int)+(id (abs (id (id _))) :: Int,[],id (abs (id (id _))) :: Int)+(id (abs (negate _)) :: Int,[],id (abs (negate _)) :: Int)+(id (abs (abs _)) :: Int,[],id (abs (abs _)) :: Int)+(id (abs (_ + _)) :: Int,[],id (abs (_ + _)) :: Int)+(id (abs (head _)) :: Int,[],id (abs (head _)) :: Int)+(id (abs (ord _)) :: Int,[],id (abs (ord _)) :: Int)+(id (_ + y) :: Int,[],id (_ + y) :: Int)+(id (_ + 1) :: Int,[],id (_ + 1) :: Int)+(id (_ + id x) :: Int,[],id (_ + id x) :: Int)+(id (_ + id 0) :: Int,[],id (_ + id 0) :: Int)+(id (_ + id (id _)) :: Int,[],id (_ + id (id _)) :: Int)+(id (_ + negate _) :: Int,[],id (_ + negate _) :: Int)+(id (_ + abs _) :: Int,[],id (_ + abs _) :: Int)+(id (_ + (_ + _)) :: Int,[],id (_ + (_ + _)) :: Int)+(id (_ + head _) :: Int,[],id (_ + head _) :: Int)+(id (_ + ord _) :: Int,[],id (_ + ord _) :: Int)+(id (x + x) :: Int,[],id (x + x) :: Int)+(id (x + 0) :: Int,[],id (x + 0) :: Int)+(id (x + id _) :: Int,[],id (x + id _) :: Int)+(id (0 + x) :: Int,[],id (0 + x) :: Int)+(id (0 + 0) :: Int,[],id (0 + 0) :: Int)+(id (0 + id _) :: Int,[],id (0 + id _) :: Int)+(id (id _ + x) :: Int,[],id (id _ + x) :: Int)+(id (id _ + 0) :: Int,[],id (id _ + 0) :: Int)+(id (id _ + id _) :: Int,[],id (id _ + id _) :: Int)+(id (_ * x) :: Int,[],id (_ * x) :: Int)+(id (_ * 0) :: Int,[],id (_ * 0) :: Int)+(id (_ * id _) :: Int,[],id (_ * id _) :: Int)+(id (f x) :: Int,[],id (f x) :: Int)+(id (f 0) :: Int,[],id (f 0) :: Int)+(id (f (id _)) :: Int,[],id (f (id _)) :: Int)+(id (y + _) :: Int,[],id (y + _) :: Int)+(id (1 + _) :: Int,[],id (1 + _) :: Int)+(id (id x + _) :: Int,[],id (id x + _) :: Int)+(id (id 0 + _) :: Int,[],id (id 0 + _) :: Int)+(id (id (id _) + _) :: Int,[],id (id (id _) + _) :: Int)+(id (negate _ + _) :: Int,[],id (negate _ + _) :: Int)+(id (abs _ + _) :: Int,[],id (abs _ + _) :: Int)+(id ((_ + _) + _) :: Int,[],id ((_ + _) + _) :: Int)+(id (head _ + _) :: Int,[],id (head _ + _) :: Int)+(id (ord _ + _) :: Int,[],id (ord _ + _) :: Int)+(id (x * _) :: Int,[],id (x * _) :: Int)+(id (0 * _) :: Int,[],id (0 * _) :: Int)+(id (id _ * _) :: Int,[],id (id _ * _) :: Int)+(id (g _) :: Int,[],id (g _) :: Int)+(id (head ys) :: Int,[],id (head ys) :: Int)+(id (head [0]) :: Int,[],id (head [0]) :: Int)+(id (head (_:xs)) :: Int,[],id (head (_:xs)) :: Int)+(id (head [_]) :: Int,[],id (head [_]) :: Int)+(id (head (_:_:_)) :: Int,[],id (head (_:_:_)) :: Int)+(id (head (x:_)) :: Int,[],id (head (x:_)) :: Int)+(id (head (0:_)) :: Int,[],id (head (0:_)) :: Int)+(id (head (id _:_)) :: Int,[],id (head (id _:_)) :: Int)+(id (head (tail _)) :: Int,[],id (head (tail _)) :: Int)+(id (head (_ ++ _)) :: Int,[],id (head (_ ++ _)) :: Int)+(id (ord d) :: Int,[],id (ord d) :: Int)+(id (ord ' ') :: Int,[],id (ord ' ') :: Int)+(negate z :: Int,[],negate z :: Int)+(negate (-1) :: Int,[],negate (-1) :: Int)+(negate (id y) :: Int,[],negate (id y) :: Int)+(negate (id 1) :: Int,[],negate (id 1) :: Int)+(negate (id (id x)) :: Int,[],negate (id (id x)) :: Int)+(negate (id (id 0)) :: Int,[],negate (id (id 0)) :: Int)+(negate (id (id (id _))) :: Int,[],negate (id (id (id _))) :: Int)+(negate (id (negate _)) :: Int,[],negate (id (negate _)) :: Int)+(negate (id (abs _)) :: Int,[],negate (id (abs _)) :: Int)+(negate (id (_ + _)) :: Int,[],negate (id (_ + _)) :: Int)+(negate (id (head _)) :: Int,[],negate (id (head _)) :: Int)+(negate (id (ord _)) :: Int,[],negate (id (ord _)) :: Int)+(negate (negate x) :: Int,[],negate (negate x) :: Int)+(negate (negate 0) :: Int,[],negate (negate 0) :: Int)+(negate (negate (id _)) :: Int,[],negate (negate (id _)) :: Int)+(negate (abs x) :: Int,[],negate (abs x) :: Int)+(negate (abs 0) :: Int,[],negate (abs 0) :: Int)+(negate (abs (id _)) :: Int,[],negate (abs (id _)) :: Int)+(negate (_ + x) :: Int,[],negate (_ + x) :: Int)+(negate (_ + 0) :: Int,[],negate (_ + 0) :: Int)+(negate (_ + id _) :: Int,[],negate (_ + id _) :: Int)+(negate (x + _) :: Int,[],negate (x + _) :: Int)+(negate (0 + _) :: Int,[],negate (0 + _) :: Int)+(negate (id _ + _) :: Int,[],negate (id _ + _) :: Int)+(negate (_ * _) :: Int,[],negate (_ * _) :: Int)+(negate (f _) :: Int,[],negate (f _) :: Int)+(negate (head xs) :: Int,[],negate (head xs) :: Int)+(negate (head []) :: Int,[],negate (head []) :: Int)+(negate (head (_:_)) :: Int,[],negate (head (_:_)) :: Int)+(negate (ord c) :: Int,[],negate (ord c) :: Int)+(negate (ord 'a') :: Int,[],negate (ord 'a') :: Int)+(abs z :: Int,[],abs z :: Int)+(abs (-1) :: Int,[],abs (-1) :: Int)+(abs (id y) :: Int,[],abs (id y) :: Int)+(abs (id 1) :: Int,[],abs (id 1) :: Int)+(abs (id (id x)) :: Int,[],abs (id (id x)) :: Int)+(abs (id (id 0)) :: Int,[],abs (id (id 0)) :: Int)+(abs (id (id (id _))) :: Int,[],abs (id (id (id _))) :: Int)+(abs (id (negate _)) :: Int,[],abs (id (negate _)) :: Int)+(abs (id (abs _)) :: Int,[],abs (id (abs _)) :: Int)+(abs (id (_ + _)) :: Int,[],abs (id (_ + _)) :: Int)+(abs (id (head _)) :: Int,[],abs (id (head _)) :: Int)+(abs (id (ord _)) :: Int,[],abs (id (ord _)) :: Int)+(abs (negate x) :: Int,[],abs (negate x) :: Int)+(abs (negate 0) :: Int,[],abs (negate 0) :: Int)+(abs (negate (id _)) :: Int,[],abs (negate (id _)) :: Int)+(abs (abs x) :: Int,[],abs (abs x) :: Int)+(abs (abs 0) :: Int,[],abs (abs 0) :: Int)+(abs (abs (id _)) :: Int,[],abs (abs (id _)) :: Int)+(abs (_ + x) :: Int,[],abs (_ + x) :: Int)+(abs (_ + 0) :: Int,[],abs (_ + 0) :: Int)+(abs (_ + id _) :: Int,[],abs (_ + id _) :: Int)+(abs (x + _) :: Int,[],abs (x + _) :: Int)+(abs (0 + _) :: Int,[],abs (0 + _) :: Int)+(abs (id _ + _) :: Int,[],abs (id _ + _) :: Int)+(abs (_ * _) :: Int,[],abs (_ * _) :: Int)+(abs (f _) :: Int,[],abs (f _) :: Int)+(abs (head xs) :: Int,[],abs (head xs) :: Int)+(abs (head []) :: Int,[],abs (head []) :: Int)+(abs (head (_:_)) :: Int,[],abs (head (_:_)) :: Int)+(abs (ord c) :: Int,[],abs (ord c) :: Int)+(abs (ord 'a') :: Int,[],abs (ord 'a') :: Int)+(_ + z :: Int,[],_ + z :: Int)+(_ + (-1) :: Int,[],_ + (-1) :: Int)+(_ + id y :: Int,[],_ + id y :: Int)+(_ + id 1 :: Int,[],_ + id 1 :: Int)+(_ + id (id x) :: Int,[],_ + id (id x) :: Int)+(_ + id (id 0) :: Int,[],_ + id (id 0) :: Int)+(_ + id (id (id _)) :: Int,[],_ + id (id (id _)) :: Int)+(_ + id (negate _) :: Int,[],_ + id (negate _) :: Int)+(_ + id (abs _) :: Int,[],_ + id (abs _) :: Int)+(_ + id (_ + _) :: Int,[],_ + id (_ + _) :: Int)+(_ + id (head _) :: Int,[],_ + id (head _) :: Int)+(_ + id (ord _) :: Int,[],_ + id (ord _) :: Int)+(_ + negate x :: Int,[],_ + negate x :: Int)+(_ + negate 0 :: Int,[],_ + negate 0 :: Int)+(_ + negate (id _) :: Int,[],_ + negate (id _) :: Int)+(_ + abs x :: Int,[],_ + abs x :: Int)+(_ + abs 0 :: Int,[],_ + abs 0 :: Int)+(_ + abs (id _) :: Int,[],_ + abs (id _) :: Int)+(_ + (_ + x) :: Int,[],_ + (_ + x) :: Int)+(_ + (_ + 0) :: Int,[],_ + (_ + 0) :: Int)+(_ + (_ + id _) :: Int,[],_ + (_ + id _) :: Int)+(_ + (x + _) :: Int,[],_ + (x + _) :: Int)+(_ + (0 + _) :: Int,[],_ + (0 + _) :: Int)+(_ + (id _ + _) :: Int,[],_ + (id _ + _) :: Int)+(_ + _ * _ :: Int,[],_ + _ * _ :: Int)+(_ + f _ :: Int,[],_ + f _ :: Int)+(_ + head xs :: Int,[],_ + head xs :: Int)+(_ + head [] :: Int,[],_ + head [] :: Int)+(_ + head (_:_) :: Int,[],_ + head (_:_) :: Int)+(_ + ord c :: Int,[],_ + ord c :: Int)+(_ + ord 'a' :: Int,[],_ + ord 'a' :: Int)+(x + y :: Int,[],x + y :: Int)+(x + 1 :: Int,[],x + 1 :: Int)+(x + id x :: Int,[],x + id x :: Int)+(x + id 0 :: Int,[],x + id 0 :: Int)+(x + id (id _) :: Int,[],x + id (id _) :: Int)+(x + negate _ :: Int,[],x + negate _ :: Int)+(x + abs _ :: Int,[],x + abs _ :: Int)+(x + (_ + _) :: Int,[],x + (_ + _) :: Int)+(x + head _ :: Int,[],x + head _ :: Int)+(x + ord _ :: Int,[],x + ord _ :: Int)+(0 + y :: Int,[],0 + y :: Int)+(0 + 1 :: Int,[],0 + 1 :: Int)+(0 + id x :: Int,[],0 + id x :: Int)+(0 + id 0 :: Int,[],0 + id 0 :: Int)+(0 + id (id _) :: Int,[],0 + id (id _) :: Int)+(0 + negate _ :: Int,[],0 + negate _ :: Int)+(0 + abs _ :: Int,[],0 + abs _ :: Int)+(0 + (_ + _) :: Int,[],0 + (_ + _) :: Int)+(0 + head _ :: Int,[],0 + head _ :: Int)+(0 + ord _ :: Int,[],0 + ord _ :: Int)+(id _ + y :: Int,[],id _ + y :: Int)+(id _ + 1 :: Int,[],id _ + 1 :: Int)+(id _ + id x :: Int,[],id _ + id x :: Int)+(id _ + id 0 :: Int,[],id _ + id 0 :: Int)+(id _ + id (id _) :: Int,[],id _ + id (id _) :: Int)+(id _ + negate _ :: Int,[],id _ + negate _ :: Int)+(id _ + abs _ :: Int,[],id _ + abs _ :: Int)+(id _ + (_ + _) :: Int,[],id _ + (_ + _) :: Int)+(id _ + head _ :: Int,[],id _ + head _ :: Int)+(id _ + ord _ :: Int,[],id _ + ord _ :: Int)+(_ * y :: Int,[],_ * y :: Int)+(_ * 1 :: Int,[],_ * 1 :: Int)+(_ * id x :: Int,[],_ * id x :: Int)+(_ * id 0 :: Int,[],_ * id 0 :: Int)+(_ * id (id _) :: Int,[],_ * id (id _) :: Int)+(_ * negate _ :: Int,[],_ * negate _ :: Int)+(_ * abs _ :: Int,[],_ * abs _ :: Int)+(_ * (_ + _) :: Int,[],_ * (_ + _) :: Int)+(_ * head _ :: Int,[],_ * head _ :: Int)+(_ * ord _ :: Int,[],_ * ord _ :: Int)+(f y :: Int,[],f y :: Int)+(f 1 :: Int,[],f 1 :: Int)+(f (id x) :: Int,[],f (id x) :: Int)+(f (id 0) :: Int,[],f (id 0) :: Int)+(f (id (id _)) :: Int,[],f (id (id _)) :: Int)+(f (negate _) :: Int,[],f (negate _) :: Int)+(f (abs _) :: Int,[],f (abs _) :: Int)+(f (_ + _) :: Int,[],f (_ + _) :: Int)+(f (head _) :: Int,[],f (head _) :: Int)+(f (ord _) :: Int,[],f (ord _) :: Int)+(y + x :: Int,[],y + x :: Int)+(y + 0 :: Int,[],y + 0 :: Int)+(y + id _ :: Int,[],y + id _ :: Int)+(1 + x :: Int,[],1 + x :: Int)+(1 + 0 :: Int,[],1 + 0 :: Int)+(1 + id _ :: Int,[],1 + id _ :: Int)+(id x + x :: Int,[],id x + x :: Int)+(id x + 0 :: Int,[],id x + 0 :: Int)+(id x + id _ :: Int,[],id x + id _ :: Int)+(id 0 + x :: Int,[],id 0 + x :: Int)+(id 0 + 0 :: Int,[],id 0 + 0 :: Int)+(id 0 + id _ :: Int,[],id 0 + id _ :: Int)+(id (id _) + x :: Int,[],id (id _) + x :: Int)+(id (id _) + 0 :: Int,[],id (id _) + 0 :: Int)+(id (id _) + id _ :: Int,[],id (id _) + id _ :: Int)+(negate _ + x :: Int,[],negate _ + x :: Int)+(negate _ + 0 :: Int,[],negate _ + 0 :: Int)+(negate _ + id _ :: Int,[],negate _ + id _ :: Int)+(abs _ + x :: Int,[],abs _ + x :: Int)+(abs _ + 0 :: Int,[],abs _ + 0 :: Int)+(abs _ + id _ :: Int,[],abs _ + id _ :: Int)+((_ + _) + x :: Int,[],(_ + _) + x :: Int)+((_ + _) + 0 :: Int,[],(_ + _) + 0 :: Int)+((_ + _) + id _ :: Int,[],(_ + _) + id _ :: Int)+(head _ + x :: Int,[],head _ + x :: Int)+(head _ + 0 :: Int,[],head _ + 0 :: Int)+(head _ + id _ :: Int,[],head _ + id _ :: Int)+(ord _ + x :: Int,[],ord _ + x :: Int)+(ord _ + 0 :: Int,[],ord _ + 0 :: Int)+(ord _ + id _ :: Int,[],ord _ + id _ :: Int)+(x * x :: Int,[],x * x :: Int)+(x * 0 :: Int,[],x * 0 :: Int)+(x * id _ :: Int,[],x * id _ :: Int)+(0 * x :: Int,[],0 * x :: Int)+(0 * 0 :: Int,[],0 * 0 :: Int)+(0 * id _ :: Int,[],0 * id _ :: Int)+(id _ * x :: Int,[],id _ * x :: Int)+(id _ * 0 :: Int,[],id _ * 0 :: Int)+(id _ * id _ :: Int,[],id _ * id _ :: Int)+(g x :: Int,[],g x :: Int)+(g 0 :: Int,[],g 0 :: Int)+(g (id _) :: Int,[],g (id _) :: Int)+(z + _ :: Int,[],z + _ :: Int)+((-1) + _ :: Int,[],(-1) + _ :: Int)+(id y + _ :: Int,[],id y + _ :: Int)+(id 1 + _ :: Int,[],id 1 + _ :: Int)+(id (id x) + _ :: Int,[],id (id x) + _ :: Int)+(id (id 0) + _ :: Int,[],id (id 0) + _ :: Int)+(id (id (id _)) + _ :: Int,[],id (id (id _)) + _ :: Int)+(id (negate _) + _ :: Int,[],id (negate _) + _ :: Int)+(id (abs _) + _ :: Int,[],id (abs _) + _ :: Int)+(id (_ + _) + _ :: Int,[],id (_ + _) + _ :: Int)+(id (head _) + _ :: Int,[],id (head _) + _ :: Int)+(id (ord _) + _ :: Int,[],id (ord _) + _ :: Int)+(negate x + _ :: Int,[],negate x + _ :: Int)+(negate 0 + _ :: Int,[],negate 0 + _ :: Int)+(negate (id _) + _ :: Int,[],negate (id _) + _ :: Int)+(abs x + _ :: Int,[],abs x + _ :: Int)+(abs 0 + _ :: Int,[],abs 0 + _ :: Int)+(abs (id _) + _ :: Int,[],abs (id _) + _ :: Int)+((_ + x) + _ :: Int,[],(_ + x) + _ :: Int)+((_ + 0) + _ :: Int,[],(_ + 0) + _ :: Int)+((_ + id _) + _ :: Int,[],(_ + id _) + _ :: Int)+((x + _) + _ :: Int,[],(x + _) + _ :: Int)+((0 + _) + _ :: Int,[],(0 + _) + _ :: Int)+((id _ + _) + _ :: Int,[],(id _ + _) + _ :: Int)+(_ * _ + _ :: Int,[],_ * _ + _ :: Int)+(f _ + _ :: Int,[],f _ + _ :: Int)+(head xs + _ :: Int,[],head xs + _ :: Int)+(head [] + _ :: Int,[],head [] + _ :: Int)+(head (_:_) + _ :: Int,[],head (_:_) + _ :: Int)+(ord c + _ :: Int,[],ord c + _ :: Int)+(ord 'a' + _ :: Int,[],ord 'a' + _ :: Int)+(y * _ :: Int,[],y * _ :: Int)+(1 * _ :: Int,[],1 * _ :: Int)+(id x * _ :: Int,[],id x * _ :: Int)+(id 0 * _ :: Int,[],id 0 * _ :: Int)+(id (id _) * _ :: Int,[],id (id _) * _ :: Int)+(negate _ * _ :: Int,[],negate _ * _ :: Int)+(abs _ * _ :: Int,[],abs _ * _ :: Int)+((_ + _) * _ :: Int,[],(_ + _) * _ :: Int)+(head _ * _ :: Int,[],head _ * _ :: Int)+(ord _ * _ :: Int,[],ord _ * _ :: Int)+(h _ :: Int,[],h _ :: Int)+(head zs :: Int,[],head zs :: Int)+(head [0,0] :: Int,[],head [0,0] :: Int)+(head [1] :: Int,[],head [1] :: Int)+(head (_:ys) :: Int,[],head (_:ys) :: Int)+(head [_,0] :: Int,[],head [_,0] :: Int)+(head (_:_:xs) :: Int,[],head (_:_:xs) :: Int)+(head [_,_] :: Int,[],head [_,_] :: Int)+(head (_:_:_:_) :: Int,[],head (_:_:_:_) :: Int)+(head (_:x:_) :: Int,[],head (_:x:_) :: Int)+(head (_:0:_) :: Int,[],head (_:0:_) :: Int)+(head (_:id _:_) :: Int,[],head (_:id _:_) :: Int)+(head (_:tail _) :: Int,[],head (_:tail _) :: Int)+(head (_:(_ ++ _)) :: Int,[],head (_:(_ ++ _)) :: Int)+(head (x:xs) :: Int,[],head (x:xs) :: Int)+(head [x] :: Int,[],head [x] :: Int)+(head (x:_:_) :: Int,[],head (x:_:_) :: Int)+(head (0:xs) :: Int,[],head (0:xs) :: Int)+(head [0] :: Int,[],head [0] :: Int)+(head (0:_:_) :: Int,[],head (0:_:_) :: Int)+(head (id _:xs) :: Int,[],head (id _:xs) :: Int)+(head [id _] :: Int,[],head [id _] :: Int)+(head (id _:_:_) :: Int,[],head (id _:_:_) :: Int)+(head (y:_) :: Int,[],head (y:_) :: Int)+(head (1:_) :: Int,[],head (1:_) :: Int)+(head (id x:_) :: Int,[],head (id x:_) :: Int)+(head (id 0:_) :: Int,[],head (id 0:_) :: Int)+(head (id (id _):_) :: Int,[],head (id (id _):_) :: Int)+(head (negate _:_) :: Int,[],head (negate _:_) :: Int)+(head (abs _:_) :: Int,[],head (abs _:_) :: Int)+(head (_ + _:_) :: Int,[],head (_ + _:_) :: Int)+(head (head _:_) :: Int,[],head (head _:_) :: Int)+(head (ord _:_) :: Int,[],head (ord _:_) :: Int)+(head (tail xs) :: Int,[],head (tail xs) :: Int)+(head (tail []) :: Int,[],head (tail []) :: Int)+(head (tail (_:_)) :: Int,[],head (tail (_:_)) :: Int)+(head (_ ++ xs) :: Int,[],head (_ ++ xs) :: Int)+(head (_ ++ []) :: Int,[],head (_ ++ []) :: Int)+(head (_ ++ (_:_)) :: Int,[],head (_ ++ (_:_)) :: Int)+(head (xs ++ _) :: Int,[],head (xs ++ _) :: Int)+(head ([] ++ _) :: Int,[],head ([] ++ _) :: Int)+(head ((_:_) ++ _) :: Int,[],head ((_:_) ++ _) :: Int)+(head (sort _) :: Int,[],head (sort _) :: Int)+(head (insert _ _) :: Int,[],head (insert _ _) :: Int)+(ord e :: Int,[],ord e :: Int)+(ord 'b' :: Int,[],ord 'b' :: Int)+(p' :: Bool,[],p' :: Bool)+(not r :: Bool,[],not r :: Bool)+(not (not q) :: Bool,[],not (not q) :: Bool)+(not (not (not p)) :: Bool,[],not (not (not p)) :: Bool)+(not (not (not False)) :: Bool,[],not (not (not False)) :: Bool)+(not (not (not True)) :: Bool,[],not (not (not True)) :: Bool)+(not (not (not (not _))) :: Bool,[],not (not (not (not _))) :: Bool)+(not (not (_ || _)) :: Bool,[],not (not (_ || _)) :: Bool)+(not (_ || p) :: Bool,[],not (_ || p) :: Bool)+(not (_ || False) :: Bool,[],not (_ || False) :: Bool)+(not (_ || True) :: Bool,[],not (_ || True) :: Bool)+(not (_ || not _) :: Bool,[],not (_ || not _) :: Bool)+(not (p || _) :: Bool,[],not (p || _) :: Bool)+(not (False || _) :: Bool,[],not (False || _) :: Bool)+(not (True || _) :: Bool,[],not (True || _) :: Bool)+(not (not _ || _) :: Bool,[],not (not _ || _) :: Bool)+(not (_ && _) :: Bool,[],not (_ && _) :: Bool)+(not (_ == _) :: Bool,[],not (_ == _) :: Bool)+(not (_ == _) :: Bool,[],not (_ == _) :: Bool)+(not (odd _) :: Bool,[],not (odd _) :: Bool)+(not (even _) :: Bool,[],not (even _) :: Bool)+(not (elem _ _) :: Bool,[],not (elem _ _) :: Bool)+(_ || q :: Bool,[],_ || q :: Bool)+(_ || not p :: Bool,[],_ || not p :: Bool)+(_ || not False :: Bool,[],_ || not False :: Bool)+(_ || not True :: Bool,[],_ || not True :: Bool)+(_ || not (not _) :: Bool,[],_ || not (not _) :: Bool)+(_ || (_ || _) :: Bool,[],_ || (_ || _) :: Bool)+(p || p :: Bool,[],p || p :: Bool)+(p || False :: Bool,[],p || False :: Bool)+(p || True :: Bool,[],p || True :: Bool)+(p || not _ :: Bool,[],p || not _ :: Bool)+(False || p :: Bool,[],False || p :: Bool)+(False || False :: Bool,[],False || False :: Bool)+(False || True :: Bool,[],False || True :: Bool)+(False || not _ :: Bool,[],False || not _ :: Bool)+(True || p :: Bool,[],True || p :: Bool)+(True || False :: Bool,[],True || False :: Bool)+(True || True :: Bool,[],True || True :: Bool)+(True || not _ :: Bool,[],True || not _ :: Bool)+(not _ || p :: Bool,[],not _ || p :: Bool)+(not _ || False :: Bool,[],not _ || False :: Bool)+(not _ || True :: Bool,[],not _ || True :: Bool)+(not _ || not _ :: Bool,[],not _ || not _ :: Bool)+(_ && p :: Bool,[],_ && p :: Bool)+(_ && False :: Bool,[],_ && False :: Bool)+(_ && True :: Bool,[],_ && True :: Bool)+(_ && not _ :: Bool,[],_ && not _ :: Bool)+(q || _ :: Bool,[],q || _ :: Bool)+(not p || _ :: Bool,[],not p || _ :: Bool)+(not False || _ :: Bool,[],not False || _ :: Bool)+(not True || _ :: Bool,[],not True || _ :: Bool)+(not (not _) || _ :: Bool,[],not (not _) || _ :: Bool)+((_ || _) || _ :: Bool,[],(_ || _) || _ :: Bool)+(p && _ :: Bool,[],p && _ :: Bool)+(False && _ :: Bool,[],False && _ :: Bool)+(True && _ :: Bool,[],True && _ :: Bool)+(not _ && _ :: Bool,[],not _ && _ :: Bool)+(_ ==> _ :: Bool,[],_ ==> _ :: Bool)+(_ == x :: Bool,[],_ == x :: Bool)+(_ == 0 :: Bool,[],_ == 0 :: Bool)+(_ == id _ :: Bool,[],_ == id _ :: Bool)+(x == _ :: Bool,[],x == _ :: Bool)+(0 == _ :: Bool,[],0 == _ :: Bool)+(id _ == _ :: Bool,[],id _ == _ :: Bool)+(_ == p :: Bool,[],_ == p :: Bool)+(_ == False :: Bool,[],_ == False :: Bool)+(_ == True :: Bool,[],_ == True :: Bool)+(_ == not _ :: Bool,[],_ == not _ :: Bool)+(p == _ :: Bool,[],p == _ :: Bool)+(False == _ :: Bool,[],False == _ :: Bool)+(True == _ :: Bool,[],True == _ :: Bool)+(not _ == _ :: Bool,[],not _ == _ :: Bool)+(_ <= _ :: Bool,[],_ <= _ :: Bool)+(_ <= _ :: Bool,[],_ <= _ :: Bool)+(odd x :: Bool,[],odd x :: Bool)+(odd 0 :: Bool,[],odd 0 :: Bool)+(odd (id _) :: Bool,[],odd (id _) :: Bool)+(even x :: Bool,[],even x :: Bool)+(even 0 :: Bool,[],even 0 :: Bool)+(even (id _) :: Bool,[],even (id _) :: Bool)+(elem _ xs :: Bool,[],elem _ xs :: Bool)+(elem _ [] :: Bool,[],elem _ [] :: Bool)+(elem _ (_:_) :: Bool,[],elem _ (_:_) :: Bool)+(elem x _ :: Bool,[],elem x _ :: Bool)+(elem 0 _ :: Bool,[],elem 0 _ :: Bool)+(elem (id _) _ :: Bool,[],elem (id _) _ :: Bool)+(c' :: Char,[],c' :: Char)+('A' :: Char,[],'A' :: Char)+(xs' :: [Int],[],xs' :: [Int])+([0,0,0] :: [Int],[],[0,0,0] :: [Int])+([0,1] :: [Int],[],[0,1] :: [Int])+([1,0] :: [Int],[],[1,0] :: [Int])+([-1] :: [Int],[],[-1] :: [Int])+(_:zs :: [Int],[],_:zs :: [Int])+([_,0,0] :: [Int],[],[_,0,0] :: [Int])+([_,1] :: [Int],[],[_,1] :: [Int])+(_:_:ys :: [Int],[],_:_:ys :: [Int])+([_,_,0] :: [Int],[],[_,_,0] :: [Int])+(_:_:_:xs :: [Int],[],_:_:_:xs :: [Int])+([_,_,_] :: [Int],[],[_,_,_] :: [Int])+(_:_:_:_:_ :: [Int],[],_:_:_:_:_ :: [Int])+(_:_:x:_ :: [Int],[],_:_:x:_ :: [Int])+(_:_:0:_ :: [Int],[],_:_:0:_ :: [Int])+(_:_:id _:_ :: [Int],[],_:_:id _:_ :: [Int])+(_:_:tail _ :: [Int],[],_:_:tail _ :: [Int])+(_:_:(_ ++ _) :: [Int],[],_:_:(_ ++ _) :: [Int])+(_:x:xs :: [Int],[],_:x:xs :: [Int])+([_,x] :: [Int],[],[_,x] :: [Int])+(_:x:_:_ :: [Int],[],_:x:_:_ :: [Int])+(_:0:xs :: [Int],[],_:0:xs :: [Int])+([_,0] :: [Int],[],[_,0] :: [Int])+(_:0:_:_ :: [Int],[],_:0:_:_ :: [Int])+(_:id _:xs :: [Int],[],_:id _:xs :: [Int])+([_,id _] :: [Int],[],[_,id _] :: [Int])+(_:id _:_:_ :: [Int],[],_:id _:_:_ :: [Int])+(_:y:_ :: [Int],[],_:y:_ :: [Int])+(_:1:_ :: [Int],[],_:1:_ :: [Int])+(_:id x:_ :: [Int],[],_:id x:_ :: [Int])+(_:id 0:_ :: [Int],[],_:id 0:_ :: [Int])+(_:id (id _):_ :: [Int],[],_:id (id _):_ :: [Int])+(_:negate _:_ :: [Int],[],_:negate _:_ :: [Int])+(_:abs _:_ :: [Int],[],_:abs _:_ :: [Int])+(_:_ + _:_ :: [Int],[],_:_ + _:_ :: [Int])+(_:head _:_ :: [Int],[],_:head _:_ :: [Int])+(_:ord _:_ :: [Int],[],_:ord _:_ :: [Int])+(_:tail xs :: [Int],[],_:tail xs :: [Int])+(_:tail [] :: [Int],[],_:tail [] :: [Int])+(_:tail (_:_) :: [Int],[],_:tail (_:_) :: [Int])+(_:(_ ++ xs) :: [Int],[],_:(_ ++ xs) :: [Int])+(_:(_ ++ []) :: [Int],[],_:(_ ++ []) :: [Int])+(_:(_ ++ (_:_)) :: [Int],[],_:(_ ++ (_:_)) :: [Int])+(_:(xs ++ _) :: [Int],[],_:(xs ++ _) :: [Int])+(_:([] ++ _) :: [Int],[],_:([] ++ _) :: [Int])+(_:((_:_) ++ _) :: [Int],[],_:((_:_) ++ _) :: [Int])+(_:sort _ :: [Int],[],_:sort _ :: [Int])+(_:insert _ _ :: [Int],[],_:insert _ _ :: [Int])+(x:ys :: [Int],[],x:ys :: [Int])+([x,0] :: [Int],[],[x,0] :: [Int])+(x:_:xs :: [Int],[],x:_:xs :: [Int])+([x,_] :: [Int],[],[x,_] :: [Int])+(x:_:_:_ :: [Int],[],x:_:_:_ :: [Int])+(x:x:_ :: [Int],[],x:x:_ :: [Int])+(x:0:_ :: [Int],[],x:0:_ :: [Int])+(x:id _:_ :: [Int],[],x:id _:_ :: [Int])+(x:tail _ :: [Int],[],x:tail _ :: [Int])+(x:(_ ++ _) :: [Int],[],x:(_ ++ _) :: [Int])+(0:ys :: [Int],[],0:ys :: [Int])+([0,0] :: [Int],[],[0,0] :: [Int])+(0:_:xs :: [Int],[],0:_:xs :: [Int])+([0,_] :: [Int],[],[0,_] :: [Int])+(0:_:_:_ :: [Int],[],0:_:_:_ :: [Int])+(0:x:_ :: [Int],[],0:x:_ :: [Int])+(0:0:_ :: [Int],[],0:0:_ :: [Int])+(0:id _:_ :: [Int],[],0:id _:_ :: [Int])+(0:tail _ :: [Int],[],0:tail _ :: [Int])+(0:(_ ++ _) :: [Int],[],0:(_ ++ _) :: [Int])+(id _:ys :: [Int],[],id _:ys :: [Int])+([id _,0] :: [Int],[],[id _,0] :: [Int])+(id _:_:xs :: [Int],[],id _:_:xs :: [Int])+([id _,_] :: [Int],[],[id _,_] :: [Int])+(id _:_:_:_ :: [Int],[],id _:_:_:_ :: [Int])+(id _:x:_ :: [Int],[],id _:x:_ :: [Int])+(id _:0:_ :: [Int],[],id _:0:_ :: [Int])+(id _:id _:_ :: [Int],[],id _:id _:_ :: [Int])+(id _:tail _ :: [Int],[],id _:tail _ :: [Int])+(id _:(_ ++ _) :: [Int],[],id _:(_ ++ _) :: [Int])+(y:xs :: [Int],[],y:xs :: [Int])+([y] :: [Int],[],[y] :: [Int])+(y:_:_ :: [Int],[],y:_:_ :: [Int])+(1:xs :: [Int],[],1:xs :: [Int])+([1] :: [Int],[],[1] :: [Int])+(1:_:_ :: [Int],[],1:_:_ :: [Int])+(id x:xs :: [Int],[],id x:xs :: [Int])+([id x] :: [Int],[],[id x] :: [Int])+(id x:_:_ :: [Int],[],id x:_:_ :: [Int])+(id 0:xs :: [Int],[],id 0:xs :: [Int])+([id 0] :: [Int],[],[id 0] :: [Int])+(id 0:_:_ :: [Int],[],id 0:_:_ :: [Int])+(id (id _):xs :: [Int],[],id (id _):xs :: [Int])+([id (id _)] :: [Int],[],[id (id _)] :: [Int])+(id (id _):_:_ :: [Int],[],id (id _):_:_ :: [Int])+(negate _:xs :: [Int],[],negate _:xs :: [Int])+([negate _] :: [Int],[],[negate _] :: [Int])+(negate _:_:_ :: [Int],[],negate _:_:_ :: [Int])+(abs _:xs :: [Int],[],abs _:xs :: [Int])+([abs _] :: [Int],[],[abs _] :: [Int])+(abs _:_:_ :: [Int],[],abs _:_:_ :: [Int])+(_ + _:xs :: [Int],[],_ + _:xs :: [Int])+([_ + _] :: [Int],[],[_ + _] :: [Int])+(_ + _:_:_ :: [Int],[],_ + _:_:_ :: [Int])+(head _:xs :: [Int],[],head _:xs :: [Int])+([head _] :: [Int],[],[head _] :: [Int])+(head _:_:_ :: [Int],[],head _:_:_ :: [Int])+(ord _:xs :: [Int],[],ord _:xs :: [Int])+([ord _] :: [Int],[],[ord _] :: [Int])+(ord _:_:_ :: [Int],[],ord _:_:_ :: [Int])+(z:_ :: [Int],[],z:_ :: [Int])+((-1):_ :: [Int],[],(-1):_ :: [Int])+(id y:_ :: [Int],[],id y:_ :: [Int])+(id 1:_ :: [Int],[],id 1:_ :: [Int])+(id (id x):_ :: [Int],[],id (id x):_ :: [Int])+(id (id 0):_ :: [Int],[],id (id 0):_ :: [Int])+(id (id (id _)):_ :: [Int],[],id (id (id _)):_ :: [Int])+(id (negate _):_ :: [Int],[],id (negate _):_ :: [Int])+(id (abs _):_ :: [Int],[],id (abs _):_ :: [Int])+(id (_ + _):_ :: [Int],[],id (_ + _):_ :: [Int])+(id (head _):_ :: [Int],[],id (head _):_ :: [Int])+(id (ord _):_ :: [Int],[],id (ord _):_ :: [Int])+(negate x:_ :: [Int],[],negate x:_ :: [Int])+(negate 0:_ :: [Int],[],negate 0:_ :: [Int])+(negate (id _):_ :: [Int],[],negate (id _):_ :: [Int])+(abs x:_ :: [Int],[],abs x:_ :: [Int])+(abs 0:_ :: [Int],[],abs 0:_ :: [Int])+(abs (id _):_ :: [Int],[],abs (id _):_ :: [Int])+(_ + x:_ :: [Int],[],_ + x:_ :: [Int])+(_ + 0:_ :: [Int],[],_ + 0:_ :: [Int])+(_ + id _:_ :: [Int],[],_ + id _:_ :: [Int])+(x + _:_ :: [Int],[],x + _:_ :: [Int])+(0 + _:_ :: [Int],[],0 + _:_ :: [Int])+(id _ + _:_ :: [Int],[],id _ + _:_ :: [Int])+(_ * _:_ :: [Int],[],_ * _:_ :: [Int])+(f _:_ :: [Int],[],f _:_ :: [Int])+(head xs:_ :: [Int],[],head xs:_ :: [Int])+(head []:_ :: [Int],[],head []:_ :: [Int])+(head (_:_):_ :: [Int],[],head (_:_):_ :: [Int])+(ord c:_ :: [Int],[],ord c:_ :: [Int])+(ord 'a':_ :: [Int],[],ord 'a':_ :: [Int])+(tail ys :: [Int],[],tail ys :: [Int])+(tail [0] :: [Int],[],tail [0] :: [Int])+(tail (_:xs) :: [Int],[],tail (_:xs) :: [Int])+(tail [_] :: [Int],[],tail [_] :: [Int])+(tail (_:_:_) :: [Int],[],tail (_:_:_) :: [Int])+(tail (x:_) :: [Int],[],tail (x:_) :: [Int])+(tail (0:_) :: [Int],[],tail (0:_) :: [Int])+(tail (id _:_) :: [Int],[],tail (id _:_) :: [Int])+(tail (tail _) :: [Int],[],tail (tail _) :: [Int])+(tail (_ ++ _) :: [Int],[],tail (_ ++ _) :: [Int])+(_ ++ ys :: [Int],[],_ ++ ys :: [Int])+(_ ++ [0] :: [Int],[],_ ++ [0] :: [Int])+(_ ++ (_:xs) :: [Int],[],_ ++ (_:xs) :: [Int])+(_ ++ [_] :: [Int],[],_ ++ [_] :: [Int])+(_ ++ (_:_:_) :: [Int],[],_ ++ (_:_:_) :: [Int])+(_ ++ (x:_) :: [Int],[],_ ++ (x:_) :: [Int])+(_ ++ (0:_) :: [Int],[],_ ++ (0:_) :: [Int])+(_ ++ (id _:_) :: [Int],[],_ ++ (id _:_) :: [Int])+(_ ++ tail _ :: [Int],[],_ ++ tail _ :: [Int])+(_ ++ (_ ++ _) :: [Int],[],_ ++ (_ ++ _) :: [Int])+(xs ++ xs :: [Int],[],xs ++ xs :: [Int])+(xs ++ [] :: [Int],[],xs ++ [] :: [Int])+(xs ++ (_:_) :: [Int],[],xs ++ (_:_) :: [Int])+([] ++ xs :: [Int],[],[] ++ xs :: [Int])+([] ++ [] :: [Int],[],[] ++ [] :: [Int])+([] ++ (_:_) :: [Int],[],[] ++ (_:_) :: [Int])+((_:_) ++ xs :: [Int],[],(_:_) ++ xs :: [Int])+((_:_) ++ [] :: [Int],[],(_:_) ++ [] :: [Int])+((_:_) ++ (_:_) :: [Int],[],(_:_) ++ (_:_) :: [Int])+(ys ++ _ :: [Int],[],ys ++ _ :: [Int])+([0] ++ _ :: [Int],[],[0] ++ _ :: [Int])+((_:xs) ++ _ :: [Int],[],(_:xs) ++ _ :: [Int])+([_] ++ _ :: [Int],[],[_] ++ _ :: [Int])+((_:_:_) ++ _ :: [Int],[],(_:_:_) ++ _ :: [Int])+((x:_) ++ _ :: [Int],[],(x:_) ++ _ :: [Int])+((0:_) ++ _ :: [Int],[],(0:_) ++ _ :: [Int])+((id _:_) ++ _ :: [Int],[],(id _:_) ++ _ :: [Int])+(tail _ ++ _ :: [Int],[],tail _ ++ _ :: [Int])+((_ ++ _) ++ _ :: [Int],[],(_ ++ _) ++ _ :: [Int])+(sort xs :: [Int],[],sort xs :: [Int])+(sort [] :: [Int],[],sort [] :: [Int])+(sort (_:_) :: [Int],[],sort (_:_) :: [Int])+(insert _ xs :: [Int],[],insert _ xs :: [Int])+(insert _ [] :: [Int],[],insert _ [] :: [Int])+(insert _ (_:_) :: [Int],[],insert _ (_:_) :: [Int])+(insert x _ :: [Int],[],insert x _ :: [Int])+(insert 0 _ :: [Int],[],insert 0 _ :: [Int])+(insert (id _) _ :: [Int],[],insert (id _) _ :: [Int])+((y +) :: Int -> Int,[],(y +) :: Int -> Int)+((1 +) :: Int -> Int,[],(1 +) :: Int -> Int)+((id x +) :: Int -> Int,[],(id x +) :: Int -> Int)+((id 0 +) :: Int -> Int,[],(id 0 +) :: Int -> Int)+((id (id _) +) :: Int -> Int,[],(id (id _) +) :: Int -> Int)+((negate _ +) :: Int -> Int,[],(negate _ +) :: Int -> Int)+((abs _ +) :: Int -> Int,[],(abs _ +) :: Int -> Int)+(((_ + _) +) :: Int -> Int,[],((_ + _) +) :: Int -> Int)+((head _ +) :: Int -> Int,[],(head _ +) :: Int -> Int)+((ord _ +) :: Int -> Int,[],(ord _ +) :: Int -> Int)+((x *) :: Int -> Int,[],(x *) :: Int -> Int)+((0 *) :: Int -> Int,[],(0 *) :: Int -> Int)+((id _ *) :: Int -> Int,[],(id _ *) :: Int -> Int)+(g :: Int -> Int,[],g :: Int -> Int)+((p ||) :: Bool -> Bool,[],(p ||) :: Bool -> Bool)+((False ||) :: Bool -> Bool,[],(False ||) :: Bool -> Bool)+((True ||) :: Bool -> Bool,[],(True ||) :: Bool -> Bool)+((not _ ||) :: Bool -> Bool,[],(not _ ||) :: Bool -> Bool)+((_ &&) :: Bool -> Bool,[],(_ &&) :: Bool -> Bool)+((==>) :: Bool -> Bool -> Bool,[],(==>) :: Bool -> Bool -> Bool)+(z' :: Int,[],z' :: Int)+(3 :: Int,[],3 :: Int)+(id y' :: Int,[],id y' :: Int)+(id (-2) :: Int,[],id (-2) :: Int)+(id (id x') :: Int,[],id (id x') :: Int)+(id (id 2) :: Int,[],id (id 2) :: Int)+(id (id (id z)) :: Int,[],id (id (id z)) :: Int)+(id (id (id (-1))) :: Int,[],id (id (id (-1))) :: Int)+(id (id (id (id y))) :: Int,[],id (id (id (id y))) :: Int)+(id (id (id (id 1))) :: Int,[],id (id (id (id 1))) :: Int)+(id (id (id (id (id x)))) :: Int,[],id (id (id (id (id x)))) :: Int)+(id (id (id (id (id 0)))) :: Int,[],id (id (id (id (id 0)))) :: Int)+(id (id (id (id (id (id _))))) :: Int,[],id (id (id (id (id (id _))))) :: Int)+(id (id (id (id (negate _)))) :: Int,[],id (id (id (id (negate _)))) :: Int)+(id (id (id (id (abs _)))) :: Int,[],id (id (id (id (abs _)))) :: Int)+(id (id (id (id (_ + _)))) :: Int,[],id (id (id (id (_ + _)))) :: Int)+(id (id (id (id (head _)))) :: Int,[],id (id (id (id (head _)))) :: Int)+(id (id (id (id (ord _)))) :: Int,[],id (id (id (id (ord _)))) :: Int)+(id (id (id (negate x))) :: Int,[],id (id (id (negate x))) :: Int)+(id (id (id (negate 0))) :: Int,[],id (id (id (negate 0))) :: Int)+(id (id (id (negate (id _)))) :: Int,[],id (id (id (negate (id _)))) :: Int)+(id (id (id (abs x))) :: Int,[],id (id (id (abs x))) :: Int)+(id (id (id (abs 0))) :: Int,[],id (id (id (abs 0))) :: Int)+(id (id (id (abs (id _)))) :: Int,[],id (id (id (abs (id _)))) :: Int)+(id (id (id (_ + x))) :: Int,[],id (id (id (_ + x))) :: Int)+(id (id (id (_ + 0))) :: Int,[],id (id (id (_ + 0))) :: Int)+(id (id (id (_ + id _))) :: Int,[],id (id (id (_ + id _))) :: Int)+(id (id (id (x + _))) :: Int,[],id (id (id (x + _))) :: Int)+(id (id (id (0 + _))) :: Int,[],id (id (id (0 + _))) :: Int)+(id (id (id (id _ + _))) :: Int,[],id (id (id (id _ + _))) :: Int)+(id (id (id (_ * _))) :: Int,[],id (id (id (_ * _))) :: Int)+(id (id (id (f _))) :: Int,[],id (id (id (f _))) :: Int)+(id (id (id (head xs))) :: Int,[],id (id (id (head xs))) :: Int)+(id (id (id (head []))) :: Int,[],id (id (id (head []))) :: Int)+(id (id (id (head (_:_)))) :: Int,[],id (id (id (head (_:_)))) :: Int)+(id (id (id (ord c))) :: Int,[],id (id (id (ord c))) :: Int)+(id (id (id (ord 'a'))) :: Int,[],id (id (id (ord 'a'))) :: Int)+(id (id (negate y)) :: Int,[],id (id (negate y)) :: Int)+(id (id (negate 1)) :: Int,[],id (id (negate 1)) :: Int)+(id (id (negate (id x))) :: Int,[],id (id (negate (id x))) :: Int)+(id (id (negate (id 0))) :: Int,[],id (id (negate (id 0))) :: Int)+(id (id (negate (id (id _)))) :: Int,[],id (id (negate (id (id _)))) :: Int)+(id (id (negate (negate _))) :: Int,[],id (id (negate (negate _))) :: Int)+(id (id (negate (abs _))) :: Int,[],id (id (negate (abs _))) :: Int)+(id (id (negate (_ + _))) :: Int,[],id (id (negate (_ + _))) :: Int)+(id (id (negate (head _))) :: Int,[],id (id (negate (head _))) :: Int)+(id (id (negate (ord _))) :: Int,[],id (id (negate (ord _))) :: Int)+(id (id (abs y)) :: Int,[],id (id (abs y)) :: Int)+(id (id (abs 1)) :: Int,[],id (id (abs 1)) :: Int)+(id (id (abs (id x))) :: Int,[],id (id (abs (id x))) :: Int)+(id (id (abs (id 0))) :: Int,[],id (id (abs (id 0))) :: Int)+(id (id (abs (id (id _)))) :: Int,[],id (id (abs (id (id _)))) :: Int)+(id (id (abs (negate _))) :: Int,[],id (id (abs (negate _))) :: Int)+(id (id (abs (abs _))) :: Int,[],id (id (abs (abs _))) :: Int)+(id (id (abs (_ + _))) :: Int,[],id (id (abs (_ + _))) :: Int)+(id (id (abs (head _))) :: Int,[],id (id (abs (head _))) :: Int)+(id (id (abs (ord _))) :: Int,[],id (id (abs (ord _))) :: Int)+(id (id (_ + y)) :: Int,[],id (id (_ + y)) :: Int)+(id (id (_ + 1)) :: Int,[],id (id (_ + 1)) :: Int)+(id (id (_ + id x)) :: Int,[],id (id (_ + id x)) :: Int)+(id (id (_ + id 0)) :: Int,[],id (id (_ + id 0)) :: Int)+(id (id (_ + id (id _))) :: Int,[],id (id (_ + id (id _))) :: Int)+(id (id (_ + negate _)) :: Int,[],id (id (_ + negate _)) :: Int)+(id (id (_ + abs _)) :: Int,[],id (id (_ + abs _)) :: Int)+(id (id (_ + (_ + _))) :: Int,[],id (id (_ + (_ + _))) :: Int)+(id (id (_ + head _)) :: Int,[],id (id (_ + head _)) :: Int)+(id (id (_ + ord _)) :: Int,[],id (id (_ + ord _)) :: Int)+(id (id (x + x)) :: Int,[],id (id (x + x)) :: Int)+(id (id (x + 0)) :: Int,[],id (id (x + 0)) :: Int)+(id (id (x + id _)) :: Int,[],id (id (x + id _)) :: Int)+(id (id (0 + x)) :: Int,[],id (id (0 + x)) :: Int)+(id (id (0 + 0)) :: Int,[],id (id (0 + 0)) :: Int)+(id (id (0 + id _)) :: Int,[],id (id (0 + id _)) :: Int)+(id (id (id _ + x)) :: Int,[],id (id (id _ + x)) :: Int)+(id (id (id _ + 0)) :: Int,[],id (id (id _ + 0)) :: Int)+(id (id (id _ + id _)) :: Int,[],id (id (id _ + id _)) :: Int)+(id (id (_ * x)) :: Int,[],id (id (_ * x)) :: Int)+(id (id (_ * 0)) :: Int,[],id (id (_ * 0)) :: Int)+(id (id (_ * id _)) :: Int,[],id (id (_ * id _)) :: Int)+(id (id (f x)) :: Int,[],id (id (f x)) :: Int)+(id (id (f 0)) :: Int,[],id (id (f 0)) :: Int)+(id (id (f (id _))) :: Int,[],id (id (f (id _))) :: Int)+(id (id (y + _)) :: Int,[],id (id (y + _)) :: Int)+(id (id (1 + _)) :: Int,[],id (id (1 + _)) :: Int)+(id (id (id x + _)) :: Int,[],id (id (id x + _)) :: Int)+(id (id (id 0 + _)) :: Int,[],id (id (id 0 + _)) :: Int)+(id (id (id (id _) + _)) :: Int,[],id (id (id (id _) + _)) :: Int)+(id (id (negate _ + _)) :: Int,[],id (id (negate _ + _)) :: Int)+(id (id (abs _ + _)) :: Int,[],id (id (abs _ + _)) :: Int)+(id (id ((_ + _) + _)) :: Int,[],id (id ((_ + _) + _)) :: Int)+(id (id (head _ + _)) :: Int,[],id (id (head _ + _)) :: Int)+(id (id (ord _ + _)) :: Int,[],id (id (ord _ + _)) :: Int)+(id (id (x * _)) :: Int,[],id (id (x * _)) :: Int)+(id (id (0 * _)) :: Int,[],id (id (0 * _)) :: Int)+(id (id (id _ * _)) :: Int,[],id (id (id _ * _)) :: Int)+(id (id (g _)) :: Int,[],id (id (g _)) :: Int)+(id (id (head ys)) :: Int,[],id (id (head ys)) :: Int)+(id (id (head [0])) :: Int,[],id (id (head [0])) :: Int)+(id (id (head (_:xs))) :: Int,[],id (id (head (_:xs))) :: Int)+(id (id (head [_])) :: Int,[],id (id (head [_])) :: Int)+(id (id (head (_:_:_))) :: Int,[],id (id (head (_:_:_))) :: Int)+(id (id (head (x:_))) :: Int,[],id (id (head (x:_))) :: Int)+(id (id (head (0:_))) :: Int,[],id (id (head (0:_))) :: Int)+(id (id (head (id _:_))) :: Int,[],id (id (head (id _:_))) :: Int)+(id (id (head (tail _))) :: Int,[],id (id (head (tail _))) :: Int)+(id (id (head (_ ++ _))) :: Int,[],id (id (head (_ ++ _))) :: Int)+(id (id (ord d)) :: Int,[],id (id (ord d)) :: Int)+(id (id (ord ' ')) :: Int,[],id (id (ord ' ')) :: Int)+(id (negate z) :: Int,[],id (negate z) :: Int)+(id (negate (-1)) :: Int,[],id (negate (-1)) :: Int)+(id (negate (id y)) :: Int,[],id (negate (id y)) :: Int)+(id (negate (id 1)) :: Int,[],id (negate (id 1)) :: Int)+(id (negate (id (id x))) :: Int,[],id (negate (id (id x))) :: Int)+(id (negate (id (id 0))) :: Int,[],id (negate (id (id 0))) :: Int)+(id (negate (id (id (id _)))) :: Int,[],id (negate (id (id (id _)))) :: Int)+(id (negate (id (negate _))) :: Int,[],id (negate (id (negate _))) :: Int)+(id (negate (id (abs _))) :: Int,[],id (negate (id (abs _))) :: Int)+(id (negate (id (_ + _))) :: Int,[],id (negate (id (_ + _))) :: Int)+(id (negate (id (head _))) :: Int,[],id (negate (id (head _))) :: Int)+(id (negate (id (ord _))) :: Int,[],id (negate (id (ord _))) :: Int)+(id (negate (negate x)) :: Int,[],id (negate (negate x)) :: Int)+(id (negate (negate 0)) :: Int,[],id (negate (negate 0)) :: Int)+(id (negate (negate (id _))) :: Int,[],id (negate (negate (id _))) :: Int)+(id (negate (abs x)) :: Int,[],id (negate (abs x)) :: Int)+(id (negate (abs 0)) :: Int,[],id (negate (abs 0)) :: Int)+(id (negate (abs (id _))) :: Int,[],id (negate (abs (id _))) :: Int)+(id (negate (_ + x)) :: Int,[],id (negate (_ + x)) :: Int)+(id (negate (_ + 0)) :: Int,[],id (negate (_ + 0)) :: Int)+(id (negate (_ + id _)) :: Int,[],id (negate (_ + id _)) :: Int)+(id (negate (x + _)) :: Int,[],id (negate (x + _)) :: Int)+(id (negate (0 + _)) :: Int,[],id (negate (0 + _)) :: Int)+(id (negate (id _ + _)) :: Int,[],id (negate (id _ + _)) :: Int)+(id (negate (_ * _)) :: Int,[],id (negate (_ * _)) :: Int)+(id (negate (f _)) :: Int,[],id (negate (f _)) :: Int)+(id (negate (head xs)) :: Int,[],id (negate (head xs)) :: Int)+(id (negate (head [])) :: Int,[],id (negate (head [])) :: Int)+(id (negate (head (_:_))) :: Int,[],id (negate (head (_:_))) :: Int)+(id (negate (ord c)) :: Int,[],id (negate (ord c)) :: Int)+(id (negate (ord 'a')) :: Int,[],id (negate (ord 'a')) :: Int)+(id (abs z) :: Int,[],id (abs z) :: Int)+(id (abs (-1)) :: Int,[],id (abs (-1)) :: Int)+(id (abs (id y)) :: Int,[],id (abs (id y)) :: Int)+(id (abs (id 1)) :: Int,[],id (abs (id 1)) :: Int)+(id (abs (id (id x))) :: Int,[],id (abs (id (id x))) :: Int)+(id (abs (id (id 0))) :: Int,[],id (abs (id (id 0))) :: Int)+(id (abs (id (id (id _)))) :: Int,[],id (abs (id (id (id _)))) :: Int)++True
+ test/model/bench/match-triexpr.out view
@@ -0,0 +1,795 @@+id p = p+p && p = p+p || p = p+p && q = q && p+p || q = q || p+not (not p) = p+p && True = p+True && p = p+p && False = False+False && p = False+p || True = True+True || p = True+p || False = p+False || p = p+p && not p = False+p || not p = True+not p && p = False+not p || p = True+(p && q) && r = p && (q && r)+(p || q) || r = p || (q || r)+not (p && q) = not p || not q+not (p || q) = not p && not q+not False = True+not True = False+not (not p && not q) = p || q+not (not p || not q) = p && q+p && not (p && q) = p && not q+id x = x+abs (abs x) = abs x+x + 0 = x+0 + x = x+x * 1 = x+1 * x = x+x * 0 = 0+0 * x = 0+x + y = y + x+x * y = y * x+(x + y) + z = x + (y + z)+(x * y) * z = x * (y * z)+(x + x) * y = x * (y + y)+x * (y + 1) = x + x * y+(x + 1) * y = x + x * y+x * (y + z) = x * y + x * z+(x + y) * z = x * z + y * z+negate (negate x) = x+x + negate x = 0+negate x + x = 0+abs (negate x) = abs x+2 * x = x + x+x * 2 = x + x+3 * x = x + (x + x)+x * 3 = x + (x + x)+4 * x = x + (x + (x + x))+x * 4 = x + (x + (x + x))+abs (x * x) = x * x+abs x * abs y = abs (x * y)+abs x * abs x = abs (x + x)+abs (abs x + abs y) = abs x + abs y+abs (x + x) * y = abs x * y + abs x * y+abs x * signum x = x+signum x * abs x = x+id xs = xs+head (x:xs) = x+tail (x:xs) = xs+xs ++ [] = xs+[] ++ xs = xs+[x] ++ xs = x:xs+(x:xs) ++ ys = x:(xs ++ ys)+(xs ++ ys) ++ zs = xs ++ (ys ++ zs)+elem x (sort xs) = elem x xs+elem x (insert y xs) = elem x (y:xs)+sort (sort xs) = sort xs+insert x [] = [x]+sort (xs ++ ys) = sort (ys ++ xs)+sort (insert x xs) = insert x (sort xs)+sort (x:xs) = insert x (sort xs)+sort (xs ++ sort ys) = sort (xs ++ ys)+sort (sort xs ++ ys) = sort (xs ++ ys)+insert x (insert y xs) = insert y (insert x xs)+insert x (x:xs) = x:x:xs+insert x [y] = insert y [x]+length (x:xs) = length (y:xs)+length (xs ++ ys) = length (ys ++ xs)+length (x:y:xs) = length (z:x':xs)+length (x:(xs ++ ys)) = length (y:(ys ++ xs))+length (xs ++ (ys ++ zs)) = length (xs ++ (zs ++ ys))+not (odd x) = even x+not (even x) = odd x+x == x = True+x /= x = False+p == p = True+p /= p = False+f (g x) = (f . g) x+map id xs = xs+map (f . g) xs = map f (map g xs)+f . id = f+id . f = f+(f . g) . h = f . (g . h)+not . not = id++(id x :: Int,[(x :: Int,_ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,x :: Int)],x :: Int)+(id x :: Int,[(x :: Int,0 :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(id x :: Int,[(x :: Int,y :: Int)],x :: Int)+(id x :: Int,[(x :: Int,1 :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(id x :: Int,[(x :: Int,head _ :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord _ :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(not False :: Bool,[],True :: Bool)+(not True :: Bool,[],False :: Bool)+(not (not p) :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)+(p || p :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)+(id x :: Int,[(x :: Int,z :: Int)],x :: Int)+(id x :: Int,[(x :: Int,-1 :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(id x :: Int,[(x :: Int,head xs :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head [] :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (_:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord c :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord 'a' :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,x :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ :: Int)],y * x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)+(not (not p) :: Bool,[(p :: Bool,p :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,False :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,True :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not _ :: Bool)],p :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)+(p && p :: Bool,[(p :: Bool,_ :: Bool)],p :: Bool)+(x == x :: Bool,[(x :: Int,_ :: Int)],True :: Bool)+(p == p :: Bool,[(p :: Bool,_ :: Bool)],True :: Bool)+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])+(xs ++ [] :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])+([] ++ xs :: [Int],[(xs :: [Int],_ :: [Int])],xs :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+(id x :: Int,[(x :: Int,x' :: Int)],x :: Int)+(id x :: Int,[(x :: Int,2 :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,z :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,-1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (negate _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (abs _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (head _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (ord _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,f _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head xs :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head [] :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head (_:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord c :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord 'a' :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(y +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(1 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id x +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id 0 +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id (id _) +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(negate _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(abs _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,((_ + _) +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(head _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(ord _ +) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ *) :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,g :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(id x :: Int,[(x :: Int,head ys :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head [0] :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (_:xs) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head [_] :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (_:_:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (x:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (0:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (id _:_) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (tail _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,head (_ ++ _) :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord d :: Int)],x :: Int)+(id x :: Int,[(x :: Int,ord ' ' :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,negate :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,abs :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,z :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,-1 :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(x +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(0 +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(id _ +) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ *) :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,f :: Int -> Int),(f :: Int -> Int,(_ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head xs :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,head [] :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,head (_:_) :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord c :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord 'a' :: Int),(x :: Int,_ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,x :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(x +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(0 +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,y :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,1 :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(id _ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,head _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,id _ :: Int)],y + x :: Int)+(x * y :: Int,[(y :: Int,y :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,1 :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,(_ *) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,head _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,ord _ :: Int),(x :: Int,_ :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,(_ +) :: Int -> Int),(f :: Int -> Int,f :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,y :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,y :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(y +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,1 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,1 :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(1 +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id x :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id x +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id 0 :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id 0 +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,id (id _) :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id (id _) +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,negate _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(negate _ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,abs _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(abs _ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,_ + _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,((_ + _) +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,head _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,head _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(head _ +) :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,x :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,0 :: Int),(x :: Int,ord _ :: Int)],y + x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(ord _ +) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,x :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,x :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(x *) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,0 :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,0 :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(0 *) :: Int -> Int)],(f . g) x :: Int)+(x * y :: Int,[(y :: Int,x :: Int),(x :: Int,id _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,0 :: Int),(x :: Int,id _ :: Int)],y * x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,(id _ *) :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,g :: Int -> Int)],(f . g) x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,z :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,-1 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id y :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 1 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id x) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id 0) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id (id _)) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (negate _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (abs _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (_ + _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (head _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (ord _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate (id _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs (id _) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + x :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + 0 :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + id _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,x + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,0 + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,id _ + _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ * _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,f _ :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head xs :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head [] :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,head (_:_) :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord c :: Int)],y + x :: Int)+(x + y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord 'a' :: Int)],y + x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,y :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,1 :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id x :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id 0 :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,id (id _) :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,negate _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,abs _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,_ + _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,head _ :: Int)],y * x :: Int)+(x * y :: Int,[(y :: Int,_ :: Int),(x :: Int,ord _ :: Int)],y * x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],ys :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[0] :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:xs :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[_] :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],x:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],0:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],id _:_ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],tail _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ ++ _ :: [Int]),(x :: Int,_ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],xs :: [Int]),(x :: Int,id _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],[] :: [Int]),(x :: Int,id _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_:_ :: [Int]),(x :: Int,id _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,y :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,1 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id x :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id 0 :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,id (id _) :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,negate _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,abs _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,_ + _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,head _ :: Int)],x :: Int)+(head (x:xs) :: Int,[(xs :: [Int],_ :: [Int]),(x :: Int,ord _ :: Int)],x :: Int)+(not (not p) :: Bool,[(p :: Bool,q :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not p :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not False :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not True :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,not (not _) :: Bool)],p :: Bool)+(not (not p) :: Bool,[(p :: Bool,_ || _ :: Bool)],p :: Bool)+(not (p || q) :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],not p && not q :: Bool)+(not (p || q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],not p && not q :: Bool)+(not (p && q) :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ :: Bool)],not p || not q :: Bool)+(not (odd x) :: Bool,[(x :: Int,_ :: Int)],even x :: Bool)+(not (even x) :: Bool,[(x :: Int,_ :: Int)],odd x :: Bool)+(p || q :: Bool,[(q :: Bool,q :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not p :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not False :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not True :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not (not _) :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ || _ :: Bool),(p :: Bool,_ :: Bool)],q || p :: Bool)+(p || p :: Bool,[(p :: Bool,p :: Bool)],p :: Bool)+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)+(p || p :: Bool,[(p :: Bool,False :: Bool)],p :: Bool)+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)+(p || p :: Bool,[(p :: Bool,True :: Bool)],p :: Bool)+(p || q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,not _ :: Bool)],q || p :: Bool)+(p || p :: Bool,[(p :: Bool,not _ :: Bool)],p :: Bool)+(p && q :: Bool,[(q :: Bool,p :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,False :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,True :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,not _ :: Bool),(p :: Bool,_ :: Bool)],q && p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,q :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not p :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not False :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not True :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not (not _) :: Bool)],q || p :: Bool)+(p || q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,_ || _ :: Bool)],q || p :: Bool)+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,p :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,False :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,True :: Bool)],q && p :: Bool)+(p && q :: Bool,[(q :: Bool,_ :: Bool),(p :: Bool,not _ :: Bool)],q && p :: Bool)+(tail (x:xs) :: [Int],[(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],xs :: [Int])+(tail (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],xs :: [Int])+(xs ++ [] :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])+([] ++ xs :: [Int],[(xs :: [Int],xs :: [Int])],xs :: [Int])+(xs ++ [] :: [Int],[(xs :: [Int],[] :: [Int])],xs :: [Int])+([] ++ xs :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],xs :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+(xs ++ [] :: [Int],[(xs :: [Int],_:_ :: [Int])],xs :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_:_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],xs :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],[] :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_:_ :: [Int]),(x :: Int,_ :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,x :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,0 :: Int)],x:(xs ++ ys) :: [Int])+((x:xs) ++ ys :: [Int],[(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int]),(x :: Int,id _ :: Int)],x:(xs ++ ys) :: [Int])+((xs ++ ys) ++ zs :: [Int],[(zs :: [Int],_ :: [Int]),(ys :: [Int],_ :: [Int]),(xs :: [Int],_ :: [Int])],xs ++ (ys ++ zs) :: [Int])+(sort (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],insert x (sort xs) :: [Int])+(insert x [] :: [Int],[(x :: Int,_ :: Int)],[x] :: [Int])+(insert x (x:xs) :: [Int],[(xs :: [Int],_ :: [Int]),(x :: Int,_ :: Int)],x:x:xs :: [Int])+(id x :: Int,[(x :: Int,y' :: Int)],x :: Int)+(id x :: Int,[(x :: Int,-2 :: Int)],x :: Int)+(f (g x) :: Int,[(x :: Int,x' :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,2 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id z :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (-1) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id y) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id 1) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (id x)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (id 0)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (id (id _))) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (negate _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (abs _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (_ + _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (head _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (ord _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (negate x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (negate 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (negate (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (abs x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (abs 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (abs (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (_ + x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (_ + 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (_ + id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (x + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (0 + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (_ * _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (f _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (head xs) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (head []) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (head (_:_)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (ord c) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (ord 'a') :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (id x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (id 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (id (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (negate _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (abs _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (head _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (ord _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (id x) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (id 0) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (id (id _)) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (negate _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (abs _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (head _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (ord _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + y :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + 1 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + id x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + id 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + id (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + negate _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + abs _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + (_ + _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + head _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + ord _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ + x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ + 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ + id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ * x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ * 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ * id _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,f x :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,f 0 :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,f (id _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,y + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,1 + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id x + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 0 + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id _) + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,(_ + _) + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord _ + _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ * _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,g _ :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head ys :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head [0] :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head (_:xs) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head [_] :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head (_:_:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head (x:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head (0:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head (id _:_) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head (tail _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head (_ ++ _) :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord d :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord ' ' :: Int),(g :: Int -> Int,id :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,z :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,-1 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id y :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 1 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id x) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id 0) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (id _)) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (negate _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (abs _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (_ + _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (head _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (ord _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,negate (id _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,abs (id _) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + x :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + 0 :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ + id _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,x + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,0 + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id _ + _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,_ * _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,f _ :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head xs :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head [] :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,head (_:_) :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord c :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,ord 'a' :: Int),(g :: Int -> Int,negate :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,z :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,-1 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id y :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id 1 :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id x) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id 0) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)+(f (g x) :: Int,[(x :: Int,id (id (id _)) :: Int),(g :: Int -> Int,abs :: Int -> Int),(f :: Int -> Int,id :: Int -> Int)],(f . g) x :: Int)++True
+ test/triexpr.hs view
@@ -0,0 +1,64 @@+import Test+import Data.Express.Triexpr (Triexpr)+import qualified Data.Express.Triexpr as T+++trie :: Triexpr Expr+trie = T.fromList allRules+++main :: IO ()+main = mainTest tests 10000+++tests :: Int -> [Bool]+tests n =+ [ True++ , length allRules == 99+ , all isWellTyped $ map fst allRules+ , all isWellTyped $ map snd allRules++ , T.lookup zero trie == []+ , T.lookup one trie == []+ , T.lookup two trie == []+ , T.lookup false trie == []+ , T.lookup true trie == []++ , T.lookup (one -+- two) trie+ == [ (xx -+- yy, [(yy, two), (xx, one)], yy -+- xx)+ ]++ , T.lookup ((one -+- two) -+- three) trie+ == [ (xx -+- yy, [(yy, three), (xx, one -+- two)], yy -+- xx)+ , ((xx -+- yy) -+- zz, [(zz, three), (yy, two), (xx, one)], xx -+- (yy -+- zz))+ ]++ , T.lookup ((false -&&- false) -&&- true) trie+ == [ (pp -&&- qq, [(qq,true),(pp,false -&&- false)], qq -&&- pp)+ , (pp -&&- true, [(pp,false -&&- false)], pp)+ , ((pp -&&- qq) -&&- rr, [(rr,true),(qq,false),(pp,false)], pp -&&- (qq -&&- rr))+ ]++ , T.lookup (not' true) trie+ == [ (not' true, [], false) ]++ , T.lookup (true -||- true) trie+ == [ (pp -||- pp, [(pp,true)], pp)+ , (pp -||- qq, [(qq,true),(pp,true)], qq -||- pp)+ , (pp -||- true, [(pp,true)], true)+ , (true -||- pp, [(pp,true)], true)+ ]++ , holds n $ \ees -> (sort . T.toList $ T.fromList ees) == sort (ees :: [(Expr,Int)])+ , holds n $ \ees -> (sort . T.toList $ T.fromList ees) == sort (ees :: [(Expr,Expr)])++ , holds n $ \e ees -> [(e1,ms,e2 :: Expr) | (e1,e2) <- ees, ms <- maybeToList (e `match` e1)]+ =$ sort $= T.lookup e (T.fromList ees)++ , holds n $ \e eus -> [(e1,ms,()) | (e1,()) <- sort eus, ms <- maybeToList (e `match` e1)]+ == (T.lookup e (T.fromList eus))++ , holds n $ \e -> [(e1,ms,e2) | (e1,e2) <- allRules, ms <- maybeToList (e `match` e1)]+ =$ sort $= T.lookup e trie+ ]