packages feed

code-conjure 0.5.2 → 0.5.4

raw patch · 70 files changed

+12423/−9404 lines, 70 filesdep ~leancheckPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: leancheck

API changes (from Hackage documentation)

- Conjure.Conjurable: instance Conjure.Conjurable.Conjurable GHC.Integer.Type.Integer
+ Conjure: [copyBindings] :: Args -> Bool
+ Conjure: conjureSize :: Conjurable a => a -> Int
+ Conjure: primOrdCaseFor :: Conjurable a => a -> Prim
+ Conjure.Conjurable: candidateDeconstructionsFromHoled :: Expr -> [Expr]
+ Conjure.Conjurable: instance Conjure.Conjurable.Conjurable GHC.Num.Integer.Integer
+ Conjure.Defn: isRedundantDefn :: Defn -> Bool
+ Conjure.Engine: [copyBindings] :: Args -> Bool
+ Conjure.Engine: caseBool :: Expr -> Expr -> Expr -> Expr
+ Conjure.Engine: caseOrdering :: Expr -> Expr -> Expr -> Expr -> Expr
+ Conjure.Expr: caseBool :: Expr -> Expr -> Expr -> Expr
+ Conjure.Expr: caseForOrd :: Typeable a => a -> Expr
+ Conjure.Expr: caseOrdering :: Expr -> Expr -> Expr -> Expr -> Expr
+ Conjure.Expr: deholings :: Expr -> Expr -> [Expr]
+ Conjure.Prim: primOrdCaseFor :: Conjurable a => a -> Prim
- Conjure: Args :: Int -> Int -> Int -> Int -> Int -> Int -> Bool -> Bool -> Bool -> Bool -> Args
+ Conjure: Args :: Int -> Int -> Int -> Int -> Int -> Int -> Bool -> Bool -> Bool -> Bool -> Bool -> Args
- Conjure.Engine: Args :: Int -> Int -> Int -> Int -> Int -> Int -> Bool -> Bool -> Bool -> Bool -> Args
+ Conjure.Engine: Args :: Int -> Int -> Int -> Int -> Int -> Int -> Bool -> Bool -> Bool -> Bool -> Bool -> Args

Files

.github/workflows/build.yml view
@@ -1,8 +1,10 @@ # Builds and tests this Haskell project on "GitHub Actions" #-# 2021  Rudy Matela+# 2021-2023  Rudy Matela # # some docs: https://github.com/haskell/actions/tree/main/setup+#+# The official haskell docker image: https://hub.docker.com/_/haskell name: build on: [push] jobs:@@ -11,24 +13,26 @@     steps:        - name: Cache ~/.cabal/packages-        uses: actions/cache@v2+        uses: actions/cache@v3         with:           path: ~/.cabal/packages-          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('hello.cabal') }}+          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('*.cabal') }}           restore-keys: v1-${{ runner.os }}-cabal-packages-        - name: Cache ~/.cabal and ~/.ghc-        uses: actions/cache@v2+        uses: actions/cache@v3         with:           path: |             ~/.cabal             !~/.cabal/packages             ~/.ghc-          key:          v1-${{ runner.os }}-cabal-ghc-latest-${{ hashFiles('hello.cabal') }}+          key:          v1-${{ runner.os }}-cabal-ghc-latest-${{ hashFiles('*.cabal') }}           restore-keys: v1-${{ runner.os }}-cabal-ghc-latest-        - run: du -hd3 ~/.cabal ~/.ghc || true +      - run: make --version+       - run: haddock --version || sudo apt-get install ghc-haddock       - run: ghc     --version       - run: cabal   --version@@ -36,50 +40,54 @@       - run: ghc-pkg list        - name: Check out repository-        uses: actions/checkout@v2+        uses: actions/checkout@v3 -      - run: cabal update+      - run: git --version+       - run: make install-dependencies -      - run: make-      - run: make test-      - run: make haddock+      # 2023-07: some projects were failing with missing base for GHC 9.6.+      #          Here we compile through cabal only provisionally.+      # - run: make+      # - run: make test+      # - run: make haddock       - run: make test-sdist-      - run: make test-via-cabal+      #- run: make test-via-cabal+      - run: cabal configure --enable-tests --enable-benchmarks --ghc-options="-O0"+      - run: cabal build+      - run: cabal test+      - run: cabal haddock     test-with-ghc:     strategy:       matrix:         ghc:+          - '9.4'+          - '9.2'           - '9.0'           - '8.10'-          - '8.8'           - '8.6'-          - '8.4'           - '8.2'-          - '8.0'-          - '7.10'-          - '7.8'     runs-on: ubuntu-latest     needs: build-and-test     container: haskell:${{ matrix.ghc }}     steps:       - name: Cache ~/.cabal/packages-        uses: actions/cache@v2+        uses: actions/cache@v3         with:           path: ~/.cabal/packages-          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('hello.cabal') }}+          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('*.cabal') }}           restore-keys: v1-${{ runner.os }}-cabal-packages-        - name: Cache ~/.cabal and ~/.ghc-        uses: actions/cache@v2+        uses: actions/cache@v3         with:           path: |             ~/.cabal             !~/.cabal/packages             ~/.ghc-          key:          v1-${{ runner.os }}-cabal-ghc-${{ matrix.ghc }}-${{ hashFiles('hello.cabal') }}+          key:          v1-${{ runner.os }}-cabal-ghc-${{ matrix.ghc }}-${{ hashFiles('*.cabal') }}           restore-keys: v1-${{ runner.os }}-cabal-ghc-${{ matrix.ghc }}-        - run: du -hd3 ~/.cabal ~/.ghc || true@@ -94,9 +102,8 @@       - run: ghc-pkg list        - name: Check out repository-        uses: actions/checkout@v2+        uses: actions/checkout@v3 -      - run: cabal update       - run: make install-dependencies        - run: make@@ -110,12 +117,12 @@     needs: build-and-test     steps:       - name: Setup Haskell's GHC and Cabal as required by current Stackage LTS-        uses: haskell/actions/setup@v1-        with: # lts-18.14-          ghc-version: '8.10.7'-          cabal-version: '3.2'+        uses: haskell/actions/setup@v2+        with: # lts-19.19+          ghc-version: '9.0.2'+          cabal-version: '3.4' -      - uses: actions/cache@v2+      - uses: actions/cache@v3         with:           path: ~/.stack           key:          v1-${{ runner.os }}-stack-${{ hashFiles('stack.yaml') }}@@ -124,5 +131,5 @@       - run: stack --version        - name: Check out repository-        uses: actions/checkout@v2+        uses: actions/checkout@v3       - run: make test-via-stack
.gitignore view
@@ -42,6 +42,7 @@ eg/pow eg/tapps eg/tree+eg/bst eg/replicate eg/setelem eg/sort
Makefile view
@@ -2,11 +2,12 @@ GHCFLAGS = -O2 -v0 \   $(shell grep -q "Arch Linux" /etc/lsb-release && echo -dynamic) HADDOCKFLAGS = \-  -i $(shell find ~/.cabal -name express.haddock | tail -1) \+  -i $(shell find ~/.cabal -name leancheck.haddock | tail -1) \+  -i $(shell find ~/.cabal -name express.haddock   | tail -1) \   -i $(shell find ~/.cabal -name speculate.haddock | tail -1) \   -i $(shell find /usr/share/doc/ghc/html/libraries -name template-haskell.haddock | tail -1) \-  $(shell grep -q "Arch Linux" /etc/lsb-release && echo --optghc=-dynamic)-HADDOCK_FILTER = grep -v "^Warning: Couldn't find .haddock for export [A-Z]$$"+  $(shell grep -q "Arch Linux" /etc/lsb-release && echo --optghc=-dynamic) \+  | grep -v "^Warning: Couldn't find .haddock for export [A-Z]$$" INSTALL_DEPS = leancheck express speculate  EG = \@@ -28,6 +29,7 @@   eg/spec \   eg/tapps \   eg/tree \+  eg/bst \   bench/candidates \   bench/ill-hit \   bench/longshot \
TODO.md view
@@ -3,29 +3,14 @@  A non-exhaustive list of things TO DO for Conjure. -* test `conjureCases` from `deriveConjurable`; -* consider not breaking in some cases (increased crossproduct of patterns)--* reduce the number of `deconstructions` considered:--	1. place a `traceShowId` in `deconstructions :: [Expr]`-	2. run the GCD example--		[_ `mod` y :: Int,x `mod` _ :: Int,_ `mod` x :: Int,y `mod` _ :: Int,0 `mod` _ :: Int,0 `mod` _ :: Int]--	3. there's no need to go variable by variable.  Just generating expressions-	   with a _single hole_ should be enough.--- ### for later -* allow specifying properties that need to be true--* allow recursion under any lazy functions (discover them by testing!)+* pretty-print top-level if and case expressions? -* pretty-print top-level ifs?+* consider not breaking arguments in some cases+  (increased crossproduct of patterns).+  but which cases?  * exclude magic numbers?  e.g.: `1+1`? @@ -49,5 +34,5 @@   This file is part of Conjure,-(C) 2021 Rudy Matela,+(C) 2021-2022 Rudy Matela, Distribued under the 3-Clause BSD license.
bench/candidates.hs view
@@ -75,3 +75,13 @@     , prim "||" (||)     , prim "not" not     ]++  -- Degenerate case:+  -- lots of redundancy, since 0 `mod` 0 = undefined+  -- Speculate is not able to discover that x `mod` x = 0+  -- nevertheless useful for observing candidate filtering+  -- through other means+  printCandidates 9 6 "gcd" (undefined :: Int -> Int -> Int)+    [ pr (0::Int)+    , prim "`mod`" (mod :: Int -> Int -> Int)+    ]
bench/candidates.out view
@@ -869,8874 +869,11186 @@ Candidates for: ? :: Int -> Int -> Int   pruning with 10/23 rules   [3,3,4,10,17,26,54,93,162] direct candidates, 0 duplicates-  [3,11,42,117,346,955,2714,7510,20754] pattern candidates, 0 duplicates--rules:-x * y == x + y-x * y == y + x-x + 0 == x-0 + x == x-dec (x + y) == x + dec y-dec (x + y) == y + dec x-dec (x + y) == dec x + y-dec (x + y) == dec y + x-(x + y) + z == x + (y + z)-(x + y) + z == y + (x + z)-equations:-y + x == x + y-y + dec x == x + dec y-dec x + y == x + dec y-dec y + x == dec x + y-x + dec 0 == dec x-dec 0 + x == dec x-y + (x + z) == x + (y + z)-z + (x + y) == x + (y + z)-z + (y + x) == x + (y + z)-y + dec (dec x) == x + dec (dec y)-dec (dec x) + y == x + dec (dec y)-x + dec (dec 0) == dec (dec x)-dec (dec 0) + x == dec (dec x)--direct candidates:--x ? y  =  x--x ? y  =  y--x ? y  =  0--x ? y  =  dec x--x ? y  =  dec y--x ? y  =  dec 0--x ? y  =  x + x--x ? y  =  x + y--x ? y  =  y + x--x ? y  =  y + y--x ? y  =  dec x + y--x ? y  =  dec y + x--x ? y  =  dec 0 + x--x ? y  =  dec 0 + y--x ? y  =  x + dec x--x ? y  =  x + dec y--x ? y  =  x + dec 0--x ? y  =  y + dec x--x ? y  =  y + dec y--x ? y  =  y + dec 0--x ? y  =  x + (x + x)--x ? y  =  x + (x + y)--x ? y  =  x + (y + x)--x ? y  =  x + (y + y)--x ? y  =  y + (x + x)--x ? y  =  y + (x + y)--x ? y  =  y + (y + x)--x ? y  =  y + (y + y)--x ? y  =  dec x + dec x--x ? y  =  dec x + dec y--x ? y  =  dec x + dec 0--x ? y  =  dec y + dec x--x ? y  =  dec y + dec y--x ? y  =  dec y + dec 0--x ? y  =  dec 0 + dec x--x ? y  =  dec 0 + dec y--x ? y  =  dec 0 + dec 0--x ? y  =  x + (dec x + y)--x ? y  =  x + (dec y + x)--x ? y  =  x + (dec 0 + x)--x ? y  =  x + (dec 0 + y)--x ? y  =  x + (x + dec x)--x ? y  =  x + (x + dec y)--x ? y  =  x + (x + dec 0)--x ? y  =  x + (y + dec x)--x ? y  =  x + (y + dec y)--x ? y  =  x + (y + dec 0)--x ? y  =  y + (dec x + y)--x ? y  =  y + (dec y + x)--x ? y  =  y + (dec 0 + x)--x ? y  =  y + (dec 0 + y)--x ? y  =  y + (x + dec x)--x ? y  =  y + (x + dec y)--x ? y  =  y + (x + dec 0)--x ? y  =  y + (y + dec x)--x ? y  =  y + (y + dec y)--x ? y  =  y + (y + dec 0)--x ? y  =  dec x + (y + y)--x ? y  =  dec y + (x + x)--x ? y  =  dec 0 + (x + x)--x ? y  =  dec 0 + (x + y)--x ? y  =  dec 0 + (y + x)--x ? y  =  dec 0 + (y + y)---pattern candidates:--x ? y  =  x--x ? y  =  y--x ? y  =  0--x ? y  =  dec x--x ? y  =  dec y--x ? y  =  dec 0--x ? 0  =  x-x ? y  =  y--x ? 0  =  x-x ? y  =  0--x ? 0  =  0-x ? y  =  x--x ? 0  =  0-x ? y  =  y--0 ? x  =  x-x ? y  =  y--0 ? x  =  x-x ? y  =  0--0 ? x  =  0-x ? y  =  x--0 ? x  =  0-x ? y  =  y--x ? y  =  x + x--x ? y  =  x + y--x ? y  =  y + x--x ? y  =  y + y--x ? y  =  dec (dec x)--x ? y  =  dec (dec y)--x ? y  =  dec (dec 0)--x ? 0  =  x-x ? y  =  dec x--x ? 0  =  x-x ? y  =  dec y--x ? 0  =  x-x ? y  =  dec 0--x ? 0  =  0-x ? y  =  dec x--x ? 0  =  0-x ? y  =  dec y--x ? 0  =  0-x ? y  =  dec 0--x ? 0  =  dec x-x ? y  =  x--x ? 0  =  dec x-x ? y  =  y--x ? 0  =  dec x-x ? y  =  0--x ? 0  =  dec 0-x ? y  =  x--x ? 0  =  dec 0-x ? y  =  y--x ? 0  =  dec 0-x ? y  =  0--0 ? x  =  x-x ? y  =  dec x--0 ? x  =  x-x ? y  =  dec y--0 ? x  =  x-x ? y  =  dec 0--0 ? x  =  0-x ? y  =  dec x--0 ? x  =  0-x ? y  =  dec y--0 ? x  =  0-x ? y  =  dec 0--0 ? x  =  dec x-x ? y  =  x--0 ? x  =  dec x-x ? y  =  y--0 ? x  =  dec x-x ? y  =  0--0 ? x  =  dec 0-x ? y  =  x--0 ? x  =  dec 0-x ? y  =  y--0 ? x  =  dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y--x ? y  =  dec x + x--x ? y  =  dec x + y--x ? y  =  dec y + x--x ? y  =  dec y + y--x ? y  =  dec 0 + x--x ? y  =  dec 0 + y--x ? y  =  dec (dec (dec x))--x ? y  =  dec (dec (dec y))--x ? y  =  dec (dec (dec 0))--x ? y  =  x + dec x--x ? y  =  x + dec y--x ? y  =  x + dec 0--x ? y  =  y + dec x--x ? y  =  y + dec y--x ? y  =  y + dec 0--x ? 0  =  x-x ? y  =  x + x--x ? 0  =  x-x ? y  =  x + y--x ? 0  =  x-x ? y  =  y + x--x ? 0  =  x-x ? y  =  y + y--x ? 0  =  x-x ? y  =  dec (dec x)--x ? 0  =  x-x ? y  =  dec (dec y)--x ? 0  =  x-x ? y  =  dec (dec 0)--x ? 0  =  0-x ? y  =  x + x--x ? 0  =  0-x ? y  =  x + y--x ? 0  =  0-x ? y  =  y + x--x ? 0  =  0-x ? y  =  y + y--x ? 0  =  0-x ? y  =  dec (dec x)--x ? 0  =  0-x ? y  =  dec (dec y)--x ? 0  =  0-x ? y  =  dec (dec 0)--x ? 0  =  dec x-x ? y  =  dec y--x ? 0  =  dec x-x ? y  =  dec 0--x ? 0  =  dec 0-x ? y  =  dec x--x ? 0  =  dec 0-x ? y  =  dec y--x ? 0  =  x + x-x ? y  =  x--x ? 0  =  x + x-x ? y  =  y--x ? 0  =  x + x-x ? y  =  0--x ? 0  =  dec (dec x)-x ? y  =  x--x ? 0  =  dec (dec x)-x ? y  =  y--x ? 0  =  dec (dec x)-x ? y  =  0--x ? 0  =  dec (dec 0)-x ? y  =  x--x ? 0  =  dec (dec 0)-x ? y  =  y--x ? 0  =  dec (dec 0)-x ? y  =  0--0 ? x  =  x-x ? y  =  x + x--0 ? x  =  x-x ? y  =  x + y--0 ? x  =  x-x ? y  =  y + x--0 ? x  =  x-x ? y  =  y + y--0 ? x  =  x-x ? y  =  dec (dec x)--0 ? x  =  x-x ? y  =  dec (dec y)--0 ? x  =  x-x ? y  =  dec (dec 0)--0 ? x  =  0-x ? y  =  x + x--0 ? x  =  0-x ? y  =  x + y--0 ? x  =  0-x ? y  =  y + x--0 ? x  =  0-x ? y  =  y + y--0 ? x  =  0-x ? y  =  dec (dec x)--0 ? x  =  0-x ? y  =  dec (dec y)--0 ? x  =  0-x ? y  =  dec (dec 0)--0 ? x  =  dec x-x ? y  =  dec y--0 ? x  =  dec x-x ? y  =  dec 0--0 ? x  =  dec 0-x ? y  =  dec x--0 ? x  =  dec 0-x ? y  =  dec y--0 ? x  =  x + x-x ? y  =  x--0 ? x  =  x + x-x ? y  =  y--0 ? x  =  x + x-x ? y  =  0--0 ? x  =  dec (dec x)-x ? y  =  x--0 ? x  =  dec (dec x)-x ? y  =  y--0 ? x  =  dec (dec x)-x ? y  =  0--0 ? x  =  dec (dec 0)-x ? y  =  x--0 ? x  =  dec (dec 0)-x ? y  =  y--0 ? x  =  dec (dec 0)-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  0--x ? 0  =  x-x ? y  =  x ? dec y--x ? 0  =  x-x ? y  =  y ? dec y--x ? 0  =  x-x ? y  =  0 ? dec y--x ? 0  =  x-x ? y  =  dec x ? x--x ? 0  =  x-x ? y  =  dec x ? y--x ? 0  =  x-x ? y  =  dec x ? 0--x ? 0  =  0-x ? y  =  x ? dec y--x ? 0  =  0-x ? y  =  y ? dec y--x ? 0  =  0-x ? y  =  0 ? dec y--x ? 0  =  0-x ? y  =  dec x ? x--x ? 0  =  0-x ? y  =  dec x ? y--x ? 0  =  0-x ? y  =  dec x ? 0--0 ? x  =  x-x ? y  =  x ? dec y--0 ? x  =  x-x ? y  =  y ? dec y--0 ? x  =  x-x ? y  =  0 ? dec y--0 ? x  =  x-x ? y  =  dec x ? x--0 ? x  =  x-x ? y  =  dec x ? y--0 ? x  =  x-x ? y  =  dec x ? 0--0 ? x  =  0-x ? y  =  x ? dec y--0 ? x  =  0-x ? y  =  y ? dec y--0 ? x  =  0-x ? y  =  0 ? dec y--0 ? x  =  0-x ? y  =  dec x ? x--0 ? x  =  0-x ? y  =  dec x ? y--0 ? x  =  0-x ? y  =  dec x ? 0--x ? y  =  dec (dec x) + x--x ? y  =  dec (dec x) + y--x ? y  =  dec (dec y) + x--x ? y  =  dec (dec y) + y--x ? y  =  dec (dec 0) + x--x ? y  =  dec (dec 0) + y--x ? y  =  dec (dec (dec (dec x)))--x ? y  =  dec (dec (dec (dec y)))--x ? y  =  dec (dec (dec (dec 0)))--x ? y  =  x + (x + x)--x ? y  =  x + (x + y)--x ? y  =  x + (y + x)--x ? y  =  x + (y + y)--x ? y  =  x + dec (dec x)--x ? y  =  x + dec (dec y)--x ? y  =  x + dec (dec 0)--x ? y  =  y + (x + x)--x ? y  =  y + (x + y)--x ? y  =  y + (y + x)--x ? y  =  y + (y + y)--x ? y  =  y + dec (dec x)--x ? y  =  y + dec (dec y)--x ? y  =  y + dec (dec 0)--x ? y  =  dec x + dec x--x ? y  =  dec x + dec y--x ? y  =  dec x + dec 0--x ? y  =  dec y + dec x--x ? y  =  dec y + dec y--x ? y  =  dec y + dec 0--x ? y  =  dec 0 + dec x--x ? y  =  dec 0 + dec y--x ? y  =  dec 0 + dec 0--x ? 0  =  x-x ? y  =  dec x + x--x ? 0  =  x-x ? y  =  dec x + y--x ? 0  =  x-x ? y  =  dec y + x--x ? 0  =  x-x ? y  =  dec y + y--x ? 0  =  x-x ? y  =  dec 0 + x--x ? 0  =  x-x ? y  =  dec 0 + y--x ? 0  =  x-x ? y  =  dec (dec (dec x))--x ? 0  =  x-x ? y  =  dec (dec (dec y))--x ? 0  =  x-x ? y  =  dec (dec (dec 0))--x ? 0  =  x-x ? y  =  x + dec x--x ? 0  =  x-x ? y  =  x + dec y--x ? 0  =  x-x ? y  =  x + dec 0--x ? 0  =  x-x ? y  =  y + dec x--x ? 0  =  x-x ? y  =  y + dec y--x ? 0  =  x-x ? y  =  y + dec 0--x ? 0  =  0-x ? y  =  dec x + x--x ? 0  =  0-x ? y  =  dec x + y--x ? 0  =  0-x ? y  =  dec y + x--x ? 0  =  0-x ? y  =  dec y + y--x ? 0  =  0-x ? y  =  dec 0 + x--x ? 0  =  0-x ? y  =  dec 0 + y--x ? 0  =  0-x ? y  =  dec (dec (dec x))--x ? 0  =  0-x ? y  =  dec (dec (dec y))--x ? 0  =  0-x ? y  =  dec (dec (dec 0))--x ? 0  =  0-x ? y  =  x + dec x--x ? 0  =  0-x ? y  =  x + dec y--x ? 0  =  0-x ? y  =  x + dec 0--x ? 0  =  0-x ? y  =  y + dec x--x ? 0  =  0-x ? y  =  y + dec y--x ? 0  =  0-x ? y  =  y + dec 0--x ? 0  =  dec x-x ? y  =  x + x--x ? 0  =  dec x-x ? y  =  x + y--x ? 0  =  dec x-x ? y  =  y + x--x ? 0  =  dec x-x ? y  =  y + y--x ? 0  =  dec x-x ? y  =  dec (dec x)--x ? 0  =  dec x-x ? y  =  dec (dec y)--x ? 0  =  dec x-x ? y  =  dec (dec 0)--x ? 0  =  dec 0-x ? y  =  x + x--x ? 0  =  dec 0-x ? y  =  x + y--x ? 0  =  dec 0-x ? y  =  y + x--x ? 0  =  dec 0-x ? y  =  y + y--x ? 0  =  dec 0-x ? y  =  dec (dec x)--x ? 0  =  dec 0-x ? y  =  dec (dec y)--x ? 0  =  dec 0-x ? y  =  dec (dec 0)--x ? 0  =  x + x-x ? y  =  dec x--x ? 0  =  x + x-x ? y  =  dec y--x ? 0  =  x + x-x ? y  =  dec 0--x ? 0  =  dec (dec x)-x ? y  =  dec x--x ? 0  =  dec (dec x)-x ? y  =  dec y--x ? 0  =  dec (dec x)-x ? y  =  dec 0--x ? 0  =  dec (dec 0)-x ? y  =  dec x--x ? 0  =  dec (dec 0)-x ? y  =  dec y--x ? 0  =  dec (dec 0)-x ? y  =  dec 0--x ? 0  =  dec x + x-x ? y  =  x--x ? 0  =  dec x + x-x ? y  =  y--x ? 0  =  dec x + x-x ? y  =  0--x ? 0  =  dec 0 + x-x ? y  =  x--x ? 0  =  dec 0 + x-x ? y  =  y--x ? 0  =  dec 0 + x-x ? y  =  0--x ? 0  =  dec (dec (dec x))-x ? y  =  x--x ? 0  =  dec (dec (dec x))-x ? y  =  y--x ? 0  =  dec (dec (dec x))-x ? y  =  0--x ? 0  =  dec (dec (dec 0))-x ? y  =  x--x ? 0  =  dec (dec (dec 0))-x ? y  =  y--x ? 0  =  dec (dec (dec 0))-x ? y  =  0--x ? 0  =  x + dec x-x ? y  =  x--x ? 0  =  x + dec x-x ? y  =  y--x ? 0  =  x + dec x-x ? y  =  0--x ? 0  =  x + dec 0-x ? y  =  x--x ? 0  =  x + dec 0-x ? y  =  y--x ? 0  =  x + dec 0-x ? y  =  0--0 ? x  =  x-x ? y  =  dec x + x--0 ? x  =  x-x ? y  =  dec x + y--0 ? x  =  x-x ? y  =  dec y + x--0 ? x  =  x-x ? y  =  dec y + y--0 ? x  =  x-x ? y  =  dec 0 + x--0 ? x  =  x-x ? y  =  dec 0 + y--0 ? x  =  x-x ? y  =  dec (dec (dec x))--0 ? x  =  x-x ? y  =  dec (dec (dec y))--0 ? x  =  x-x ? y  =  dec (dec (dec 0))--0 ? x  =  x-x ? y  =  x + dec x--0 ? x  =  x-x ? y  =  x + dec y--0 ? x  =  x-x ? y  =  x + dec 0--0 ? x  =  x-x ? y  =  y + dec x--0 ? x  =  x-x ? y  =  y + dec y--0 ? x  =  x-x ? y  =  y + dec 0--0 ? x  =  0-x ? y  =  dec x + x--0 ? x  =  0-x ? y  =  dec x + y--0 ? x  =  0-x ? y  =  dec y + x--0 ? x  =  0-x ? y  =  dec y + y--0 ? x  =  0-x ? y  =  dec 0 + x--0 ? x  =  0-x ? y  =  dec 0 + y--0 ? x  =  0-x ? y  =  dec (dec (dec x))--0 ? x  =  0-x ? y  =  dec (dec (dec y))--0 ? x  =  0-x ? y  =  dec (dec (dec 0))--0 ? x  =  0-x ? y  =  x + dec x--0 ? x  =  0-x ? y  =  x + dec y--0 ? x  =  0-x ? y  =  x + dec 0--0 ? x  =  0-x ? y  =  y + dec x--0 ? x  =  0-x ? y  =  y + dec y--0 ? x  =  0-x ? y  =  y + dec 0--0 ? x  =  dec x-x ? y  =  x + x--0 ? x  =  dec x-x ? y  =  x + y--0 ? x  =  dec x-x ? y  =  y + x--0 ? x  =  dec x-x ? y  =  y + y--0 ? x  =  dec x-x ? y  =  dec (dec x)--0 ? x  =  dec x-x ? y  =  dec (dec y)--0 ? x  =  dec x-x ? y  =  dec (dec 0)--0 ? x  =  dec 0-x ? y  =  x + x--0 ? x  =  dec 0-x ? y  =  x + y--0 ? x  =  dec 0-x ? y  =  y + x--0 ? x  =  dec 0-x ? y  =  y + y--0 ? x  =  dec 0-x ? y  =  dec (dec x)--0 ? x  =  dec 0-x ? y  =  dec (dec y)--0 ? x  =  dec 0-x ? y  =  dec (dec 0)--0 ? x  =  x + x-x ? y  =  dec x--0 ? x  =  x + x-x ? y  =  dec y--0 ? x  =  x + x-x ? y  =  dec 0--0 ? x  =  dec (dec x)-x ? y  =  dec x--0 ? x  =  dec (dec x)-x ? y  =  dec y--0 ? x  =  dec (dec x)-x ? y  =  dec 0--0 ? x  =  dec (dec 0)-x ? y  =  dec x--0 ? x  =  dec (dec 0)-x ? y  =  dec y--0 ? x  =  dec (dec 0)-x ? y  =  dec 0--0 ? x  =  dec x + x-x ? y  =  x--0 ? x  =  dec x + x-x ? y  =  y--0 ? x  =  dec x + x-x ? y  =  0--0 ? x  =  dec 0 + x-x ? y  =  x--0 ? x  =  dec 0 + x-x ? y  =  y--0 ? x  =  dec 0 + x-x ? y  =  0--0 ? x  =  dec (dec (dec x))-x ? y  =  x--0 ? x  =  dec (dec (dec x))-x ? y  =  y--0 ? x  =  dec (dec (dec x))-x ? y  =  0--0 ? x  =  dec (dec (dec 0))-x ? y  =  x--0 ? x  =  dec (dec (dec 0))-x ? y  =  y--0 ? x  =  dec (dec (dec 0))-x ? y  =  0--0 ? x  =  x + dec x-x ? y  =  x--0 ? x  =  x + dec x-x ? y  =  y--0 ? x  =  x + dec x-x ? y  =  0--0 ? x  =  x + dec 0-x ? y  =  x--0 ? x  =  x + dec 0-x ? y  =  y--0 ? x  =  x + dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec x)-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec x)-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec x)-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec 0)-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec 0)-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec 0)-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec x)-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec x)-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec x)-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec 0)-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec 0)-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec 0)-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  0-x ? y  =  0--x ? 0  =  x-x ? y  =  x ? dec (dec y)--x ? 0  =  x-x ? y  =  y ? dec (dec y)--x ? 0  =  x-x ? y  =  0 ? dec (dec y)--x ? 0  =  x-x ? y  =  dec x ? dec x--x ? 0  =  x-x ? y  =  dec x ? dec y--x ? 0  =  x-x ? y  =  dec x ? dec 0--x ? 0  =  x-x ? y  =  dec y ? dec y--x ? 0  =  x-x ? y  =  dec 0 ? dec y--x ? 0  =  x-x ? y  =  dec (dec x) ? x--x ? 0  =  x-x ? y  =  dec (dec x) ? y--x ? 0  =  x-x ? y  =  dec (dec x) ? 0--x ? 0  =  0-x ? y  =  x ? dec (dec y)--x ? 0  =  0-x ? y  =  y ? dec (dec y)--x ? 0  =  0-x ? y  =  0 ? dec (dec y)--x ? 0  =  0-x ? y  =  dec x ? dec x--x ? 0  =  0-x ? y  =  dec x ? dec y--x ? 0  =  0-x ? y  =  dec x ? dec 0--x ? 0  =  0-x ? y  =  dec y ? dec y--x ? 0  =  0-x ? y  =  dec 0 ? dec y--x ? 0  =  0-x ? y  =  dec (dec x) ? x--x ? 0  =  0-x ? y  =  dec (dec x) ? y--x ? 0  =  0-x ? y  =  dec (dec x) ? 0--0 ? x  =  x-x ? y  =  x ? dec (dec y)--0 ? x  =  x-x ? y  =  y ? dec (dec y)--0 ? x  =  x-x ? y  =  0 ? dec (dec y)--0 ? x  =  x-x ? y  =  dec x ? dec x--0 ? x  =  x-x ? y  =  dec x ? dec y--0 ? x  =  x-x ? y  =  dec x ? dec 0--0 ? x  =  x-x ? y  =  dec y ? dec y--0 ? x  =  x-x ? y  =  dec 0 ? dec y--0 ? x  =  x-x ? y  =  dec (dec x) ? x--0 ? x  =  x-x ? y  =  dec (dec x) ? y--0 ? x  =  x-x ? y  =  dec (dec x) ? 0--0 ? x  =  0-x ? y  =  x ? dec (dec y)--0 ? x  =  0-x ? y  =  y ? dec (dec y)--0 ? x  =  0-x ? y  =  0 ? dec (dec y)--0 ? x  =  0-x ? y  =  dec x ? dec x--0 ? x  =  0-x ? y  =  dec x ? dec y--0 ? x  =  0-x ? y  =  dec x ? dec 0--0 ? x  =  0-x ? y  =  dec y ? dec y--0 ? x  =  0-x ? y  =  dec 0 ? dec y--0 ? x  =  0-x ? y  =  dec (dec x) ? x--0 ? x  =  0-x ? y  =  dec (dec x) ? y--0 ? x  =  0-x ? y  =  dec (dec x) ? 0--x ? 0  =  x-x ? y  =  dec (x ? dec y)--x ? 0  =  x-x ? y  =  dec (y ? dec y)--x ? 0  =  x-x ? y  =  dec (0 ? dec y)--x ? 0  =  x-x ? y  =  dec (dec x ? x)--x ? 0  =  x-x ? y  =  dec (dec x ? y)--x ? 0  =  x-x ? y  =  dec (dec x ? 0)--x ? 0  =  0-x ? y  =  dec (x ? dec y)--x ? 0  =  0-x ? y  =  dec (y ? dec y)--x ? 0  =  0-x ? y  =  dec (0 ? dec y)--x ? 0  =  0-x ? y  =  dec (dec x ? x)--x ? 0  =  0-x ? y  =  dec (dec x ? y)--x ? 0  =  0-x ? y  =  dec (dec x ? 0)--x ? 0  =  dec x-x ? y  =  x ? dec y--x ? 0  =  dec x-x ? y  =  y ? dec y--x ? 0  =  dec x-x ? y  =  0 ? dec y--x ? 0  =  dec x-x ? y  =  dec x ? x--x ? 0  =  dec x-x ? y  =  dec x ? y--x ? 0  =  dec x-x ? y  =  dec x ? 0--x ? 0  =  dec 0-x ? y  =  x ? dec y--x ? 0  =  dec 0-x ? y  =  y ? dec y--x ? 0  =  dec 0-x ? y  =  0 ? dec y--x ? 0  =  dec 0-x ? y  =  dec x ? x--x ? 0  =  dec 0-x ? y  =  dec x ? y--x ? 0  =  dec 0-x ? y  =  dec x ? 0--0 ? x  =  x-x ? y  =  dec (x ? dec y)--0 ? x  =  x-x ? y  =  dec (y ? dec y)--0 ? x  =  x-x ? y  =  dec (0 ? dec y)--0 ? x  =  x-x ? y  =  dec (dec x ? x)--0 ? x  =  x-x ? y  =  dec (dec x ? y)--0 ? x  =  x-x ? y  =  dec (dec x ? 0)--0 ? x  =  0-x ? y  =  dec (x ? dec y)--0 ? x  =  0-x ? y  =  dec (y ? dec y)--0 ? x  =  0-x ? y  =  dec (0 ? dec y)--0 ? x  =  0-x ? y  =  dec (dec x ? x)--0 ? x  =  0-x ? y  =  dec (dec x ? y)--0 ? x  =  0-x ? y  =  dec (dec x ? 0)--0 ? x  =  dec x-x ? y  =  x ? dec y--0 ? x  =  dec x-x ? y  =  y ? dec y--0 ? x  =  dec x-x ? y  =  0 ? dec y--0 ? x  =  dec x-x ? y  =  dec x ? x--0 ? x  =  dec x-x ? y  =  dec x ? y--0 ? x  =  dec x-x ? y  =  dec x ? 0--0 ? x  =  dec 0-x ? y  =  x ? dec y--0 ? x  =  dec 0-x ? y  =  y ? dec y--0 ? x  =  dec 0-x ? y  =  0 ? dec y--0 ? x  =  dec 0-x ? y  =  dec x ? x--0 ? x  =  dec 0-x ? y  =  dec x ? y--0 ? x  =  dec 0-x ? y  =  dec x ? 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x ? dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y ? dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  0 ? dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec x ? x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec x ? y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec x ? 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x ? x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x ? 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x ? x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x ? 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x ? x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x ? 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x ? dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y ? dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  0 ? dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec x ? x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec x ? y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec x ? 0--0 ? 0  =  0-0 ? x  =  x ? dec x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0 ? dec x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x ? dec x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0 ? dec x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x ? dec x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0 ? dec x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x ? dec x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0 ? dec x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x ? dec x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0 ? dec x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x ? dec x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0 ? dec x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x ? dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y ? dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  0 ? dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec x ? x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec x ? y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec x ? 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x ? x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x ? 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x ? x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x ? 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x ? x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x ? 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x ? dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y ? dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  0 ? dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec x ? x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec x ? y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec x ? 0--x ? y  =  dec (dec (dec x)) + x--x ? y  =  dec (dec (dec x)) + y--x ? y  =  dec (dec (dec y)) + x--x ? y  =  dec (dec (dec y)) + y--x ? y  =  dec (dec (dec 0)) + x--x ? y  =  dec (dec (dec 0)) + y--x ? y  =  dec (dec (dec (dec (dec x))))--x ? y  =  dec (dec (dec (dec (dec y))))--x ? y  =  dec (dec (dec (dec (dec 0))))--x ? y  =  x + (dec x + x)--x ? y  =  x + (dec x + y)--x ? y  =  x + (dec y + x)--x ? y  =  x + (dec y + y)--x ? y  =  x + (dec 0 + x)--x ? y  =  x + (dec 0 + y)--x ? y  =  x + dec (dec (dec x))--x ? y  =  x + dec (dec (dec y))--x ? y  =  x + dec (dec (dec 0))--x ? y  =  x + (x + dec x)--x ? y  =  x + (x + dec y)--x ? y  =  x + (x + dec 0)--x ? y  =  x + (y + dec x)--x ? y  =  x + (y + dec y)--x ? y  =  x + (y + dec 0)--x ? y  =  y + (dec x + x)--x ? y  =  y + (dec x + y)--x ? y  =  y + (dec y + x)--x ? y  =  y + (dec y + y)--x ? y  =  y + (dec 0 + x)--x ? y  =  y + (dec 0 + y)--x ? y  =  y + dec (dec (dec x))--x ? y  =  y + dec (dec (dec y))--x ? y  =  y + dec (dec (dec 0))--x ? y  =  y + (x + dec x)--x ? y  =  y + (x + dec y)--x ? y  =  y + (x + dec 0)--x ? y  =  y + (y + dec x)--x ? y  =  y + (y + dec y)--x ? y  =  y + (y + dec 0)--x ? y  =  dec x + (x + x)--x ? y  =  dec x + (x + y)--x ? y  =  dec x + (y + x)--x ? y  =  dec x + (y + y)--x ? y  =  dec x + dec (dec x)--x ? y  =  dec x + dec (dec y)--x ? y  =  dec x + dec (dec 0)--x ? y  =  dec y + (x + x)--x ? y  =  dec y + (x + y)--x ? y  =  dec y + (y + x)--x ? y  =  dec y + (y + y)--x ? y  =  dec y + dec (dec x)--x ? y  =  dec y + dec (dec y)--x ? y  =  dec y + dec (dec 0)--x ? y  =  dec 0 + (x + x)--x ? y  =  dec 0 + (x + y)--x ? y  =  dec 0 + (y + x)--x ? y  =  dec 0 + (y + y)--x ? y  =  dec 0 + dec (dec x)--x ? y  =  dec 0 + dec (dec y)--x ? y  =  dec 0 + dec (dec 0)--x ? y  =  dec (dec x) + dec x--x ? y  =  dec (dec x) + dec y--x ? y  =  dec (dec x) + dec 0--x ? y  =  dec (dec y) + dec x--x ? y  =  dec (dec y) + dec y--x ? y  =  dec (dec y) + dec 0--x ? y  =  dec (dec 0) + dec x--x ? y  =  dec (dec 0) + dec y--x ? y  =  dec (dec 0) + dec 0--x ? 0  =  x-x ? y  =  dec (dec x) + x--x ? 0  =  x-x ? y  =  dec (dec x) + y--x ? 0  =  x-x ? y  =  dec (dec y) + x--x ? 0  =  x-x ? y  =  dec (dec y) + y--x ? 0  =  x-x ? y  =  dec (dec 0) + x--x ? 0  =  x-x ? y  =  dec (dec 0) + y--x ? 0  =  x-x ? y  =  dec (dec (dec (dec x)))--x ? 0  =  x-x ? y  =  dec (dec (dec (dec y)))--x ? 0  =  x-x ? y  =  dec (dec (dec (dec 0)))--x ? 0  =  x-x ? y  =  x + (x + x)--x ? 0  =  x-x ? y  =  x + (x + y)--x ? 0  =  x-x ? y  =  x + (y + x)--x ? 0  =  x-x ? y  =  x + (y + y)--x ? 0  =  x-x ? y  =  x + dec (dec x)--x ? 0  =  x-x ? y  =  x + dec (dec y)--x ? 0  =  x-x ? y  =  x + dec (dec 0)--x ? 0  =  x-x ? y  =  y + (x + x)--x ? 0  =  x-x ? y  =  y + (x + y)--x ? 0  =  x-x ? y  =  y + (y + x)--x ? 0  =  x-x ? y  =  y + (y + y)--x ? 0  =  x-x ? y  =  y + dec (dec x)--x ? 0  =  x-x ? y  =  y + dec (dec y)--x ? 0  =  x-x ? y  =  y + dec (dec 0)--x ? 0  =  x-x ? y  =  dec x + dec x--x ? 0  =  x-x ? y  =  dec x + dec y--x ? 0  =  x-x ? y  =  dec x + dec 0--x ? 0  =  x-x ? y  =  dec y + dec x--x ? 0  =  x-x ? y  =  dec y + dec y--x ? 0  =  x-x ? y  =  dec y + dec 0--x ? 0  =  x-x ? y  =  dec 0 + dec x--x ? 0  =  x-x ? y  =  dec 0 + dec y--x ? 0  =  x-x ? y  =  dec 0 + dec 0--x ? 0  =  0-x ? y  =  dec (dec x) + x--x ? 0  =  0-x ? y  =  dec (dec x) + y--x ? 0  =  0-x ? y  =  dec (dec y) + x--x ? 0  =  0-x ? y  =  dec (dec y) + y--x ? 0  =  0-x ? y  =  dec (dec 0) + x--x ? 0  =  0-x ? y  =  dec (dec 0) + y--x ? 0  =  0-x ? y  =  dec (dec (dec (dec x)))--x ? 0  =  0-x ? y  =  dec (dec (dec (dec y)))--x ? 0  =  0-x ? y  =  dec (dec (dec (dec 0)))--x ? 0  =  0-x ? y  =  x + (x + x)--x ? 0  =  0-x ? y  =  x + (x + y)--x ? 0  =  0-x ? y  =  x + (y + x)--x ? 0  =  0-x ? y  =  x + (y + y)--x ? 0  =  0-x ? y  =  x + dec (dec x)--x ? 0  =  0-x ? y  =  x + dec (dec y)--x ? 0  =  0-x ? y  =  x + dec (dec 0)--x ? 0  =  0-x ? y  =  y + (x + x)--x ? 0  =  0-x ? y  =  y + (x + y)--x ? 0  =  0-x ? y  =  y + (y + x)--x ? 0  =  0-x ? y  =  y + (y + y)--x ? 0  =  0-x ? y  =  y + dec (dec x)--x ? 0  =  0-x ? y  =  y + dec (dec y)--x ? 0  =  0-x ? y  =  y + dec (dec 0)--x ? 0  =  0-x ? y  =  dec x + dec x--x ? 0  =  0-x ? y  =  dec x + dec y--x ? 0  =  0-x ? y  =  dec x + dec 0--x ? 0  =  0-x ? y  =  dec y + dec x--x ? 0  =  0-x ? y  =  dec y + dec y--x ? 0  =  0-x ? y  =  dec y + dec 0--x ? 0  =  0-x ? y  =  dec 0 + dec x--x ? 0  =  0-x ? y  =  dec 0 + dec y--x ? 0  =  0-x ? y  =  dec 0 + dec 0--x ? 0  =  dec x-x ? y  =  dec x + x--x ? 0  =  dec x-x ? y  =  dec x + y--x ? 0  =  dec x-x ? y  =  dec y + x--x ? 0  =  dec x-x ? y  =  dec y + y--x ? 0  =  dec x-x ? y  =  dec 0 + x--x ? 0  =  dec x-x ? y  =  dec 0 + y--x ? 0  =  dec x-x ? y  =  dec (dec (dec x))--x ? 0  =  dec x-x ? y  =  dec (dec (dec y))--x ? 0  =  dec x-x ? y  =  dec (dec (dec 0))--x ? 0  =  dec x-x ? y  =  x + dec x--x ? 0  =  dec x-x ? y  =  x + dec y--x ? 0  =  dec x-x ? y  =  x + dec 0--x ? 0  =  dec x-x ? y  =  y + dec x--x ? 0  =  dec x-x ? y  =  y + dec y--x ? 0  =  dec x-x ? y  =  y + dec 0--x ? 0  =  dec 0-x ? y  =  dec x + x--x ? 0  =  dec 0-x ? y  =  dec x + y--x ? 0  =  dec 0-x ? y  =  dec y + x--x ? 0  =  dec 0-x ? y  =  dec y + y--x ? 0  =  dec 0-x ? y  =  dec 0 + x--x ? 0  =  dec 0-x ? y  =  dec 0 + y--x ? 0  =  dec 0-x ? y  =  dec (dec (dec x))--x ? 0  =  dec 0-x ? y  =  dec (dec (dec y))--x ? 0  =  dec 0-x ? y  =  dec (dec (dec 0))--x ? 0  =  dec 0-x ? y  =  x + dec x--x ? 0  =  dec 0-x ? y  =  x + dec y--x ? 0  =  dec 0-x ? y  =  x + dec 0--x ? 0  =  dec 0-x ? y  =  y + dec x--x ? 0  =  dec 0-x ? y  =  y + dec y--x ? 0  =  dec 0-x ? y  =  y + dec 0--x ? 0  =  x + x-x ? y  =  x + y--x ? 0  =  x + x-x ? y  =  y + x--x ? 0  =  x + x-x ? y  =  y + y--x ? 0  =  x + x-x ? y  =  dec (dec x)--x ? 0  =  x + x-x ? y  =  dec (dec y)--x ? 0  =  x + x-x ? y  =  dec (dec 0)--x ? 0  =  dec (dec x)-x ? y  =  x + x--x ? 0  =  dec (dec x)-x ? y  =  x + y--x ? 0  =  dec (dec x)-x ? y  =  y + x--x ? 0  =  dec (dec x)-x ? y  =  y + y--x ? 0  =  dec (dec x)-x ? y  =  dec (dec y)--x ? 0  =  dec (dec x)-x ? y  =  dec (dec 0)--x ? 0  =  dec (dec 0)-x ? y  =  x + x--x ? 0  =  dec (dec 0)-x ? y  =  x + y--x ? 0  =  dec (dec 0)-x ? y  =  y + x--x ? 0  =  dec (dec 0)-x ? y  =  y + y--x ? 0  =  dec (dec 0)-x ? y  =  dec (dec x)--x ? 0  =  dec (dec 0)-x ? y  =  dec (dec y)--x ? 0  =  dec x + x-x ? y  =  dec x--x ? 0  =  dec x + x-x ? y  =  dec y--x ? 0  =  dec x + x-x ? y  =  dec 0--x ? 0  =  dec 0 + x-x ? y  =  dec x--x ? 0  =  dec 0 + x-x ? y  =  dec y--x ? 0  =  dec 0 + x-x ? y  =  dec 0--x ? 0  =  dec (dec (dec x))-x ? y  =  dec x--x ? 0  =  dec (dec (dec x))-x ? y  =  dec y--x ? 0  =  dec (dec (dec x))-x ? y  =  dec 0--x ? 0  =  dec (dec (dec 0))-x ? y  =  dec x--x ? 0  =  dec (dec (dec 0))-x ? y  =  dec y--x ? 0  =  dec (dec (dec 0))-x ? y  =  dec 0--x ? 0  =  x + dec x-x ? y  =  dec x--x ? 0  =  x + dec x-x ? y  =  dec y--x ? 0  =  x + dec x-x ? y  =  dec 0--x ? 0  =  x + dec 0-x ? y  =  dec x--x ? 0  =  x + dec 0-x ? y  =  dec y--x ? 0  =  x + dec 0-x ? y  =  dec 0--x ? 0  =  dec (dec x) + x-x ? y  =  x--x ? 0  =  dec (dec x) + x-x ? y  =  y--x ? 0  =  dec (dec x) + x-x ? y  =  0--x ? 0  =  dec (dec 0) + x-x ? y  =  x--x ? 0  =  dec (dec 0) + x-x ? y  =  y--x ? 0  =  dec (dec 0) + x-x ? y  =  0--x ? 0  =  dec (dec (dec (dec x)))-x ? y  =  x--x ? 0  =  dec (dec (dec (dec x)))-x ? y  =  y--x ? 0  =  dec (dec (dec (dec x)))-x ? y  =  0--x ? 0  =  dec (dec (dec (dec 0)))-x ? y  =  x--x ? 0  =  dec (dec (dec (dec 0)))-x ? y  =  y--x ? 0  =  dec (dec (dec (dec 0)))-x ? y  =  0--x ? 0  =  x + (x + x)-x ? y  =  x--x ? 0  =  x + (x + x)-x ? y  =  y--x ? 0  =  x + (x + x)-x ? y  =  0--x ? 0  =  x + dec (dec x)-x ? y  =  x--x ? 0  =  x + dec (dec x)-x ? y  =  y--x ? 0  =  x + dec (dec x)-x ? y  =  0--x ? 0  =  x + dec (dec 0)-x ? y  =  x--x ? 0  =  x + dec (dec 0)-x ? y  =  y--x ? 0  =  x + dec (dec 0)-x ? y  =  0--x ? 0  =  dec x + dec x-x ? y  =  x--x ? 0  =  dec x + dec x-x ? y  =  y--x ? 0  =  dec x + dec x-x ? y  =  0--x ? 0  =  dec x + dec 0-x ? y  =  x--x ? 0  =  dec x + dec 0-x ? y  =  y--x ? 0  =  dec x + dec 0-x ? y  =  0--x ? 0  =  dec 0 + dec x-x ? y  =  x--x ? 0  =  dec 0 + dec x-x ? y  =  y--x ? 0  =  dec 0 + dec x-x ? y  =  0--x ? 0  =  dec 0 + dec 0-x ? y  =  x--x ? 0  =  dec 0 + dec 0-x ? y  =  y--x ? 0  =  dec 0 + dec 0-x ? y  =  0--0 ? x  =  x-x ? y  =  dec (dec x) + x--0 ? x  =  x-x ? y  =  dec (dec x) + y--0 ? x  =  x-x ? y  =  dec (dec y) + x--0 ? x  =  x-x ? y  =  dec (dec y) + y--0 ? x  =  x-x ? y  =  dec (dec 0) + x--0 ? x  =  x-x ? y  =  dec (dec 0) + y--0 ? x  =  x-x ? y  =  dec (dec (dec (dec x)))--0 ? x  =  x-x ? y  =  dec (dec (dec (dec y)))--0 ? x  =  x-x ? y  =  dec (dec (dec (dec 0)))--0 ? x  =  x-x ? y  =  x + (x + x)--0 ? x  =  x-x ? y  =  x + (x + y)--0 ? x  =  x-x ? y  =  x + (y + x)--0 ? x  =  x-x ? y  =  x + (y + y)--0 ? x  =  x-x ? y  =  x + dec (dec x)--0 ? x  =  x-x ? y  =  x + dec (dec y)--0 ? x  =  x-x ? y  =  x + dec (dec 0)--0 ? x  =  x-x ? y  =  y + (x + x)--0 ? x  =  x-x ? y  =  y + (x + y)--0 ? x  =  x-x ? y  =  y + (y + x)--0 ? x  =  x-x ? y  =  y + (y + y)--0 ? x  =  x-x ? y  =  y + dec (dec x)--0 ? x  =  x-x ? y  =  y + dec (dec y)--0 ? x  =  x-x ? y  =  y + dec (dec 0)--0 ? x  =  x-x ? y  =  dec x + dec x--0 ? x  =  x-x ? y  =  dec x + dec y--0 ? x  =  x-x ? y  =  dec x + dec 0--0 ? x  =  x-x ? y  =  dec y + dec x--0 ? x  =  x-x ? y  =  dec y + dec y--0 ? x  =  x-x ? y  =  dec y + dec 0--0 ? x  =  x-x ? y  =  dec 0 + dec x--0 ? x  =  x-x ? y  =  dec 0 + dec y--0 ? x  =  x-x ? y  =  dec 0 + dec 0--0 ? x  =  0-x ? y  =  dec (dec x) + x--0 ? x  =  0-x ? y  =  dec (dec x) + y--0 ? x  =  0-x ? y  =  dec (dec y) + x--0 ? x  =  0-x ? y  =  dec (dec y) + y--0 ? x  =  0-x ? y  =  dec (dec 0) + x--0 ? x  =  0-x ? y  =  dec (dec 0) + y--0 ? x  =  0-x ? y  =  dec (dec (dec (dec x)))--0 ? x  =  0-x ? y  =  dec (dec (dec (dec y)))--0 ? x  =  0-x ? y  =  dec (dec (dec (dec 0)))--0 ? x  =  0-x ? y  =  x + (x + x)--0 ? x  =  0-x ? y  =  x + (x + y)--0 ? x  =  0-x ? y  =  x + (y + x)--0 ? x  =  0-x ? y  =  x + (y + y)--0 ? x  =  0-x ? y  =  x + dec (dec x)--0 ? x  =  0-x ? y  =  x + dec (dec y)--0 ? x  =  0-x ? y  =  x + dec (dec 0)--0 ? x  =  0-x ? y  =  y + (x + x)--0 ? x  =  0-x ? y  =  y + (x + y)--0 ? x  =  0-x ? y  =  y + (y + x)--0 ? x  =  0-x ? y  =  y + (y + y)--0 ? x  =  0-x ? y  =  y + dec (dec x)--0 ? x  =  0-x ? y  =  y + dec (dec y)--0 ? x  =  0-x ? y  =  y + dec (dec 0)--0 ? x  =  0-x ? y  =  dec x + dec x--0 ? x  =  0-x ? y  =  dec x + dec y--0 ? x  =  0-x ? y  =  dec x + dec 0--0 ? x  =  0-x ? y  =  dec y + dec x--0 ? x  =  0-x ? y  =  dec y + dec y--0 ? x  =  0-x ? y  =  dec y + dec 0--0 ? x  =  0-x ? y  =  dec 0 + dec x--0 ? x  =  0-x ? y  =  dec 0 + dec y--0 ? x  =  0-x ? y  =  dec 0 + dec 0--0 ? x  =  dec x-x ? y  =  dec x + x--0 ? x  =  dec x-x ? y  =  dec x + y--0 ? x  =  dec x-x ? y  =  dec y + x--0 ? x  =  dec x-x ? y  =  dec y + y--0 ? x  =  dec x-x ? y  =  dec 0 + x--0 ? x  =  dec x-x ? y  =  dec 0 + y--0 ? x  =  dec x-x ? y  =  dec (dec (dec x))--0 ? x  =  dec x-x ? y  =  dec (dec (dec y))--0 ? x  =  dec x-x ? y  =  dec (dec (dec 0))--0 ? x  =  dec x-x ? y  =  x + dec x--0 ? x  =  dec x-x ? y  =  x + dec y--0 ? x  =  dec x-x ? y  =  x + dec 0--0 ? x  =  dec x-x ? y  =  y + dec x--0 ? x  =  dec x-x ? y  =  y + dec y--0 ? x  =  dec x-x ? y  =  y + dec 0--0 ? x  =  dec 0-x ? y  =  dec x + x--0 ? x  =  dec 0-x ? y  =  dec x + y--0 ? x  =  dec 0-x ? y  =  dec y + x--0 ? x  =  dec 0-x ? y  =  dec y + y--0 ? x  =  dec 0-x ? y  =  dec 0 + x--0 ? x  =  dec 0-x ? y  =  dec 0 + y--0 ? x  =  dec 0-x ? y  =  dec (dec (dec x))--0 ? x  =  dec 0-x ? y  =  dec (dec (dec y))--0 ? x  =  dec 0-x ? y  =  dec (dec (dec 0))--0 ? x  =  dec 0-x ? y  =  x + dec x--0 ? x  =  dec 0-x ? y  =  x + dec y--0 ? x  =  dec 0-x ? y  =  x + dec 0--0 ? x  =  dec 0-x ? y  =  y + dec x--0 ? x  =  dec 0-x ? y  =  y + dec y--0 ? x  =  dec 0-x ? y  =  y + dec 0--0 ? x  =  x + x-x ? y  =  x + y--0 ? x  =  x + x-x ? y  =  y + x--0 ? x  =  x + x-x ? y  =  y + y--0 ? x  =  x + x-x ? y  =  dec (dec x)--0 ? x  =  x + x-x ? y  =  dec (dec y)--0 ? x  =  x + x-x ? y  =  dec (dec 0)--0 ? x  =  dec (dec x)-x ? y  =  x + x--0 ? x  =  dec (dec x)-x ? y  =  x + y--0 ? x  =  dec (dec x)-x ? y  =  y + x--0 ? x  =  dec (dec x)-x ? y  =  y + y--0 ? x  =  dec (dec x)-x ? y  =  dec (dec y)--0 ? x  =  dec (dec x)-x ? y  =  dec (dec 0)--0 ? x  =  dec (dec 0)-x ? y  =  x + x--0 ? x  =  dec (dec 0)-x ? y  =  x + y--0 ? x  =  dec (dec 0)-x ? y  =  y + x--0 ? x  =  dec (dec 0)-x ? y  =  y + y--0 ? x  =  dec (dec 0)-x ? y  =  dec (dec x)--0 ? x  =  dec (dec 0)-x ? y  =  dec (dec y)--0 ? x  =  dec x + x-x ? y  =  dec x--0 ? x  =  dec x + x-x ? y  =  dec y--0 ? x  =  dec x + x-x ? y  =  dec 0--0 ? x  =  dec 0 + x-x ? y  =  dec x--0 ? x  =  dec 0 + x-x ? y  =  dec y--0 ? x  =  dec 0 + x-x ? y  =  dec 0--0 ? x  =  dec (dec (dec x))-x ? y  =  dec x--0 ? x  =  dec (dec (dec x))-x ? y  =  dec y--0 ? x  =  dec (dec (dec x))-x ? y  =  dec 0--0 ? x  =  dec (dec (dec 0))-x ? y  =  dec x--0 ? x  =  dec (dec (dec 0))-x ? y  =  dec y--0 ? x  =  dec (dec (dec 0))-x ? y  =  dec 0--0 ? x  =  x + dec x-x ? y  =  dec x--0 ? x  =  x + dec x-x ? y  =  dec y--0 ? x  =  x + dec x-x ? y  =  dec 0--0 ? x  =  x + dec 0-x ? y  =  dec x--0 ? x  =  x + dec 0-x ? y  =  dec y--0 ? x  =  x + dec 0-x ? y  =  dec 0--0 ? x  =  dec (dec x) + x-x ? y  =  x--0 ? x  =  dec (dec x) + x-x ? y  =  y--0 ? x  =  dec (dec x) + x-x ? y  =  0--0 ? x  =  dec (dec 0) + x-x ? y  =  x--0 ? x  =  dec (dec 0) + x-x ? y  =  y--0 ? x  =  dec (dec 0) + x-x ? y  =  0--0 ? x  =  dec (dec (dec (dec x)))-x ? y  =  x--0 ? x  =  dec (dec (dec (dec x)))-x ? y  =  y--0 ? x  =  dec (dec (dec (dec x)))-x ? y  =  0--0 ? x  =  dec (dec (dec (dec 0)))-x ? y  =  x--0 ? x  =  dec (dec (dec (dec 0)))-x ? y  =  y--0 ? x  =  dec (dec (dec (dec 0)))-x ? y  =  0--0 ? x  =  x + (x + x)-x ? y  =  x--0 ? x  =  x + (x + x)-x ? y  =  y--0 ? x  =  x + (x + x)-x ? y  =  0--0 ? x  =  x + dec (dec x)-x ? y  =  x--0 ? x  =  x + dec (dec x)-x ? y  =  y--0 ? x  =  x + dec (dec x)-x ? y  =  0--0 ? x  =  x + dec (dec 0)-x ? y  =  x--0 ? x  =  x + dec (dec 0)-x ? y  =  y--0 ? x  =  x + dec (dec 0)-x ? y  =  0--0 ? x  =  dec x + dec x-x ? y  =  x--0 ? x  =  dec x + dec x-x ? y  =  y--0 ? x  =  dec x + dec x-x ? y  =  0--0 ? x  =  dec x + dec 0-x ? y  =  x--0 ? x  =  dec x + dec 0-x ? y  =  y--0 ? x  =  dec x + dec 0-x ? y  =  0--0 ? x  =  dec 0 + dec x-x ? y  =  x--0 ? x  =  dec 0 + dec x-x ? y  =  y--0 ? x  =  dec 0 + dec x-x ? y  =  0--0 ? x  =  dec 0 + dec 0-x ? y  =  x--0 ? x  =  dec 0 + dec 0-x ? y  =  y--0 ? x  =  dec 0 + dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec x + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec x + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec y + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec y + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec 0 + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec 0 + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec (dec (dec x))--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec (dec (dec y))--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec (dec (dec 0))--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x + dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x + dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x + dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y + dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y + dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y + dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec x + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec x + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec y + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec y + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec 0 + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec 0 + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec (dec (dec x))--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec (dec (dec y))--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec (dec (dec 0))--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x + dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x + dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x + dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y + dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y + dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y + dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec x)-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec x)-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec x)-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec 0)-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec 0)-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec 0)-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x + x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x + x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec x + x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0 + x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0 + x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec 0 + x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec (dec x))-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec (dec x))-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec (dec x))-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec (dec 0))-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec (dec 0))-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  dec (dec (dec 0))-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + dec x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + dec x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + dec x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + dec 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + dec 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x-x ? 0  =  x + dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec x + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec x + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec y + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec y + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec 0 + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec 0 + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec (dec (dec x))--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec (dec (dec y))--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec (dec (dec 0))--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x + dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x + dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x + dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y + dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y + dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y + dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec x + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec x + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec y + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec y + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec 0 + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec 0 + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec (dec (dec x))--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec (dec (dec y))--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec (dec (dec 0))--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x + dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x + dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x + dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y + dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y + dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y + dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec x)-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec x)-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec x)-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec 0)-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec 0)-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec 0)-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x + x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x + x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec x + x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0 + x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0 + x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec 0 + x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec (dec x))-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec (dec x))-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec (dec x))-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec (dec 0))-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec (dec 0))-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  dec (dec (dec 0))-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + dec x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + dec x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + dec x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + dec 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + dec 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  0-x ? 0  =  x + dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec 0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec 0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec 0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x + x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x + x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  x + x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec (dec x)-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec (dec x)-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec (dec x)-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec (dec 0)-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec (dec 0)-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec x-x ? 0  =  dec (dec 0)-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  x + x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  x + y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  y + x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  y + y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  dec (dec x)--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  dec (dec y)--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  dec (dec 0)--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec 0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec 0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec 0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x + x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x + x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  x + x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec (dec x)-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec (dec x)-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec (dec x)-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec (dec 0)-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec (dec 0)-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec 0-x ? 0  =  dec (dec 0)-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x + x-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec x)-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec 0)-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec x + x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec x + x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec x + x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec x + x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec x + x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec x + x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec 0 + x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec 0 + x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec 0 + x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec 0 + x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec 0 + x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec 0 + x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec (dec x))-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec (dec x))-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec (dec x))-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec (dec x))-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec (dec x))-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec (dec x))-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec (dec 0))-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec (dec 0))-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec (dec 0))-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  dec (dec (dec 0))-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  dec (dec (dec 0))-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  dec (dec (dec 0))-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x + dec x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x + dec x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x + dec x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x + dec x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x + dec x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x + dec x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x + dec 0-x ? 0  =  x-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x + dec 0-x ? 0  =  x-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x + dec 0-x ? 0  =  x-x ? y  =  0--0 ? 0  =  0-0 ? x  =  x + dec 0-x ? 0  =  0-x ? y  =  x--0 ? 0  =  0-0 ? x  =  x + dec 0-x ? 0  =  0-x ? y  =  y--0 ? 0  =  0-0 ? x  =  x + dec 0-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x + x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  x + y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y + x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  y + y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec (dec x)--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec (dec y)--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec (dec 0)--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x + x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  x + y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y + x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  y + y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec (dec x)--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec (dec y)--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec (dec 0)--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x + x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x + x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  x + x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec (dec x)-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec (dec x)-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec (dec x)-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec (dec 0)-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec (dec 0)-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  x-x ? 0  =  dec (dec 0)-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x + x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  x + y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y + x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  y + y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec (dec x)--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec (dec y)--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec (dec 0)--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x + x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  x + y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y + x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  y + y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec (dec x)--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec (dec y)--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec (dec 0)--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x + x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x + x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  x + x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec (dec x)-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec (dec x)-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec (dec x)-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec (dec 0)-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec (dec 0)-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  0-x ? 0  =  dec (dec 0)-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec x-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec 0-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  x + x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  x + x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  x + x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  x + x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  x + x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  x + x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec (dec x)-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec (dec x)-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec (dec x)-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec (dec x)-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec (dec x)-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec (dec x)-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec (dec 0)-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec (dec 0)-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec (dec 0)-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec 0-0 ? x  =  dec (dec 0)-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec 0-0 ? x  =  dec (dec 0)-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec 0-0 ? x  =  dec (dec 0)-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  x-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec x--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec y--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  x-x ? y  =  dec 0--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec x--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec y--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  0-x ? y  =  dec 0--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  dec x-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  0-x ? 0  =  dec 0-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  dec x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  dec x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  dec 0-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec (dec 0)-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec (dec 0)-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec (dec 0)-0 ? x  =  dec 0-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  x-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  x-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  x-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  x-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  x-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  x-x ? 0  =  0-x ? y  =  0--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  0-x ? 0  =  x-x ? y  =  x--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  0-x ? 0  =  x-x ? y  =  y--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  0-x ? 0  =  x-x ? y  =  0--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  0-x ? 0  =  0-x ? y  =  x--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  0-x ? 0  =  0-x ? y  =  y--0 ? 0  =  dec (dec (dec 0))-0 ? x  =  0-x ? 0  =  0-x ? y  =  0---Candidates for: goo :: [Int] -> [Int]-  pruning with 4/4 rules-  [2,0,1,0,1,0,1,0,1] direct candidates, 0 duplicates-  [2,1,2,3,4,7,10,17,26] pattern candidates, 0 duplicates--rules:-xs ++ [] == xs-[] ++ xs == xs-(xs ++ ys) ++ zs == xs ++ (ys ++ zs)-(x:xs) ++ ys == x:(xs ++ ys)--direct candidates:--goo xs  =  xs--goo xs  =  []--goo xs  =  xs ++ xs--goo xs  =  xs ++ (xs ++ xs)---pattern candidates:--goo xs  =  xs--goo xs  =  []--goo []  =  []-goo (x:xs)  =  xs--goo []  =  []-goo (x:xs)  =  goo xs--goo xs  =  xs ++ xs--goo []  =  []-goo (x:xs)  =  x:xs--goo []  =  []-goo (x:xs)  =  [x]--goo []  =  []-goo (x:xs)  =  xs ++ xs--goo []  =  []-goo (x:xs)  =  x:goo xs--goo []  =  []-goo (x:xs)  =  xs ++ goo xs--goo []  =  []-goo (x:xs)  =  goo xs ++ xs--goo xs  =  xs ++ (xs ++ xs)--goo []  =  []-goo (x:xs)  =  goo xs ++ goo xs--goo []  =  []-goo (x:xs)  =  x:x:xs--goo []  =  []-goo (x:xs)  =  [x,x]--goo []  =  []-goo (x:xs)  =  x:(xs ++ xs)--goo []  =  []-goo (x:xs)  =  xs ++ (x:xs)--goo []  =  []-goo (x:xs)  =  xs ++ [x]--goo []  =  []-goo (x:xs)  =  xs ++ (xs ++ xs)---Candidates for: ?? :: [Int] -> [Int] -> [Int]-  pruning with 4/4 rules-  [3,0,4,0,8,0,16,0,32] direct candidates, 0 duplicates-  [3,8,15,66,152,362,1400,2084,11820] pattern candidates, 0 duplicates--rules:-xs ++ [] == xs-[] ++ xs == xs-(xs ++ ys) ++ zs == xs ++ (ys ++ zs)-(x:xs) ++ ys == x:(xs ++ ys)--direct candidates:--xs ?? ys  =  xs--xs ?? ys  =  ys--xs ?? ys  =  []--xs ?? ys  =  xs ++ xs--xs ?? ys  =  xs ++ ys--xs ?? ys  =  ys ++ xs--xs ?? ys  =  ys ++ ys--xs ?? ys  =  xs ++ (xs ++ xs)--xs ?? ys  =  xs ++ (xs ++ ys)--xs ?? ys  =  xs ++ (ys ++ xs)--xs ?? ys  =  xs ++ (ys ++ ys)--xs ?? ys  =  ys ++ (xs ++ xs)--xs ?? ys  =  ys ++ (xs ++ ys)--xs ?? ys  =  ys ++ (ys ++ xs)--xs ?? ys  =  ys ++ (ys ++ ys)---pattern candidates:--xs ?? ys  =  xs--xs ?? ys  =  ys--xs ?? ys  =  []--xs ?? []  =  xs-xs ?? (x:ys)  =  ys--xs ?? []  =  xs-xs ?? (x:ys)  =  []--xs ?? []  =  []-xs ?? (x:ys)  =  xs--xs ?? []  =  []-xs ?? (x:ys)  =  ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  []--[] ?? xs  =  []-(x:xs) ?? ys  =  xs--[] ?? xs  =  []-(x:xs) ?? ys  =  ys--xs ?? ys  =  xs ++ xs--xs ?? ys  =  xs ++ ys--xs ?? ys  =  ys ++ xs--xs ?? ys  =  ys ++ ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  [] ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  [] ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  xs ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  xs ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  xs ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  ys ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  ys ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  ys ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  [] ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  [] ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? []--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? []--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? []--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? []--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  x:xs--xs ?? []  =  xs-xs ?? (x:ys)  =  x:ys--xs ?? []  =  xs-xs ?? (x:ys)  =  [x]--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ ys--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  x:xs--xs ?? []  =  []-xs ?? (x:ys)  =  x:ys--xs ?? []  =  []-xs ?? (x:ys)  =  [x]--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ ys--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  xs--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  ys--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  []--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  [x]--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  x:xs--[] ?? xs  =  []-(x:xs) ?? ys  =  x:ys--[] ?? xs  =  []-(x:xs) ?? ys  =  [x]--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ ys--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  xs--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  ys--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ?? []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ?? []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  [] ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  [] ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs ?? xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs ?? []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  [] ?? xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs ?? xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs ?? []-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  [] ?? xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs ?? xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs ?? []-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  [] ?? xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ?? []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ?? []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  [] ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  [] ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  [] ?? xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  [] ?? xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  [] ?? xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  [] ?? xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  [] ?? xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs ?? []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  [] ?? xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ?? []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ?? []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  [] ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  [] ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs ?? xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs ?? []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  [] ?? xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs ?? xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs ?? []-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  [] ?? xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs ?? xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs ?? []-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  [] ?? xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ?? []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ?? ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ?? []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  [] ?? xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  [] ?? ys--xs ?? ys  =  xs ++ (xs ++ xs)--xs ?? ys  =  xs ++ (xs ++ ys)--xs ?? ys  =  xs ++ (ys ++ xs)--xs ?? ys  =  xs ++ (ys ++ ys)--xs ?? ys  =  ys ++ (xs ++ xs)--xs ?? ys  =  ys ++ (xs ++ ys)--xs ?? ys  =  ys ++ (ys ++ xs)--xs ?? ys  =  ys ++ (ys ++ ys)--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  x:xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  x:ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  [x]--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  y:xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  y:ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  [y]--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ++ xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ++ ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ++ xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ++ ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  x:xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  x:ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  [x]--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  y:xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  y:ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  [y]--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ++ xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ++ ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ++ xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ++ ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  x:xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  x:xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  x:xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  [x]-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  [x]-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  [x]-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs ++ xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs ++ xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs-(x:xs) ?? []  =  xs ++ xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  x:xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  x:ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  [x]--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  y:xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  y:ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  [y]--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ++ xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs ++ ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ++ xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys ++ ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  x:xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  x:ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  [x]--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  y:xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  y:ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  [y]--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ++ xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs ++ ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ++ xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys ++ ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  x:xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  x:xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  x:xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  [x]-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  [x]-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  [x]-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs ++ xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs ++ xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  []-(x:xs) ?? []  =  xs ++ xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  x:xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  x:xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  x:xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  x:xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  x:xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  x:xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  [x]-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  [x]-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  [x]-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  [x]-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  [x]-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  [x]-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs ++ xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs ++ xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs ++ xs-(x:xs) ?? []  =  xs-(x:xs) ?? (y:ys)  =  []--[] ?? []  =  []-[] ?? (x:xs)  =  xs ++ xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  xs--[] ?? []  =  []-[] ?? (x:xs)  =  xs ++ xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  ys--[] ?? []  =  []-[] ?? (x:xs)  =  xs ++ xs-(x:xs) ?? []  =  []-(x:xs) ?? (y:ys)  =  []--xs ?? []  =  xs-xs ?? (x:ys)  =  (x:xs) ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  (x:xs) ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  (x:xs) ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  (x:ys) ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  (x:ys) ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  (x:ys) ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  [x] ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  [x] ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  [x] ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  (xs ++ xs) ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  (xs ++ xs) ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  (xs ++ xs) ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  (xs ++ ys) ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  (xs ++ ys) ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  (xs ++ ys) ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  (ys ++ xs) ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  (ys ++ xs) ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  (ys ++ xs) ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  (ys ++ ys) ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  (ys ++ ys) ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  (ys ++ ys) ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  (x:xs) ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  (x:xs) ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  (x:xs) ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  (x:ys) ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  (x:ys) ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  (x:ys) ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  [x] ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  [x] ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  [x] ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  (xs ++ xs) ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  (xs ++ xs) ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  (xs ++ xs) ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  (xs ++ ys) ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  (xs ++ ys) ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  (xs ++ ys) ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  (ys ++ xs) ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  (ys ++ xs) ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  (ys ++ xs) ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  (ys ++ ys) ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  (ys ++ ys) ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  (ys ++ ys) ?? []--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? (x:xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? (x:ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? [x]--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? (xs ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? (xs ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? (ys ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? (ys ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? (x:xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? (x:ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? [x]--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? (xs ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? (xs ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? (ys ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? (ys ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? (x:xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? (x:ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? [x]--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? (xs ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? (xs ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? (ys ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? (ys ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? (x:xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? (x:ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? [x]--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? (xs ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? (xs ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? (ys ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? (ys ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? (x:xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? (x:ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? [x]--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? (xs ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? (xs ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? (ys ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? (ys ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? (x:xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? (x:ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? [x]--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? (xs ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? (xs ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? (ys ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? (ys ++ ys)--xs ?? []  =  xs-xs ?? (x:ys)  =  x:xs ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  x:xs ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  x:xs ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  x:ys ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  x:ys ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  x:ys ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  [x,] ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  [x,] ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ xs ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ xs ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ xs ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ ys ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ ys ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ ys ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ [] ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ [] ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ xs ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ xs ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ xs ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ ys ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ ys ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ ys ?? []--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ [] ?? xs--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ [] ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ?? xs ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ?? ys ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ?? [] ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ?? xs ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ?? ys ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ?? [] ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  [] ?? xs ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  [] ?? ys ++ xs--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ?? xs ++ ys--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ?? ys ++ ys--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ?? [] ++ ys--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ?? xs ++ ys--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ?? ys ++ ys--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ?? [] ++ ys--xs ?? []  =  xs-xs ?? (x:ys)  =  [] ?? xs ++ ys--xs ?? []  =  xs-xs ?? (x:ys)  =  [] ?? ys ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  x:xs ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  x:xs ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  x:xs ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  x:ys ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  x:ys ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  x:ys ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  [x,] ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  [x,] ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ xs ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ xs ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ xs ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ ys ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ ys ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ ys ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ [] ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ [] ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ xs ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ xs ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ xs ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ ys ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ ys ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ ys ?? []--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ [] ?? xs--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ [] ?? ys--xs ?? []  =  []-xs ?? (x:ys)  =  xs ?? xs ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  xs ?? ys ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  xs ?? [] ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  ys ?? xs ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  ys ?? ys ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  ys ?? [] ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  [] ?? xs ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  [] ?? ys ++ xs--xs ?? []  =  []-xs ?? (x:ys)  =  xs ?? xs ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  xs ?? ys ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  xs ?? [] ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  ys ?? xs ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  ys ?? ys ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  ys ?? [] ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  [] ?? xs ++ ys--xs ?? []  =  []-xs ?? (x:ys)  =  [] ?? ys ++ ys--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  xs ?? xs--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  xs ?? ys--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  xs ?? []--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  ys ?? xs--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  ys ?? ys--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  ys ?? []--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  [] ?? xs--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  [] ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:xs ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:xs ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:xs ?? []--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:ys ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:ys ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:ys ?? []--[] ?? xs  =  xs-(x:xs) ?? ys  =  [x,] ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  [x,] ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ xs ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ xs ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ xs ?? []--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ ys ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ ys ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ ys ?? []--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ [] ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ [] ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ xs ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ xs ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ xs ?? []--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ ys ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ ys ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ ys ?? []--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ [] ?? xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ [] ?? ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? xs ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? ys ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? [] ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? xs ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? ys ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? [] ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? xs ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? ys ++ xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? xs ++ ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? ys ++ ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ?? [] ++ ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? xs ++ ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? ys ++ ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ?? [] ++ ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? xs ++ ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  [] ?? ys ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  x:xs ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  x:xs ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  x:xs ?? []--[] ?? xs  =  []-(x:xs) ?? ys  =  x:ys ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  x:ys ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  x:ys ?? []--[] ?? xs  =  []-(x:xs) ?? ys  =  [x,] ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  [x,] ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ xs ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ xs ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ xs ?? []--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ ys ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ ys ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ ys ?? []--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ [] ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ [] ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ xs ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ xs ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ xs ?? []--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ ys ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ ys ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ ys ?? []--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ [] ?? xs--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ [] ?? ys--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? xs ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? ys ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? [] ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? xs ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? ys ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? [] ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? xs ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? ys ++ xs--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? xs ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? ys ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ?? [] ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? xs ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? ys ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ?? [] ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? xs ++ ys--[] ?? xs  =  []-(x:xs) ?? ys  =  [] ?? ys ++ ys--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  xs ?? xs--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  xs ?? ys--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  xs ?? []--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  ys ?? xs--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  ys ?? ys--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  ys ?? []--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  [] ?? xs--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  [] ?? ys--xs ?? []  =  xs-xs ?? (x:ys)  =  x:x:xs--xs ?? []  =  xs-xs ?? (x:ys)  =  x:x:ys--xs ?? []  =  xs-xs ?? (x:ys)  =  [x,x]--xs ?? []  =  xs-xs ?? (x:ys)  =  x:(xs ++ xs)--xs ?? []  =  xs-xs ?? (x:ys)  =  x:(xs ++ ys)--xs ?? []  =  xs-xs ?? (x:ys)  =  x:(ys ++ xs)--xs ?? []  =  xs-xs ?? (x:ys)  =  x:(ys ++ ys)--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ (x:xs)--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ (x:ys)--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ [x]--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ (xs ++ xs)--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ (xs ++ ys)--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ (ys ++ xs)--xs ?? []  =  xs-xs ?? (x:ys)  =  xs ++ (ys ++ ys)--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ (x:xs)--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ (x:ys)--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ [x]--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ (xs ++ xs)--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ (xs ++ ys)--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ (ys ++ xs)--xs ?? []  =  xs-xs ?? (x:ys)  =  ys ++ (ys ++ ys)--xs ?? []  =  []-xs ?? (x:ys)  =  x:x:xs--xs ?? []  =  []-xs ?? (x:ys)  =  x:x:ys--xs ?? []  =  []-xs ?? (x:ys)  =  [x,x]--xs ?? []  =  []-xs ?? (x:ys)  =  x:(xs ++ xs)--xs ?? []  =  []-xs ?? (x:ys)  =  x:(xs ++ ys)--xs ?? []  =  []-xs ?? (x:ys)  =  x:(ys ++ xs)--xs ?? []  =  []-xs ?? (x:ys)  =  x:(ys ++ ys)--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ (x:xs)--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ (x:ys)--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ [x]--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ (xs ++ xs)--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ (xs ++ ys)--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ (ys ++ xs)--xs ?? []  =  []-xs ?? (x:ys)  =  xs ++ (ys ++ ys)--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ (x:xs)--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ (x:ys)--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ [x]--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ (xs ++ xs)--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ (xs ++ ys)--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ (ys ++ xs)--xs ?? []  =  []-xs ?? (x:ys)  =  ys ++ (ys ++ ys)--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  x:xs--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  x:ys--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  [x]--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  xs ++ ys--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  ys ++ xs--xs ?? []  =  xs ++ xs-xs ?? (x:ys)  =  ys ++ ys--xs ?? []  =  xs ++ (xs ++ xs)-xs ?? (x:ys)  =  xs--xs ?? []  =  xs ++ (xs ++ xs)-xs ?? (x:ys)  =  ys--xs ?? []  =  xs ++ (xs ++ xs)-xs ?? (x:ys)  =  []--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:x:xs--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:x:ys--[] ?? xs  =  xs-(x:xs) ?? ys  =  [x,x]--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:(xs ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:(xs ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:(ys ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  x:(ys ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ (x:xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ (x:ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ [x]--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ (xs ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ (xs ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ (ys ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  xs ++ (ys ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ (x:xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ (x:ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ [x]--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ (xs ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ (xs ++ ys)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ (ys ++ xs)--[] ?? xs  =  xs-(x:xs) ?? ys  =  ys ++ (ys ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  x:x:xs--[] ?? xs  =  []-(x:xs) ?? ys  =  x:x:ys--[] ?? xs  =  []-(x:xs) ?? ys  =  [x,x]--[] ?? xs  =  []-(x:xs) ?? ys  =  x:(xs ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  x:(xs ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  x:(ys ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  x:(ys ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ (x:xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ (x:ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ [x]--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ (xs ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ (xs ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ (ys ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  xs ++ (ys ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ (x:xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ (x:ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ [x]--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ (xs ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ (xs ++ ys)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ (ys ++ xs)--[] ?? xs  =  []-(x:xs) ?? ys  =  ys ++ (ys ++ ys)--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  x:xs--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  x:ys--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  [x]--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  xs ++ ys--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  ys ++ xs--[] ?? xs  =  xs ++ xs-(x:xs) ?? ys  =  ys ++ ys--[] ?? xs  =  xs ++ (xs ++ xs)-(x:xs) ?? ys  =  xs--[] ?? xs  =  xs ++ (xs ++ xs)-(x:xs) ?? ys  =  ys--[] ?? xs  =  xs ++ (xs ++ xs)-(x:xs) ?? ys  =  []---Candidates for: ton :: Bool -> Bool-  pruning with 39/49 rules-  [3,1,0,2,6,14,38,68,140] direct candidates, 0 duplicates-  [3,3,0,0,0,0,0,0,0] pattern candidates, 0 duplicates--rules:-not False == True-not True == False-p && p == p-p || p == p-not (not p) == p-p && False == False-p && True == p-False && p == False-True && p == p-p || False == p-p || True == True-False || p == p-True || p == True-not (p && q) == not p || not q-not (p && q) == not q || not p-not (p || q) == not p && not q-not (p || q) == not q && not p-p && not p == False-not p && p == False-p || not p == True-not p || p == True-(p && q) && r == p && (q && r)-(p && q) && r == q && (p && r)-(p || q) || r == p || (q || r)-(p || q) || r == q || (p || r)-p && (p && q) == p && q-p && (q && p) == p && q-p && (q && p) == q && p-p || (p || q) == p || q-p || (q || p) == p || q-p || (q || p) == q || p-p && (p || q) == p-p && (q || p) == p-(p || q) && p == p-(p || q) && q == q-p || p && q == p-p || q && p == p-p && q || p == p-p && q || q == q-equations:-q && p == p && q-q || p == p || q-q && (p && r) == p && (q && r)-r && (p && q) == p && (q && r)-r && (q && p) == p && (q && r)-q || (p || r) == p || (q || r)-r || (p || q) == p || (q || r)-r || (q || p) == p || (q || r)-(r || q) && p == p && (q || r)-r && q || p == p || q && r--direct candidates:--ton p  =  p--ton p  =  False--ton p  =  True--ton p  =  not p--ton p  =  p && ton p--ton p  =  p || ton p--ton p  =  p && ton (not p)--ton p  =  p || ton (not p)--ton p  =  p && not (ton p)--ton p  =  not p && ton p--ton p  =  p || not (ton p)--ton p  =  not p || ton p--ton p  =  p && not (ton (not p))--ton p  =  not p && ton (not p)--ton p  =  p || not (ton (not p))--ton p  =  not p || ton (not p)--ton p  =  p && (p && ton p)--ton p  =  p && (ton p && p)--ton p  =  p && (p || ton p)--ton p  =  p && (ton p || p)--ton p  =  not p && not (ton p)--ton p  =  p || p && ton p--ton p  =  p || ton p && p--ton p  =  p || (p || ton p)--ton p  =  p || (ton p || p)--ton p  =  not p || not (ton p)---pattern candidates:--ton p  =  p--ton p  =  False--ton p  =  True--ton p  =  not p--ton False  =  False-ton True  =  True--ton False  =  True-ton True  =  False---Candidates for: &| :: Bool -> Bool -> Bool-  pruning with 39/49 rules-  [4,2,4,8,32,128,468,1576,4924] direct candidates, 0 duplicates-  [4,14,30,8,4,48,60,280,592] pattern candidates, 0 duplicates--rules:-not False == True-not True == False-p && p == p-p || p == p-not (not p) == p-p && False == False-p && True == p-False && p == False-True && p == p-p || False == p-p || True == True-False || p == p-True || p == True-not (p && q) == not p || not q-not (p && q) == not q || not p-not (p || q) == not p && not q-not (p || q) == not q && not p-p && not p == False-not p && p == False-p || not p == True-not p || p == True-(p && q) && r == p && (q && r)-(p && q) && r == q && (p && r)-(p || q) || r == p || (q || r)-(p || q) || r == q || (p || r)-p && (p && q) == p && q-p && (q && p) == p && q-p && (q && p) == q && p-p || (p || q) == p || q-p || (q || p) == p || q-p || (q || p) == q || p-p && (p || q) == p-p && (q || p) == p-(p || q) && p == p-(p || q) && q == q-p || p && q == p-p || q && p == p-p && q || p == p-p && q || q == q-equations:-q && p == p && q-q || p == p || q-q && (p && r) == p && (q && r)-r && (p && q) == p && (q && r)-r && (q && p) == p && (q && r)-q || (p || r) == p || (q || r)-r || (p || q) == p || (q || r)-r || (q || p) == p || (q || r)-(r || q) && p == p && (q || r)-r && q || p == p || q && r--direct candidates:--p &| q  =  p--p &| q  =  q--p &| q  =  False--p &| q  =  True--p &| q  =  not p--p &| q  =  not q--p &| q  =  p && q--p &| q  =  q && p--p &| q  =  p || q--p &| q  =  q || p--p &| q  =  not p && q--p &| q  =  not q && p--p &| q  =  not p || q--p &| q  =  not q || p--p &| q  =  p && not q--p &| q  =  q && not p--p &| q  =  p || not q--p &| q  =  q || not p--p &| q  =  not p && not q--p &| q  =  not q && not p--p &| q  =  not p || not q--p &| q  =  not q || not p--p &| q  =  p && p &| p--p &| q  =  p && p &| q--p &| q  =  p && p &| False--p &| q  =  p && p &| True--p &| q  =  p && q &| q--p &| q  =  p && False &| q--p &| q  =  p && True &| q--p &| q  =  q && p &| p--p &| q  =  q && p &| q--p &| q  =  q && p &| False--p &| q  =  q && p &| True--p &| q  =  q && q &| q--p &| q  =  q && False &| q--p &| q  =  q && True &| q--p &| q  =  p || p &| p--p &| q  =  p || p &| q--p &| q  =  p || p &| False--p &| q  =  p || p &| True--p &| q  =  p || q &| q--p &| q  =  p || False &| q--p &| q  =  p || True &| q--p &| q  =  q || p &| p--p &| q  =  q || p &| q--p &| q  =  q || p &| False--p &| q  =  q || p &| True--p &| q  =  q || q &| q--p &| q  =  q || False &| q--p &| q  =  q || True &| q--p &| q  =  p && (not p && q)--p &| q  =  p && (not p || q)--p &| q  =  p && (q && not p)--p &| q  =  p && (q || not p)--p &| q  =  q && (not q && p)--p &| q  =  q && (not q || p)--p &| q  =  q && (p && not q)--p &| q  =  q && (p || not q)--p &| q  =  p || not p && q--p &| q  =  p || (not p || q)--p &| q  =  p || q && not p--p &| q  =  p || (q || not p)--p &| q  =  q || not q && p--p &| q  =  q || (not q || p)--p &| q  =  q || p && not q--p &| q  =  q || (p || not q)--p &| q  =  not p && (p || q)--p &| q  =  not p && (q || p)--p &| q  =  not q && (p || q)--p &| q  =  not q && (q || p)--p &| q  =  not p || p && q--p &| q  =  not p || q && p--p &| q  =  not q || p && q--p &| q  =  not q || q && p--p &| q  =  (p || q) && not p--p &| q  =  (p || q) && not q--p &| q  =  (q || p) && not p--p &| q  =  (q || p) && not q--p &| q  =  p && q || not p--p &| q  =  p && q || not q--p &| q  =  q && p || not p--p &| q  =  q && p || not q--p &| q  =  p && p &| not p--p &| q  =  p && p &| not q--p &| q  =  p && q &| not q--p &| q  =  p && False &| not q--p &| q  =  p && True &| not q--p &| q  =  p && not p &| p--p &| q  =  p && not p &| q--p &| q  =  p && not p &| False--p &| q  =  p && not p &| True--p &| q  =  p && not q &| q--p &| q  =  q && p &| not p--p &| q  =  q && p &| not q--p &| q  =  q && q &| not q--p &| q  =  q && False &| not q--p &| q  =  q && True &| not q--p &| q  =  q && not p &| p--p &| q  =  q && not p &| q--p &| q  =  q && not p &| False--p &| q  =  q && not p &| True--p &| q  =  q && not q &| q--p &| q  =  p || p &| not p--p &| q  =  p || p &| not q--p &| q  =  p || q &| not q--p &| q  =  p || False &| not q--p &| q  =  p || True &| not q--p &| q  =  p || not p &| p--p &| q  =  p || not p &| q--p &| q  =  p || not p &| False--p &| q  =  p || not p &| True--p &| q  =  p || not q &| q--p &| q  =  q || p &| not p--p &| q  =  q || p &| not q--p &| q  =  q || q &| not q--p &| q  =  q || False &| not q--p &| q  =  q || True &| not q--p &| q  =  q || not p &| p--p &| q  =  q || not p &| q--p &| q  =  q || not p &| False--p &| q  =  q || not p &| True--p &| q  =  q || not q &| q--p &| q  =  p && not (p &| p)--p &| q  =  p && not (p &| q)--p &| q  =  p && not (p &| False)--p &| q  =  p && not (p &| True)--p &| q  =  p && not (q &| q)--p &| q  =  p && not (False &| q)--p &| q  =  p && not (True &| q)--p &| q  =  q && not (p &| p)--p &| q  =  q && not (p &| q)--p &| q  =  q && not (p &| False)--p &| q  =  q && not (p &| True)--p &| q  =  q && not (q &| q)--p &| q  =  q && not (False &| q)--p &| q  =  q && not (True &| q)--p &| q  =  not p && p &| p--p &| q  =  not p && p &| q--p &| q  =  not p && p &| False--p &| q  =  not p && p &| True--p &| q  =  not p && q &| q--p &| q  =  not p && False &| q--p &| q  =  not p && True &| q--p &| q  =  not q && p &| p--p &| q  =  not q && p &| q--p &| q  =  not q && p &| False--p &| q  =  not q && p &| True--p &| q  =  not q && q &| q--p &| q  =  not q && False &| q--p &| q  =  not q && True &| q--p &| q  =  p || not (p &| p)--p &| q  =  p || not (p &| q)--p &| q  =  p || not (p &| False)--p &| q  =  p || not (p &| True)--p &| q  =  p || not (q &| q)--p &| q  =  p || not (False &| q)--p &| q  =  p || not (True &| q)--p &| q  =  q || not (p &| p)--p &| q  =  q || not (p &| q)--p &| q  =  q || not (p &| False)--p &| q  =  q || not (p &| True)--p &| q  =  q || not (q &| q)--p &| q  =  q || not (False &| q)--p &| q  =  q || not (True &| q)--p &| q  =  not p || p &| p--p &| q  =  not p || p &| q--p &| q  =  not p || p &| False--p &| q  =  not p || p &| True--p &| q  =  not p || q &| q--p &| q  =  not p || False &| q--p &| q  =  not p || True &| q--p &| q  =  not q || p &| p--p &| q  =  not q || p &| q--p &| q  =  not q || p &| False--p &| q  =  not q || p &| True--p &| q  =  not q || q &| q--p &| q  =  not q || False &| q--p &| q  =  not q || True &| q---pattern candidates:--p &| q  =  p--p &| q  =  q--p &| q  =  False--p &| q  =  True--p &| q  =  not p--p &| q  =  not q--p &| False  =  p-p &| True  =  False--p &| False  =  p-p &| True  =  True--p &| False  =  False-p &| True  =  p--p &| False  =  False-p &| True  =  True--p &| False  =  True-p &| True  =  p--p &| False  =  True-p &| True  =  False--False &| p  =  p-True &| p  =  False--False &| p  =  p-True &| p  =  True--False &| p  =  False-True &| p  =  p--False &| p  =  False-True &| p  =  True--False &| p  =  True-True &| p  =  p--False &| p  =  True-True &| p  =  False--p &| q  =  p && q--p &| q  =  q && p--p &| q  =  p || q--p &| q  =  q || p--p &| False  =  p-p &| True  =  not p--p &| False  =  False-p &| True  =  not p--p &| False  =  True-p &| True  =  not p--p &| False  =  not p-p &| True  =  p--p &| False  =  not p-p &| True  =  False--p &| False  =  not p-p &| True  =  True--False &| p  =  p-True &| p  =  not p--False &| p  =  False-True &| p  =  not p--False &| p  =  True-True &| p  =  not p--False &| p  =  not p-True &| p  =  p--False &| p  =  not p-True &| p  =  False--False &| p  =  not p-True &| p  =  True--False &| False  =  False-False &| True  =  False-True &| False  =  False-True &| True  =  True--False &| False  =  False-False &| True  =  False-True &| False  =  True-True &| True  =  False--False &| False  =  False-False &| True  =  False-True &| False  =  True-True &| True  =  True--False &| False  =  False-False &| True  =  True-True &| False  =  False-True &| True  =  False--False &| False  =  False-False &| True  =  True-True &| False  =  False-True &| True  =  True--False &| False  =  False-False &| True  =  True-True &| False  =  True-True &| True  =  False--False &| False  =  False-False &| True  =  True-True &| False  =  True-True &| True  =  True--False &| False  =  True-False &| True  =  False-True &| False  =  False-True &| True  =  False--False &| False  =  True-False &| True  =  False-True &| False  =  False-True &| True  =  True--False &| False  =  True-False &| True  =  False-True &| False  =  True-True &| True  =  False--False &| False  =  True-False &| True  =  False-True &| False  =  True-True &| True  =  True--False &| False  =  True-False &| True  =  True-True &| False  =  False-True &| True  =  False--False &| False  =  True-False &| True  =  True-True &| False  =  False-True &| True  =  True--False &| False  =  True-False &| True  =  True-True &| False  =  True-True &| True  =  False--p &| q  =  not p && q--p &| q  =  not q && p--p &| q  =  not p || q--p &| q  =  not q || p--p &| q  =  p && not q--p &| q  =  q && not p--p &| q  =  p || not q--p &| q  =  q || not p--p &| q  =  not p && not q--p &| q  =  not q && not p--p &| q  =  not p || not q--p &| q  =  not q || not p--p &| q  =  (not p || q) && p--p &| q  =  (not q || p) && q--p &| q  =  (p || not q) && q--p &| q  =  (q || not p) && p--p &| q  =  not p && q || p--p &| q  =  not q && p || q--p &| q  =  p && not q || q--p &| q  =  q && not p || p--p &| q  =  p && (not p && q)--p &| q  =  p && (not p || q)--p &| q  =  p && (q && not p)--p &| q  =  p && (q || not p)--p &| q  =  q && (not q && p)--p &| q  =  q && (not q || p)--p &| q  =  q && (p && not q)--p &| q  =  q && (p || not q)--p &| q  =  p || not p && q--p &| q  =  p || (not p || q)--p &| q  =  p || q && not p--p &| q  =  p || (q || not p)--p &| q  =  q || not q && p--p &| q  =  q || (not q || p)--p &| q  =  q || p && not q--p &| q  =  q || (p || not q)--p &| q  =  not p && (p && q)--p &| q  =  not p && (q && p)--p &| q  =  not p && (p || q)--p &| q  =  not p && (q || p)--p &| q  =  not q && (p && q)--p &| q  =  not q && (q && p)--p &| q  =  not q && (p || q)--p &| q  =  not q && (q || p)--p &| q  =  not p || p && q--p &| q  =  not p || q && p--p &| q  =  not p || (p || q)--p &| q  =  not p || (q || p)--p &| q  =  not q || p && q--p &| q  =  not q || q && p--p &| q  =  not q || (p || q)--p &| q  =  not q || (q || p)--p &| q  =  (p || q) && not p--p &| q  =  (p || q) && not q--p &| q  =  (q || p) && not p--p &| q  =  (q || p) && not q--p &| q  =  p && q || not p--p &| q  =  p && q || not q--p &| q  =  q && p || not p--p &| q  =  q && p || not q+  [3,10,40,116,338,953,2702,7505,20728] pattern candidates, 0 duplicates++rules:+x * y == x + y+x * y == y + x+x + 0 == x+0 + x == x+dec (x + y) == x + dec y+dec (x + y) == y + dec x+dec (x + y) == dec x + y+dec (x + y) == dec y + x+(x + y) + z == x + (y + z)+(x + y) + z == y + (x + z)+equations:+y + x == x + y+y + dec x == x + dec y+dec x + y == x + dec y+dec y + x == dec x + y+x + dec 0 == dec x+dec 0 + x == dec x+y + (x + z) == x + (y + z)+z + (x + y) == x + (y + z)+z + (y + x) == x + (y + z)+y + dec (dec x) == x + dec (dec y)+dec (dec x) + y == x + dec (dec y)+x + dec (dec 0) == dec (dec x)+dec (dec 0) + x == dec (dec x)++direct candidates:++x ? y  =  x++x ? y  =  y++x ? y  =  0++x ? y  =  dec x++x ? y  =  dec y++x ? y  =  dec 0++x ? y  =  x + x++x ? y  =  x + y++x ? y  =  y + x++x ? y  =  y + y++x ? y  =  dec x + y++x ? y  =  dec y + x++x ? y  =  dec 0 + x++x ? y  =  dec 0 + y++x ? y  =  x + dec x++x ? y  =  x + dec y++x ? y  =  x + dec 0++x ? y  =  y + dec x++x ? y  =  y + dec y++x ? y  =  y + dec 0++x ? y  =  x + (x + x)++x ? y  =  x + (x + y)++x ? y  =  x + (y + x)++x ? y  =  x + (y + y)++x ? y  =  y + (x + x)++x ? y  =  y + (x + y)++x ? y  =  y + (y + x)++x ? y  =  y + (y + y)++x ? y  =  dec x + dec x++x ? y  =  dec x + dec y++x ? y  =  dec x + dec 0++x ? y  =  dec y + dec x++x ? y  =  dec y + dec y++x ? y  =  dec y + dec 0++x ? y  =  dec 0 + dec x++x ? y  =  dec 0 + dec y++x ? y  =  dec 0 + dec 0++x ? y  =  x + (dec x + y)++x ? y  =  x + (dec y + x)++x ? y  =  x + (dec 0 + x)++x ? y  =  x + (dec 0 + y)++x ? y  =  x + (x + dec x)++x ? y  =  x + (x + dec y)++x ? y  =  x + (x + dec 0)++x ? y  =  x + (y + dec x)++x ? y  =  x + (y + dec y)++x ? y  =  x + (y + dec 0)++x ? y  =  y + (dec x + y)++x ? y  =  y + (dec y + x)++x ? y  =  y + (dec 0 + x)++x ? y  =  y + (dec 0 + y)++x ? y  =  y + (x + dec x)++x ? y  =  y + (x + dec y)++x ? y  =  y + (x + dec 0)++x ? y  =  y + (y + dec x)++x ? y  =  y + (y + dec y)++x ? y  =  y + (y + dec 0)++x ? y  =  dec x + (y + y)++x ? y  =  dec y + (x + x)++x ? y  =  dec 0 + (x + x)++x ? y  =  dec 0 + (x + y)++x ? y  =  dec 0 + (y + x)++x ? y  =  dec 0 + (y + y)+++pattern candidates:++x ? y  =  x++x ? y  =  y++x ? y  =  0++x ? y  =  dec x++x ? y  =  dec y++x ? y  =  dec 0++x ? 0  =  x+x ? y  =  y++x ? 0  =  x+x ? y  =  0++x ? 0  =  0+x ? y  =  x++x ? 0  =  0+x ? y  =  y++0 ? x  =  x+x ? y  =  0++0 ? x  =  0+x ? y  =  x++0 ? x  =  0+x ? y  =  y++x ? y  =  x + x++x ? y  =  x + y++x ? y  =  y + x++x ? y  =  y + y++x ? y  =  dec (dec x)++x ? y  =  dec (dec y)++x ? y  =  dec (dec 0)++x ? 0  =  x+x ? y  =  dec x++x ? 0  =  x+x ? y  =  dec y++x ? 0  =  x+x ? y  =  dec 0++x ? 0  =  0+x ? y  =  dec x++x ? 0  =  0+x ? y  =  dec y++x ? 0  =  0+x ? y  =  dec 0++x ? 0  =  dec x+x ? y  =  x++x ? 0  =  dec x+x ? y  =  y++x ? 0  =  dec x+x ? y  =  0++x ? 0  =  dec 0+x ? y  =  x++x ? 0  =  dec 0+x ? y  =  y++x ? 0  =  dec 0+x ? y  =  0++0 ? x  =  x+x ? y  =  dec x++0 ? x  =  x+x ? y  =  dec y++0 ? x  =  x+x ? y  =  dec 0++0 ? x  =  0+x ? y  =  dec x++0 ? x  =  0+x ? y  =  dec y++0 ? x  =  0+x ? y  =  dec 0++0 ? x  =  dec x+x ? y  =  x++0 ? x  =  dec x+x ? y  =  y++0 ? x  =  dec x+x ? y  =  0++0 ? x  =  dec 0+x ? y  =  x++0 ? x  =  dec 0+x ? y  =  y++0 ? x  =  dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y++x ? y  =  dec x + x++x ? y  =  dec x + y++x ? y  =  dec y + x++x ? y  =  dec y + y++x ? y  =  dec 0 + x++x ? y  =  dec 0 + y++x ? y  =  dec (dec (dec x))++x ? y  =  dec (dec (dec y))++x ? y  =  dec (dec (dec 0))++x ? y  =  x + dec x++x ? y  =  x + dec y++x ? y  =  x + dec 0++x ? y  =  y + dec x++x ? y  =  y + dec y++x ? y  =  y + dec 0++x ? 0  =  x+x ? y  =  x + x++x ? 0  =  x+x ? y  =  x + y++x ? 0  =  x+x ? y  =  y + x++x ? 0  =  x+x ? y  =  y + y++x ? 0  =  x+x ? y  =  dec (dec x)++x ? 0  =  x+x ? y  =  dec (dec y)++x ? 0  =  x+x ? y  =  dec (dec 0)++x ? 0  =  0+x ? y  =  x + x++x ? 0  =  0+x ? y  =  x + y++x ? 0  =  0+x ? y  =  y + x++x ? 0  =  0+x ? y  =  y + y++x ? 0  =  0+x ? y  =  dec (dec x)++x ? 0  =  0+x ? y  =  dec (dec y)++x ? 0  =  0+x ? y  =  dec (dec 0)++x ? 0  =  dec x+x ? y  =  dec y++x ? 0  =  dec x+x ? y  =  dec 0++x ? 0  =  dec 0+x ? y  =  dec x++x ? 0  =  dec 0+x ? y  =  dec y++x ? 0  =  x + x+x ? y  =  x++x ? 0  =  x + x+x ? y  =  y++x ? 0  =  x + x+x ? y  =  0++x ? 0  =  dec (dec x)+x ? y  =  x++x ? 0  =  dec (dec x)+x ? y  =  y++x ? 0  =  dec (dec x)+x ? y  =  0++x ? 0  =  dec (dec 0)+x ? y  =  x++x ? 0  =  dec (dec 0)+x ? y  =  y++x ? 0  =  dec (dec 0)+x ? y  =  0++0 ? x  =  x+x ? y  =  x + x++0 ? x  =  x+x ? y  =  x + y++0 ? x  =  x+x ? y  =  y + x++0 ? x  =  x+x ? y  =  y + y++0 ? x  =  x+x ? y  =  dec (dec x)++0 ? x  =  x+x ? y  =  dec (dec y)++0 ? x  =  x+x ? y  =  dec (dec 0)++0 ? x  =  0+x ? y  =  x + x++0 ? x  =  0+x ? y  =  x + y++0 ? x  =  0+x ? y  =  y + x++0 ? x  =  0+x ? y  =  y + y++0 ? x  =  0+x ? y  =  dec (dec x)++0 ? x  =  0+x ? y  =  dec (dec y)++0 ? x  =  0+x ? y  =  dec (dec 0)++0 ? x  =  dec x+x ? y  =  dec 0++0 ? x  =  dec 0+x ? y  =  dec x++0 ? x  =  dec 0+x ? y  =  dec y++0 ? x  =  x + x+x ? y  =  x++0 ? x  =  x + x+x ? y  =  y++0 ? x  =  x + x+x ? y  =  0++0 ? x  =  dec (dec x)+x ? y  =  x++0 ? x  =  dec (dec x)+x ? y  =  y++0 ? x  =  dec (dec x)+x ? y  =  0++0 ? x  =  dec (dec 0)+x ? y  =  x++0 ? x  =  dec (dec 0)+x ? y  =  y++0 ? x  =  dec (dec 0)+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  0++x ? 0  =  x+x ? y  =  x ? dec y++x ? 0  =  x+x ? y  =  y ? dec y++x ? 0  =  x+x ? y  =  0 ? dec y++x ? 0  =  x+x ? y  =  dec x ? x++x ? 0  =  x+x ? y  =  dec x ? y++x ? 0  =  x+x ? y  =  dec x ? 0++x ? 0  =  0+x ? y  =  x ? dec y++x ? 0  =  0+x ? y  =  y ? dec y++x ? 0  =  0+x ? y  =  0 ? dec y++x ? 0  =  0+x ? y  =  dec x ? x++x ? 0  =  0+x ? y  =  dec x ? y++x ? 0  =  0+x ? y  =  dec x ? 0++0 ? x  =  x+x ? y  =  x ? dec y++0 ? x  =  x+x ? y  =  y ? dec y++0 ? x  =  x+x ? y  =  0 ? dec y++0 ? x  =  x+x ? y  =  dec x ? x++0 ? x  =  x+x ? y  =  dec x ? y++0 ? x  =  x+x ? y  =  dec x ? 0++0 ? x  =  0+x ? y  =  x ? dec y++0 ? x  =  0+x ? y  =  y ? dec y++0 ? x  =  0+x ? y  =  0 ? dec y++0 ? x  =  0+x ? y  =  dec x ? x++0 ? x  =  0+x ? y  =  dec x ? y++0 ? x  =  0+x ? y  =  dec x ? 0++x ? y  =  dec (dec x) + x++x ? y  =  dec (dec x) + y++x ? y  =  dec (dec y) + x++x ? y  =  dec (dec y) + y++x ? y  =  dec (dec 0) + x++x ? y  =  dec (dec 0) + y++x ? y  =  dec (dec (dec (dec x)))++x ? y  =  dec (dec (dec (dec y)))++x ? y  =  dec (dec (dec (dec 0)))++x ? y  =  x + (x + x)++x ? y  =  x + (x + y)++x ? y  =  x + (y + x)++x ? y  =  x + (y + y)++x ? y  =  x + dec (dec x)++x ? y  =  x + dec (dec y)++x ? y  =  x + dec (dec 0)++x ? y  =  y + (x + x)++x ? y  =  y + (x + y)++x ? y  =  y + (y + x)++x ? y  =  y + (y + y)++x ? y  =  y + dec (dec x)++x ? y  =  y + dec (dec y)++x ? y  =  y + dec (dec 0)++x ? y  =  dec x + dec x++x ? y  =  dec x + dec y++x ? y  =  dec x + dec 0++x ? y  =  dec y + dec x++x ? y  =  dec y + dec y++x ? y  =  dec y + dec 0++x ? y  =  dec 0 + dec x++x ? y  =  dec 0 + dec y++x ? y  =  dec 0 + dec 0++x ? 0  =  x+x ? y  =  dec x + x++x ? 0  =  x+x ? y  =  dec x + y++x ? 0  =  x+x ? y  =  dec y + x++x ? 0  =  x+x ? y  =  dec y + y++x ? 0  =  x+x ? y  =  dec 0 + x++x ? 0  =  x+x ? y  =  dec 0 + y++x ? 0  =  x+x ? y  =  dec (dec (dec x))++x ? 0  =  x+x ? y  =  dec (dec (dec y))++x ? 0  =  x+x ? y  =  dec (dec (dec 0))++x ? 0  =  x+x ? y  =  x + dec x++x ? 0  =  x+x ? y  =  x + dec y++x ? 0  =  x+x ? y  =  x + dec 0++x ? 0  =  x+x ? y  =  y + dec x++x ? 0  =  x+x ? y  =  y + dec y++x ? 0  =  x+x ? y  =  y + dec 0++x ? 0  =  0+x ? y  =  dec x + x++x ? 0  =  0+x ? y  =  dec x + y++x ? 0  =  0+x ? y  =  dec y + x++x ? 0  =  0+x ? y  =  dec y + y++x ? 0  =  0+x ? y  =  dec 0 + x++x ? 0  =  0+x ? y  =  dec 0 + y++x ? 0  =  0+x ? y  =  dec (dec (dec x))++x ? 0  =  0+x ? y  =  dec (dec (dec y))++x ? 0  =  0+x ? y  =  dec (dec (dec 0))++x ? 0  =  0+x ? y  =  x + dec x++x ? 0  =  0+x ? y  =  x + dec y++x ? 0  =  0+x ? y  =  x + dec 0++x ? 0  =  0+x ? y  =  y + dec x++x ? 0  =  0+x ? y  =  y + dec y++x ? 0  =  0+x ? y  =  y + dec 0++x ? 0  =  dec x+x ? y  =  x + x++x ? 0  =  dec x+x ? y  =  x + y++x ? 0  =  dec x+x ? y  =  y + x++x ? 0  =  dec x+x ? y  =  y + y++x ? 0  =  dec x+x ? y  =  dec (dec x)++x ? 0  =  dec x+x ? y  =  dec (dec y)++x ? 0  =  dec x+x ? y  =  dec (dec 0)++x ? 0  =  dec 0+x ? y  =  x + x++x ? 0  =  dec 0+x ? y  =  x + y++x ? 0  =  dec 0+x ? y  =  y + x++x ? 0  =  dec 0+x ? y  =  y + y++x ? 0  =  dec 0+x ? y  =  dec (dec x)++x ? 0  =  dec 0+x ? y  =  dec (dec y)++x ? 0  =  dec 0+x ? y  =  dec (dec 0)++x ? 0  =  x + x+x ? y  =  dec x++x ? 0  =  x + x+x ? y  =  dec y++x ? 0  =  x + x+x ? y  =  dec 0++x ? 0  =  dec (dec x)+x ? y  =  dec x++x ? 0  =  dec (dec x)+x ? y  =  dec y++x ? 0  =  dec (dec x)+x ? y  =  dec 0++x ? 0  =  dec (dec 0)+x ? y  =  dec x++x ? 0  =  dec (dec 0)+x ? y  =  dec y++x ? 0  =  dec (dec 0)+x ? y  =  dec 0++x ? 0  =  dec x + x+x ? y  =  x++x ? 0  =  dec x + x+x ? y  =  y++x ? 0  =  dec x + x+x ? y  =  0++x ? 0  =  dec 0 + x+x ? y  =  x++x ? 0  =  dec 0 + x+x ? y  =  y++x ? 0  =  dec 0 + x+x ? y  =  0++x ? 0  =  dec (dec (dec x))+x ? y  =  x++x ? 0  =  dec (dec (dec x))+x ? y  =  y++x ? 0  =  dec (dec (dec x))+x ? y  =  0++x ? 0  =  dec (dec (dec 0))+x ? y  =  x++x ? 0  =  dec (dec (dec 0))+x ? y  =  y++x ? 0  =  dec (dec (dec 0))+x ? y  =  0++x ? 0  =  x + dec x+x ? y  =  x++x ? 0  =  x + dec x+x ? y  =  y++x ? 0  =  x + dec x+x ? y  =  0++x ? 0  =  x + dec 0+x ? y  =  x++x ? 0  =  x + dec 0+x ? y  =  y++x ? 0  =  x + dec 0+x ? y  =  0++0 ? x  =  x+x ? y  =  dec x + x++0 ? x  =  x+x ? y  =  dec x + y++0 ? x  =  x+x ? y  =  dec y + x++0 ? x  =  x+x ? y  =  dec y + y++0 ? x  =  x+x ? y  =  dec 0 + x++0 ? x  =  x+x ? y  =  dec 0 + y++0 ? x  =  x+x ? y  =  dec (dec (dec x))++0 ? x  =  x+x ? y  =  dec (dec (dec y))++0 ? x  =  x+x ? y  =  dec (dec (dec 0))++0 ? x  =  x+x ? y  =  x + dec x++0 ? x  =  x+x ? y  =  x + dec y++0 ? x  =  x+x ? y  =  x + dec 0++0 ? x  =  x+x ? y  =  y + dec x++0 ? x  =  x+x ? y  =  y + dec y++0 ? x  =  x+x ? y  =  y + dec 0++0 ? x  =  0+x ? y  =  dec x + x++0 ? x  =  0+x ? y  =  dec x + y++0 ? x  =  0+x ? y  =  dec y + x++0 ? x  =  0+x ? y  =  dec y + y++0 ? x  =  0+x ? y  =  dec 0 + x++0 ? x  =  0+x ? y  =  dec 0 + y++0 ? x  =  0+x ? y  =  dec (dec (dec x))++0 ? x  =  0+x ? y  =  dec (dec (dec y))++0 ? x  =  0+x ? y  =  dec (dec (dec 0))++0 ? x  =  0+x ? y  =  x + dec x++0 ? x  =  0+x ? y  =  x + dec y++0 ? x  =  0+x ? y  =  x + dec 0++0 ? x  =  0+x ? y  =  y + dec x++0 ? x  =  0+x ? y  =  y + dec y++0 ? x  =  0+x ? y  =  y + dec 0++0 ? x  =  dec x+x ? y  =  x + x++0 ? x  =  dec x+x ? y  =  x + y++0 ? x  =  dec x+x ? y  =  y + x++0 ? x  =  dec x+x ? y  =  y + y++0 ? x  =  dec x+x ? y  =  dec (dec x)++0 ? x  =  dec x+x ? y  =  dec (dec y)++0 ? x  =  dec x+x ? y  =  dec (dec 0)++0 ? x  =  dec 0+x ? y  =  x + x++0 ? x  =  dec 0+x ? y  =  x + y++0 ? x  =  dec 0+x ? y  =  y + x++0 ? x  =  dec 0+x ? y  =  y + y++0 ? x  =  dec 0+x ? y  =  dec (dec x)++0 ? x  =  dec 0+x ? y  =  dec (dec y)++0 ? x  =  dec 0+x ? y  =  dec (dec 0)++0 ? x  =  x + x+x ? y  =  dec x++0 ? x  =  x + x+x ? y  =  dec y++0 ? x  =  x + x+x ? y  =  dec 0++0 ? x  =  dec (dec x)+x ? y  =  dec x++0 ? x  =  dec (dec x)+x ? y  =  dec y++0 ? x  =  dec (dec x)+x ? y  =  dec 0++0 ? x  =  dec (dec 0)+x ? y  =  dec x++0 ? x  =  dec (dec 0)+x ? y  =  dec y++0 ? x  =  dec (dec 0)+x ? y  =  dec 0++0 ? x  =  dec x + x+x ? y  =  x++0 ? x  =  dec x + x+x ? y  =  y++0 ? x  =  dec x + x+x ? y  =  0++0 ? x  =  dec 0 + x+x ? y  =  x++0 ? x  =  dec 0 + x+x ? y  =  y++0 ? x  =  dec 0 + x+x ? y  =  0++0 ? x  =  dec (dec (dec x))+x ? y  =  x++0 ? x  =  dec (dec (dec x))+x ? y  =  y++0 ? x  =  dec (dec (dec x))+x ? y  =  0++0 ? x  =  dec (dec (dec 0))+x ? y  =  x++0 ? x  =  dec (dec (dec 0))+x ? y  =  y++0 ? x  =  dec (dec (dec 0))+x ? y  =  0++0 ? x  =  x + dec x+x ? y  =  x++0 ? x  =  x + dec x+x ? y  =  y++0 ? x  =  x + dec x+x ? y  =  0++0 ? x  =  x + dec 0+x ? y  =  x++0 ? x  =  x + dec 0+x ? y  =  y++0 ? x  =  x + dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec x)+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec x)+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec x)+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec 0)+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec 0)+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec 0)+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec x)+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec x)+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec x)+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec 0)+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec 0)+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec 0)+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  0+x ? y  =  0++x ? 0  =  x+x ? y  =  x ? dec (dec y)++x ? 0  =  x+x ? y  =  y ? dec (dec y)++x ? 0  =  x+x ? y  =  0 ? dec (dec y)++x ? 0  =  x+x ? y  =  dec x ? dec x++x ? 0  =  x+x ? y  =  dec x ? dec y++x ? 0  =  x+x ? y  =  dec x ? dec 0++x ? 0  =  x+x ? y  =  dec y ? dec y++x ? 0  =  x+x ? y  =  dec 0 ? dec y++x ? 0  =  x+x ? y  =  dec (dec x) ? x++x ? 0  =  x+x ? y  =  dec (dec x) ? y++x ? 0  =  x+x ? y  =  dec (dec x) ? 0++x ? 0  =  0+x ? y  =  x ? dec (dec y)++x ? 0  =  0+x ? y  =  y ? dec (dec y)++x ? 0  =  0+x ? y  =  0 ? dec (dec y)++x ? 0  =  0+x ? y  =  dec x ? dec x++x ? 0  =  0+x ? y  =  dec x ? dec y++x ? 0  =  0+x ? y  =  dec x ? dec 0++x ? 0  =  0+x ? y  =  dec y ? dec y++x ? 0  =  0+x ? y  =  dec 0 ? dec y++x ? 0  =  0+x ? y  =  dec (dec x) ? x++x ? 0  =  0+x ? y  =  dec (dec x) ? y++x ? 0  =  0+x ? y  =  dec (dec x) ? 0++0 ? x  =  x+x ? y  =  x ? dec (dec y)++0 ? x  =  x+x ? y  =  y ? dec (dec y)++0 ? x  =  x+x ? y  =  0 ? dec (dec y)++0 ? x  =  x+x ? y  =  dec x ? dec x++0 ? x  =  x+x ? y  =  dec x ? dec y++0 ? x  =  x+x ? y  =  dec x ? dec 0++0 ? x  =  x+x ? y  =  dec y ? dec y++0 ? x  =  x+x ? y  =  dec 0 ? dec y++0 ? x  =  x+x ? y  =  dec (dec x) ? x++0 ? x  =  x+x ? y  =  dec (dec x) ? y++0 ? x  =  x+x ? y  =  dec (dec x) ? 0++0 ? x  =  0+x ? y  =  x ? dec (dec y)++0 ? x  =  0+x ? y  =  y ? dec (dec y)++0 ? x  =  0+x ? y  =  0 ? dec (dec y)++0 ? x  =  0+x ? y  =  dec x ? dec x++0 ? x  =  0+x ? y  =  dec x ? dec y++0 ? x  =  0+x ? y  =  dec x ? dec 0++0 ? x  =  0+x ? y  =  dec y ? dec y++0 ? x  =  0+x ? y  =  dec 0 ? dec y++0 ? x  =  0+x ? y  =  dec (dec x) ? x++0 ? x  =  0+x ? y  =  dec (dec x) ? y++0 ? x  =  0+x ? y  =  dec (dec x) ? 0++x ? 0  =  x+x ? y  =  dec (x ? dec y)++x ? 0  =  x+x ? y  =  dec (y ? dec y)++x ? 0  =  x+x ? y  =  dec (0 ? dec y)++x ? 0  =  x+x ? y  =  dec (dec x ? x)++x ? 0  =  x+x ? y  =  dec (dec x ? y)++x ? 0  =  x+x ? y  =  dec (dec x ? 0)++x ? 0  =  0+x ? y  =  dec (x ? dec y)++x ? 0  =  0+x ? y  =  dec (y ? dec y)++x ? 0  =  0+x ? y  =  dec (0 ? dec y)++x ? 0  =  0+x ? y  =  dec (dec x ? x)++x ? 0  =  0+x ? y  =  dec (dec x ? y)++x ? 0  =  0+x ? y  =  dec (dec x ? 0)++x ? 0  =  dec x+x ? y  =  x ? dec y++x ? 0  =  dec x+x ? y  =  y ? dec y++x ? 0  =  dec x+x ? y  =  0 ? dec y++x ? 0  =  dec x+x ? y  =  dec x ? x++x ? 0  =  dec x+x ? y  =  dec x ? y++x ? 0  =  dec x+x ? y  =  dec x ? 0++x ? 0  =  dec 0+x ? y  =  x ? dec y++x ? 0  =  dec 0+x ? y  =  y ? dec y++x ? 0  =  dec 0+x ? y  =  0 ? dec y++x ? 0  =  dec 0+x ? y  =  dec x ? x++x ? 0  =  dec 0+x ? y  =  dec x ? y++x ? 0  =  dec 0+x ? y  =  dec x ? 0++0 ? x  =  x+x ? y  =  dec (x ? dec y)++0 ? x  =  x+x ? y  =  dec (y ? dec y)++0 ? x  =  x+x ? y  =  dec (0 ? dec y)++0 ? x  =  x+x ? y  =  dec (dec x ? x)++0 ? x  =  x+x ? y  =  dec (dec x ? y)++0 ? x  =  x+x ? y  =  dec (dec x ? 0)++0 ? x  =  0+x ? y  =  dec (x ? dec y)++0 ? x  =  0+x ? y  =  dec (y ? dec y)++0 ? x  =  0+x ? y  =  dec (0 ? dec y)++0 ? x  =  0+x ? y  =  dec (dec x ? x)++0 ? x  =  0+x ? y  =  dec (dec x ? y)++0 ? x  =  0+x ? y  =  dec (dec x ? 0)++0 ? x  =  dec x+x ? y  =  x ? dec y++0 ? x  =  dec x+x ? y  =  y ? dec y++0 ? x  =  dec x+x ? y  =  0 ? dec y++0 ? x  =  dec x+x ? y  =  dec x ? x++0 ? x  =  dec x+x ? y  =  dec x ? y++0 ? x  =  dec x+x ? y  =  dec x ? 0++0 ? x  =  dec 0+x ? y  =  x ? dec y++0 ? x  =  dec 0+x ? y  =  y ? dec y++0 ? x  =  dec 0+x ? y  =  0 ? dec y++0 ? x  =  dec 0+x ? y  =  dec x ? x++0 ? x  =  dec 0+x ? y  =  dec x ? y++0 ? x  =  dec 0+x ? y  =  dec x ? 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x ? dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y ? dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  0 ? dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec x ? x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec x ? y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec x ? 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x ? x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x ? 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x ? x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x ? 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x ? x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x ? 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x ? dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  y ? dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  0 ? dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec x ? x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec x ? y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec x ? 0++0 ? 0  =  0+0 ? x  =  x ? dec x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0 ? dec x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x ? dec x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0 ? dec x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x ? dec x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0 ? dec x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x ? dec x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0 ? dec x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x ? dec x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0 ? dec x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x ? dec x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0 ? dec x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  x ? dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y ? dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  0 ? dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec x ? x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec x ? y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec x ? 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x ? x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x ? 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x ? x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x ? 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x ? x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x ? 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x ? dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y ? dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  0 ? dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec x ? x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec x ? y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec x ? 0++x ? y  =  dec (dec (dec x)) + x++x ? y  =  dec (dec (dec x)) + y++x ? y  =  dec (dec (dec y)) + x++x ? y  =  dec (dec (dec y)) + y++x ? y  =  dec (dec (dec 0)) + x++x ? y  =  dec (dec (dec 0)) + y++x ? y  =  dec (dec (dec (dec (dec x))))++x ? y  =  dec (dec (dec (dec (dec y))))++x ? y  =  dec (dec (dec (dec (dec 0))))++x ? y  =  x + (dec x + x)++x ? y  =  x + (dec x + y)++x ? y  =  x + (dec y + x)++x ? y  =  x + (dec y + y)++x ? y  =  x + (dec 0 + x)++x ? y  =  x + (dec 0 + y)++x ? y  =  x + dec (dec (dec x))++x ? y  =  x + dec (dec (dec y))++x ? y  =  x + dec (dec (dec 0))++x ? y  =  x + (x + dec x)++x ? y  =  x + (x + dec y)++x ? y  =  x + (x + dec 0)++x ? y  =  x + (y + dec x)++x ? y  =  x + (y + dec y)++x ? y  =  x + (y + dec 0)++x ? y  =  y + (dec x + x)++x ? y  =  y + (dec x + y)++x ? y  =  y + (dec y + x)++x ? y  =  y + (dec y + y)++x ? y  =  y + (dec 0 + x)++x ? y  =  y + (dec 0 + y)++x ? y  =  y + dec (dec (dec x))++x ? y  =  y + dec (dec (dec y))++x ? y  =  y + dec (dec (dec 0))++x ? y  =  y + (x + dec x)++x ? y  =  y + (x + dec y)++x ? y  =  y + (x + dec 0)++x ? y  =  y + (y + dec x)++x ? y  =  y + (y + dec y)++x ? y  =  y + (y + dec 0)++x ? y  =  dec x + (x + x)++x ? y  =  dec x + (x + y)++x ? y  =  dec x + (y + x)++x ? y  =  dec x + (y + y)++x ? y  =  dec x + dec (dec x)++x ? y  =  dec x + dec (dec y)++x ? y  =  dec x + dec (dec 0)++x ? y  =  dec y + (x + x)++x ? y  =  dec y + (x + y)++x ? y  =  dec y + (y + x)++x ? y  =  dec y + (y + y)++x ? y  =  dec y + dec (dec x)++x ? y  =  dec y + dec (dec y)++x ? y  =  dec y + dec (dec 0)++x ? y  =  dec 0 + (x + x)++x ? y  =  dec 0 + (x + y)++x ? y  =  dec 0 + (y + x)++x ? y  =  dec 0 + (y + y)++x ? y  =  dec 0 + dec (dec x)++x ? y  =  dec 0 + dec (dec y)++x ? y  =  dec 0 + dec (dec 0)++x ? y  =  dec (dec x) + dec x++x ? y  =  dec (dec x) + dec y++x ? y  =  dec (dec x) + dec 0++x ? y  =  dec (dec y) + dec x++x ? y  =  dec (dec y) + dec y++x ? y  =  dec (dec y) + dec 0++x ? y  =  dec (dec 0) + dec x++x ? y  =  dec (dec 0) + dec y++x ? y  =  dec (dec 0) + dec 0++x ? 0  =  x+x ? y  =  dec (dec x) + x++x ? 0  =  x+x ? y  =  dec (dec x) + y++x ? 0  =  x+x ? y  =  dec (dec y) + x++x ? 0  =  x+x ? y  =  dec (dec y) + y++x ? 0  =  x+x ? y  =  dec (dec 0) + x++x ? 0  =  x+x ? y  =  dec (dec 0) + y++x ? 0  =  x+x ? y  =  dec (dec (dec (dec x)))++x ? 0  =  x+x ? y  =  dec (dec (dec (dec y)))++x ? 0  =  x+x ? y  =  dec (dec (dec (dec 0)))++x ? 0  =  x+x ? y  =  x + (x + x)++x ? 0  =  x+x ? y  =  x + (x + y)++x ? 0  =  x+x ? y  =  x + (y + x)++x ? 0  =  x+x ? y  =  x + (y + y)++x ? 0  =  x+x ? y  =  x + dec (dec x)++x ? 0  =  x+x ? y  =  x + dec (dec y)++x ? 0  =  x+x ? y  =  x + dec (dec 0)++x ? 0  =  x+x ? y  =  y + (x + x)++x ? 0  =  x+x ? y  =  y + (x + y)++x ? 0  =  x+x ? y  =  y + (y + x)++x ? 0  =  x+x ? y  =  y + (y + y)++x ? 0  =  x+x ? y  =  y + dec (dec x)++x ? 0  =  x+x ? y  =  y + dec (dec y)++x ? 0  =  x+x ? y  =  y + dec (dec 0)++x ? 0  =  x+x ? y  =  dec x + dec x++x ? 0  =  x+x ? y  =  dec x + dec y++x ? 0  =  x+x ? y  =  dec x + dec 0++x ? 0  =  x+x ? y  =  dec y + dec x++x ? 0  =  x+x ? y  =  dec y + dec y++x ? 0  =  x+x ? y  =  dec y + dec 0++x ? 0  =  x+x ? y  =  dec 0 + dec x++x ? 0  =  x+x ? y  =  dec 0 + dec y++x ? 0  =  x+x ? y  =  dec 0 + dec 0++x ? 0  =  0+x ? y  =  dec (dec x) + x++x ? 0  =  0+x ? y  =  dec (dec x) + y++x ? 0  =  0+x ? y  =  dec (dec y) + x++x ? 0  =  0+x ? y  =  dec (dec y) + y++x ? 0  =  0+x ? y  =  dec (dec 0) + x++x ? 0  =  0+x ? y  =  dec (dec 0) + y++x ? 0  =  0+x ? y  =  dec (dec (dec (dec x)))++x ? 0  =  0+x ? y  =  dec (dec (dec (dec y)))++x ? 0  =  0+x ? y  =  dec (dec (dec (dec 0)))++x ? 0  =  0+x ? y  =  x + (x + x)++x ? 0  =  0+x ? y  =  x + (x + y)++x ? 0  =  0+x ? y  =  x + (y + x)++x ? 0  =  0+x ? y  =  x + (y + y)++x ? 0  =  0+x ? y  =  x + dec (dec x)++x ? 0  =  0+x ? y  =  x + dec (dec y)++x ? 0  =  0+x ? y  =  x + dec (dec 0)++x ? 0  =  0+x ? y  =  y + (x + x)++x ? 0  =  0+x ? y  =  y + (x + y)++x ? 0  =  0+x ? y  =  y + (y + x)++x ? 0  =  0+x ? y  =  y + (y + y)++x ? 0  =  0+x ? y  =  y + dec (dec x)++x ? 0  =  0+x ? y  =  y + dec (dec y)++x ? 0  =  0+x ? y  =  y + dec (dec 0)++x ? 0  =  0+x ? y  =  dec x + dec x++x ? 0  =  0+x ? y  =  dec x + dec y++x ? 0  =  0+x ? y  =  dec x + dec 0++x ? 0  =  0+x ? y  =  dec y + dec x++x ? 0  =  0+x ? y  =  dec y + dec y++x ? 0  =  0+x ? y  =  dec y + dec 0++x ? 0  =  0+x ? y  =  dec 0 + dec x++x ? 0  =  0+x ? y  =  dec 0 + dec y++x ? 0  =  0+x ? y  =  dec 0 + dec 0++x ? 0  =  dec x+x ? y  =  dec x + x++x ? 0  =  dec x+x ? y  =  dec x + y++x ? 0  =  dec x+x ? y  =  dec y + x++x ? 0  =  dec x+x ? y  =  dec y + y++x ? 0  =  dec x+x ? y  =  dec 0 + x++x ? 0  =  dec x+x ? y  =  dec 0 + y++x ? 0  =  dec x+x ? y  =  dec (dec (dec x))++x ? 0  =  dec x+x ? y  =  dec (dec (dec y))++x ? 0  =  dec x+x ? y  =  dec (dec (dec 0))++x ? 0  =  dec x+x ? y  =  x + dec x++x ? 0  =  dec x+x ? y  =  x + dec y++x ? 0  =  dec x+x ? y  =  x + dec 0++x ? 0  =  dec x+x ? y  =  y + dec x++x ? 0  =  dec x+x ? y  =  y + dec y++x ? 0  =  dec x+x ? y  =  y + dec 0++x ? 0  =  dec 0+x ? y  =  dec x + x++x ? 0  =  dec 0+x ? y  =  dec x + y++x ? 0  =  dec 0+x ? y  =  dec y + x++x ? 0  =  dec 0+x ? y  =  dec y + y++x ? 0  =  dec 0+x ? y  =  dec 0 + x++x ? 0  =  dec 0+x ? y  =  dec 0 + y++x ? 0  =  dec 0+x ? y  =  dec (dec (dec x))++x ? 0  =  dec 0+x ? y  =  dec (dec (dec y))++x ? 0  =  dec 0+x ? y  =  dec (dec (dec 0))++x ? 0  =  dec 0+x ? y  =  x + dec x++x ? 0  =  dec 0+x ? y  =  x + dec y++x ? 0  =  dec 0+x ? y  =  x + dec 0++x ? 0  =  dec 0+x ? y  =  y + dec x++x ? 0  =  dec 0+x ? y  =  y + dec y++x ? 0  =  dec 0+x ? y  =  y + dec 0++x ? 0  =  x + x+x ? y  =  x + y++x ? 0  =  x + x+x ? y  =  y + x++x ? 0  =  x + x+x ? y  =  y + y++x ? 0  =  x + x+x ? y  =  dec (dec x)++x ? 0  =  x + x+x ? y  =  dec (dec y)++x ? 0  =  x + x+x ? y  =  dec (dec 0)++x ? 0  =  dec (dec x)+x ? y  =  x + x++x ? 0  =  dec (dec x)+x ? y  =  x + y++x ? 0  =  dec (dec x)+x ? y  =  y + x++x ? 0  =  dec (dec x)+x ? y  =  y + y++x ? 0  =  dec (dec x)+x ? y  =  dec (dec y)++x ? 0  =  dec (dec x)+x ? y  =  dec (dec 0)++x ? 0  =  dec (dec 0)+x ? y  =  x + x++x ? 0  =  dec (dec 0)+x ? y  =  x + y++x ? 0  =  dec (dec 0)+x ? y  =  y + x++x ? 0  =  dec (dec 0)+x ? y  =  y + y++x ? 0  =  dec (dec 0)+x ? y  =  dec (dec x)++x ? 0  =  dec (dec 0)+x ? y  =  dec (dec y)++x ? 0  =  dec x + x+x ? y  =  dec x++x ? 0  =  dec x + x+x ? y  =  dec y++x ? 0  =  dec x + x+x ? y  =  dec 0++x ? 0  =  dec 0 + x+x ? y  =  dec x++x ? 0  =  dec 0 + x+x ? y  =  dec y++x ? 0  =  dec 0 + x+x ? y  =  dec 0++x ? 0  =  dec (dec (dec x))+x ? y  =  dec x++x ? 0  =  dec (dec (dec x))+x ? y  =  dec y++x ? 0  =  dec (dec (dec x))+x ? y  =  dec 0++x ? 0  =  dec (dec (dec 0))+x ? y  =  dec x++x ? 0  =  dec (dec (dec 0))+x ? y  =  dec y++x ? 0  =  dec (dec (dec 0))+x ? y  =  dec 0++x ? 0  =  x + dec x+x ? y  =  dec x++x ? 0  =  x + dec x+x ? y  =  dec y++x ? 0  =  x + dec x+x ? y  =  dec 0++x ? 0  =  x + dec 0+x ? y  =  dec x++x ? 0  =  x + dec 0+x ? y  =  dec y++x ? 0  =  x + dec 0+x ? y  =  dec 0++x ? 0  =  dec (dec x) + x+x ? y  =  x++x ? 0  =  dec (dec x) + x+x ? y  =  y++x ? 0  =  dec (dec x) + x+x ? y  =  0++x ? 0  =  dec (dec 0) + x+x ? y  =  x++x ? 0  =  dec (dec 0) + x+x ? y  =  y++x ? 0  =  dec (dec 0) + x+x ? y  =  0++x ? 0  =  dec (dec (dec (dec x)))+x ? y  =  x++x ? 0  =  dec (dec (dec (dec x)))+x ? y  =  y++x ? 0  =  dec (dec (dec (dec x)))+x ? y  =  0++x ? 0  =  dec (dec (dec (dec 0)))+x ? y  =  x++x ? 0  =  dec (dec (dec (dec 0)))+x ? y  =  y++x ? 0  =  dec (dec (dec (dec 0)))+x ? y  =  0++x ? 0  =  x + (x + x)+x ? y  =  x++x ? 0  =  x + (x + x)+x ? y  =  y++x ? 0  =  x + (x + x)+x ? y  =  0++x ? 0  =  x + dec (dec x)+x ? y  =  x++x ? 0  =  x + dec (dec x)+x ? y  =  y++x ? 0  =  x + dec (dec x)+x ? y  =  0++x ? 0  =  x + dec (dec 0)+x ? y  =  x++x ? 0  =  x + dec (dec 0)+x ? y  =  y++x ? 0  =  x + dec (dec 0)+x ? y  =  0++x ? 0  =  dec x + dec x+x ? y  =  x++x ? 0  =  dec x + dec x+x ? y  =  y++x ? 0  =  dec x + dec x+x ? y  =  0++x ? 0  =  dec x + dec 0+x ? y  =  x++x ? 0  =  dec x + dec 0+x ? y  =  y++x ? 0  =  dec x + dec 0+x ? y  =  0++x ? 0  =  dec 0 + dec x+x ? y  =  x++x ? 0  =  dec 0 + dec x+x ? y  =  y++x ? 0  =  dec 0 + dec x+x ? y  =  0++x ? 0  =  dec 0 + dec 0+x ? y  =  x++x ? 0  =  dec 0 + dec 0+x ? y  =  y++x ? 0  =  dec 0 + dec 0+x ? y  =  0++0 ? x  =  x+x ? y  =  dec (dec x) + x++0 ? x  =  x+x ? y  =  dec (dec x) + y++0 ? x  =  x+x ? y  =  dec (dec y) + x++0 ? x  =  x+x ? y  =  dec (dec y) + y++0 ? x  =  x+x ? y  =  dec (dec 0) + x++0 ? x  =  x+x ? y  =  dec (dec 0) + y++0 ? x  =  x+x ? y  =  dec (dec (dec (dec x)))++0 ? x  =  x+x ? y  =  dec (dec (dec (dec y)))++0 ? x  =  x+x ? y  =  dec (dec (dec (dec 0)))++0 ? x  =  x+x ? y  =  x + (x + x)++0 ? x  =  x+x ? y  =  x + (x + y)++0 ? x  =  x+x ? y  =  x + (y + x)++0 ? x  =  x+x ? y  =  x + (y + y)++0 ? x  =  x+x ? y  =  x + dec (dec x)++0 ? x  =  x+x ? y  =  x + dec (dec y)++0 ? x  =  x+x ? y  =  x + dec (dec 0)++0 ? x  =  x+x ? y  =  y + (x + x)++0 ? x  =  x+x ? y  =  y + (x + y)++0 ? x  =  x+x ? y  =  y + (y + x)++0 ? x  =  x+x ? y  =  y + (y + y)++0 ? x  =  x+x ? y  =  y + dec (dec x)++0 ? x  =  x+x ? y  =  y + dec (dec y)++0 ? x  =  x+x ? y  =  y + dec (dec 0)++0 ? x  =  x+x ? y  =  dec x + dec x++0 ? x  =  x+x ? y  =  dec x + dec y++0 ? x  =  x+x ? y  =  dec x + dec 0++0 ? x  =  x+x ? y  =  dec y + dec x++0 ? x  =  x+x ? y  =  dec y + dec y++0 ? x  =  x+x ? y  =  dec y + dec 0++0 ? x  =  x+x ? y  =  dec 0 + dec x++0 ? x  =  x+x ? y  =  dec 0 + dec y++0 ? x  =  x+x ? y  =  dec 0 + dec 0++0 ? x  =  0+x ? y  =  dec (dec x) + x++0 ? x  =  0+x ? y  =  dec (dec x) + y++0 ? x  =  0+x ? y  =  dec (dec y) + x++0 ? x  =  0+x ? y  =  dec (dec y) + y++0 ? x  =  0+x ? y  =  dec (dec 0) + x++0 ? x  =  0+x ? y  =  dec (dec 0) + y++0 ? x  =  0+x ? y  =  dec (dec (dec (dec x)))++0 ? x  =  0+x ? y  =  dec (dec (dec (dec y)))++0 ? x  =  0+x ? y  =  dec (dec (dec (dec 0)))++0 ? x  =  0+x ? y  =  x + (x + x)++0 ? x  =  0+x ? y  =  x + (x + y)++0 ? x  =  0+x ? y  =  x + (y + x)++0 ? x  =  0+x ? y  =  x + (y + y)++0 ? x  =  0+x ? y  =  x + dec (dec x)++0 ? x  =  0+x ? y  =  x + dec (dec y)++0 ? x  =  0+x ? y  =  x + dec (dec 0)++0 ? x  =  0+x ? y  =  y + (x + x)++0 ? x  =  0+x ? y  =  y + (x + y)++0 ? x  =  0+x ? y  =  y + (y + x)++0 ? x  =  0+x ? y  =  y + (y + y)++0 ? x  =  0+x ? y  =  y + dec (dec x)++0 ? x  =  0+x ? y  =  y + dec (dec y)++0 ? x  =  0+x ? y  =  y + dec (dec 0)++0 ? x  =  0+x ? y  =  dec x + dec x++0 ? x  =  0+x ? y  =  dec x + dec y++0 ? x  =  0+x ? y  =  dec x + dec 0++0 ? x  =  0+x ? y  =  dec y + dec x++0 ? x  =  0+x ? y  =  dec y + dec y++0 ? x  =  0+x ? y  =  dec y + dec 0++0 ? x  =  0+x ? y  =  dec 0 + dec x++0 ? x  =  0+x ? y  =  dec 0 + dec y++0 ? x  =  0+x ? y  =  dec 0 + dec 0++0 ? x  =  dec x+x ? y  =  dec x + x++0 ? x  =  dec x+x ? y  =  dec x + y++0 ? x  =  dec x+x ? y  =  dec y + x++0 ? x  =  dec x+x ? y  =  dec y + y++0 ? x  =  dec x+x ? y  =  dec 0 + x++0 ? x  =  dec x+x ? y  =  dec 0 + y++0 ? x  =  dec x+x ? y  =  dec (dec (dec x))++0 ? x  =  dec x+x ? y  =  dec (dec (dec y))++0 ? x  =  dec x+x ? y  =  dec (dec (dec 0))++0 ? x  =  dec x+x ? y  =  x + dec x++0 ? x  =  dec x+x ? y  =  x + dec y++0 ? x  =  dec x+x ? y  =  x + dec 0++0 ? x  =  dec x+x ? y  =  y + dec x++0 ? x  =  dec x+x ? y  =  y + dec y++0 ? x  =  dec x+x ? y  =  y + dec 0++0 ? x  =  dec 0+x ? y  =  dec x + x++0 ? x  =  dec 0+x ? y  =  dec x + y++0 ? x  =  dec 0+x ? y  =  dec y + x++0 ? x  =  dec 0+x ? y  =  dec y + y++0 ? x  =  dec 0+x ? y  =  dec 0 + x++0 ? x  =  dec 0+x ? y  =  dec 0 + y++0 ? x  =  dec 0+x ? y  =  dec (dec (dec x))++0 ? x  =  dec 0+x ? y  =  dec (dec (dec y))++0 ? x  =  dec 0+x ? y  =  dec (dec (dec 0))++0 ? x  =  dec 0+x ? y  =  x + dec x++0 ? x  =  dec 0+x ? y  =  x + dec y++0 ? x  =  dec 0+x ? y  =  x + dec 0++0 ? x  =  dec 0+x ? y  =  y + dec x++0 ? x  =  dec 0+x ? y  =  y + dec y++0 ? x  =  dec 0+x ? y  =  y + dec 0++0 ? x  =  x + x+x ? y  =  x + y++0 ? x  =  x + x+x ? y  =  y + x++0 ? x  =  x + x+x ? y  =  dec (dec x)++0 ? x  =  x + x+x ? y  =  dec (dec y)++0 ? x  =  x + x+x ? y  =  dec (dec 0)++0 ? x  =  dec (dec x)+x ? y  =  x + x++0 ? x  =  dec (dec x)+x ? y  =  x + y++0 ? x  =  dec (dec x)+x ? y  =  y + x++0 ? x  =  dec (dec x)+x ? y  =  y + y++0 ? x  =  dec (dec x)+x ? y  =  dec (dec 0)++0 ? x  =  dec (dec 0)+x ? y  =  x + x++0 ? x  =  dec (dec 0)+x ? y  =  x + y++0 ? x  =  dec (dec 0)+x ? y  =  y + x++0 ? x  =  dec (dec 0)+x ? y  =  y + y++0 ? x  =  dec (dec 0)+x ? y  =  dec (dec x)++0 ? x  =  dec (dec 0)+x ? y  =  dec (dec y)++0 ? x  =  dec x + x+x ? y  =  dec x++0 ? x  =  dec x + x+x ? y  =  dec y++0 ? x  =  dec x + x+x ? y  =  dec 0++0 ? x  =  dec 0 + x+x ? y  =  dec x++0 ? x  =  dec 0 + x+x ? y  =  dec y++0 ? x  =  dec 0 + x+x ? y  =  dec 0++0 ? x  =  dec (dec (dec x))+x ? y  =  dec x++0 ? x  =  dec (dec (dec x))+x ? y  =  dec y++0 ? x  =  dec (dec (dec x))+x ? y  =  dec 0++0 ? x  =  dec (dec (dec 0))+x ? y  =  dec x++0 ? x  =  dec (dec (dec 0))+x ? y  =  dec y++0 ? x  =  dec (dec (dec 0))+x ? y  =  dec 0++0 ? x  =  x + dec x+x ? y  =  dec x++0 ? x  =  x + dec x+x ? y  =  dec y++0 ? x  =  x + dec x+x ? y  =  dec 0++0 ? x  =  x + dec 0+x ? y  =  dec x++0 ? x  =  x + dec 0+x ? y  =  dec y++0 ? x  =  x + dec 0+x ? y  =  dec 0++0 ? x  =  dec (dec x) + x+x ? y  =  x++0 ? x  =  dec (dec x) + x+x ? y  =  y++0 ? x  =  dec (dec x) + x+x ? y  =  0++0 ? x  =  dec (dec 0) + x+x ? y  =  x++0 ? x  =  dec (dec 0) + x+x ? y  =  y++0 ? x  =  dec (dec 0) + x+x ? y  =  0++0 ? x  =  dec (dec (dec (dec x)))+x ? y  =  x++0 ? x  =  dec (dec (dec (dec x)))+x ? y  =  y++0 ? x  =  dec (dec (dec (dec x)))+x ? y  =  0++0 ? x  =  dec (dec (dec (dec 0)))+x ? y  =  x++0 ? x  =  dec (dec (dec (dec 0)))+x ? y  =  y++0 ? x  =  dec (dec (dec (dec 0)))+x ? y  =  0++0 ? x  =  x + (x + x)+x ? y  =  x++0 ? x  =  x + (x + x)+x ? y  =  y++0 ? x  =  x + (x + x)+x ? y  =  0++0 ? x  =  x + dec (dec x)+x ? y  =  x++0 ? x  =  x + dec (dec x)+x ? y  =  y++0 ? x  =  x + dec (dec x)+x ? y  =  0++0 ? x  =  x + dec (dec 0)+x ? y  =  x++0 ? x  =  x + dec (dec 0)+x ? y  =  y++0 ? x  =  x + dec (dec 0)+x ? y  =  0++0 ? x  =  dec x + dec x+x ? y  =  x++0 ? x  =  dec x + dec x+x ? y  =  y++0 ? x  =  dec x + dec x+x ? y  =  0++0 ? x  =  dec x + dec 0+x ? y  =  x++0 ? x  =  dec x + dec 0+x ? y  =  y++0 ? x  =  dec x + dec 0+x ? y  =  0++0 ? x  =  dec 0 + dec x+x ? y  =  x++0 ? x  =  dec 0 + dec x+x ? y  =  y++0 ? x  =  dec 0 + dec x+x ? y  =  0++0 ? x  =  dec 0 + dec 0+x ? y  =  x++0 ? x  =  dec 0 + dec 0+x ? y  =  y++0 ? x  =  dec 0 + dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec x + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec x + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec y + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec y + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec 0 + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec 0 + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec (dec (dec x))++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec (dec (dec y))++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec (dec (dec 0))++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x + dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x + dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x + dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y + dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y + dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y + dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec x + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec x + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec y + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec y + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec 0 + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec 0 + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec (dec (dec x))++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec (dec (dec y))++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec (dec (dec 0))++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x + dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x + dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x + dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  y + dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  y + dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  0+x ? y  =  y + dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec x)+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec x)+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec x)+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec 0)+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec 0)+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec 0)+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x + x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x + x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec x + x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0 + x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0 + x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec 0 + x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec (dec x))+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec (dec x))+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec (dec x))+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec (dec 0))+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec (dec 0))+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  dec (dec (dec 0))+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + dec x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + dec x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + dec x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + dec 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + dec 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x+x ? 0  =  x + dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec x + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec x + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec y + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec y + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec 0 + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec 0 + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec (dec (dec x))++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec (dec (dec y))++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec (dec (dec 0))++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  x + dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  x + dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  x + dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y + dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y + dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y + dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec x + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec x + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec y + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec y + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec 0 + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec 0 + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec (dec (dec x))++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec (dec (dec y))++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec (dec (dec 0))++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x + dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x + dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x + dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y + dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y + dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y + dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec x)+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec x)+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec x)+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec 0)+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec 0)+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec 0)+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x + x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x + x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec x + x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0 + x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0 + x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec 0 + x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec (dec x))+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec (dec x))+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec (dec x))+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec (dec 0))+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec (dec 0))+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  dec (dec (dec 0))+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + dec x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + dec x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + dec x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + dec 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + dec 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  0+x ? 0  =  x + dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec 0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec 0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec 0+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x + x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x + x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  x + x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec (dec x)+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec (dec x)+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec (dec x)+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec (dec 0)+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec (dec 0)+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec x+x ? 0  =  dec (dec 0)+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  x + x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  x + y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  y + x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  y + y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  dec (dec x)++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  dec (dec y)++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  dec (dec 0)++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec 0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec 0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec 0+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x + x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x + x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  x + x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec (dec x)+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec (dec x)+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec (dec x)+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec (dec 0)+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec (dec 0)+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec 0+x ? 0  =  dec (dec 0)+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x + x+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec x)+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec 0)+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec x + x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec x + x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec x + x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec x + x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec x + x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec x + x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec 0 + x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec 0 + x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec 0 + x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec 0 + x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec 0 + x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec 0 + x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec (dec x))+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec (dec x))+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec (dec x))+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec (dec x))+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec (dec x))+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec (dec x))+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec (dec 0))+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec (dec 0))+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec (dec 0))+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  dec (dec (dec 0))+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  dec (dec (dec 0))+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  dec (dec (dec 0))+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x + dec x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x + dec x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x + dec x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x + dec x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x + dec x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x + dec x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x + dec 0+x ? 0  =  x+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x + dec 0+x ? 0  =  x+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x + dec 0+x ? 0  =  x+x ? y  =  0++0 ? 0  =  0+0 ? x  =  x + dec 0+x ? 0  =  0+x ? y  =  x++0 ? 0  =  0+0 ? x  =  x + dec 0+x ? 0  =  0+x ? y  =  y++0 ? 0  =  0+0 ? x  =  x + dec 0+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x + x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  x + y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y + x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  y + y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec (dec x)++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec (dec y)++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec (dec 0)++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x + x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  x + y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  y + x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  y + y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec (dec x)++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec (dec y)++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec (dec 0)++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x + x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x + x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  x + x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec (dec x)+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec (dec x)+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec (dec x)+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec (dec 0)+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec (dec 0)+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  x+x ? 0  =  dec (dec 0)+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  x + x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  x + y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y + x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  y + y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec (dec x)++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec (dec y)++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec (dec 0)++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x + x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  x + y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y + x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  y + y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec (dec x)++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec (dec y)++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec (dec 0)++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x + x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x + x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  x + x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec (dec x)+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec (dec x)+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec (dec x)+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec (dec 0)+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec (dec 0)+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  0+x ? 0  =  dec (dec 0)+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec x+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec 0+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  x + x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  x + x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  x + x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  x + x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  x + x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  x + x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec (dec x)+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec (dec x)+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec (dec x)+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec (dec x)+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec (dec x)+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec (dec x)+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec (dec 0)+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec (dec 0)+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec (dec 0)+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec 0+0 ? x  =  dec (dec 0)+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec 0+0 ? x  =  dec (dec 0)+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec 0+0 ? x  =  dec (dec 0)+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  x+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec x++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec y++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  x+x ? y  =  dec 0++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec x++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec y++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  0+x ? y  =  dec 0++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  dec x+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  0+x ? 0  =  dec 0+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  dec x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  dec x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  dec 0+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec (dec 0)+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec (dec 0)+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec (dec 0)+0 ? x  =  dec 0+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  x+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  x+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  x+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  x+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  x+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  x+x ? 0  =  0+x ? y  =  0++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  0+x ? 0  =  x+x ? y  =  x++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  0+x ? 0  =  x+x ? y  =  y++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  0+x ? 0  =  x+x ? y  =  0++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  0+x ? 0  =  0+x ? y  =  x++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  0+x ? 0  =  0+x ? y  =  y++0 ? 0  =  dec (dec (dec 0))+0 ? x  =  0+x ? 0  =  0+x ? y  =  0+++Candidates for: goo :: [Int] -> [Int]+  pruning with 4/4 rules+  [2,0,1,0,1,0,1,0,1] direct candidates, 0 duplicates+  [2,1,2,3,4,7,10,17,26] pattern candidates, 0 duplicates++rules:+xs ++ [] == xs+[] ++ xs == xs+(xs ++ ys) ++ zs == xs ++ (ys ++ zs)+(x:xs) ++ ys == x:(xs ++ ys)++direct candidates:++goo xs  =  xs++goo xs  =  []++goo xs  =  xs ++ xs++goo xs  =  xs ++ (xs ++ xs)+++pattern candidates:++goo xs  =  xs++goo xs  =  []++goo []  =  []+goo (x:xs)  =  xs++goo []  =  []+goo (x:xs)  =  goo xs++goo xs  =  xs ++ xs++goo []  =  []+goo (x:xs)  =  x:xs++goo []  =  []+goo (x:xs)  =  [x]++goo []  =  []+goo (x:xs)  =  xs ++ xs++goo []  =  []+goo (x:xs)  =  x:goo xs++goo []  =  []+goo (x:xs)  =  xs ++ goo xs++goo []  =  []+goo (x:xs)  =  goo xs ++ xs++goo xs  =  xs ++ (xs ++ xs)++goo []  =  []+goo (x:xs)  =  goo xs ++ goo xs++goo []  =  []+goo (x:xs)  =  x:x:xs++goo []  =  []+goo (x:xs)  =  [x,x]++goo []  =  []+goo (x:xs)  =  x:(xs ++ xs)++goo []  =  []+goo (x:xs)  =  xs ++ (x:xs)++goo []  =  []+goo (x:xs)  =  xs ++ [x]++goo []  =  []+goo (x:xs)  =  xs ++ (xs ++ xs)+++Candidates for: ?? :: [Int] -> [Int] -> [Int]+  pruning with 4/4 rules+  [3,0,4,0,8,0,16,0,32] direct candidates, 0 duplicates+  [3,7,13,66,152,361,1394,2084,11820] pattern candidates, 0 duplicates++rules:+xs ++ [] == xs+[] ++ xs == xs+(xs ++ ys) ++ zs == xs ++ (ys ++ zs)+(x:xs) ++ ys == x:(xs ++ ys)++direct candidates:++xs ?? ys  =  xs++xs ?? ys  =  ys++xs ?? ys  =  []++xs ?? ys  =  xs ++ xs++xs ?? ys  =  xs ++ ys++xs ?? ys  =  ys ++ xs++xs ?? ys  =  ys ++ ys++xs ?? ys  =  xs ++ (xs ++ xs)++xs ?? ys  =  xs ++ (xs ++ ys)++xs ?? ys  =  xs ++ (ys ++ xs)++xs ?? ys  =  xs ++ (ys ++ ys)++xs ?? ys  =  ys ++ (xs ++ xs)++xs ?? ys  =  ys ++ (xs ++ ys)++xs ?? ys  =  ys ++ (ys ++ xs)++xs ?? ys  =  ys ++ (ys ++ ys)+++pattern candidates:++xs ?? ys  =  xs++xs ?? ys  =  ys++xs ?? ys  =  []++xs ?? []  =  xs+xs ?? (x:ys)  =  ys++xs ?? []  =  xs+xs ?? (x:ys)  =  []++xs ?? []  =  []+xs ?? (x:ys)  =  xs++xs ?? []  =  []+xs ?? (x:ys)  =  ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  []++[] ?? xs  =  []+(x:xs) ?? ys  =  xs++[] ?? xs  =  []+(x:xs) ?? ys  =  ys++xs ?? ys  =  xs ++ xs++xs ?? ys  =  xs ++ ys++xs ?? ys  =  ys ++ xs++xs ?? ys  =  ys ++ ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  [] ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  [] ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  xs ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  xs ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  xs ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  ys ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  ys ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  ys ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  [] ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  [] ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? []++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? []++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? []++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? []++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  x:xs++xs ?? []  =  xs+xs ?? (x:ys)  =  x:ys++xs ?? []  =  xs+xs ?? (x:ys)  =  [x]++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ ys++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  x:xs++xs ?? []  =  []+xs ?? (x:ys)  =  x:ys++xs ?? []  =  []+xs ?? (x:ys)  =  [x]++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ ys++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  xs++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  ys++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  []++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  [x]++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  x:xs++[] ?? xs  =  []+(x:xs) ?? ys  =  x:ys++[] ?? xs  =  []+(x:xs) ?? ys  =  [x]++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ ys++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  xs++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  ys++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ?? []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ?? []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  [] ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  [] ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs ?? xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs ?? []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  [] ?? xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs ?? xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs ?? []+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  [] ?? xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs ?? xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs ?? []+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  [] ?? xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ?? []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ?? []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  [] ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  [] ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  [] ?? xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  [] ?? xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  [] ?? xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  [] ?? xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  [] ?? xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs ?? []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  [] ?? xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ?? []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ?? []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  [] ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  [] ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs ?? xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs ?? []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  [] ?? xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs ?? xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs ?? []+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  [] ?? xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs ?? xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs ?? []+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  [] ?? xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ?? []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ?? ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ?? []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  [] ?? xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  [] ?? ys++xs ?? ys  =  xs ++ (xs ++ xs)++xs ?? ys  =  xs ++ (xs ++ ys)++xs ?? ys  =  xs ++ (ys ++ xs)++xs ?? ys  =  xs ++ (ys ++ ys)++xs ?? ys  =  ys ++ (xs ++ xs)++xs ?? ys  =  ys ++ (xs ++ ys)++xs ?? ys  =  ys ++ (ys ++ xs)++xs ?? ys  =  ys ++ (ys ++ ys)++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  x:xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  x:ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  [x]++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  y:xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  y:ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  [y]++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ++ xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ++ ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ++ xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ++ ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  x:xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  x:ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  [x]++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  y:xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  y:ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  [y]++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ++ xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ++ ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ++ xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ++ ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  x:xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  x:xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  x:xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  [x]+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  [x]+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  [x]+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs ++ xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs ++ xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs+(x:xs) ?? []  =  xs ++ xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  x:xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  x:ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  [x]++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  y:xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  y:ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  [y]++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ++ xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs ++ ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ++ xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys ++ ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  x:xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  x:ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  [x]++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  y:xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  y:ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  [y]++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ++ xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs ++ ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ++ xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys ++ ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  x:xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  x:xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  x:xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  [x]+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  [x]+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  [x]+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs ++ xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs ++ xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  []+(x:xs) ?? []  =  xs ++ xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  x:xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  x:xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  x:xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  x:xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  x:xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  x:xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  [x]+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  [x]+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  [x]+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  [x]+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  [x]+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  [x]+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs ++ xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs ++ xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs ++ xs+(x:xs) ?? []  =  xs+(x:xs) ?? (y:ys)  =  []++[] ?? []  =  []+[] ?? (x:xs)  =  xs ++ xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  xs++[] ?? []  =  []+[] ?? (x:xs)  =  xs ++ xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  ys++[] ?? []  =  []+[] ?? (x:xs)  =  xs ++ xs+(x:xs) ?? []  =  []+(x:xs) ?? (y:ys)  =  []++xs ?? []  =  xs+xs ?? (x:ys)  =  (x:xs) ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  (x:xs) ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  (x:xs) ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  (x:ys) ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  (x:ys) ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  (x:ys) ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  [x] ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  [x] ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  [x] ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  (xs ++ xs) ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  (xs ++ xs) ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  (xs ++ xs) ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  (xs ++ ys) ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  (xs ++ ys) ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  (xs ++ ys) ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  (ys ++ xs) ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  (ys ++ xs) ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  (ys ++ xs) ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  (ys ++ ys) ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  (ys ++ ys) ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  (ys ++ ys) ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  (x:xs) ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  (x:xs) ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  (x:xs) ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  (x:ys) ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  (x:ys) ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  (x:ys) ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  [x] ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  [x] ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  [x] ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  (xs ++ xs) ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  (xs ++ xs) ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  (xs ++ xs) ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  (xs ++ ys) ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  (xs ++ ys) ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  (xs ++ ys) ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  (ys ++ xs) ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  (ys ++ xs) ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  (ys ++ xs) ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  (ys ++ ys) ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  (ys ++ ys) ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  (ys ++ ys) ?? []++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? (x:xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? (x:ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? [x]++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? (xs ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? (xs ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? (ys ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? (ys ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? (x:xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? (x:ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? [x]++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? (xs ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? (xs ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? (ys ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? (ys ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? (x:xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? (x:ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? [x]++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? (xs ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? (xs ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? (ys ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? (ys ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? (x:xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? (x:ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? [x]++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? (xs ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? (xs ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? (ys ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? (ys ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? (x:xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? (x:ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? [x]++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? (xs ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? (xs ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? (ys ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? (ys ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? (x:xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? (x:ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? [x]++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? (xs ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? (xs ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? (ys ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? (ys ++ ys)++xs ?? []  =  xs+xs ?? (x:ys)  =  x:xs ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  x:xs ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  x:xs ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  x:ys ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  x:ys ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  x:ys ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  [x,] ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  [x,] ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ xs ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ xs ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ xs ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ ys ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ ys ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ ys ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ [] ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ [] ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ xs ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ xs ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ xs ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ ys ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ ys ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ ys ?? []++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ [] ?? xs++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ [] ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ?? xs ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ?? ys ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ?? [] ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ?? xs ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ?? ys ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ?? [] ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  [] ?? xs ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  [] ?? ys ++ xs++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ?? xs ++ ys++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ?? ys ++ ys++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ?? [] ++ ys++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ?? xs ++ ys++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ?? ys ++ ys++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ?? [] ++ ys++xs ?? []  =  xs+xs ?? (x:ys)  =  [] ?? xs ++ ys++xs ?? []  =  xs+xs ?? (x:ys)  =  [] ?? ys ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  x:xs ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  x:xs ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  x:xs ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  x:ys ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  x:ys ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  x:ys ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  [x,] ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  [x,] ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ xs ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ xs ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ xs ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ ys ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ ys ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ ys ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ [] ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ [] ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ xs ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ xs ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ xs ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ ys ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ ys ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ ys ?? []++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ [] ?? xs++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ [] ?? ys++xs ?? []  =  []+xs ?? (x:ys)  =  xs ?? xs ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  xs ?? ys ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  xs ?? [] ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  ys ?? xs ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  ys ?? ys ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  ys ?? [] ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  [] ?? xs ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  [] ?? ys ++ xs++xs ?? []  =  []+xs ?? (x:ys)  =  xs ?? xs ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  xs ?? ys ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  xs ?? [] ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  ys ?? xs ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  ys ?? ys ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  ys ?? [] ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  [] ?? xs ++ ys++xs ?? []  =  []+xs ?? (x:ys)  =  [] ?? ys ++ ys++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  xs ?? xs++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  xs ?? ys++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  xs ?? []++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  ys ?? xs++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  ys ?? ys++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  ys ?? []++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  [] ?? xs++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  [] ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:xs ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:xs ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:xs ?? []++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:ys ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:ys ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:ys ?? []++[] ?? xs  =  xs+(x:xs) ?? ys  =  [x,] ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  [x,] ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ xs ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ xs ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ xs ?? []++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ ys ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ ys ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ ys ?? []++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ [] ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ [] ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ xs ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ xs ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ xs ?? []++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ ys ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ ys ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ ys ?? []++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ [] ?? xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ [] ?? ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? xs ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? ys ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? [] ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? xs ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? ys ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? [] ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? xs ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? ys ++ xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? xs ++ ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? ys ++ ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ?? [] ++ ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? xs ++ ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? ys ++ ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ?? [] ++ ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? xs ++ ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  [] ?? ys ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  x:xs ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  x:xs ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  x:xs ?? []++[] ?? xs  =  []+(x:xs) ?? ys  =  x:ys ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  x:ys ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  x:ys ?? []++[] ?? xs  =  []+(x:xs) ?? ys  =  [x,] ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  [x,] ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ xs ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ xs ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ xs ?? []++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ ys ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ ys ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ ys ?? []++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ [] ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ [] ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ xs ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ xs ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ xs ?? []++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ ys ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ ys ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ ys ?? []++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ [] ?? xs++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ [] ?? ys++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? xs ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? ys ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? [] ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? xs ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? ys ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? [] ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? xs ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? ys ++ xs++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? xs ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? ys ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ?? [] ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? xs ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? ys ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ?? [] ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? xs ++ ys++[] ?? xs  =  []+(x:xs) ?? ys  =  [] ?? ys ++ ys++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  xs ?? xs++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  xs ?? ys++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  xs ?? []++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  ys ?? xs++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  ys ?? ys++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  ys ?? []++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  [] ?? xs++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  [] ?? ys++xs ?? []  =  xs+xs ?? (x:ys)  =  x:x:xs++xs ?? []  =  xs+xs ?? (x:ys)  =  x:x:ys++xs ?? []  =  xs+xs ?? (x:ys)  =  [x,x]++xs ?? []  =  xs+xs ?? (x:ys)  =  x:(xs ++ xs)++xs ?? []  =  xs+xs ?? (x:ys)  =  x:(xs ++ ys)++xs ?? []  =  xs+xs ?? (x:ys)  =  x:(ys ++ xs)++xs ?? []  =  xs+xs ?? (x:ys)  =  x:(ys ++ ys)++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ (x:xs)++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ (x:ys)++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ [x]++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ (xs ++ xs)++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ (xs ++ ys)++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ (ys ++ xs)++xs ?? []  =  xs+xs ?? (x:ys)  =  xs ++ (ys ++ ys)++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ (x:xs)++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ (x:ys)++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ [x]++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ (xs ++ xs)++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ (xs ++ ys)++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ (ys ++ xs)++xs ?? []  =  xs+xs ?? (x:ys)  =  ys ++ (ys ++ ys)++xs ?? []  =  []+xs ?? (x:ys)  =  x:x:xs++xs ?? []  =  []+xs ?? (x:ys)  =  x:x:ys++xs ?? []  =  []+xs ?? (x:ys)  =  [x,x]++xs ?? []  =  []+xs ?? (x:ys)  =  x:(xs ++ xs)++xs ?? []  =  []+xs ?? (x:ys)  =  x:(xs ++ ys)++xs ?? []  =  []+xs ?? (x:ys)  =  x:(ys ++ xs)++xs ?? []  =  []+xs ?? (x:ys)  =  x:(ys ++ ys)++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ (x:xs)++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ (x:ys)++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ [x]++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ (xs ++ xs)++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ (xs ++ ys)++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ (ys ++ xs)++xs ?? []  =  []+xs ?? (x:ys)  =  xs ++ (ys ++ ys)++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ (x:xs)++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ (x:ys)++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ [x]++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ (xs ++ xs)++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ (xs ++ ys)++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ (ys ++ xs)++xs ?? []  =  []+xs ?? (x:ys)  =  ys ++ (ys ++ ys)++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  x:xs++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  x:ys++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  [x]++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  xs ++ ys++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  ys ++ xs++xs ?? []  =  xs ++ xs+xs ?? (x:ys)  =  ys ++ ys++xs ?? []  =  xs ++ (xs ++ xs)+xs ?? (x:ys)  =  xs++xs ?? []  =  xs ++ (xs ++ xs)+xs ?? (x:ys)  =  ys++xs ?? []  =  xs ++ (xs ++ xs)+xs ?? (x:ys)  =  []++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:x:xs++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:x:ys++[] ?? xs  =  xs+(x:xs) ?? ys  =  [x,x]++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:(xs ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:(xs ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:(ys ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  x:(ys ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ (x:xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ (x:ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ [x]++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ (xs ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ (xs ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ (ys ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  xs ++ (ys ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ (x:xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ (x:ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ [x]++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ (xs ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ (xs ++ ys)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ (ys ++ xs)++[] ?? xs  =  xs+(x:xs) ?? ys  =  ys ++ (ys ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  x:x:xs++[] ?? xs  =  []+(x:xs) ?? ys  =  x:x:ys++[] ?? xs  =  []+(x:xs) ?? ys  =  [x,x]++[] ?? xs  =  []+(x:xs) ?? ys  =  x:(xs ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  x:(xs ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  x:(ys ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  x:(ys ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ (x:xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ (x:ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ [x]++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ (xs ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ (xs ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ (ys ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  xs ++ (ys ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ (x:xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ (x:ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ [x]++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ (xs ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ (xs ++ ys)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ (ys ++ xs)++[] ?? xs  =  []+(x:xs) ?? ys  =  ys ++ (ys ++ ys)++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  x:xs++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  x:ys++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  [x]++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  xs ++ ys++[] ?? xs  =  xs ++ xs+(x:xs) ?? ys  =  ys ++ xs++[] ?? xs  =  xs ++ (xs ++ xs)+(x:xs) ?? ys  =  xs++[] ?? xs  =  xs ++ (xs ++ xs)+(x:xs) ?? ys  =  ys++[] ?? xs  =  xs ++ (xs ++ xs)+(x:xs) ?? ys  =  []+++Candidates for: ton :: Bool -> Bool+  pruning with 39/49 rules+  [3,1,0,2,6,14,38,68,140] direct candidates, 0 duplicates+  [3,3,0,0,0,0,0,0,0] pattern candidates, 0 duplicates++rules:+not False == True+not True == False+p && p == p+p || p == p+not (not p) == p+p && False == False+p && True == p+False && p == False+True && p == p+p || False == p+p || True == True+False || p == p+True || p == True+not (p && q) == not p || not q+not (p && q) == not q || not p+not (p || q) == not p && not q+not (p || q) == not q && not p+p && not p == False+not p && p == False+p || not p == True+not p || p == True+(p && q) && r == p && (q && r)+(p && q) && r == q && (p && r)+(p || q) || r == p || (q || r)+(p || q) || r == q || (p || r)+p && (p && q) == p && q+p && (q && p) == p && q+p && (q && p) == q && p+p || (p || q) == p || q+p || (q || p) == p || q+p || (q || p) == q || p+p && (p || q) == p+p && (q || p) == p+(p || q) && p == p+(p || q) && q == q+p || p && q == p+p || q && p == p+p && q || p == p+p && q || q == q+equations:+q && p == p && q+q || p == p || q+q && (p && r) == p && (q && r)+r && (p && q) == p && (q && r)+r && (q && p) == p && (q && r)+q || (p || r) == p || (q || r)+r || (p || q) == p || (q || r)+r || (q || p) == p || (q || r)+(r || q) && p == p && (q || r)+r && q || p == p || q && r++direct candidates:++ton p  =  p++ton p  =  False++ton p  =  True++ton p  =  not p++ton p  =  p && ton p++ton p  =  p || ton p++ton p  =  p && ton (not p)++ton p  =  p || ton (not p)++ton p  =  p && not (ton p)++ton p  =  not p && ton p++ton p  =  p || not (ton p)++ton p  =  not p || ton p++ton p  =  p && not (ton (not p))++ton p  =  not p && ton (not p)++ton p  =  p || not (ton (not p))++ton p  =  not p || ton (not p)++ton p  =  p && (p && ton p)++ton p  =  p && (ton p && p)++ton p  =  p && (p || ton p)++ton p  =  p && (ton p || p)++ton p  =  not p && not (ton p)++ton p  =  p || p && ton p++ton p  =  p || ton p && p++ton p  =  p || (p || ton p)++ton p  =  p || (ton p || p)++ton p  =  not p || not (ton p)+++pattern candidates:++ton p  =  p++ton p  =  False++ton p  =  True++ton p  =  not p++ton False  =  False+ton True  =  True++ton False  =  True+ton True  =  False+++Candidates for: &| :: Bool -> Bool -> Bool+  pruning with 39/49 rules+  [4,2,4,8,32,128,468,1576,4924] direct candidates, 0 duplicates+  [4,14,26,8,4,48,60,280,592] pattern candidates, 0 duplicates++rules:+not False == True+not True == False+p && p == p+p || p == p+not (not p) == p+p && False == False+p && True == p+False && p == False+True && p == p+p || False == p+p || True == True+False || p == p+True || p == True+not (p && q) == not p || not q+not (p && q) == not q || not p+not (p || q) == not p && not q+not (p || q) == not q && not p+p && not p == False+not p && p == False+p || not p == True+not p || p == True+(p && q) && r == p && (q && r)+(p && q) && r == q && (p && r)+(p || q) || r == p || (q || r)+(p || q) || r == q || (p || r)+p && (p && q) == p && q+p && (q && p) == p && q+p && (q && p) == q && p+p || (p || q) == p || q+p || (q || p) == p || q+p || (q || p) == q || p+p && (p || q) == p+p && (q || p) == p+(p || q) && p == p+(p || q) && q == q+p || p && q == p+p || q && p == p+p && q || p == p+p && q || q == q+equations:+q && p == p && q+q || p == p || q+q && (p && r) == p && (q && r)+r && (p && q) == p && (q && r)+r && (q && p) == p && (q && r)+q || (p || r) == p || (q || r)+r || (p || q) == p || (q || r)+r || (q || p) == p || (q || r)+(r || q) && p == p && (q || r)+r && q || p == p || q && r++direct candidates:++p &| q  =  p++p &| q  =  q++p &| q  =  False++p &| q  =  True++p &| q  =  not p++p &| q  =  not q++p &| q  =  p && q++p &| q  =  q && p++p &| q  =  p || q++p &| q  =  q || p++p &| q  =  not p && q++p &| q  =  not q && p++p &| q  =  not p || q++p &| q  =  not q || p++p &| q  =  p && not q++p &| q  =  q && not p++p &| q  =  p || not q++p &| q  =  q || not p++p &| q  =  not p && not q++p &| q  =  not q && not p++p &| q  =  not p || not q++p &| q  =  not q || not p++p &| q  =  p && p &| p++p &| q  =  p && p &| q++p &| q  =  p && p &| False++p &| q  =  p && p &| True++p &| q  =  p && q &| q++p &| q  =  p && False &| q++p &| q  =  p && True &| q++p &| q  =  q && p &| p++p &| q  =  q && p &| q++p &| q  =  q && p &| False++p &| q  =  q && p &| True++p &| q  =  q && q &| q++p &| q  =  q && False &| q++p &| q  =  q && True &| q++p &| q  =  p || p &| p++p &| q  =  p || p &| q++p &| q  =  p || p &| False++p &| q  =  p || p &| True++p &| q  =  p || q &| q++p &| q  =  p || False &| q++p &| q  =  p || True &| q++p &| q  =  q || p &| p++p &| q  =  q || p &| q++p &| q  =  q || p &| False++p &| q  =  q || p &| True++p &| q  =  q || q &| q++p &| q  =  q || False &| q++p &| q  =  q || True &| q++p &| q  =  p && (not p && q)++p &| q  =  p && (not p || q)++p &| q  =  p && (q && not p)++p &| q  =  p && (q || not p)++p &| q  =  q && (not q && p)++p &| q  =  q && (not q || p)++p &| q  =  q && (p && not q)++p &| q  =  q && (p || not q)++p &| q  =  p || not p && q++p &| q  =  p || (not p || q)++p &| q  =  p || q && not p++p &| q  =  p || (q || not p)++p &| q  =  q || not q && p++p &| q  =  q || (not q || p)++p &| q  =  q || p && not q++p &| q  =  q || (p || not q)++p &| q  =  not p && (p || q)++p &| q  =  not p && (q || p)++p &| q  =  not q && (p || q)++p &| q  =  not q && (q || p)++p &| q  =  not p || p && q++p &| q  =  not p || q && p++p &| q  =  not q || p && q++p &| q  =  not q || q && p++p &| q  =  (p || q) && not p++p &| q  =  (p || q) && not q++p &| q  =  (q || p) && not p++p &| q  =  (q || p) && not q++p &| q  =  p && q || not p++p &| q  =  p && q || not q++p &| q  =  q && p || not p++p &| q  =  q && p || not q++p &| q  =  p && p &| not p++p &| q  =  p && p &| not q++p &| q  =  p && q &| not q++p &| q  =  p && False &| not q++p &| q  =  p && True &| not q++p &| q  =  p && not p &| p++p &| q  =  p && not p &| q++p &| q  =  p && not p &| False++p &| q  =  p && not p &| True++p &| q  =  p && not q &| q++p &| q  =  q && p &| not p++p &| q  =  q && p &| not q++p &| q  =  q && q &| not q++p &| q  =  q && False &| not q++p &| q  =  q && True &| not q++p &| q  =  q && not p &| p++p &| q  =  q && not p &| q++p &| q  =  q && not p &| False++p &| q  =  q && not p &| True++p &| q  =  q && not q &| q++p &| q  =  p || p &| not p++p &| q  =  p || p &| not q++p &| q  =  p || q &| not q++p &| q  =  p || False &| not q++p &| q  =  p || True &| not q++p &| q  =  p || not p &| p++p &| q  =  p || not p &| q++p &| q  =  p || not p &| False++p &| q  =  p || not p &| True++p &| q  =  p || not q &| q++p &| q  =  q || p &| not p++p &| q  =  q || p &| not q++p &| q  =  q || q &| not q++p &| q  =  q || False &| not q++p &| q  =  q || True &| not q++p &| q  =  q || not p &| p++p &| q  =  q || not p &| q++p &| q  =  q || not p &| False++p &| q  =  q || not p &| True++p &| q  =  q || not q &| q++p &| q  =  p && not (p &| p)++p &| q  =  p && not (p &| q)++p &| q  =  p && not (p &| False)++p &| q  =  p && not (p &| True)++p &| q  =  p && not (q &| q)++p &| q  =  p && not (False &| q)++p &| q  =  p && not (True &| q)++p &| q  =  q && not (p &| p)++p &| q  =  q && not (p &| q)++p &| q  =  q && not (p &| False)++p &| q  =  q && not (p &| True)++p &| q  =  q && not (q &| q)++p &| q  =  q && not (False &| q)++p &| q  =  q && not (True &| q)++p &| q  =  not p && p &| p++p &| q  =  not p && p &| q++p &| q  =  not p && p &| False++p &| q  =  not p && p &| True++p &| q  =  not p && q &| q++p &| q  =  not p && False &| q++p &| q  =  not p && True &| q++p &| q  =  not q && p &| p++p &| q  =  not q && p &| q++p &| q  =  not q && p &| False++p &| q  =  not q && p &| True++p &| q  =  not q && q &| q++p &| q  =  not q && False &| q++p &| q  =  not q && True &| q++p &| q  =  p || not (p &| p)++p &| q  =  p || not (p &| q)++p &| q  =  p || not (p &| False)++p &| q  =  p || not (p &| True)++p &| q  =  p || not (q &| q)++p &| q  =  p || not (False &| q)++p &| q  =  p || not (True &| q)++p &| q  =  q || not (p &| p)++p &| q  =  q || not (p &| q)++p &| q  =  q || not (p &| False)++p &| q  =  q || not (p &| True)++p &| q  =  q || not (q &| q)++p &| q  =  q || not (False &| q)++p &| q  =  q || not (True &| q)++p &| q  =  not p || p &| p++p &| q  =  not p || p &| q++p &| q  =  not p || p &| False++p &| q  =  not p || p &| True++p &| q  =  not p || q &| q++p &| q  =  not p || False &| q++p &| q  =  not p || True &| q++p &| q  =  not q || p &| p++p &| q  =  not q || p &| q++p &| q  =  not q || p &| False++p &| q  =  not q || p &| True++p &| q  =  not q || q &| q++p &| q  =  not q || False &| q++p &| q  =  not q || True &| q+++pattern candidates:++p &| q  =  p++p &| q  =  q++p &| q  =  False++p &| q  =  True++p &| q  =  not p++p &| q  =  not q++p &| False  =  p+p &| True  =  False++p &| False  =  p+p &| True  =  True++p &| False  =  False+p &| True  =  p++p &| False  =  False+p &| True  =  True++p &| False  =  True+p &| True  =  p++p &| False  =  True+p &| True  =  False++False &| p  =  p+True &| p  =  False++False &| p  =  p+True &| p  =  True++False &| p  =  False+True &| p  =  p++False &| p  =  False+True &| p  =  True++False &| p  =  True+True &| p  =  p++False &| p  =  True+True &| p  =  False++p &| q  =  p && q++p &| q  =  q && p++p &| q  =  p || q++p &| q  =  q || p++p &| False  =  p+p &| True  =  not p++p &| False  =  False+p &| True  =  not p++p &| False  =  True+p &| True  =  not p++p &| False  =  not p+p &| True  =  p++p &| False  =  not p+p &| True  =  False++p &| False  =  not p+p &| True  =  True++False &| p  =  p+True &| p  =  not p++False &| p  =  False+True &| p  =  not p++False &| p  =  True+True &| p  =  not p++False &| p  =  not p+True &| p  =  p++False &| p  =  not p+True &| p  =  False++False &| p  =  not p+True &| p  =  True++False &| False  =  False+False &| True  =  False+True &| False  =  False+True &| True  =  True++False &| False  =  False+False &| True  =  False+True &| False  =  True+True &| True  =  False++False &| False  =  False+False &| True  =  True+True &| False  =  False+True &| True  =  False++False &| False  =  False+False &| True  =  True+True &| False  =  True+True &| True  =  False++False &| False  =  False+False &| True  =  True+True &| False  =  True+True &| True  =  True++False &| False  =  True+False &| True  =  False+True &| False  =  False+True &| True  =  False++False &| False  =  True+False &| True  =  False+True &| False  =  False+True &| True  =  True++False &| False  =  True+False &| True  =  False+True &| False  =  True+True &| True  =  True++False &| False  =  True+False &| True  =  True+True &| False  =  False+True &| True  =  True++False &| False  =  True+False &| True  =  True+True &| False  =  True+True &| True  =  False++p &| q  =  not p && q++p &| q  =  not q && p++p &| q  =  not p || q++p &| q  =  not q || p++p &| q  =  p && not q++p &| q  =  q && not p++p &| q  =  p || not q++p &| q  =  q || not p++p &| q  =  not p && not q++p &| q  =  not q && not p++p &| q  =  not p || not q++p &| q  =  not q || not p++p &| q  =  (not p || q) && p++p &| q  =  (not q || p) && q++p &| q  =  (p || not q) && q++p &| q  =  (q || not p) && p++p &| q  =  not p && q || p++p &| q  =  not q && p || q++p &| q  =  p && not q || q++p &| q  =  q && not p || p++p &| q  =  p && (not p && q)++p &| q  =  p && (not p || q)++p &| q  =  p && (q && not p)++p &| q  =  p && (q || not p)++p &| q  =  q && (not q && p)++p &| q  =  q && (not q || p)++p &| q  =  q && (p && not q)++p &| q  =  q && (p || not q)++p &| q  =  p || not p && q++p &| q  =  p || (not p || q)++p &| q  =  p || q && not p++p &| q  =  p || (q || not p)++p &| q  =  q || not q && p++p &| q  =  q || (not q || p)++p &| q  =  q || p && not q++p &| q  =  q || (p || not q)++p &| q  =  not p && (p && q)++p &| q  =  not p && (q && p)++p &| q  =  not p && (p || q)++p &| q  =  not p && (q || p)++p &| q  =  not q && (p && q)++p &| q  =  not q && (q && p)++p &| q  =  not q && (p || q)++p &| q  =  not q && (q || p)++p &| q  =  not p || p && q++p &| q  =  not p || q && p++p &| q  =  not p || (p || q)++p &| q  =  not p || (q || p)++p &| q  =  not q || p && q++p &| q  =  not q || q && p++p &| q  =  not q || (p || q)++p &| q  =  not q || (q || p)++p &| q  =  (p || q) && not p++p &| q  =  (p || q) && not q++p &| q  =  (q || p) && not p++p &| q  =  (q || p) && not q++p &| q  =  p && q || not p++p &| q  =  p && q || not q++p &| q  =  q && p || not p++p &| q  =  q && p || not q+++Candidates for: gcd :: Int -> Int -> Int+  pruning with 0/0 rules+  [3,0,9,0,54,0,405,0,3402] direct candidates, 0 duplicates+  [3,7,18,60,150,469,1245,3812,10634] pattern candidates, 0 duplicates++no rules.++direct candidates:++gcd x y  =  x++gcd x y  =  y++gcd x y  =  0++gcd x y  =  x `mod` x++gcd x y  =  x `mod` y++gcd x y  =  x `mod` 0++gcd x y  =  y `mod` x++gcd x y  =  y `mod` y++gcd x y  =  y `mod` 0++gcd x y  =  0 `mod` x++gcd x y  =  0 `mod` y++gcd x y  =  0 `mod` 0++gcd x y  =  (x `mod` x) `mod` x++gcd x y  =  (x `mod` x) `mod` y++gcd x y  =  (x `mod` x) `mod` 0++gcd x y  =  (x `mod` y) `mod` x++gcd x y  =  (x `mod` y) `mod` y++gcd x y  =  (x `mod` y) `mod` 0++gcd x y  =  (x `mod` 0) `mod` x++gcd x y  =  (x `mod` 0) `mod` y++gcd x y  =  (x `mod` 0) `mod` 0++gcd x y  =  (y `mod` x) `mod` x++gcd x y  =  (y `mod` x) `mod` y++gcd x y  =  (y `mod` x) `mod` 0++gcd x y  =  (y `mod` y) `mod` x++gcd x y  =  (y `mod` y) `mod` y++gcd x y  =  (y `mod` y) `mod` 0++gcd x y  =  (y `mod` 0) `mod` x++gcd x y  =  (y `mod` 0) `mod` y++gcd x y  =  (y `mod` 0) `mod` 0++gcd x y  =  (0 `mod` x) `mod` x++gcd x y  =  (0 `mod` x) `mod` y++gcd x y  =  (0 `mod` x) `mod` 0++gcd x y  =  (0 `mod` y) `mod` x++gcd x y  =  (0 `mod` y) `mod` y++gcd x y  =  (0 `mod` y) `mod` 0++gcd x y  =  (0 `mod` 0) `mod` x++gcd x y  =  (0 `mod` 0) `mod` y++gcd x y  =  (0 `mod` 0) `mod` 0++gcd x y  =  x `mod` (x `mod` x)++gcd x y  =  x `mod` (x `mod` y)++gcd x y  =  x `mod` (x `mod` 0)++gcd x y  =  x `mod` (y `mod` x)++gcd x y  =  x `mod` (y `mod` y)++gcd x y  =  x `mod` (y `mod` 0)++gcd x y  =  x `mod` (0 `mod` x)++gcd x y  =  x `mod` (0 `mod` y)++gcd x y  =  x `mod` (0 `mod` 0)++gcd x y  =  y `mod` (x `mod` x)++gcd x y  =  y `mod` (x `mod` y)++gcd x y  =  y `mod` (x `mod` 0)++gcd x y  =  y `mod` (y `mod` x)++gcd x y  =  y `mod` (y `mod` y)++gcd x y  =  y `mod` (y `mod` 0)++gcd x y  =  y `mod` (0 `mod` x)++gcd x y  =  y `mod` (0 `mod` y)++gcd x y  =  y `mod` (0 `mod` 0)++gcd x y  =  0 `mod` (x `mod` x)++gcd x y  =  0 `mod` (x `mod` y)++gcd x y  =  0 `mod` (x `mod` 0)++gcd x y  =  0 `mod` (y `mod` x)++gcd x y  =  0 `mod` (y `mod` y)++gcd x y  =  0 `mod` (y `mod` 0)++gcd x y  =  0 `mod` (0 `mod` x)++gcd x y  =  0 `mod` (0 `mod` y)++gcd x y  =  0 `mod` (0 `mod` 0)+++pattern candidates:++gcd x y  =  x++gcd x y  =  y++gcd x y  =  0++gcd x 0  =  x+gcd x y  =  y++gcd x 0  =  x+gcd x y  =  0++gcd x 0  =  0+gcd x y  =  x++gcd x 0  =  0+gcd x y  =  y++gcd 0 x  =  x+gcd x y  =  0++gcd 0 x  =  0+gcd x y  =  x++gcd 0 x  =  0+gcd x y  =  y++gcd x y  =  x `mod` x++gcd x y  =  x `mod` y++gcd x y  =  x `mod` 0++gcd x y  =  y `mod` x++gcd x y  =  y `mod` y++gcd x y  =  y `mod` 0++gcd x y  =  0 `mod` x++gcd x y  =  0 `mod` y++gcd x y  =  0 `mod` 0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  y++gcd x 0  =  x+gcd x y  =  x `mod` x++gcd x 0  =  x+gcd x y  =  x `mod` y++gcd x 0  =  x+gcd x y  =  x `mod` 0++gcd x 0  =  x+gcd x y  =  y `mod` x++gcd x 0  =  x+gcd x y  =  y `mod` y++gcd x 0  =  x+gcd x y  =  y `mod` 0++gcd x 0  =  x+gcd x y  =  0 `mod` x++gcd x 0  =  x+gcd x y  =  0 `mod` y++gcd x 0  =  x+gcd x y  =  0 `mod` 0++gcd x 0  =  0+gcd x y  =  x `mod` x++gcd x 0  =  0+gcd x y  =  x `mod` y++gcd x 0  =  0+gcd x y  =  x `mod` 0++gcd x 0  =  0+gcd x y  =  y `mod` x++gcd x 0  =  0+gcd x y  =  y `mod` y++gcd x 0  =  0+gcd x y  =  y `mod` 0++gcd x 0  =  0+gcd x y  =  0 `mod` x++gcd x 0  =  0+gcd x y  =  0 `mod` y++gcd x 0  =  0+gcd x y  =  0 `mod` 0++gcd x 0  =  x `mod` x+gcd x y  =  x++gcd x 0  =  x `mod` x+gcd x y  =  y++gcd x 0  =  x `mod` x+gcd x y  =  0++gcd x 0  =  x `mod` 0+gcd x y  =  x++gcd x 0  =  x `mod` 0+gcd x y  =  y++gcd x 0  =  x `mod` 0+gcd x y  =  0++gcd x 0  =  0 `mod` x+gcd x y  =  x++gcd x 0  =  0 `mod` x+gcd x y  =  y++gcd x 0  =  0 `mod` x+gcd x y  =  0++gcd x 0  =  0 `mod` 0+gcd x y  =  x++gcd x 0  =  0 `mod` 0+gcd x y  =  y++gcd x 0  =  0 `mod` 0+gcd x y  =  0++gcd 0 x  =  x+gcd x y  =  x `mod` x++gcd 0 x  =  x+gcd x y  =  x `mod` y++gcd 0 x  =  x+gcd x y  =  x `mod` 0++gcd 0 x  =  x+gcd x y  =  y `mod` x++gcd 0 x  =  x+gcd x y  =  y `mod` y++gcd 0 x  =  x+gcd x y  =  y `mod` 0++gcd 0 x  =  x+gcd x y  =  0 `mod` x++gcd 0 x  =  x+gcd x y  =  0 `mod` y++gcd 0 x  =  x+gcd x y  =  0 `mod` 0++gcd 0 x  =  0+gcd x y  =  x `mod` x++gcd 0 x  =  0+gcd x y  =  x `mod` y++gcd 0 x  =  0+gcd x y  =  x `mod` 0++gcd 0 x  =  0+gcd x y  =  y `mod` x++gcd 0 x  =  0+gcd x y  =  y `mod` y++gcd 0 x  =  0+gcd x y  =  y `mod` 0++gcd 0 x  =  0+gcd x y  =  0 `mod` x++gcd 0 x  =  0+gcd x y  =  0 `mod` y++gcd 0 x  =  0+gcd x y  =  0 `mod` 0++gcd 0 x  =  x `mod` x+gcd x y  =  x++gcd 0 x  =  x `mod` x+gcd x y  =  y++gcd 0 x  =  x `mod` x+gcd x y  =  0++gcd 0 x  =  x `mod` 0+gcd x y  =  x++gcd 0 x  =  x `mod` 0+gcd x y  =  y++gcd 0 x  =  x `mod` 0+gcd x y  =  0++gcd 0 x  =  0 `mod` x+gcd x y  =  x++gcd 0 x  =  0 `mod` x+gcd x y  =  y++gcd 0 x  =  0 `mod` x+gcd x y  =  0++gcd 0 x  =  0 `mod` 0+gcd x y  =  x++gcd 0 x  =  0 `mod` 0+gcd x y  =  y++gcd 0 x  =  0 `mod` 0+gcd x y  =  0++gcd x y  =  (x `mod` x) `mod` x++gcd x y  =  (x `mod` x) `mod` y++gcd x y  =  (x `mod` x) `mod` 0++gcd x y  =  (x `mod` y) `mod` x++gcd x y  =  (x `mod` y) `mod` y++gcd x y  =  (x `mod` y) `mod` 0++gcd x y  =  (x `mod` 0) `mod` x++gcd x y  =  (x `mod` 0) `mod` y++gcd x y  =  (x `mod` 0) `mod` 0++gcd x y  =  (y `mod` x) `mod` x++gcd x y  =  (y `mod` x) `mod` y++gcd x y  =  (y `mod` x) `mod` 0++gcd x y  =  (y `mod` y) `mod` x++gcd x y  =  (y `mod` y) `mod` y++gcd x y  =  (y `mod` y) `mod` 0++gcd x y  =  (y `mod` 0) `mod` x++gcd x y  =  (y `mod` 0) `mod` y++gcd x y  =  (y `mod` 0) `mod` 0++gcd x y  =  (0 `mod` x) `mod` x++gcd x y  =  (0 `mod` x) `mod` y++gcd x y  =  (0 `mod` x) `mod` 0++gcd x y  =  (0 `mod` y) `mod` x++gcd x y  =  (0 `mod` y) `mod` y++gcd x y  =  (0 `mod` y) `mod` 0++gcd x y  =  (0 `mod` 0) `mod` x++gcd x y  =  (0 `mod` 0) `mod` y++gcd x y  =  (0 `mod` 0) `mod` 0++gcd x y  =  x `mod` (x `mod` x)++gcd x y  =  x `mod` (x `mod` y)++gcd x y  =  x `mod` (x `mod` 0)++gcd x y  =  x `mod` (y `mod` x)++gcd x y  =  x `mod` (y `mod` y)++gcd x y  =  x `mod` (y `mod` 0)++gcd x y  =  x `mod` (0 `mod` x)++gcd x y  =  x `mod` (0 `mod` y)++gcd x y  =  x `mod` (0 `mod` 0)++gcd x y  =  y `mod` (x `mod` x)++gcd x y  =  y `mod` (x `mod` y)++gcd x y  =  y `mod` (x `mod` 0)++gcd x y  =  y `mod` (y `mod` x)++gcd x y  =  y `mod` (y `mod` y)++gcd x y  =  y `mod` (y `mod` 0)++gcd x y  =  y `mod` (0 `mod` x)++gcd x y  =  y `mod` (0 `mod` y)++gcd x y  =  y `mod` (0 `mod` 0)++gcd x y  =  0 `mod` (x `mod` x)++gcd x y  =  0 `mod` (x `mod` y)++gcd x y  =  0 `mod` (x `mod` 0)++gcd x y  =  0 `mod` (y `mod` x)++gcd x y  =  0 `mod` (y `mod` y)++gcd x y  =  0 `mod` (y `mod` 0)++gcd x y  =  0 `mod` (0 `mod` x)++gcd x y  =  0 `mod` (0 `mod` y)++gcd x y  =  0 `mod` (0 `mod` 0)++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  x `mod` x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  x `mod` y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  x `mod` 0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  y `mod` x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  y `mod` y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  y `mod` 0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  0 `mod` x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  0 `mod` y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  0 `mod` 0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  x `mod` x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  x `mod` y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  x `mod` 0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  y `mod` x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  y `mod` y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  y `mod` 0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  0 `mod` x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  0 `mod` y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  0 `mod` 0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x `mod` x+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x `mod` x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x `mod` x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x `mod` 0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x `mod` 0+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  x `mod` 0+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0 `mod` x+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0 `mod` x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0 `mod` x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0 `mod` 0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0 `mod` 0+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  x+gcd x 0  =  0 `mod` 0+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  x `mod` x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  x `mod` y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  x `mod` 0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  y `mod` x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  y `mod` y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  y `mod` 0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  0 `mod` x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  0 `mod` y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  0 `mod` 0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  x `mod` x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  x `mod` y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  x `mod` 0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  y `mod` x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  y `mod` y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  y `mod` 0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  0 `mod` x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  0 `mod` y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  0 `mod` 0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x `mod` x+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x `mod` x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x `mod` x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x `mod` 0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x `mod` 0+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  x `mod` 0+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0 `mod` x+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0 `mod` x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0 `mod` x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0 `mod` 0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0 `mod` 0+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  0+gcd x 0  =  0 `mod` 0+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  x `mod` x+gcd x 0  =  x+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x `mod` x+gcd x 0  =  x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  x `mod` x+gcd x 0  =  x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  x `mod` x+gcd x 0  =  0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x `mod` x+gcd x 0  =  0+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  x `mod` x+gcd x 0  =  0+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  x `mod` 0+gcd x 0  =  x+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x `mod` 0+gcd x 0  =  x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  x `mod` 0+gcd x 0  =  x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  x `mod` 0+gcd x 0  =  0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  x `mod` 0+gcd x 0  =  0+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  x `mod` 0+gcd x 0  =  0+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0 `mod` x+gcd x 0  =  x+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  0 `mod` x+gcd x 0  =  x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  0 `mod` x+gcd x 0  =  x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0 `mod` x+gcd x 0  =  0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  0 `mod` x+gcd x 0  =  0+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  0 `mod` x+gcd x 0  =  0+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0 `mod` 0+gcd x 0  =  x+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  0 `mod` 0+gcd x 0  =  x+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  0 `mod` 0+gcd x 0  =  x+gcd x y  =  0++gcd 0 0  =  0+gcd 0 x  =  0 `mod` 0+gcd x 0  =  0+gcd x y  =  x++gcd 0 0  =  0+gcd 0 x  =  0 `mod` 0+gcd x 0  =  0+gcd x y  =  y++gcd 0 0  =  0+gcd 0 x  =  0 `mod` 0+gcd x 0  =  0+gcd x y  =  0++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  x++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  y++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  x+gcd x 0  =  x+gcd x y  =  0++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  x++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  y++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  x+gcd x 0  =  0+gcd x y  =  0++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  x++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  y++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  0+gcd x 0  =  x+gcd x y  =  0++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  x++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  y++gcd 0 0  =  0 `mod` 0+gcd 0 x  =  0+gcd x 0  =  0+gcd x y  =  0++gcd x 0  =  x+gcd x y  =  gcd x (x `mod` y)++gcd x 0  =  x+gcd x y  =  gcd x (y `mod` x)++gcd x 0  =  x+gcd x y  =  gcd x (y `mod` y)++gcd x 0  =  x+gcd x y  =  gcd x (0 `mod` y)++gcd x 0  =  x+gcd x y  =  gcd y (x `mod` y)++gcd x 0  =  x+gcd x y  =  gcd y (y `mod` x)++gcd x 0  =  x+gcd x y  =  gcd y (y `mod` y)++gcd x 0  =  x+gcd x y  =  gcd y (0 `mod` y)++gcd x 0  =  x+gcd x y  =  gcd 0 (x `mod` y)++gcd x 0  =  x+gcd x y  =  gcd 0 (y `mod` x)++gcd x 0  =  x+gcd x y  =  gcd 0 (y `mod` y)++gcd x 0  =  x+gcd x y  =  gcd 0 (0 `mod` y)++gcd x 0  =  x+gcd x y  =  gcd (x `mod` x) x++gcd x 0  =  x+gcd x y  =  gcd (x `mod` x) y++gcd x 0  =  x+gcd x y  =  gcd (x `mod` x) 0++gcd x 0  =  x+gcd x y  =  gcd (x `mod` y) x++gcd x 0  =  x+gcd x y  =  gcd (x `mod` y) y++gcd x 0  =  x+gcd x y  =  gcd (x `mod` y) 0++gcd x 0  =  x+gcd x y  =  gcd (y `mod` x) x++gcd x 0  =  x+gcd x y  =  gcd (y `mod` x) y++gcd x 0  =  x+gcd x y  =  gcd (y `mod` x) 0++gcd x 0  =  x+gcd x y  =  gcd (0 `mod` x) x++gcd x 0  =  x+gcd x y  =  gcd (0 `mod` x) y++gcd x 0  =  x+gcd x y  =  gcd (0 `mod` x) 0++gcd x 0  =  0+gcd x y  =  gcd x (x `mod` y)++gcd x 0  =  0+gcd x y  =  gcd x (y `mod` x)++gcd x 0  =  0+gcd x y  =  gcd x (y `mod` y)++gcd x 0  =  0+gcd x y  =  gcd x (0 `mod` y)++gcd x 0  =  0+gcd x y  =  gcd y (x `mod` y)++gcd x 0  =  0+gcd x y  =  gcd y (y `mod` x)++gcd x 0  =  0+gcd x y  =  gcd y (y `mod` y)++gcd x 0  =  0+gcd x y  =  gcd y (0 `mod` y)++gcd x 0  =  0+gcd x y  =  gcd 0 (x `mod` y)++gcd x 0  =  0+gcd x y  =  gcd 0 (y `mod` x)++gcd x 0  =  0+gcd x y  =  gcd 0 (y `mod` y)++gcd x 0  =  0+gcd x y  =  gcd 0 (0 `mod` y)++gcd x 0  =  0+gcd x y  =  gcd (x `mod` x) x++gcd x 0  =  0+gcd x y  =  gcd (x `mod` x) y++gcd x 0  =  0+gcd x y  =  gcd (x `mod` x) 0++gcd x 0  =  0+gcd x y  =  gcd (x `mod` y) x++gcd x 0  =  0+gcd x y  =  gcd (x `mod` y) y++gcd x 0  =  0+gcd x y  =  gcd (x `mod` y) 0++gcd x 0  =  0+gcd x y  =  gcd (y `mod` x) x++gcd x 0  =  0+gcd x y  =  gcd (y `mod` x) y++gcd x 0  =  0+gcd x y  =  gcd (y `mod` x) 0++gcd x 0  =  0+gcd x y  =  gcd (0 `mod` x) x++gcd x 0  =  0+gcd x y  =  gcd (0 `mod` x) y++gcd x 0  =  0+gcd x y  =  gcd (0 `mod` x) 0++gcd 0 x  =  x+gcd x y  =  gcd x (x `mod` y)++gcd 0 x  =  x+gcd x y  =  gcd x (y `mod` x)++gcd 0 x  =  x+gcd x y  =  gcd x (y `mod` y)++gcd 0 x  =  x+gcd x y  =  gcd x (0 `mod` y)++gcd 0 x  =  x+gcd x y  =  gcd y (x `mod` y)++gcd 0 x  =  x+gcd x y  =  gcd y (y `mod` x)++gcd 0 x  =  x+gcd x y  =  gcd y (y `mod` y)++gcd 0 x  =  x+gcd x y  =  gcd y (0 `mod` y)++gcd 0 x  =  x+gcd x y  =  gcd 0 (x `mod` y)++gcd 0 x  =  x+gcd x y  =  gcd 0 (y `mod` x)++gcd 0 x  =  x+gcd x y  =  gcd 0 (y `mod` y)++gcd 0 x  =  x+gcd x y  =  gcd 0 (0 `mod` y)++gcd 0 x  =  x+gcd x y  =  gcd (x `mod` x) x++gcd 0 x  =  x+gcd x y  =  gcd (x `mod` x) y++gcd 0 x  =  x+gcd x y  =  gcd (x `mod` x) 0++gcd 0 x  =  x+gcd x y  =  gcd (x `mod` y) x++gcd 0 x  =  x+gcd x y  =  gcd (x `mod` y) y++gcd 0 x  =  x+gcd x y  =  gcd (x `mod` y) 0++gcd 0 x  =  x+gcd x y  =  gcd (y `mod` x) x++gcd 0 x  =  x+gcd x y  =  gcd (y `mod` x) y++gcd 0 x  =  x+gcd x y  =  gcd (y `mod` x) 0++gcd 0 x  =  x+gcd x y  =  gcd (0 `mod` x) x++gcd 0 x  =  x+gcd x y  =  gcd (0 `mod` x) y++gcd 0 x  =  x+gcd x y  =  gcd (0 `mod` x) 0++gcd 0 x  =  0+gcd x y  =  gcd x (x `mod` y)++gcd 0 x  =  0+gcd x y  =  gcd x (y `mod` x)++gcd 0 x  =  0+gcd x y  =  gcd x (y `mod` y)++gcd 0 x  =  0+gcd x y  =  gcd x (0 `mod` y)++gcd 0 x  =  0+gcd x y  =  gcd y (x `mod` y)++gcd 0 x  =  0+gcd x y  =  gcd y (y `mod` x)++gcd 0 x  =  0+gcd x y  =  gcd y (y `mod` y)++gcd 0 x  =  0+gcd x y  =  gcd y (0 `mod` y)++gcd 0 x  =  0+gcd x y  =  gcd 0 (x `mod` y)++gcd 0 x  =  0+gcd x y  =  gcd 0 (y `mod` x)++gcd 0 x  =  0+gcd x y  =  gcd 0 (y `mod` y)++gcd 0 x  =  0+gcd x y  =  gcd 0 (0 `mod` y)++gcd 0 x  =  0+gcd x y  =  gcd (x `mod` x) x++gcd 0 x  =  0+gcd x y  =  gcd (x `mod` x) y++gcd 0 x  =  0+gcd x y  =  gcd (x `mod` x) 0++gcd 0 x  =  0+gcd x y  =  gcd (x `mod` y) x++gcd 0 x  =  0+gcd x y  =  gcd (x `mod` y) y++gcd 0 x  =  0+gcd x y  =  gcd (x `mod` y) 0++gcd 0 x  =  0+gcd x y  =  gcd (y `mod` x) x++gcd 0 x  =  0+gcd x y  =  gcd (y `mod` x) y++gcd 0 x  =  0+gcd x y  =  gcd (y `mod` x) 0++gcd 0 x  =  0+gcd x y  =  gcd (0 `mod` x) x++gcd 0 x  =  0+gcd x y  =  gcd (0 `mod` x) y++gcd 0 x  =  0+gcd x y  =  gcd (0 `mod` x) 0++gcd x 0  =  x+gcd x y  =  (x `mod` x) `mod` x++gcd x 0  =  x+gcd x y  =  (x `mod` x) `mod` y++gcd x 0  =  x+gcd x y  =  (x `mod` x) `mod` 0++gcd x 0  =  x+gcd x y  =  (x `mod` y) `mod` x++gcd x 0  =  x+gcd x y  =  (x `mod` y) `mod` y++gcd x 0  =  x+gcd x y  =  (x `mod` y) `mod` 0++gcd x 0  =  x+gcd x y  =  (x `mod` 0) `mod` x++gcd x 0  =  x+gcd x y  =  (x `mod` 0) `mod` y++gcd x 0  =  x+gcd x y  =  (x `mod` 0) `mod` 0++gcd x 0  =  x+gcd x y  =  (y `mod` x) `mod` x++gcd x 0  =  x+gcd x y  =  (y `mod` x) `mod` y++gcd x 0  =  x+gcd x y  =  (y `mod` x) `mod` 0++gcd x 0  =  x+gcd x y  =  (y `mod` y) `mod` x++gcd x 0  =  x+gcd x y  =  (y `mod` y) `mod` y++gcd x 0  =  x+gcd x y  =  (y `mod` y) `mod` 0++gcd x 0  =  x+gcd x y  =  (y `mod` 0) `mod` x++gcd x 0  =  x+gcd x y  =  (y `mod` 0) `mod` y++gcd x 0  =  x+gcd x y  =  (y `mod` 0) `mod` 0++gcd x 0  =  x+gcd x y  =  (0 `mod` x) `mod` x++gcd x 0  =  x+gcd x y  =  (0 `mod` x) `mod` y++gcd x 0  =  x+gcd x y  =  (0 `mod` x) `mod` 0++gcd x 0  =  x+gcd x y  =  (0 `mod` y) `mod` x++gcd x 0  =  x+gcd x y  =  (0 `mod` y) `mod` y++gcd x 0  =  x+gcd x y  =  (0 `mod` y) `mod` 0++gcd x 0  =  x+gcd x y  =  (0 `mod` 0) `mod` x++gcd x 0  =  x+gcd x y  =  (0 `mod` 0) `mod` y++gcd x 0  =  x+gcd x y  =  (0 `mod` 0) `mod` 0++gcd x 0  =  x+gcd x y  =  x `mod` (x `mod` x)++gcd x 0  =  x+gcd x y  =  x `mod` (x `mod` y)++gcd x 0  =  x+gcd x y  =  x `mod` (x `mod` 0)++gcd x 0  =  x+gcd x y  =  x `mod` (y `mod` x)++gcd x 0  =  x+gcd x y  =  x `mod` (y `mod` y)++gcd x 0  =  x+gcd x y  =  x `mod` (y `mod` 0)++gcd x 0  =  x+gcd x y  =  x `mod` (0 `mod` x)++gcd x 0  =  x+gcd x y  =  x `mod` (0 `mod` y)++gcd x 0  =  x+gcd x y  =  x `mod` (0 `mod` 0)++gcd x 0  =  x+gcd x y  =  y `mod` (x `mod` x)++gcd x 0  =  x+gcd x y  =  y `mod` (x `mod` y)++gcd x 0  =  x+gcd x y  =  y `mod` (x `mod` 0)++gcd x 0  =  x+gcd x y  =  y `mod` (y `mod` x)++gcd x 0  =  x+gcd x y  =  y `mod` (y `mod` y)++gcd x 0  =  x+gcd x y  =  y `mod` (y `mod` 0)++gcd x 0  =  x+gcd x y  =  y `mod` (0 `mod` x)++gcd x 0  =  x+gcd x y  =  y `mod` (0 `mod` y)++gcd x 0  =  x+gcd x y  =  y `mod` (0 `mod` 0)++gcd x 0  =  x+gcd x y  =  0 `mod` (x `mod` x)++gcd x 0  =  x+gcd x y  =  0 `mod` (x `mod` y)++gcd x 0  =  x+gcd x y  =  0 `mod` (x `mod` 0)++gcd x 0  =  x+gcd x y  =  0 `mod` (y `mod` x)++gcd x 0  =  x+gcd x y  =  0 `mod` (y `mod` y)++gcd x 0  =  x+gcd x y  =  0 `mod` (y `mod` 0)++gcd x 0  =  x+gcd x y  =  0 `mod` (0 `mod` x)++gcd x 0  =  x+gcd x y  =  0 `mod` (0 `mod` y)++gcd x 0  =  x+gcd x y  =  0 `mod` (0 `mod` 0)++gcd x 0  =  0+gcd x y  =  (x `mod` x) `mod` x++gcd x 0  =  0+gcd x y  =  (x `mod` x) `mod` y++gcd x 0  =  0+gcd x y  =  (x `mod` x) `mod` 0++gcd x 0  =  0+gcd x y  =  (x `mod` y) `mod` x++gcd x 0  =  0+gcd x y  =  (x `mod` y) `mod` y++gcd x 0  =  0+gcd x y  =  (x `mod` y) `mod` 0++gcd x 0  =  0+gcd x y  =  (x `mod` 0) `mod` x++gcd x 0  =  0+gcd x y  =  (x `mod` 0) `mod` y++gcd x 0  =  0+gcd x y  =  (x `mod` 0) `mod` 0++gcd x 0  =  0+gcd x y  =  (y `mod` x) `mod` x++gcd x 0  =  0+gcd x y  =  (y `mod` x) `mod` y++gcd x 0  =  0+gcd x y  =  (y `mod` x) `mod` 0++gcd x 0  =  0+gcd x y  =  (y `mod` y) `mod` x++gcd x 0  =  0+gcd x y  =  (y `mod` y) `mod` y++gcd x 0  =  0+gcd x y  =  (y `mod` y) `mod` 0++gcd x 0  =  0+gcd x y  =  (y `mod` 0) `mod` x++gcd x 0  =  0+gcd x y  =  (y `mod` 0) `mod` y++gcd x 0  =  0+gcd x y  =  (y `mod` 0) `mod` 0++gcd x 0  =  0+gcd x y  =  (0 `mod` x) `mod` x++gcd x 0  =  0+gcd x y  =  (0 `mod` x) `mod` y++gcd x 0  =  0+gcd x y  =  (0 `mod` x) `mod` 0++gcd x 0  =  0+gcd x y  =  (0 `mod` y) `mod` x++gcd x 0  =  0+gcd x y  =  (0 `mod` y) `mod` y++gcd x 0  =  0+gcd x y  =  (0 `mod` y) `mod` 0++gcd x 0  =  0+gcd x y  =  (0 `mod` 0) `mod` x++gcd x 0  =  0+gcd x y  =  (0 `mod` 0) `mod` y++gcd x 0  =  0+gcd x y  =  (0 `mod` 0) `mod` 0++gcd x 0  =  0+gcd x y  =  x `mod` (x `mod` x)++gcd x 0  =  0+gcd x y  =  x `mod` (x `mod` y)++gcd x 0  =  0+gcd x y  =  x `mod` (x `mod` 0)++gcd x 0  =  0+gcd x y  =  x `mod` (y `mod` x)++gcd x 0  =  0+gcd x y  =  x `mod` (y `mod` y)++gcd x 0  =  0+gcd x y  =  x `mod` (y `mod` 0)++gcd x 0  =  0+gcd x y  =  x `mod` (0 `mod` x)++gcd x 0  =  0+gcd x y  =  x `mod` (0 `mod` y)++gcd x 0  =  0+gcd x y  =  x `mod` (0 `mod` 0)++gcd x 0  =  0+gcd x y  =  y `mod` (x `mod` x)++gcd x 0  =  0+gcd x y  =  y `mod` (x `mod` y)++gcd x 0  =  0+gcd x y  =  y `mod` (x `mod` 0)++gcd x 0  =  0+gcd x y  =  y `mod` (y `mod` x)++gcd x 0  =  0+gcd x y  =  y `mod` (y `mod` y)++gcd x 0  =  0+gcd x y  =  y `mod` (y `mod` 0)++gcd x 0  =  0+gcd x y  =  y `mod` (0 `mod` x)++gcd x 0  =  0+gcd x y  =  y `mod` (0 `mod` y)++gcd x 0  =  0+gcd x y  =  y `mod` (0 `mod` 0)++gcd x 0  =  0+gcd x y  =  0 `mod` (x `mod` x)++gcd x 0  =  0+gcd x y  =  0 `mod` (x `mod` y)++gcd x 0  =  0+gcd x y  =  0 `mod` (x `mod` 0)++gcd x 0  =  0+gcd x y  =  0 `mod` (y `mod` x)++gcd x 0  =  0+gcd x y  =  0 `mod` (y `mod` y)++gcd x 0  =  0+gcd x y  =  0 `mod` (y `mod` 0)++gcd x 0  =  0+gcd x y  =  0 `mod` (0 `mod` x)++gcd x 0  =  0+gcd x y  =  0 `mod` (0 `mod` y)++gcd x 0  =  0+gcd x y  =  0 `mod` (0 `mod` 0)++gcd x 0  =  x `mod` x+gcd x y  =  x `mod` y++gcd x 0  =  x `mod` x+gcd x y  =  x `mod` 0++gcd x 0  =  x `mod` x+gcd x y  =  y `mod` x++gcd x 0  =  x `mod` x+gcd x y  =  y `mod` y++gcd x 0  =  x `mod` x+gcd x y  =  y `mod` 0++gcd x 0  =  x `mod` x+gcd x y  =  0 `mod` x++gcd x 0  =  x `mod` x+gcd x y  =  0 `mod` y++gcd x 0  =  x `mod` x+gcd x y  =  0 `mod` 0++gcd x 0  =  x `mod` 0+gcd x y  =  x `mod` x++gcd x 0  =  x `mod` 0+gcd x y  =  x `mod` y++gcd x 0  =  x `mod` 0+gcd x y  =  y `mod` x++gcd x 0  =  x `mod` 0+gcd x y  =  y `mod` y++gcd x 0  =  x `mod` 0+gcd x y  =  y `mod` 0++gcd x 0  =  x `mod` 0+gcd x y  =  0 `mod` x++gcd x 0  =  x `mod` 0+gcd x y  =  0 `mod` y++gcd x 0  =  x `mod` 0+gcd x y  =  0 `mod` 0++gcd x 0  =  0 `mod` x+gcd x y  =  x `mod` x++gcd x 0  =  0 `mod` x+gcd x y  =  x `mod` y++gcd x 0  =  0 `mod` x+gcd x y  =  x `mod` 0++gcd x 0  =  0 `mod` x+gcd x y  =  y `mod` x++gcd x 0  =  0 `mod` x+gcd x y  =  y `mod` y++gcd x 0  =  0 `mod` x+gcd x y  =  y `mod` 0++gcd x 0  =  0 `mod` x+gcd x y  =  0 `mod` y++gcd x 0  =  0 `mod` x+gcd x y  =  0 `mod` 0++gcd x 0  =  0 `mod` 0+gcd x y  =  x `mod` x++gcd x 0  =  0 `mod` 0+gcd x y  =  x `mod` y++gcd x 0  =  0 `mod` 0+gcd x y  =  x `mod` 0++gcd x 0  =  0 `mod` 0+gcd x y  =  y `mod` x++gcd x 0  =  0 `mod` 0+gcd x y  =  y `mod` y++gcd x 0  =  0 `mod` 0+gcd x y  =  y `mod` 0++gcd x 0  =  0 `mod` 0+gcd x y  =  0 `mod` x++gcd x 0  =  0 `mod` 0+gcd x y  =  0 `mod` y++gcd x 0  =  (x `mod` x) `mod` x+gcd x y  =  x++gcd x 0  =  (x `mod` x) `mod` x+gcd x y  =  y++gcd x 0  =  (x `mod` x) `mod` x+gcd x y  =  0++gcd x 0  =  (x `mod` x) `mod` 0+gcd x y  =  x++gcd x 0  =  (x `mod` x) `mod` 0+gcd x y  =  y++gcd x 0  =  (x `mod` x) `mod` 0+gcd x y  =  0++gcd x 0  =  (x `mod` 0) `mod` x+gcd x y  =  x++gcd x 0  =  (x `mod` 0) `mod` x+gcd x y  =  y++gcd x 0  =  (x `mod` 0) `mod` x+gcd x y  =  0++gcd x 0  =  (x `mod` 0) `mod` 0+gcd x y  =  x++gcd x 0  =  (x `mod` 0) `mod` 0+gcd x y  =  y++gcd x 0  =  (x `mod` 0) `mod` 0+gcd x y  =  0++gcd x 0  =  (0 `mod` x) `mod` x+gcd x y  =  x++gcd x 0  =  (0 `mod` x) `mod` x+gcd x y  =  y++gcd x 0  =  (0 `mod` x) `mod` x+gcd x y  =  0++gcd x 0  =  (0 `mod` x) `mod` 0+gcd x y  =  x++gcd x 0  =  (0 `mod` x) `mod` 0+gcd x y  =  y++gcd x 0  =  (0 `mod` x) `mod` 0+gcd x y  =  0++gcd x 0  =  (0 `mod` 0) `mod` x+gcd x y  =  x++gcd x 0  =  (0 `mod` 0) `mod` x+gcd x y  =  y++gcd x 0  =  (0 `mod` 0) `mod` x+gcd x y  =  0++gcd x 0  =  (0 `mod` 0) `mod` 0+gcd x y  =  x++gcd x 0  =  (0 `mod` 0) `mod` 0+gcd x y  =  y++gcd x 0  =  (0 `mod` 0) `mod` 0+gcd x y  =  0++gcd x 0  =  x `mod` (x `mod` x)+gcd x y  =  x++gcd x 0  =  x `mod` (x `mod` x)+gcd x y  =  y++gcd x 0  =  x `mod` (x `mod` x)+gcd x y  =  0++gcd x 0  =  x `mod` (x `mod` 0)+gcd x y  =  x++gcd x 0  =  x `mod` (x `mod` 0)+gcd x y  =  y++gcd x 0  =  x `mod` (x `mod` 0)+gcd x y  =  0++gcd x 0  =  x `mod` (0 `mod` x)+gcd x y  =  x++gcd x 0  =  x `mod` (0 `mod` x)+gcd x y  =  y++gcd x 0  =  x `mod` (0 `mod` x)+gcd x y  =  0++gcd x 0  =  x `mod` (0 `mod` 0)+gcd x y  =  x++gcd x 0  =  x `mod` (0 `mod` 0)+gcd x y  =  y++gcd x 0  =  x `mod` (0 `mod` 0)+gcd x y  =  0++gcd x 0  =  0 `mod` (x `mod` x)+gcd x y  =  x++gcd x 0  =  0 `mod` (x `mod` x)+gcd x y  =  y++gcd x 0  =  0 `mod` (x `mod` x)+gcd x y  =  0++gcd x 0  =  0 `mod` (x `mod` 0)+gcd x y  =  x++gcd x 0  =  0 `mod` (x `mod` 0)+gcd x y  =  y++gcd x 0  =  0 `mod` (x `mod` 0)+gcd x y  =  0++gcd x 0  =  0 `mod` (0 `mod` x)+gcd x y  =  x++gcd x 0  =  0 `mod` (0 `mod` x)+gcd x y  =  y++gcd x 0  =  0 `mod` (0 `mod` x)+gcd x y  =  0++gcd x 0  =  0 `mod` (0 `mod` 0)+gcd x y  =  x++gcd x 0  =  0 `mod` (0 `mod` 0)+gcd x y  =  y++gcd x 0  =  0 `mod` (0 `mod` 0)+gcd x y  =  0++gcd 0 x  =  x+gcd x y  =  (x `mod` x) `mod` x++gcd 0 x  =  x+gcd x y  =  (x `mod` x) `mod` y++gcd 0 x  =  x+gcd x y  =  (x `mod` x) `mod` 0++gcd 0 x  =  x+gcd x y  =  (x `mod` y) `mod` x++gcd 0 x  =  x+gcd x y  =  (x `mod` y) `mod` y++gcd 0 x  =  x+gcd x y  =  (x `mod` y) `mod` 0++gcd 0 x  =  x+gcd x y  =  (x `mod` 0) `mod` x++gcd 0 x  =  x+gcd x y  =  (x `mod` 0) `mod` y++gcd 0 x  =  x+gcd x y  =  (x `mod` 0) `mod` 0++gcd 0 x  =  x+gcd x y  =  (y `mod` x) `mod` x++gcd 0 x  =  x+gcd x y  =  (y `mod` x) `mod` y++gcd 0 x  =  x+gcd x y  =  (y `mod` x) `mod` 0++gcd 0 x  =  x+gcd x y  =  (y `mod` y) `mod` x++gcd 0 x  =  x+gcd x y  =  (y `mod` y) `mod` y++gcd 0 x  =  x+gcd x y  =  (y `mod` y) `mod` 0++gcd 0 x  =  x+gcd x y  =  (y `mod` 0) `mod` x++gcd 0 x  =  x+gcd x y  =  (y `mod` 0) `mod` y++gcd 0 x  =  x+gcd x y  =  (y `mod` 0) `mod` 0++gcd 0 x  =  x+gcd x y  =  (0 `mod` x) `mod` x++gcd 0 x  =  x+gcd x y  =  (0 `mod` x) `mod` y++gcd 0 x  =  x+gcd x y  =  (0 `mod` x) `mod` 0++gcd 0 x  =  x+gcd x y  =  (0 `mod` y) `mod` x++gcd 0 x  =  x+gcd x y  =  (0 `mod` y) `mod` y++gcd 0 x  =  x+gcd x y  =  (0 `mod` y) `mod` 0++gcd 0 x  =  x+gcd x y  =  (0 `mod` 0) `mod` x++gcd 0 x  =  x+gcd x y  =  (0 `mod` 0) `mod` y++gcd 0 x  =  x+gcd x y  =  (0 `mod` 0) `mod` 0++gcd 0 x  =  x+gcd x y  =  x `mod` (x `mod` x)++gcd 0 x  =  x+gcd x y  =  x `mod` (x `mod` y)++gcd 0 x  =  x+gcd x y  =  x `mod` (x `mod` 0)++gcd 0 x  =  x+gcd x y  =  x `mod` (y `mod` x)++gcd 0 x  =  x+gcd x y  =  x `mod` (y `mod` y)++gcd 0 x  =  x+gcd x y  =  x `mod` (y `mod` 0)++gcd 0 x  =  x+gcd x y  =  x `mod` (0 `mod` x)++gcd 0 x  =  x+gcd x y  =  x `mod` (0 `mod` y)++gcd 0 x  =  x+gcd x y  =  x `mod` (0 `mod` 0)++gcd 0 x  =  x+gcd x y  =  y `mod` (x `mod` x)++gcd 0 x  =  x+gcd x y  =  y `mod` (x `mod` y)++gcd 0 x  =  x+gcd x y  =  y `mod` (x `mod` 0)++gcd 0 x  =  x+gcd x y  =  y `mod` (y `mod` x)++gcd 0 x  =  x+gcd x y  =  y `mod` (y `mod` y)++gcd 0 x  =  x+gcd x y  =  y `mod` (y `mod` 0)++gcd 0 x  =  x+gcd x y  =  y `mod` (0 `mod` x)++gcd 0 x  =  x+gcd x y  =  y `mod` (0 `mod` y)++gcd 0 x  =  x+gcd x y  =  y `mod` (0 `mod` 0)++gcd 0 x  =  x+gcd x y  =  0 `mod` (x `mod` x)++gcd 0 x  =  x+gcd x y  =  0 `mod` (x `mod` y)++gcd 0 x  =  x+gcd x y  =  0 `mod` (x `mod` 0)++gcd 0 x  =  x+gcd x y  =  0 `mod` (y `mod` x)++gcd 0 x  =  x+gcd x y  =  0 `mod` (y `mod` y)++gcd 0 x  =  x+gcd x y  =  0 `mod` (y `mod` 0)++gcd 0 x  =  x+gcd x y  =  0 `mod` (0 `mod` x)++gcd 0 x  =  x+gcd x y  =  0 `mod` (0 `mod` y)++gcd 0 x  =  x+gcd x y  =  0 `mod` (0 `mod` 0)++gcd 0 x  =  0+gcd x y  =  (x `mod` x) `mod` x++gcd 0 x  =  0+gcd x y  =  (x `mod` x) `mod` y++gcd 0 x  =  0+gcd x y  =  (x `mod` x) `mod` 0++gcd 0 x  =  0+gcd x y  =  (x `mod` y) `mod` x++gcd 0 x  =  0+gcd x y  =  (x `mod` y) `mod` y++gcd 0 x  =  0+gcd x y  =  (x `mod` y) `mod` 0++gcd 0 x  =  0+gcd x y  =  (x `mod` 0) `mod` x++gcd 0 x  =  0+gcd x y  =  (x `mod` 0) `mod` y++gcd 0 x  =  0+gcd x y  =  (x `mod` 0) `mod` 0++gcd 0 x  =  0+gcd x y  =  (y `mod` x) `mod` x++gcd 0 x  =  0+gcd x y  =  (y `mod` x) `mod` y++gcd 0 x  =  0+gcd x y  =  (y `mod` x) `mod` 0++gcd 0 x  =  0+gcd x y  =  (y `mod` y) `mod` x++gcd 0 x  =  0+gcd x y  =  (y `mod` y) `mod` y++gcd 0 x  =  0+gcd x y  =  (y `mod` y) `mod` 0++gcd 0 x  =  0+gcd x y  =  (y `mod` 0) `mod` x++gcd 0 x  =  0+gcd x y  =  (y `mod` 0) `mod` y++gcd 0 x  =  0+gcd x y  =  (y `mod` 0) `mod` 0++gcd 0 x  =  0+gcd x y  =  (0 `mod` x) `mod` x++gcd 0 x  =  0+gcd x y  =  (0 `mod` x) `mod` y++gcd 0 x  =  0+gcd x y  =  (0 `mod` x) `mod` 0++gcd 0 x  =  0+gcd x y  =  (0 `mod` y) `mod` x++gcd 0 x  =  0+gcd x y  =  (0 `mod` y) `mod` y++gcd 0 x  =  0+gcd x y  =  (0 `mod` y) `mod` 0++gcd 0 x  =  0+gcd x y  =  (0 `mod` 0) `mod` x++gcd 0 x  =  0+gcd x y  =  (0 `mod` 0) `mod` y++gcd 0 x  =  0+gcd x y  =  (0 `mod` 0) `mod` 0++gcd 0 x  =  0+gcd x y  =  x `mod` (x `mod` x)++gcd 0 x  =  0+gcd x y  =  x `mod` (x `mod` y)++gcd 0 x  =  0+gcd x y  =  x `mod` (x `mod` 0)++gcd 0 x  =  0+gcd x y  =  x `mod` (y `mod` x)++gcd 0 x  =  0+gcd x y  =  x `mod` (y `mod` y)++gcd 0 x  =  0+gcd x y  =  x `mod` (y `mod` 0)++gcd 0 x  =  0+gcd x y  =  x `mod` (0 `mod` x)++gcd 0 x  =  0+gcd x y  =  x `mod` (0 `mod` y)++gcd 0 x  =  0+gcd x y  =  x `mod` (0 `mod` 0)++gcd 0 x  =  0+gcd x y  =  y `mod` (x `mod` x)++gcd 0 x  =  0+gcd x y  =  y `mod` (x `mod` y)++gcd 0 x  =  0+gcd x y  =  y `mod` (x `mod` 0)++gcd 0 x  =  0+gcd x y  =  y `mod` (y `mod` x)++gcd 0 x  =  0+gcd x y  =  y `mod` (y `mod` y)++gcd 0 x  =  0+gcd x y  =  y `mod` (y `mod` 0)++gcd 0 x  =  0+gcd x y  =  y `mod` (0 `mod` x)++gcd 0 x  =  0+gcd x y  =  y `mod` (0 `mod` y)++gcd 0 x  =  0+gcd x y  =  y `mod` (0 `mod` 0)++gcd 0 x  =  0+gcd x y  =  0 `mod` (x `mod` x)++gcd 0 x  =  0+gcd x y  =  0 `mod` (x `mod` y)++gcd 0 x  =  0+gcd x y  =  0 `mod` (x `mod` 0)++gcd 0 x  =  0+gcd x y  =  0 `mod` (y `mod` x)++gcd 0 x  =  0+gcd x y  =  0 `mod` (y `mod` y)++gcd 0 x  =  0+gcd x y  =  0 `mod` (y `mod` 0)++gcd 0 x  =  0+gcd x y  =  0 `mod` (0 `mod` x)++gcd 0 x  =  0+gcd x y  =  0 `mod` (0 `mod` y)++gcd 0 x  =  0+gcd x y  =  0 `mod` (0 `mod` 0)++gcd 0 x  =  x `mod` x+gcd x y  =  x `mod` y++gcd 0 x  =  x `mod` x+gcd x y  =  x `mod` 0++gcd 0 x  =  x `mod` x+gcd x y  =  y `mod` x++gcd 0 x  =  x `mod` x+gcd x y  =  y `mod` 0++gcd 0 x  =  x `mod` x+gcd x y  =  0 `mod` x++gcd 0 x  =  x `mod` x+gcd x y  =  0 `mod` y++gcd 0 x  =  x `mod` x+gcd x y  =  0 `mod` 0++gcd 0 x  =  x `mod` 0+gcd x y  =  x `mod` x++gcd 0 x  =  x `mod` 0+gcd x y  =  x `mod` y++gcd 0 x  =  x `mod` 0+gcd x y  =  y `mod` x++gcd 0 x  =  x `mod` 0+gcd x y  =  y `mod` y++gcd 0 x  =  x `mod` 0+gcd x y  =  0 `mod` x++gcd 0 x  =  x `mod` 0+gcd x y  =  0 `mod` y++gcd 0 x  =  x `mod` 0+gcd x y  =  0 `mod` 0++gcd 0 x  =  0 `mod` x+gcd x y  =  x `mod` x++gcd 0 x  =  0 `mod` x+gcd x y  =  x `mod` y++gcd 0 x  =  0 `mod` x+gcd x y  =  x `mod` 0++gcd 0 x  =  0 `mod` x+gcd x y  =  y `mod` x++gcd 0 x  =  0 `mod` x+gcd x y  =  y `mod` y++gcd 0 x  =  0 `mod` x+gcd x y  =  y `mod` 0++gcd 0 x  =  0 `mod` x+gcd x y  =  0 `mod` 0++gcd 0 x  =  0 `mod` 0+gcd x y  =  x `mod` x++gcd 0 x  =  0 `mod` 0+gcd x y  =  x `mod` y++gcd 0 x  =  0 `mod` 0+gcd x y  =  x `mod` 0++gcd 0 x  =  0 `mod` 0+gcd x y  =  y `mod` x++gcd 0 x  =  0 `mod` 0+gcd x y  =  y `mod` y++gcd 0 x  =  0 `mod` 0+gcd x y  =  y `mod` 0++gcd 0 x  =  0 `mod` 0+gcd x y  =  0 `mod` x++gcd 0 x  =  0 `mod` 0+gcd x y  =  0 `mod` y++gcd 0 x  =  (x `mod` x) `mod` x+gcd x y  =  x++gcd 0 x  =  (x `mod` x) `mod` x+gcd x y  =  y++gcd 0 x  =  (x `mod` x) `mod` x+gcd x y  =  0++gcd 0 x  =  (x `mod` x) `mod` 0+gcd x y  =  x++gcd 0 x  =  (x `mod` x) `mod` 0+gcd x y  =  y++gcd 0 x  =  (x `mod` x) `mod` 0+gcd x y  =  0++gcd 0 x  =  (x `mod` 0) `mod` x+gcd x y  =  x++gcd 0 x  =  (x `mod` 0) `mod` x+gcd x y  =  y++gcd 0 x  =  (x `mod` 0) `mod` x+gcd x y  =  0++gcd 0 x  =  (x `mod` 0) `mod` 0+gcd x y  =  x++gcd 0 x  =  (x `mod` 0) `mod` 0+gcd x y  =  y++gcd 0 x  =  (x `mod` 0) `mod` 0+gcd x y  =  0++gcd 0 x  =  (0 `mod` x) `mod` x+gcd x y  =  x++gcd 0 x  =  (0 `mod` x) `mod` x+gcd x y  =  y++gcd 0 x  =  (0 `mod` x) `mod` x+gcd x y  =  0++gcd 0 x  =  (0 `mod` x) `mod` 0+gcd x y  =  x++gcd 0 x  =  (0 `mod` x) `mod` 0+gcd x y  =  y++gcd 0 x  =  (0 `mod` x) `mod` 0+gcd x y  =  0++gcd 0 x  =  (0 `mod` 0) `mod` x+gcd x y  =  x++gcd 0 x  =  (0 `mod` 0) `mod` x+gcd x y  =  y++gcd 0 x  =  (0 `mod` 0) `mod` x+gcd x y  =  0++gcd 0 x  =  (0 `mod` 0) `mod` 0+gcd x y  =  x++gcd 0 x  =  (0 `mod` 0) `mod` 0+gcd x y  =  y++gcd 0 x  =  (0 `mod` 0) `mod` 0+gcd x y  =  0++gcd 0 x  =  x `mod` (x `mod` x)+gcd x y  =  x++gcd 0 x  =  x `mod` (x `mod` x)+gcd x y  =  y++gcd 0 x  =  x `mod` (x `mod` x)+gcd x y  =  0++gcd 0 x  =  x `mod` (x `mod` 0)+gcd x y  =  x++gcd 0 x  =  x `mod` (x `mod` 0)+gcd x y  =  y++gcd 0 x  =  x `mod` (x `mod` 0)+gcd x y  =  0++gcd 0 x  =  x `mod` (0 `mod` x)+gcd x y  =  x++gcd 0 x  =  x `mod` (0 `mod` x)+gcd x y  =  y++gcd 0 x  =  x `mod` (0 `mod` x)+gcd x y  =  0++gcd 0 x  =  x `mod` (0 `mod` 0)+gcd x y  =  x++gcd 0 x  =  x `mod` (0 `mod` 0)+gcd x y  =  y++gcd 0 x  =  x `mod` (0 `mod` 0)+gcd x y  =  0++gcd 0 x  =  0 `mod` (x `mod` x)+gcd x y  =  x++gcd 0 x  =  0 `mod` (x `mod` x)+gcd x y  =  y++gcd 0 x  =  0 `mod` (x `mod` x)+gcd x y  =  0++gcd 0 x  =  0 `mod` (x `mod` 0)+gcd x y  =  x++gcd 0 x  =  0 `mod` (x `mod` 0)+gcd x y  =  y++gcd 0 x  =  0 `mod` (x `mod` 0)+gcd x y  =  0++gcd 0 x  =  0 `mod` (0 `mod` x)+gcd x y  =  x++gcd 0 x  =  0 `mod` (0 `mod` x)+gcd x y  =  y++gcd 0 x  =  0 `mod` (0 `mod` x)+gcd x y  =  0++gcd 0 x  =  0 `mod` (0 `mod` 0)+gcd x y  =  x++gcd 0 x  =  0 `mod` (0 `mod` 0)+gcd x y  =  y++gcd 0 x  =  0 `mod` (0 `mod` 0)+gcd x y  =  0  
bench/gps.hs view
@@ -42,7 +42,43 @@   , prim "fromIntegral" (fromIntegral :: Int -> Float)   ] +gps1c30p :: IO ()+gps1c30p  =  conjure "gps1" gps1p+  [ pr (0 :: Float)+  , pr (1 :: Float)+  , pr (1/2 :: Float)+  , pr (-1 :: Float)+  , prim "+" ((+) :: Float -> Float -> Float)+  , prim "*" ((*) :: Float -> Float -> Float)+  , prim "-" ((-) :: Float -> Float -> Float)+  , prim "abs" (abs :: Float -> Float)+  , prim "negate" (negate :: Float -> Float)+  , prim "id" (id :: Float -> Float)+  , prim "fromIntegral" (fromIntegral :: Int -> Float) +  , pr (0 :: Int)+  , pr (1 :: Int)+  , pr (-1 :: Int)+  , prim "+" ((+) :: Int -> Int -> Int)+  , prim "*" ((*) :: Int -> Int -> Int)+  , prim "-" ((-) :: Int -> Int -> Int)+  , prim "div" (div :: Int -> Int -> Int)+  , prim "mod" (mod :: Int -> Int -> Int)+  , prim "^" ((^) :: Int -> Int -> Int)+  , prim "abs" (abs :: Int -> Int)+  , prim "negate" (negate :: Int -> Int)+  , prim "id" (id :: Int -> Int)+  , prim "round" (round :: Float -> Int)+  , prim "truncate" (truncate :: Float -> Int)++  , pr False+  , pr True+  , prim "&&" (&&)+  , prim "||" (||)+  , prim "not" not+  ]++ gps2p :: Int -> Maybe String gps2p    0  =  Just "small" gps2p  500  =  Just "small"@@ -404,7 +440,8 @@  gps13p :: [Rational] -> Rational gps13p [0,2]  =  1-gps13p [1,2,3]  =  2+gps13p [1,3]  =  2+gps13p [1,2,3]  =  2  -- not hit, but nvm gps13p [0,0,2,2]  =  1  gps13g :: [Rational] -> Rational@@ -736,7 +773,8 @@  -- GPS Benchmark #23 -- Word Stats -- gps23p :: String -> ([(Int,Int)], Int, Double)-gps23p ""  =  ([], 0, 1.0/0.0)+gps23p  =  undefined+-- gps23p ""  =  ([], 0, 1.0/0.0)  gps23c :: IO () gps23c  =  do
bench/gps.out view
@@ -1,6 +1,6 @@ gps1 :: Int -> Float -> Float -- testing 4 combinations of argument values--- pruning with 1/2 rules+-- pruning with 0/5 rules -- looking through 1 candidates of size 1 -- looking through 1 candidates of size 2 -- looking through 1 candidates of size 3@@ -13,18 +13,18 @@ -- pruning with 9/17 rules -- looking through 1 candidates of size 1 -- looking through 2 candidates of size 2--- looking through 4 candidates of size 3--- looking through 6 candidates of size 4--- looking through 8 candidates of size 5--- looking through 12 candidates of size 6--- looking through 38 candidates of size 7+-- looking through 3 candidates of size 3+-- looking through 3 candidates of size 4+-- looking through 2 candidates of size 5+-- looking through 0 candidates of size 6+-- looking through 32 candidates of size 7 -- looking through 48 candidates of size 8--- looking through 112 candidates of size 9--- looking through 144 candidates of size 10--- looking through 176 candidates of size 11--- looking through 704 candidates of size 12--- looking through 1856 candidates of size 13--- tested 1744 candidates+-- looking through 48 candidates of size 9+-- looking through 48 candidates of size 10+-- looking through 16 candidates of size 11+-- looking through 512 candidates of size 12+-- looking through 1792 candidates of size 13+-- tested 1204 candidates gps2 x  =  if 2000 <= x then Just "large" else (if x < 1000 then Just "small" else Nothing)  gps3 :: Int -> Int -> Int -> [Int]@@ -37,7 +37,7 @@ -- looking through 0 candidates of size 5 -- looking through 1536 candidates of size 6 -- looking through 0 candidates of size 7--- looking through 26991 candidates of size 8+-- looking through 26858 candidates of size 8 -- tested 19480 candidates gps3 x y z  =  enumFromThenTo x (x + z) (y - 1) @@ -67,9 +67,9 @@ -- looking through 0 candidates of size 7 -- looking through 0 candidates of size 8 -- looking through 162 candidates of size 9--- looking through 30 candidates of size 10+-- looking through 16 candidates of size 10 -- looking through 30 candidates of size 11--- tested 201 candidates+-- tested 187 candidates gps4 cs ds es  =  length cs < length ds && length ds < length es  gps5 :: [Char] -> [Char]@@ -88,12 +88,12 @@ -- testing 9 combinations of argument values -- pruning with 16/18 rules -- looking through 4 candidates of size 1--- looking through 9 candidates of size 2--- looking through 33 candidates of size 3--- looking through 146 candidates of size 4--- looking through 624 candidates of size 5--- looking through 2576 candidates of size 6--- tested 3392 candidates+-- looking through 3 candidates of size 2+-- looking through 27 candidates of size 3+-- looking through 32 candidates of size 4+-- looking through 506 candidates of size 5+-- looking through 530 candidates of size 6+-- tested 1102 candidates cannot conjure  gps7 :: [Char] -> ([Char],Int)@@ -242,9 +242,9 @@ -- looking through 0 candidates of size 1 -- looking through 0 candidates of size 2 -- looking through 7 candidates of size 3--- looking through 0 candidates of size 4--- looking through 71 candidates of size 5--- tested 17 candidates+-- looking through 7 candidates of size 4+-- looking through 83 candidates of size 5+-- tested 29 candidates odd x  =  x `mod` 2 /= 0  gps14 :: [Int] -> Int@@ -297,14 +297,14 @@ -- pruning with 27/65 rules -- looking through 3 candidates of size 1 -- looking through 4 candidates of size 2--- looking through 13 candidates of size 3--- looking through 34 candidates of size 4--- looking through 75 candidates of size 5--- looking through 183 candidates of size 6--- looking through 577 candidates of size 7--- looking through 1311 candidates of size 8--- looking through 5282 candidates of size 9--- tested 2201 candidates+-- looking through 11 candidates of size 3+-- looking through 29 candidates of size 4+-- looking through 60 candidates of size 5+-- looking through 145 candidates of size 6+-- looking through 501 candidates of size 7+-- looking through 1098 candidates of size 8+-- looking through 4673 candidates of size 9+-- tested 1852 candidates gps17 0  =  0 gps17 x  =  x * x + gps17 (x - 1) @@ -312,15 +312,15 @@ -- testing 3 combinations of argument values -- pruning with 2/6 rules -- looking through 3 candidates of size 1--- looking through 8 candidates of size 2--- looking through 11 candidates of size 3+-- looking through 7 candidates of size 2+-- looking through 9 candidates of size 3 -- looking through 44 candidates of size 4 -- looking through 116 candidates of size 5 -- looking through 92 candidates of size 6--- looking through 791 candidates of size 7+-- looking through 787 candidates of size 7 -- looking through 220 candidates of size 8 -- looking through 4632 candidates of size 9--- tested 3931 candidates+-- tested 3924 candidates gps18 [] []  =  [] gps18 [] (x:xs)  =  xs gps18 (x:xs) []  =  xs@@ -330,10 +330,10 @@ -- testing 3 combinations of argument values -- pruning with 2/7 rules -- looking through 2 candidates of size 1--- looking through 2 candidates of size 2+-- looking through 1 candidates of size 2 -- looking through 0 candidates of size 3 -- looking through 12 candidates of size 4--- tested 14 candidates+-- tested 13 candidates gps18 xs ys  =  zipWith (+) xs ys  gps19 :: Int -> [Char] -> [Char]@@ -348,28 +348,28 @@ -- testing 12 combinations of argument values -- pruning with 0/0 rules -- looking through 2 candidates of size 1--- looking through 2 candidates of size 2--- looking through 2 candidates of size 3--- looking through 8 candidates of size 4--- looking through 8 candidates of size 5--- looking through 14 candidates of size 6--- looking through 28 candidates of size 7--- looking through 32 candidates of size 8--- looking through 40 candidates of size 9--- looking through 54 candidates of size 10--- looking through 78 candidates of size 11--- looking through 78 candidates of size 12--- looking through 102 candidates of size 13--- looking through 88 candidates of size 14--- looking through 104 candidates of size 15--- looking through 136 candidates of size 16--- looking through 122 candidates of size 17--- looking through 92 candidates of size 18--- looking through 92 candidates of size 19--- looking through 62 candidates of size 20--- looking through 62 candidates of size 21--- looking through 126 candidates of size 22--- tested 1207 candidates+-- looking through 1 candidates of size 2+-- looking through 1 candidates of size 3+-- looking through 2 candidates of size 4+-- looking through 2 candidates of size 5+-- looking through 3 candidates of size 6+-- looking through 4 candidates of size 7+-- looking through 4 candidates of size 8+-- looking through 4 candidates of size 9+-- looking through 5 candidates of size 10+-- looking through 5 candidates of size 11+-- looking through 5 candidates of size 12+-- looking through 5 candidates of size 13+-- looking through 4 candidates of size 14+-- looking through 4 candidates of size 15+-- looking through 4 candidates of size 16+-- looking through 3 candidates of size 17+-- looking through 2 candidates of size 18+-- looking through 2 candidates of size 19+-- looking through 1 candidates of size 20+-- looking through 1 candidates of size 21+-- looking through 1 candidates of size 22+-- tested 65 candidates isVowel 'a'  =  True isVowel 'e'  =  True isVowel 'i'  =  True@@ -438,7 +438,6 @@ gps22 (c:cs)  =  scrabble1 c + gps22 cs  gps23 :: [Char] -> ([(Int,Int)],Int,Double)--- testing 1 combinations of argument values -- pruning with 0/0 rules -- looking through 0 candidates of size 1 -- looking through 0 candidates of size 2
bench/gps2.out view
@@ -33,21 +33,21 @@ -- pruning with 8/9 rules -- looking through 4 candidates of size 1 -- looking through 25 candidates of size 2--- looking through 255 candidates of size 3--- looking through 451 candidates of size 4--- tested 735 candidates+-- looking through 237 candidates of size 3+-- looking through 433 candidates of size 4+-- tested 699 candidates cannot conjure  gps2 :: Double -> Double -> Int -> Double -- testing 5 combinations of argument values--- pruning with 3/3 rules+-- pruning with 2/6 rules -- looking through 2 candidates of size 1 -- looking through 2 candidates of size 2 -- looking through 18 candidates of size 3 -- looking through 70 candidates of size 4--- looking through 314 candidates of size 5--- looking through 1432 candidates of size 6--- tested 1838 candidates+-- looking through 316 candidates of size 5+-- looking through 1440 candidates of size 6+-- tested 1848 candidates cannot conjure  gps3 :: [Char] -> Int@@ -82,12 +82,12 @@ -- looking through 2 candidates of size 3 -- looking through 10 candidates of size 4 -- looking through 6 candidates of size 5--- looking through 61 candidates of size 6+-- looking through 60 candidates of size 6 -- looking through 26 candidates of size 7 -- looking through 538 candidates of size 8 -- looking through 134 candidates of size 9--- looking through 5299 candidates of size 10--- tested 2699 candidates+-- looking through 5296 candidates of size 10+-- tested 2698 candidates tell [] x  =  [] tell (x:xs) y  =  y `div` x:tell xs (y `mod` x) @@ -107,22 +107,23 @@ -- looking through 0 candidates of size 2 -- looking through 5 candidates of size 3 -- looking through 9 candidates of size 4--- looking through 44 candidates of size 5--- looking through 91 candidates of size 6--- looking through 441 candidates of size 7--- looking through 946 candidates of size 8--- looking through 4450 candidates of size 9--- looking through 9710 candidates of size 10--- looking through 44767 candidates of size 11--- tested 32953 candidates+-- looking through 45 candidates of size 5+-- looking through 92 candidates of size 6+-- looking through 438 candidates of size 7+-- looking through 944 candidates of size 8+-- looking through 4413 candidates of size 9+-- looking through 9649 candidates of size 10+-- looking through 44336 candidates of size 11+-- tested 32852 candidates gps5 x  =  tell [25,10,5,1] x  gps6 :: [Int] -> Int -- testing 360 combinations of argument values -- pruning with 0/0 rules -- looking through 0 candidates of size 1--- looking through 0 candidates of size 2--- tested 0 candidates+-- looking through 1 candidates of size 2+-- looking through 1 candidates of size 3+-- tested 2 candidates cannot conjure  gps7 :: Integer -> Integer -> Ratio Integer@@ -158,12 +159,12 @@ -- testing 11 combinations of argument values -- pruning with 0/0 rules -- looking through 3 candidates of size 1--- looking through 8 candidates of size 2--- looking through 20 candidates of size 3+-- looking through 7 candidates of size 2+-- looking through 18 candidates of size 3 -- looking through 60 candidates of size 4 -- looking through 150 candidates of size 5--- looking through 472 candidates of size 6--- tested 246 candidates+-- looking through 469 candidates of size 6+-- tested 243 candidates gcd x 0  =  x gcd x y  =  gcd y (x `mod` y) @@ -242,26 +243,26 @@  gps18_price :: [Double] -> [Double] -> Double -- testing 4 combinations of argument values--- pruning with 28/34 rules+-- pruning with 26/35 rules -- looking through 2 candidates of size 1 -- looking through 8 candidates of size 2--- looking through 72 candidates of size 3+-- looking through 64 candidates of size 3 -- looking through 72 candidates of size 4--- looking through 1192 candidates of size 5--- looking through 696 candidates of size 6--- tested 2042 candidates+-- looking through 1193 candidates of size 5+-- looking through 714 candidates of size 6+-- tested 2053 candidates cannot conjure  gps19_snowday :: Int -> Double -> Double -> Double -> Double -- testing 7 combinations of argument values--- pruning with 7/12 rules+-- pruning with 6/19 rules -- looking through 3 candidates of size 1--- looking through 7 candidates of size 2--- looking through 31 candidates of size 3--- looking through 169 candidates of size 4--- looking through 543 candidates of size 5--- looking through 3608 candidates of size 6--- tested 4361 candidates+-- looking through 0 candidates of size 2+-- looking through 24 candidates of size 3+-- looking through 150 candidates of size 4+-- looking through 546 candidates of size 5+-- looking through 3540 candidates of size 6+-- tested 4263 candidates cannot conjure  gps20 :: [Char] -> Bool@@ -303,15 +304,15 @@ -- looking through 0 candidates of size 2 -- looking through 2 candidates of size 3 -- looking through 3 candidates of size 4--- looking through 15 candidates of size 5+-- looking through 17 candidates of size 5 -- looking through 14 candidates of size 6--- looking through 97 candidates of size 7+-- looking through 103 candidates of size 7 -- looking through 104 candidates of size 8--- looking through 871 candidates of size 9+-- looking through 901 candidates of size 9 -- looking through 935 candidates of size 10--- looking through 9018 candidates of size 11+-- looking through 9226 candidates of size 11 -- looking through 9686 candidates of size 12--- tested 20746 candidates+-- tested 20992 candidates cannot conjure  gps22 :: Int -> [Char]@@ -323,8 +324,8 @@ gps23 :: [Char] -> [Char] -> [Char] -> [Char] -- pruning with 0/0 rules -- looking through 3 candidates of size 1--- looking through 12 candidates of size 2--- looking through 33 candidates of size 3+-- looking through 5 candidates of size 2+-- looking through 9 candidates of size 3 -- looking through 0 candidates of size 4 -- looking through 162 candidates of size 5 -- looking through 612 candidates of size 6@@ -334,7 +335,7 @@ -- looking through 0 candidates of size 10 -- looking through 0 candidates of size 11 -- looking through 5184 candidates of size 12--- tested 9174 candidates+-- tested 9143 candidates cannot conjure  gps24 :: [Char] -> Twitter@@ -358,13 +359,13 @@  gps25 :: [Double] -> [Double] -> Double -- testing 6 combinations of argument values--- pruning with 33/58 rules+-- pruning with 31/59 rules -- looking through 2 candidates of size 1 -- looking through 9 candidates of size 2--- looking through 89 candidates of size 3+-- looking through 81 candidates of size 3 -- looking through 312 candidates of size 4--- looking through 2262 candidates of size 5--- looking through 9400 candidates of size 6--- tested 12074 candidates+-- looking through 2249 candidates of size 5+-- looking through 9419 candidates of size 6+-- tested 12072 candidates cannot conjure 
bench/ill-hit.out view
@@ -2,11 +2,11 @@ -- testing 4 combinations of argument values -- pruning with 14/25 rules -- looking through 2 candidates of size 1--- looking through 5 candidates of size 2--- looking through 6 candidates of size 3--- looking through 20 candidates of size 4--- looking through 34 candidates of size 5--- tested 34 candidates+-- looking through 3 candidates of size 2+-- looking through 4 candidates of size 3+-- looking through 10 candidates of size 4+-- looking through 19 candidates of size 5+-- tested 20 candidates sum []  =  0 sum (x:xs)  =  x + sum xs 
bench/lowtests.out view
@@ -9,6 +9,10 @@  -} -- reasoning produced 1 incorrect properties, please re-run with more tests for faster results+{-+invalid:+xs `isSubsequenceOf` sort xs == True+-} -- looking through 0 candidates of size 1 -- looking through 0 candidates of size 2 -- looking through 2 candidates of size 3@@ -16,12 +20,12 @@ -- looking through 0 candidates of size 5 -- looking through 0 candidates of size 6 -- looking through 12 candidates of size 7--- looking through 22 candidates of size 8+-- looking through 21 candidates of size 8 -- looking through 8 candidates of size 9 -- looking through 0 candidates of size 10 -- looking through 0 candidates of size 11 -- looking through 0 candidates of size 12--- tested 48 candidates+-- tested 47 candidates cannot conjure  subset :: [Int] -> [Int] -> Bool
bench/p12.out view
@@ -3,12 +3,12 @@ -- testing 6 combinations of argument values -- pruning with 67/100 rules -- looking through 3 candidates of size 1--- looking through 7 candidates of size 2--- looking through 25 candidates of size 3--- looking through 82 candidates of size 4--- looking through 263 candidates of size 5--- looking through 960 candidates of size 6--- tested 406 candidates+-- looking through 5 candidates of size 2+-- looking through 14 candidates of size 3+-- looking through 39 candidates of size 4+-- looking through 128 candidates of size 5+-- looking through 497 candidates of size 6+-- tested 200 candidates factorial 0  =  1 factorial x  =  x * factorial (dec x) 
bench/runtime/zero/bench/candidates.runtime view
@@ -1,1 +1,1 @@-9.3+11.0
bench/runtime/zero/bench/gps.runtime view
@@ -1,1 +1,1 @@-23.8+23.2
bench/runtime/zero/bench/gps2.runtime view
@@ -1,1 +1,1 @@-9.3+9.0
bench/runtime/zero/bench/lowtests.runtime view
@@ -1,1 +1,1 @@-0.3+0.4
bench/runtime/zero/bench/p12.runtime view
@@ -1,1 +1,1 @@-3.3+3.0
bench/runtime/zero/bench/terpret.runtime view
@@ -1,1 +1,1 @@-13.3+12.4
bench/runtime/zero/eg/bools.runtime view
@@ -1,1 +1,1 @@-3.3+3.2
+ bench/runtime/zero/eg/bst.runtime view
@@ -0,0 +1,1 @@+6.5
bench/runtime/zero/eg/dupos.runtime view
@@ -1,1 +1,1 @@-4.5+4.0
bench/runtime/zero/eg/factorial.runtime view
@@ -1,1 +1,1 @@-2.4+2.5
bench/runtime/zero/eg/fib01.runtime view
@@ -1,1 +1,1 @@-4.4+4.5
bench/runtime/zero/eg/fibonacci.runtime view
@@ -1,1 +1,1 @@-8.2+4.6
bench/runtime/zero/eg/list.runtime view
@@ -1,1 +1,1 @@-0.4+1.3
bench/runtime/zero/eg/pow.runtime view
@@ -1,1 +1,1 @@-3.4+3.9
bench/runtime/zero/eg/replicate.runtime view
@@ -1,1 +1,1 @@-0.4+0.5
bench/runtime/zero/eg/setelem.runtime view
@@ -1,1 +1,1 @@-2.1+2.0
bench/runtime/zero/eg/tree.runtime view
@@ -1,1 +1,1 @@-1.4+2.0
bench/runtime/zero/proto/u-conjure.runtime view
@@ -1,1 +1,1 @@-0.3+0.4
bench/runtime/zero/versions view
@@ -1,4 +1,4 @@-GHC 8.10.5-leancheck-0.9.10-express-1.0.8+GHC 9.0.2+leancheck-1.0.0+express-1.0.10 speculate-0.4.14
bench/self.out view
@@ -2,35 +2,35 @@ -- testing 360 combinations of argument values -- pruning with 0/0 rules -- looking through 4 candidates of size 1--- looking through 18 candidates of size 2--- looking through 120 candidates of size 3--- tested 24 candidates+-- looking through 17 candidates of size 2+-- looking through 80 candidates of size 3+-- tested 23 candidates x ? y  =  x + y  (?) :: Int -> Int -> Int -- testing 360 combinations of argument values -- pruning with 0/0 rules -- looking through 4 candidates of size 1--- looking through 18 candidates of size 2--- looking through 120 candidates of size 3--- tested 40 candidates+-- looking through 17 candidates of size 2+-- looking through 80 candidates of size 3+-- tested 39 candidates x ? y  =  x * y  i :: Int -> Int -- testing 360 combinations of argument values -- pruning with 0/0 rules -- looking through 3 candidates of size 1--- looking through 4 candidates of size 2--- looking through 22 candidates of size 3--- tested 10 candidates+-- looking through 2 candidates of size 2+-- looking through 21 candidates of size 3+-- tested 8 candidates i x  =  x + 1  d :: Int -> Int -- testing 360 combinations of argument values -- pruning with 0/0 rules -- looking through 3 candidates of size 1--- looking through 4 candidates of size 2--- looking through 22 candidates of size 3--- tested 29 candidates+-- looking through 3 candidates of size 2+-- looking through 20 candidates of size 3+-- tested 26 candidates cannot conjure 
bench/take-drop.out view
@@ -3,14 +3,14 @@ -- pruning with 4/7 rules -- looking through 2 candidates of size 1 -- looking through 3 candidates of size 2--- looking through 5 candidates of size 3--- looking through 15 candidates of size 4--- looking through 27 candidates of size 5+-- looking through 4 candidates of size 3+-- looking through 14 candidates of size 4+-- looking through 26 candidates of size 5 -- looking through 41 candidates of size 6--- looking through 132 candidates of size 7--- looking through 127 candidates of size 8+-- looking through 130 candidates of size 7+-- looking through 125 candidates of size 8 -- looking through 458 candidates of size 9--- tested 495 candidates+-- tested 488 candidates drop 0 []  =  [] drop 0 (x:xs)  =  x:xs drop x []  =  []@@ -21,14 +21,14 @@ -- pruning with 14/21 rules -- looking through 2 candidates of size 1 -- looking through 3 candidates of size 2--- looking through 5 candidates of size 3--- looking through 15 candidates of size 4--- looking through 27 candidates of size 5+-- looking through 4 candidates of size 3+-- looking through 14 candidates of size 4+-- looking through 26 candidates of size 5 -- looking through 41 candidates of size 6--- looking through 132 candidates of size 7--- looking through 127 candidates of size 8+-- looking through 130 candidates of size 7+-- looking through 125 candidates of size 8 -- looking through 458 candidates of size 9--- tested 484 candidates+-- tested 477 candidates take 0 []  =  [] take 0 (x:xs)  =  [] take x []  =  []
bench/terpret.out view
@@ -86,16 +86,16 @@ -- looking through 0 candidates of size 1 -- looking through 0 candidates of size 2 -- looking through 9 candidates of size 3--- looking through 18 candidates of size 4--- looking through 45 candidates of size 5--- looking through 108 candidates of size 6--- looking through 300 candidates of size 7--- looking through 816 candidates of size 8--- looking through 2148 candidates of size 9--- looking through 5520 candidates of size 10--- looking through 13656 candidates of size 11--- tested 16290 candidates-fadder p q r  =  if p == q then (p,r) else (r,not r)+-- looking through 19 candidates of size 4+-- tested 28 candidates+fadder False False False  =  (False,False)+fadder False False True  =  (False,True)+fadder False True False  =  (False,True)+fadder False True True  =  (True,False)+fadder True False False  =  (False,True)+fadder True False True  =  (True,False)+fadder True True False  =  (True,False)+fadder True True True  =  (True,True)  TerpreT benchmark #6: 2-bit adder @@ -128,12 +128,12 @@ -- pruning with 4/7 rules -- looking through 1 candidates of size 1 -- looking through 1 candidates of size 2--- looking through 3 candidates of size 3--- looking through 7 candidates of size 4--- looking through 19 candidates of size 5+-- looking through 2 candidates of size 3+-- looking through 6 candidates of size 4+-- looking through 18 candidates of size 5 -- looking through 23 candidates of size 6 -- looking through 68 candidates of size 7--- tested 67 candidates+-- tested 64 candidates [] `access` 0  =  undefined [] `access` x  =  undefined (x:xs) `access` 0  =  x
bench/versions view
@@ -7,8 +7,12 @@ get-ghc-v() {     ghc --version | sed -e "s/.* version/GHC/" }+ghc-pkg-list() {+	ghc-pkg list "$@"+	ghc-pkg list --package-db ~/.cabal/store/ghc-$(ghc --version | sed -e "s/.* version //")/package.db "$@"+} get-pkg-v() {-    ghc-pkg list $1 2>/dev/null |+    ghc-pkg-list $1 2>/dev/null |     grep " $1-" |     sed -e "s/^ *//" |     tail -1
changelog.md view
@@ -2,8 +2,21 @@ ============================  -0.5.2------+v0.5.4+------++This has been the "dev" version after v0.5.2+for almost a couple of years:++* report invalid theories-from-testing+* weed-out some redundant candidates:+	- add and use `isRedundantDefn`+	- update how deconstructions are handled+* add (but not use) `conjureSize` to `Conjurable`+++v0.5.2+------  * show number of tested candidates * complete `Conjurable` derivation functions
code-conjure.cabal view
@@ -3,7 +3,7 @@ -- Copyright (C) 2021 Rudy Matela -- Distributed under the 3-Clause BSD licence (see the file LICENSE). name:                code-conjure-version:             0.5.2+version:             0.5.4 synopsis:            synthesize Haskell functions out of partial definitions description:   Conjure is a tool that synthesizes Haskell functions out of partial definitions.@@ -46,15 +46,12 @@                   , bench/versions                   , bench/time                   , test/sdist-tested-with: GHC==9.0+tested-with: GHC==9.4+           , GHC==9.2+           , GHC==9.0            , GHC==8.10-           , GHC==8.8            , GHC==8.6-           , GHC==8.4            , GHC==8.2-           , GHC==8.0-           , GHC==7.10-           , GHC==7.8  source-repository head   type:            git@@ -63,7 +60,7 @@ source-repository this   type:            git   location:        https://github.com/rudymatela/conjure-  tag:             v0.5.2+  tag:             v0.5.4  library   exposed-modules: Conjure@@ -76,7 +73,7 @@                  , Conjure.Defn   other-extensions: TemplateHaskell, CPP   build-depends: base >= 4 && < 5-               , leancheck >= 0.9.10+               , leancheck >= 1.0.0                , template-haskell                , speculate >= 0.4.14                , express >= 1.0.8
eg/arith.out view
@@ -2,61 +2,61 @@ -- testing 4 combinations of argument values -- pruning with 14/25 rules -- looking through 3 candidates of size 1--- looking through 4 candidates of size 2--- looking through 9 candidates of size 3--- tested 8 candidates+-- looking through 2 candidates of size 2+-- looking through 8 candidates of size 3+-- tested 6 candidates double x  =  x + x  triple :: Int -> Int -- testing 4 combinations of argument values -- pruning with 14/25 rules -- looking through 3 candidates of size 1--- looking through 4 candidates of size 2--- looking through 9 candidates of size 3--- looking through 23 candidates of size 4--- looking through 29 candidates of size 5--- tested 43 candidates+-- looking through 2 candidates of size 2+-- looking through 8 candidates of size 3+-- looking through 8 candidates of size 4+-- looking through 21 candidates of size 5+-- tested 25 candidates triple x  =  x + (x + x)  add :: Int -> Int -> Int -- testing 4 combinations of argument values -- pruning with 14/25 rules -- looking through 4 candidates of size 1--- looking through 18 candidates of size 2--- looking through 101 candidates of size 3--- tested 24 candidates+-- looking through 17 candidates of size 2+-- looking through 61 candidates of size 3+-- tested 23 candidates add x y  =  x + y  square :: Int -> Int -- testing 3 combinations of argument values -- pruning with 14/25 rules -- looking through 3 candidates of size 1--- looking through 4 candidates of size 2--- looking through 9 candidates of size 3--- tested 12 candidates+-- looking through 2 candidates of size 2+-- looking through 7 candidates of size 3+-- tested 10 candidates square x  =  x * x  cube :: Int -> Int -- testing 3 combinations of argument values -- pruning with 14/25 rules -- looking through 3 candidates of size 1--- looking through 4 candidates of size 2--- looking through 9 candidates of size 3--- looking through 23 candidates of size 4--- looking through 29 candidates of size 5--- tested 55 candidates+-- looking through 2 candidates of size 2+-- looking through 7 candidates of size 3+-- looking through 8 candidates of size 4+-- looking through 21 candidates of size 5+-- tested 36 candidates cube x  =  x * (x * x)  tnpo :: Int -> Int -- testing 3 combinations of argument values -- pruning with 14/25 rules -- looking through 3 candidates of size 1--- looking through 4 candidates of size 2--- looking through 9 candidates of size 3--- looking through 23 candidates of size 4--- looking through 29 candidates of size 5--- looking through 71 candidates of size 6--- looking through 113 candidates of size 7--- tested 163 candidates+-- looking through 2 candidates of size 2+-- looking through 8 candidates of size 3+-- looking through 8 candidates of size 4+-- looking through 21 candidates of size 5+-- looking through 21 candidates of size 6+-- looking through 90 candidates of size 7+-- tested 87 candidates tnpo x  =  x + (x + (x + 1)) 
+ eg/bst.hs view
@@ -0,0 +1,218 @@+-- bst.hs: conjuring functions over binary search trees (BSTs)+--+-- Copyright (C) 2021 Rudy Matela+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).+{-# LANGUAGE CPP, TemplateHaskell #-}+#if __GLASGOW_HASKELL__ == 708+{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving #-}+import Data.Typeable (Typeable)+#endif++import Conjure+import Test.LeanCheck+import Data.Express hiding (height,size)++-- TODO: remove the following import+-- and fix build on GHC 7.10 and 7.8+-- the generation of -: and ->>>: somehow fails.+import Test.LeanCheck.Utils++data Tree  =  Leaf+           |  Node Tree Int Tree+  deriving (Eq, Ord, Show, Read)++#if __GLASGOW_HASKELL__ == 708+deriving instance Typeable Tree+#endif++deriveExpress ''Tree++unit :: Int -> Tree+unit x  =  Node Leaf x Leaf++nil :: Tree -> Bool+nil Leaf  =  True+nil _     =  False++left :: Tree -> Tree+left (Node l _ _)  =  l++right :: Tree -> Tree+right (Node _ _ r)  =  r++valu :: Tree -> Int+valu (Node _ x _)  =  x+++leftmost :: Tree -> Int+leftmost (Node l x _)  =  if nil l then x else leftmost l++rightmost :: Tree -> Int+rightmost (Node _ x r)  =  if nil r then x else rightmost r++height :: Tree -> Int+height Leaf  =  -1+height (Node l _ r)  =  1 + max (height l) (height r)++size :: Tree -> Int+size Leaf  =  0+size (Node l _ r)  =  size l + 1 + size r++ordered :: Tree -> Bool+ordered Leaf  =  True+ordered (Node l x r)  =  (nil l || rightmost l < x)+                      && (nil r || x < leftmost r)+                      && ordered l+                      && ordered r++preorder :: Tree -> [Int]+preorder Leaf =  []+preorder (Node l x r)  =  [x] ++ preorder l ++ preorder r++inorder :: Tree -> [Int]+inorder Leaf  =  []+inorder (Node l x r)  =  inorder l ++ [x] ++ inorder r++posorder :: Tree -> [Int]+posorder Leaf =  []+posorder (Node l x r)  =  posorder l ++ posorder r ++ [x]+++-- the following assume a binary search tree+mem :: Int -> Tree -> Bool+mem _ Leaf  =  False+mem y (Node l x r)  =  y == x || (if y < x then mem y l else mem y r)++insert :: Int -> Tree -> Tree+insert x Leaf  =  unit x+insert x (Node l y r)  =  case compare x y of+  LT -> Node (insert x l) y r+  EQ -> Node l y r+  GT -> Node l y (insert x r)++before :: Int -> Tree -> Tree+before _ Leaf  =  Leaf+before y (Node l x r)  =  case y `compare` x of+                          LT -> before y l+                          EQ -> l+                          GT -> Node l x (before y r)++beyond :: Int -> Tree -> Tree+beyond _ Leaf  =  Leaf+beyond y (Node l x r)  =  case x `compare` y of+                          LT -> beyond y r+                          EQ -> r+                          GT -> Node (beyond y l) x r++union :: Tree -> Tree -> Tree+union t Leaf  =  t+union t (Node l x r)  =  Node (union (before x t) l) x (union (beyond x t) r)+++instance Listable Tree where+  tiers  =  cons0 Leaf+        \/  cons3 Node `suchThat` ordered++instance Name Tree where+  name _  =  "t1"++instance Conjurable Tree where+  conjureExpress   =  reifyExpress+  conjureEquality  =  reifyEquality+  conjureTiers     =  reifyTiers+  conjureSubTypes x  =  conjureType (undefined :: Int)+  conjureSize     =  size+  conjureCases t  =  [ val (Leaf -: t)+                     , value "Node" (Node ->>>: t) :$ hole l :$ hole x :$ hole r+                     ]+    where+    Node l x r  =  Node undefined undefined undefined -: t+++main :: IO ()+main = do+  conjureWithMaxSize 15 "mem" mem+    [ pr False+    , prim "||" (||)+    , prim "==" ((==) :: Int -> Int -> Bool)+    , prim "<" ((<) :: Int -> Int -> Bool)+    , prif (undefined :: Bool)+    ]++  conjure "mem" mem+    [ pr False+    , pr True+    , prim "`compare`" (compare :: Int -> Int -> Ordering)+    , primOrdCaseFor (undefined :: Bool)+    ]++  -- simply out of reach performance-wise (reaching 16 but need size 26)+  conjureWithMaxSize 12 "insert" insert+    [ pr Leaf+    , prim "Node" Node+    , prim "unit" unit+    , prim "==" ((==) :: Int -> Int -> Bool)+    , prim "<" ((<) :: Int -> Int -> Bool)+    , prif (undefined :: Tree)+    ]++  -- out of reach performance-wise (reaching 16 but need 19)+  conjureFromSpecWith args{maxSize = 12} "before" beforeSpec+    [ pr Leaf+    , prim "Node" Node+    , prim "==" ((==) :: Int -> Int -> Bool)+    , prim "<" ((<) :: Int -> Int -> Bool)+    , prif (undefined :: Tree)+    ]++  -- with 15, this reaches the solution, using 12 for shorter runtime+  -- using maxEquationSize = 7 reduces runtime from 13s to 11s+  conjureFromSpecWith args{maxSize = 12, maxEquationSize = 7} "before" beforeSpec+    [ pr Leaf+    , prim "Node" Node+    , prim "`compare`" (compare :: Int -> Int -> Ordering)+    , primOrdCaseFor (undefined :: Tree)+    ]++  -- with 15, this reaches the solution, using 12 for shorter runtime+  -- using maxEquationSize = 7 reduces runtime from 13s to 11s+  conjureFromSpecWith args{maxSize = 12, maxEquationSize = 7} "beyond" beyondSpec+    [ pr Leaf+    , prim "Node" Node+    , prim "`compare`" (compare :: Int -> Int -> Ordering)+    , primOrdCaseFor (undefined :: Tree)+    ]++  -- out of reach (reaching 11 but need 13)+  conjureWith args{maxSize = 9} "union" union+    [ pr Leaf+    , prim "Node" Node+    , prim "before" before+    , prim "beyond" beyond+    ]+  -- maybe with invariant following test data there will be more pruning+  -- properties?++beforeSpec :: (Int -> Tree -> Tree) -> Bool+beforeSpec before  =  and+  [ holds n $ \x t -> ordered t ==> inorder (before x t) == takeWhile (< x) (inorder t)+  ] where n = 360++beyondSpec :: (Int -> Tree -> Tree) -> Bool+beyondSpec beyond  =  and+  [ holds n $ \x t -> ordered t ==> inorder (beyond x t) == dropWhile (<= x) (inorder t)+  ] where n = 360++-- unionSpec :: (Int -> Tree -> Tree) -> Bool+-- unionSpec union  =  and+--   [ holds n $ \t1 t2 -> ordered t ==> inorder (union t1 t2) == merge (inorder t1) (inorder t2)+--   ] where n = 360++-- same as insert, but using an if instead of a case:+insertIf :: Int -> Tree -> Tree+insertIf x Leaf  =  unit x                                   -- 2+insertIf x (Node l y r)  =  if x == y                        -- 6+                            then Node l y r                  -- 10+                            else if x < y                    -- 14+                                 then Node (insert x l) y r  -- 20+                                 else Node l y (insert x r)  -- 26
+ eg/bst.out view
@@ -0,0 +1,122 @@+mem :: Int -> Tree -> Bool+-- testing 360 combinations of argument values+-- pruning with 20/30 rules+-- looking through 1 candidates of size 1+-- looking through 0 candidates of size 2+-- looking through 0 candidates of size 3+-- looking through 8 candidates of size 4+-- looking through 0 candidates of size 5+-- looking through 0 candidates of size 6+-- looking through 0 candidates of size 7+-- looking through 60 candidates of size 8+-- looking through 120 candidates of size 9+-- looking through 0 candidates of size 10+-- looking through 452 candidates of size 11+-- looking through 424 candidates of size 12+-- tested 707 candidates+mem x Leaf  =  False+mem x (Node t1 y t2)  =  mem x t1 || (x == y || mem x t2)++mem :: Int -> Tree -> Bool+-- testing 360 combinations of argument values+-- pruning with 1/2 rules+-- looking through 2 candidates of size 1+-- looking through 1 candidates of size 2+-- looking through 0 candidates of size 3+-- looking through 4 candidates of size 4+-- looking through 0 candidates of size 5+-- looking through 0 candidates of size 6+-- looking through 6 candidates of size 7+-- looking through 24 candidates of size 8+-- looking through 0 candidates of size 9+-- looking through 192 candidates of size 10+-- looking through 0 candidates of size 11+-- looking through 384 candidates of size 12+-- tested 375 candidates+mem x Leaf  =  False+mem x (Node t1 y t2)  =  case x `compare` y of LT -> mem x t1; EQ -> True; GT -> mem x t2++insert :: Int -> Tree -> Tree+-- testing 360 combinations of argument values+-- pruning with 6/7 rules+-- looking through 2 candidates of size 1+-- looking through 2 candidates of size 2+-- looking through 0 candidates of size 3+-- looking through 10 candidates of size 4+-- looking through 21 candidates of size 5+-- looking through 0 candidates of size 6+-- looking through 118 candidates of size 7+-- looking through 239 candidates of size 8+-- looking through 216 candidates of size 9+-- looking through 2204 candidates of size 10+-- looking through 3651 candidates of size 11+-- looking through 8280 candidates of size 12+-- tested 14743 candidates+cannot conjure++before :: Int -> Tree -> Tree+-- pruning with 5/6 rules+-- looking through 2 candidates of size 1+-- looking through 2 candidates of size 2+-- looking through 0 candidates of size 3+-- looking through 10 candidates of size 4+-- looking through 21 candidates of size 5+-- looking through 0 candidates of size 6+-- looking through 118 candidates of size 7+-- looking through 239 candidates of size 8+-- looking through 216 candidates of size 9+-- looking through 2204 candidates of size 10+-- looking through 3651 candidates of size 11+-- looking through 8280 candidates of size 12+-- tested 14743 candidates+cannot conjure++before :: Int -> Tree -> Tree+-- pruning with 2/4 rules+-- looking through 2 candidates of size 1+-- looking through 2 candidates of size 2+-- looking through 0 candidates of size 3+-- looking through 10 candidates of size 4+-- looking through 21 candidates of size 5+-- looking through 0 candidates of size 6+-- looking through 94 candidates of size 7+-- looking through 287 candidates of size 8+-- looking through 72 candidates of size 9+-- looking through 1784 candidates of size 10+-- looking through 5103 candidates of size 11+-- looking through 3312 candidates of size 12+-- tested 10687 candidates+cannot conjure++beyond :: Int -> Tree -> Tree+-- pruning with 2/4 rules+-- looking through 2 candidates of size 1+-- looking through 2 candidates of size 2+-- looking through 0 candidates of size 3+-- looking through 10 candidates of size 4+-- looking through 21 candidates of size 5+-- looking through 0 candidates of size 6+-- looking through 94 candidates of size 7+-- looking through 287 candidates of size 8+-- looking through 72 candidates of size 9+-- looking through 1784 candidates of size 10+-- looking through 5103 candidates of size 11+-- looking through 3312 candidates of size 12+-- tested 10687 candidates+cannot conjure++union :: Tree -> Tree -> Tree+-- testing 360 combinations of argument values+-- pruning with 6/8 rules+-- looking through 3 candidates of size 1+-- looking through 11 candidates of size 2+-- looking through 40 candidates of size 3+-- looking through 84 candidates of size 4+-- looking through 784 candidates of size 5+-- looking through 1032 candidates of size 6+-- looking through 8368 candidates of size 7+-- looking through 24890 candidates of size 8+-- looking through 75535 candidates of size 9+-- tested 110747 candidates+cannot conjure+
eg/count.hs view
@@ -47,5 +47,5 @@     , prim "tail" (tail :: [A] -> [A])     , prim "null" (null :: [A] -> Bool)     , prim "==" ((==) :: A -> A -> Bool)-    , prim "if" (\p x y -> if p then x else y :: Int)+    , prif (undefined :: Int)     ]
eg/dupos.out view
@@ -51,18 +51,18 @@ -- looking through 1 candidates of size 1 -- looking through 0 candidates of size 2 -- looking through 2 candidates of size 3--- looking through 7 candidates of size 4--- looking through 18 candidates of size 5--- looking through 35 candidates of size 6--- looking through 89 candidates of size 7--- looking through 190 candidates of size 8--- looking through 440 candidates of size 9--- looking through 926 candidates of size 10--- looking through 2113 candidates of size 11--- looking through 4520 candidates of size 12--- looking through 10066 candidates of size 13--- looking through 21492 candidates of size 14--- tested 19274 candidates+-- looking through 5 candidates of size 4+-- looking through 15 candidates of size 5+-- looking through 25 candidates of size 6+-- looking through 59 candidates of size 7+-- looking through 108 candidates of size 8+-- looking through 256 candidates of size 9+-- looking through 458 candidates of size 10+-- looking through 1064 candidates of size 11+-- looking through 1948 candidates of size 12+-- looking through 4516 candidates of size 13+-- looking through 8304 candidates of size 14+-- tested 8844 candidates positionsFrom x y []  =  [] positionsFrom x y (z:xs)  =  (if y == z then (x :) else id) (positionsFrom (x + 1) y xs) 
eg/factorial.out view
@@ -3,12 +3,12 @@ -- pruning with 27/65 rules -- looking through 3 candidates of size 1 -- looking through 4 candidates of size 2--- looking through 13 candidates of size 3--- looking through 34 candidates of size 4--- looking through 75 candidates of size 5--- looking through 183 candidates of size 6--- looking through 577 candidates of size 7--- tested 343 candidates+-- looking through 11 candidates of size 3+-- looking through 29 candidates of size 4+-- looking through 60 candidates of size 5+-- looking through 145 candidates of size 6+-- looking through 501 candidates of size 7+-- tested 283 candidates factorial 0  =  1 factorial x  =  x * factorial (x - 1) @@ -17,10 +17,10 @@ -- pruning with 32/72 rules -- looking through 3 candidates of size 1 -- looking through 4 candidates of size 2--- looking through 13 candidates of size 3--- looking through 34 candidates of size 4--- looking through 75 candidates of size 5--- looking through 247 candidates of size 6--- tested 172 candidates+-- looking through 11 candidates of size 3+-- looking through 29 candidates of size 4+-- looking through 60 candidates of size 5+-- looking through 209 candidates of size 6+-- tested 148 candidates factorial x  =  foldr (*) 1 [1..x] 
eg/fib01.hs view
@@ -2,6 +2,7 @@ import Conjure  fib01 :: Int -> Int -> Int -> Int+-- fib01 x y 0  =  x  -- even with this, out of reach fib01 0 1 0  =  1 fib01 0 1 1  =  1 fib01 0 1 2  =  2@@ -35,3 +36,11 @@ -- expected function: -- fib01 x y z  =  if z <= 0 then y else fib01 y (x + y) (dec z) --                 1  2 3  4      5      6     7  8 9 10  11 12++  -- out of reach as well:+  -- conjure "fib01" fib01+  --   [ pr (0::Int)+  --   , pr (1::Int)+  --   , prim "+" ((+) :: Int -> Int -> Int)+  --   , prim "-" ((-) :: Int -> Int -> Int)+  --   ]
eg/fib01.out view
@@ -2,11 +2,11 @@ -- testing 8 combinations of argument values -- pruning with 6/10 rules -- looking through 4 candidates of size 1--- looking through 31 candidates of size 2--- looking through 295 candidates of size 3--- looking through 1968 candidates of size 4--- looking through 10684 candidates of size 5--- tested 12982 candidates+-- looking through 24 candidates of size 2+-- looking through 241 candidates of size 3+-- looking through 1958 candidates of size 4+-- looking through 10540 candidates of size 5+-- tested 12767 candidates cannot conjure  fib01 :: Int -> Int -> Int -> Int
eg/fibonacci.out view
@@ -2,18 +2,18 @@ -- testing 7 combinations of argument values -- pruning with 21/44 rules -- looking through 4 candidates of size 1--- looking through 9 candidates of size 2--- looking through 20 candidates of size 3--- looking through 87 candidates of size 4--- looking through 127 candidates of size 5--- looking through 420 candidates of size 6--- looking through 845 candidates of size 7--- looking through 2136 candidates of size 8--- looking through 5185 candidates of size 9--- looking through 13000 candidates of size 10--- looking through 33460 candidates of size 11--- looking through 85901 candidates of size 12--- tested 56285 candidates+-- looking through 3 candidates of size 2+-- looking through 14 candidates of size 3+-- looking through 17 candidates of size 4+-- looking through 58 candidates of size 5+-- looking through 69 candidates of size 6+-- looking through 357 candidates of size 7+-- looking through 390 candidates of size 8+-- looking through 2265 candidates of size 9+-- looking through 2502 candidates of size 10+-- looking through 15355 candidates of size 11+-- looking through 17083 candidates of size 12+-- tested 21324 candidates fibonacci 0  =  1 fibonacci 1  =  1 fibonacci x  =  fibonacci (x - 1) + fibonacci (x - 2)
eg/gcd.hs view
@@ -23,5 +23,16 @@   , prim "`mod`" (mod :: Int -> Int -> Int)   ]   -- desired function:-  -- gcd a b  =  if b == 0 then a else gcd b (a `mod` b)-  --             1  2 3  4      5      6   7  8  9   10+  -- gcd x 0  =  x+  -- gcd x y  =  gcd y (x `mod` y)++-- Degenerate case:+-- The number of candidates in this example is big,+-- if we set showTheory = True we can see why:+-- no properties are discovered.+--+-- Since+-- 0 `mod` 0 = undefined+-- Speculate has no way of discovering that+-- x `mod` x = 0+-- in all other cases.
eg/gcd.out view
@@ -2,12 +2,12 @@ -- testing 11 combinations of argument values -- pruning with 0/0 rules -- looking through 3 candidates of size 1--- looking through 8 candidates of size 2--- looking through 20 candidates of size 3+-- looking through 7 candidates of size 2+-- looking through 18 candidates of size 3 -- looking through 60 candidates of size 4 -- looking through 150 candidates of size 5--- looking through 472 candidates of size 6--- tested 246 candidates+-- looking through 469 candidates of size 6+-- tested 243 candidates gcd x 0  =  x gcd x y  =  gcd y (x `mod` y) 
eg/list.hs view
@@ -36,6 +36,22 @@ [x,y] \/ [z,w]  =  [x,z,y,w] [x,y,z] \/ [w,v,u]  =  [x,w,y,v,z,u] +merge' :: [Int] -> [Int] -> [Int]+merge' [] []  =  []+merge' xs []  =  xs+merge' [] ys  =  ys+merge' [x] [y] | x <= y     =  [x,y]+               | otherwise  =  [y,x]+merge' [0,1] [0,1]  =  [0,0,1,1]+merge' [0,1] [2,3]  =  [0,1,2,3]+merge' [0,2] [1,3]  =  [0,1,2,3]++ordered' :: [Int] -> Bool+ordered' []  =  True+ordered' [x]  =  True+ordered' [x,y]  =  x <= y+ordered' [x,y,z]  =  x <= y && y <= z+ main :: IO () main = do   conjure "length" length'@@ -46,7 +62,7 @@    conjure "reverse" reverse'     [ pr ([] :: [Int])-    , prim "unit" ((:[]) :: Int -> [Int])+    , prim ":" ((:) :: Int -> [Int] -> [Int])     , prim "++" ((++) :: [Int] -> [Int] -> [Int])     ] @@ -55,29 +71,6 @@     , prim ":" ((:) :: Int -> [Int] -> [Int])     ] -  -- now through fold-  -- length xs  =  foldr (const (1 +)) 0 xs-  conjure "length" length'-    [ pr (0 :: Int)-    , pr (1 :: Int)-    , prim "+" ((+) :: Int -> Int -> Int)-    , prim "foldr" (foldr :: (Int -> Int -> Int) -> Int -> [Int] -> Int)-    , prim "const" (const :: (Int -> Int) -> Int -> (Int -> Int)) -- cheating?-    ]--  -- now through fold and some cheating-  --  reverse xs  =  foldr (\x xs -> xs ++ [x]) [] xs-  --  reverse xs  =  foldr (flip (++) . unit) [] xs-  conjure "reverse" reverse'-    [ pr ([] :: [Int])-    , prim "unit" ((:[]) :: Int -> [Int])-    , prim "++" ((++) :: [Int] -> [Int] -> [Int])-    , prim "foldr" (foldr :: (Int->[Int]->[Int]) -> [Int] -> [Int] -> [Int])-    -- these last two are cheats:-    , prim "flip" (flip :: ([Int]->[Int]->[Int]) -> [Int] -> [Int] -> [Int])-    , prim "." ((.) :: ([Int]->[Int]->[Int]) -> (Int->[Int]) -> Int -> [Int] -> [Int])-    ]-   conjure "++" (+++)     [ pr ([] :: [Int])     , prim ":" ((:) :: Int -> [Int] -> [Int])@@ -87,4 +80,22 @@   conjure "\\/" (\/)     [ pr ([] :: [Int])     , prim ":" ((:) :: Int -> [Int] -> [Int])+    ]++  conjure "ordered" ordered'+    [ pr False+    , pr True+    , prim "&&" (&&)+    , prim "||" (||)+    , prim "<=" ((<=) :: Int -> Int -> Bool)+    , prim "null" (null :: [Int] -> Bool)+    , prim "head" (head :: [Int] -> Int)+    , prim "tail" (tail :: [Int] -> [Int])+    ]++  -- unreachable: needs about 26, but can only reach 16+  conjureWithMaxSize 12 "merge" merge'+    [ prim ":" ((:) :: Int -> [Int] -> [Int])+    , prim "compare" (compare :: Int -> Int -> Ordering)+    , primOrdCaseFor (undefined :: [Int])     ]
eg/list.out view
@@ -2,85 +2,97 @@ -- testing 360 combinations of argument values -- pruning with 4/8 rules -- looking through 2 candidates of size 1--- looking through 4 candidates of size 2--- looking through 3 candidates of size 3--- looking through 11 candidates of size 4--- looking through 10 candidates of size 5--- tested 23 candidates+-- looking through 2 candidates of size 2+-- looking through 2 candidates of size 3+-- looking through 4 candidates of size 4+-- looking through 5 candidates of size 5+-- tested 13 candidates length []  =  0 length (x:xs)  =  length xs + 1  reverse :: [Int] -> [Int] -- testing 360 combinations of argument values--- pruning with 3/3 rules+-- pruning with 4/4 rules -- looking through 2 candidates of size 1 -- looking through 1 candidates of size 2--- looking through 3 candidates of size 3--- looking through 2 candidates of size 4--- looking through 5 candidates of size 5+-- looking through 2 candidates of size 3+-- looking through 3 candidates of size 4+-- looking through 4 candidates of size 5 -- looking through 7 candidates of size 6--- tested 18 candidates+-- looking through 10 candidates of size 7+-- tested 27 candidates reverse []  =  []-reverse (x:xs)  =  reverse xs ++ unit x+reverse (x:xs)  =  reverse xs ++ [x]  (++) :: [Int] -> [Int] -> [Int] -- testing 360 combinations of argument values -- pruning with 0/0 rules -- looking through 3 candidates of size 1--- looking through 8 candidates of size 2--- looking through 11 candidates of size 3+-- looking through 7 candidates of size 2+-- looking through 9 candidates of size 3 -- looking through 44 candidates of size 4 -- looking through 116 candidates of size 5 -- looking through 80 candidates of size 6--- tested 236 candidates+-- tested 233 candidates [] ++ xs  =  xs (x:xs) ++ ys  =  x:(xs ++ ys) -length :: [Int] -> Int--- testing 360 combinations of argument values--- pruning with 6/10 rules--- looking through 2 candidates of size 1--- looking through 4 candidates of size 2--- looking through 3 candidates of size 3--- looking through 13 candidates of size 4--- looking through 16 candidates of size 5--- tested 25 candidates-length []  =  0-length (x:xs)  =  length xs + 1--reverse :: [Int] -> [Int]--- testing 360 combinations of argument values--- pruning with 6/6 rules--- looking through 2 candidates of size 1--- looking through 1 candidates of size 2--- looking through 3 candidates of size 3--- looking through 2 candidates of size 4--- looking through 5 candidates of size 5--- looking through 15 candidates of size 6--- tested 18 candidates-reverse []  =  []-reverse (x:xs)  =  reverse xs ++ unit x- (++) :: [Int] -> [Int] -> [Int] -- testing 360 combinations of argument values -- pruning with 2/2 rules -- looking through 3 candidates of size 1--- looking through 8 candidates of size 2--- looking through 11 candidates of size 3+-- looking through 7 candidates of size 2+-- looking through 9 candidates of size 3 -- looking through 48 candidates of size 4--- tested 57 candidates+-- tested 54 candidates xs ++ ys  =  foldr (:) ys xs  (\/) :: [Int] -> [Int] -> [Int] -- testing 360 combinations of argument values -- pruning with 0/0 rules -- looking through 3 candidates of size 1--- looking through 8 candidates of size 2--- looking through 11 candidates of size 3+-- looking through 7 candidates of size 2+-- looking through 9 candidates of size 3 -- looking through 44 candidates of size 4 -- looking through 116 candidates of size 5 -- looking through 80 candidates of size 6--- tested 238 candidates+-- tested 235 candidates [] \/ xs  =  xs (x:xs) \/ ys  =  x:ys \/ xs++ordered :: [Int] -> Bool+-- testing 360 combinations of argument values+-- pruning with 29/39 rules+-- looking through 2 candidates of size 1+-- looking through 2 candidates of size 2+-- looking through 3 candidates of size 3+-- looking through 3 candidates of size 4+-- looking through 4 candidates of size 5+-- looking through 16 candidates of size 6+-- looking through 28 candidates of size 7+-- looking through 48 candidates of size 8+-- looking through 100 candidates of size 9+-- looking through 226 candidates of size 10+-- looking through 482 candidates of size 11+-- tested 616 candidates+ordered []  =  True+ordered (x:xs)  =  (null xs || x <= head xs) && ordered xs++merge :: [Int] -> [Int] -> [Int]+-- testing 360 combinations of argument values+-- pruning with 1/2 rules+-- looking through 2 candidates of size 1+-- looking through 1 candidates of size 2+-- looking through 2 candidates of size 3+-- looking through 12 candidates of size 4+-- looking through 16 candidates of size 5+-- looking through 20 candidates of size 6+-- looking through 84 candidates of size 7+-- looking through 40 candidates of size 8+-- looking through 368 candidates of size 9+-- looking through 216 candidates of size 10+-- looking through 1838 candidates of size 11+-- looking through 1016 candidates of size 12+-- tested 3615 candidates+cannot conjure 
eg/pow.out view
@@ -2,14 +2,14 @@ -- testing 5 combinations of argument values -- pruning with 14/30 rules -- looking through 4 candidates of size 1--- looking through 18 candidates of size 2--- looking through 101 candidates of size 3--- looking through 324 candidates of size 4--- looking through 1668 candidates of size 5--- looking through 3438 candidates of size 6--- looking through 21096 candidates of size 7--- looking through 34780 candidates of size 8--- tested 27290 candidates+-- looking through 17 candidates of size 2+-- looking through 92 candidates of size 3+-- looking through 307 candidates of size 4+-- looking through 1632 candidates of size 5+-- looking through 3406 candidates of size 6+-- looking through 21046 candidates of size 7+-- looking through 34728 candidates of size 8+-- tested 27145 candidates pow x 0  =  1 pow x y  =  x * pow x (y - 1) @@ -17,11 +17,11 @@ -- testing 5 combinations of argument values -- pruning with 15/19 rules -- looking through 4 candidates of size 1--- looking through 20 candidates of size 2--- looking through 114 candidates of size 3--- looking through 378 candidates of size 4--- looking through 1690 candidates of size 5--- looking through 4572 candidates of size 6--- tested 6778 candidates+-- looking through 19 candidates of size 2+-- looking through 105 candidates of size 3+-- looking through 360 candidates of size 4+-- looking through 1649 candidates of size 5+-- looking through 4534 candidates of size 6+-- tested 6671 candidates cannot conjure 
eg/replicate.out view
@@ -4,12 +4,12 @@ -- looking through 1 candidates of size 1 -- looking through 0 candidates of size 2 -- looking through 1 candidates of size 3--- looking through 2 candidates of size 4+-- looking through 1 candidates of size 4 -- looking through 3 candidates of size 5--- looking through 7 candidates of size 6+-- looking through 5 candidates of size 6 -- looking through 5 candidates of size 7--- looking through 16 candidates of size 8--- tested 20 candidates+-- looking through 8 candidates of size 8+-- tested 17 candidates replicate 0 c  =  "" replicate x c  =  c:replicate (x - 1) c 
eg/setelem.out view
@@ -17,14 +17,14 @@ -- testing 360 combinations of argument values -- pruning with 46/57 rules -- looking through 2 candidates of size 1--- looking through 3 candidates of size 2--- looking through 7 candidates of size 3--- looking through 19 candidates of size 4--- looking through 35 candidates of size 5--- looking through 83 candidates of size 6--- looking through 245 candidates of size 7--- looking through 617 candidates of size 8--- tested 466 candidates+-- looking through 2 candidates of size 2+-- looking through 5 candidates of size 3+-- looking through 11 candidates of size 4+-- looking through 20 candidates of size 5+-- looking through 47 candidates of size 6+-- looking through 136 candidates of size 7+-- looking through 348 candidates of size 8+-- tested 256 candidates set []  =  True set (x:xs)  =  not (elem x xs) && set xs 
eg/sort.out view
@@ -3,10 +3,10 @@ -- pruning with 6/7 rules -- looking through 2 candidates of size 1 -- looking through 3 candidates of size 2--- looking through 7 candidates of size 3--- looking through 16 candidates of size 4--- looking through 36 candidates of size 5--- tested 31 candidates+-- looking through 5 candidates of size 3+-- looking through 12 candidates of size 4+-- looking through 23 candidates of size 5+-- tested 24 candidates sort []  =  [] sort (x:xs)  =  insert x (sort xs) @@ -45,17 +45,17 @@ -- testing 360 combinations of argument values -- pruning with 4/4 rules -- looking through 3 candidates of size 1--- looking through 8 candidates of size 2--- looking through 11 candidates of size 3+-- looking through 7 candidates of size 2+-- looking through 9 candidates of size 3 -- looking through 44 candidates of size 4 -- looking through 116 candidates of size 5 -- looking through 80 candidates of size 6--- looking through 719 candidates of size 7+-- looking through 715 candidates of size 7 -- looking through 164 candidates of size 8 -- looking through 3360 candidates of size 9 -- looking through 1448 candidates of size 10--- looking through 12905 candidates of size 11+-- looking through 12901 candidates of size 11 -- looking through 15208 candidates of size 12--- tested 34066 candidates+-- tested 34055 candidates cannot conjure 
eg/spec.out view
@@ -28,12 +28,12 @@ (++) :: [Int] -> [Int] -> [Int] -- pruning with 3/3 rules -- looking through 2 candidates of size 1--- looking through 4 candidates of size 2+-- looking through 3 candidates of size 2 -- looking through 10 candidates of size 3--- looking through 28 candidates of size 4+-- looking through 27 candidates of size 4 -- looking through 78 candidates of size 5--- looking through 172 candidates of size 6--- tested 196 candidates+-- looking through 171 candidates of size 6+-- tested 194 candidates [] ++ xs  =  xs (x:xs) ++ ys  =  x:(xs ++ ys) 
eg/subset.out view
@@ -3,13 +3,13 @@ -- pruning with 29/39 rules -- looking through 2 candidates of size 1 -- looking through 4 candidates of size 2--- looking through 14 candidates of size 3+-- looking through 10 candidates of size 3 -- looking through 40 candidates of size 4 -- looking through 160 candidates of size 5 -- looking through 0 candidates of size 6--- looking through 448 candidates of size 7+-- looking through 444 candidates of size 7 -- looking through 784 candidates of size 8--- tested 1318 candidates+-- tested 1310 candidates subset [] xs  =  True subset (x:xs) ys  =  elem x ys && subset xs ys 
eg/tree.hs view
@@ -45,10 +45,10 @@   leftmost :: Tree -> Int-leftmost (Node l x _)  =  if nil l then x else leftmost (left l)+leftmost (Node l x _)  =  if nil l then x else leftmost l  rightmost :: Tree -> Int-rightmost (Node _ x r)  =  if nil r then x else rightmost (right r)+rightmost (Node _ x r)  =  if nil r then x else rightmost r  height :: Tree -> Int height Leaf  =  -1@@ -58,21 +58,32 @@ size Leaf  =  0 size (Node l _ r)  =  size l + 1 + size r +ordered :: Tree -> Bool+ordered Leaf  =  True+ordered (Node l x r)  =  (nil l || rightmost l < x)+                      && (nil r || x < leftmost r)+                      && ordered l+                      && ordered r++preorder :: Tree -> [Int]+preorder Leaf =  []+preorder (Node l x r)  =  [x] ++ preorder l ++ preorder r++inorder :: Tree -> [Int]+inorder Leaf  =  []+inorder (Node l x r)  =  inorder l ++ [x] ++ inorder r++posorder :: Tree -> [Int]+posorder Leaf =  []+posorder (Node l x r)  =  posorder l ++ posorder r ++ [x]++ -- this mem searches both sides of the tree mem :: Int -> Tree -> Bool mem _ Leaf  =  False mem y (Node l x r)  =  y == x || mem y l || mem y r -insert :: Int -> Tree -> Tree-insert x Leaf  =  unit x-insert x (Node l y r)  =  case compare x y of-  LT -> Node (insert x l) y r-  EQ -> Node l y r-  GT -> Node l y (insert x r) --- TODO: mem alternative for binary search trees-- instance Listable Tree where   tiers  =  cons0 Leaf         \/  cons3 Node@@ -85,6 +96,7 @@   conjureEquality  =  reifyEquality   conjureTiers     =  reifyTiers   conjureSubTypes x  =  conjureType (undefined :: Int)+  conjureSize     =  size   conjureCases t  =  [ val (Leaf -: t)                      , value "Node" (Node ->>>: t) :$ hole l :$ hole x :$ hole r                      ]@@ -96,77 +108,73 @@ main = do   conjure "leftmost" leftmost     [ prim "undefined" (undefined :: Int)-    , prim "if" (\p x y -> if p then x else y :: Int)+    , prif (undefined :: Int)     , prim "nil" nil     ]    conjure "rightmost" rightmost     [ prim "undefined" (undefined :: Int)-    , prim "if" (\p x y -> if p then x else y :: Int)+    , prif (undefined :: Int)     , prim "nil" nil     ] -  conjureWithMaxSize 13 "size" size+  conjure "size" size     [ pr (0 :: Int)     , pr (1 :: Int)     , prim "+" ((+) :: Int -> Int -> Int)     , prim "nil" nil-    , prim "left" left-    , prim "right" right     ] -  conjureWithMaxSize 13 "height" height+  conjure "height" height     [ pr (0 :: Int)     , pr (1 :: Int)     , pr (-1 :: Int)     , prim "+" ((+) :: Int -> Int -> Int)     , prim "max" (max :: Int -> Int -> Int)     , prim "nil" nil-    , prim "left" left-    , prim "right" right     ] -  -- out of reach performance-wise   conjure "mem" mem     [ pr False     , prim "||" (||)     , prim "==" ((==) :: Int -> Int -> Bool)     ] -  -- simply out of reach performance-wise (size 34)-  conjureWithMaxSize 12 "insert" insert-    [ pr Leaf-    , prim "Node" Node-    , prim "==" ((==) :: Int -> Int -> Bool)+  -- unreachable: needs size 22 but OOMs at 18+  conjureWithMaxSize 12 "ordered" ordered+    [ pr True+    , pr False+    , prim "&&" (&&)+    , prim "||" (||)     , prim "<" ((<) :: Int -> Int -> Bool)-    , prim ">" ((>) :: Int -> Int -> Bool)-    , prim "if" (\p t1 t2 -> if p then t1 else t2 :: Tree)+    , prim "rightmost" rightmost+    , prim "leftmost" leftmost     ] +  conjure "ordered" ordered+    [ prim "strictlyOrdered" (strictlyOrdered :: [Int] -> Bool)+    , prim "inorder" inorder+    ] -sizeIf :: Tree -> Int-sizeIf t  =  if nil t  -- 3-             then 0    -- 4-             else sizeIf (left t) + sizeIf (right t)-             --      5     6   7  8   9      10  11+  conjureWithMaxSize 12 "preorder" preorder+    [ pr ([] :: [Int])+    , prim ":" ((:) :: Int -> [Int] -> [Int])+    , prim "++" ((++) :: [Int] -> [Int] -> [Int])+    ] -heightIf :: Tree -> Int-heightIf t  =  if nil t  -- 3-               then -1   -- 4-               else 1 + max (height (left t)) (height (right t))-               --   5 6  7     8      9  10      11     12   13+  conjureWithMaxSize 12 "inorder" inorder+    [ pr ([] :: [Int])+    , prim ":" ((:) :: Int -> [Int] -> [Int])+    , prim "++" ((++) :: [Int] -> [Int] -> [Int])+    ] -memIf :: Int -> Tree -> Bool-memIf y t  =  if nil t     -- 3-              then False   -- 4-              else y == valu t || memIf y (left t) || memIf y (right t)-              --   5  6   7  8  9  10  11   12  13 14  15  16   17   18+  conjureWithMaxSize 12 "posorder" posorder+    [ pr ([] :: [Int])+    , prim ":" ((:) :: Int -> [Int] -> [Int])+    , prim "++" ((++) :: [Int] -> [Int] -> [Int])+    ] -insertIf :: Int -> Tree -> Tree-insertIf x t  =  if nil t                 -- 3-                 then unit x              -- 5-                 else if x == valu t      -- 10-                      then t              -- 11-                      else if x < valu t  -- 16-                           then Node (insert x (left t)) (valu t) (right t)  -- 25-                           else Node (left t) (valu t) (insert x (right t))  -- 34++strictlyOrdered :: [Int] -> Bool+strictlyOrdered []  =  True+strictlyOrdered (x:xs)  =  (null xs || x < head xs) && strictlyOrdered xs
eg/tree.out view
@@ -30,14 +30,14 @@ -- testing 360 combinations of argument values -- pruning with 4/8 rules -- looking through 2 candidates of size 1--- looking through 4 candidates of size 2--- looking through 5 candidates of size 3--- looking through 19 candidates of size 4--- looking through 35 candidates of size 5--- looking through 66 candidates of size 6--- looking through 163 candidates of size 7--- looking through 311 candidates of size 8--- tested 428 candidates+-- looking through 2 candidates of size 2+-- looking through 3 candidates of size 3+-- looking through 4 candidates of size 4+-- looking through 9 candidates of size 5+-- looking through 12 candidates of size 6+-- looking through 25 candidates of size 7+-- looking through 40 candidates of size 8+-- tested 71 candidates size Leaf  =  0 size (Node t1 x t2)  =  size t1 + (size t2 + 1) @@ -45,14 +45,14 @@ -- testing 360 combinations of argument values -- pruning with 49/65 rules -- looking through 3 candidates of size 1--- looking through 9 candidates of size 2--- looking through 8 candidates of size 3--- looking through 59 candidates of size 4--- looking through 114 candidates of size 5--- looking through 472 candidates of size 6--- looking through 1440 candidates of size 7--- looking through 5781 candidates of size 8--- tested 4171 candidates+-- looking through 3 candidates of size 2+-- looking through 4 candidates of size 3+-- looking through 13 candidates of size 4+-- looking through 30 candidates of size 5+-- looking through 88 candidates of size 6+-- looking through 320 candidates of size 7+-- looking through 1093 candidates of size 8+-- tested 475 candidates height Leaf  =  -1 height (Node t1 x t2)  =  max (height t1) (height t2) + 1 @@ -75,21 +75,77 @@ mem x Leaf  =  False mem x (Node t1 y t2)  =  mem x t1 || (x == y || mem x t2) -insert :: Int -> Tree -> Tree+ordered :: Tree -> Bool -- testing 360 combinations of argument values--- pruning with 6/7 rules+-- pruning with 29/39 rules -- looking through 2 candidates of size 1--- looking through 2 candidates of size 2--- looking through 0 candidates of size 3--- looking through 10 candidates of size 4--- looking through 21 candidates of size 5--- looking through 0 candidates of size 6--- looking through 118 candidates of size 7--- looking through 239 candidates of size 8--- looking through 216 candidates of size 9--- looking through 2204 candidates of size 10--- looking through 3651 candidates of size 11--- looking through 8280 candidates of size 12--- tested 14743 candidates+-- looking through 1 candidates of size 2+-- looking through 2 candidates of size 3+-- looking through 0 candidates of size 4+-- looking through 10 candidates of size 5+-- looking through 20 candidates of size 6+-- looking through 0 candidates of size 7+-- looking through 64 candidates of size 8+-- looking through 144 candidates of size 9+-- looking through 112 candidates of size 10+-- looking through 964 candidates of size 11+-- looking through 1480 candidates of size 12+-- tested 2799 candidates cannot conjure++ordered :: Tree -> Bool+-- testing 360 combinations of argument values+-- pruning with 0/0 rules+-- looking through 0 candidates of size 1+-- looking through 0 candidates of size 2+-- looking through 3 candidates of size 3+-- tested 3 candidates+ordered t1  =  strictlyOrdered (inorder t1)++preorder :: Tree -> [Int]+-- testing 360 combinations of argument values+-- pruning with 4/4 rules+-- looking through 1 candidates of size 1+-- looking through 0 candidates of size 2+-- looking through 2 candidates of size 3+-- looking through 1 candidates of size 4+-- looking through 2 candidates of size 5+-- looking through 5 candidates of size 6+-- looking through 4 candidates of size 7+-- looking through 9 candidates of size 8+-- tested 17 candidates+preorder Leaf  =  []+preorder (Node t1 x t2)  =  x:(preorder t1 ++ preorder t2)++inorder :: Tree -> [Int]+-- testing 360 combinations of argument values+-- pruning with 4/4 rules+-- looking through 1 candidates of size 1+-- looking through 0 candidates of size 2+-- looking through 2 candidates of size 3+-- looking through 1 candidates of size 4+-- looking through 2 candidates of size 5+-- looking through 5 candidates of size 6+-- looking through 4 candidates of size 7+-- looking through 9 candidates of size 8+-- tested 21 candidates+inorder Leaf  =  []+inorder (Node t1 x t2)  =  inorder t1 ++ (x:inorder t2)++posorder :: Tree -> [Int]+-- testing 360 combinations of argument values+-- pruning with 4/4 rules+-- looking through 1 candidates of size 1+-- looking through 0 candidates of size 2+-- looking through 2 candidates of size 3+-- looking through 1 candidates of size 4+-- looking through 2 candidates of size 5+-- looking through 5 candidates of size 6+-- looking through 4 candidates of size 7+-- looking through 9 candidates of size 8+-- looking through 14 candidates of size 9+-- looking through 17 candidates of size 10+-- tested 52 candidates+posorder Leaf  =  []+posorder (Node t1 x t2)  =  posorder t1 ++ (posorder t2 ++ [x]) 
mk/depend.mk view
@@ -172,6 +172,19 @@   src/Conjure/Conjurable.hs \   src/Conjure/Conjurable/Derive.hs \   eg/bools.hs+eg/bst: \+  eg/bst.hs \+  mk/toplibs+eg/bst.o: \+  src/Conjure/Utils.hs \+  src/Conjure/Prim.hs \+  src/Conjure.hs \+  src/Conjure/Expr.hs \+  src/Conjure/Engine.hs \+  src/Conjure/Defn.hs \+  src/Conjure/Conjurable.hs \+  src/Conjure/Conjurable/Derive.hs \+  eg/bst.hs eg/count: \   eg/count.hs \   mk/toplibs
mk/haskell.mk view
@@ -1,6 +1,6 @@ # Implicit rules for compiling Haskell code. #-# Copyright (c) 2015-2021 Rudy Matela.+# Copyright (c) 2015-2023 Rudy Matela. # Distributed under the 3-Clause BSD licence. # # You can optionally configure the "Configuration variables" below in your main@@ -21,7 +21,7 @@ GHC ?= ghc GHCCMD = $(GHC) -i$(GHCIMPORTDIRS) $(GHCFLAGS) HADDOCK ?= haddock-CABAL_INSTALL = $(shell cabal --version | grep -q "version [0-2]\." && echo 'cabal install' || echo 'cabal v1-install')+CABAL_INSTALL = $(shell cabal --version | grep -q "version [0-2]\." && echo 'cabal install' || echo 'cabal install --lib')  # Hugs Parameters HUGSIMPORTDIRS ?= "/usr/lib/hugs/packages/*"@@ -52,7 +52,6 @@ PKGNAME = $(shell cat *.cabal | grep "^name:"    | sed -e "s/name: *//")  HADDOCK_HAS = haddock --help | grep -q ---HADDOCK_FILTER ?= cat   # Implicit rules@@ -91,7 +90,10 @@ 	find $(ALL_HSS) | ./mk/ghcdeps -i$(GHCIMPORTDIRS) $(GHCFLAGS) > $(DEPMK)  install-dependencies:-	$(CABAL_INSTALL) $(INSTALL_DEPS)+	if [ -n "$(INSTALL_DEPS)" ]; then \+		cabal update && \+		$(CABAL_INSTALL) $(INSTALL_DEPS); \+	fi  # haddock rules haddock: doc/index.html@@ -112,8 +114,7 @@ 	  $(shell $(HADDOCK_HAS) --package-name          && echo "--package-name=$(PKGNAME)" ) \ 	  $(shell $(HADDOCK_HAS) --hyperlinked-source    && echo "--hyperlinked-source"      ) \ 	  $(shell $(HADDOCK_HAS) --no-print-missing-docs && echo --no-print-missing-docs     ) \-	  $(HADDOCKFLAGS) | \-	$(HADDOCK_FILTER)+	  $(HADDOCKFLAGS)  clean-cabal: 	rm -rf dist/ dist-newstyle/ cabal.project.local cabal.project.local~
src/Conjure.hs view
@@ -48,6 +48,7 @@   , pr   , prim   , prif+  , primOrdCaseFor  -- * Advanced use   , conjureWithMaxSize@@ -63,7 +64,7 @@   , conjureFromSpecWith  -- * When using custom types-  , Conjurable (conjureExpress, conjureEquality, conjureTiers, conjureCases, conjureSubTypes)+  , Conjurable (conjureExpress, conjureEquality, conjureTiers, conjureCases, conjureSubTypes, conjureSize)   , reifyExpress   , reifyEquality   , reifyTiers
src/Conjure/Conjurable.hs view
@@ -29,6 +29,7 @@   , conjureIsDeconstructor   , conjureIsDeconstruction   , candidateDeconstructionsFrom+  , candidateDeconstructionsFromHoled   , conjureIsUnbreakable   , conjureReification   , conjureReification1@@ -361,11 +362,18 @@                $  e `match` ed   err  =  error "conjureIsDeconstructor: the impossible happened" + -- | Compute candidate deconstructions from an 'Expr'. ----- This is used in the implementation of--- 'Conjure.Engine.candidateDefnsC' and 'Conjure.Engine.candidateExprs'+-- This is used in the implementation of 'Conjure.Engine.candidateDefnsC' -- followed by 'conjureIsDeconstruction'.+--+-- > > candidateDeconstructionsFrom (xx `mod'` yy)+-- > [ _ `mod` y+-- > , x `mod` _+-- > ]+--+-- To be constrasted with 'candidateDeconstructionsFromHoled'. candidateDeconstructionsFrom :: Expr -> [Expr] candidateDeconstructionsFrom e  =   [ e'@@ -374,6 +382,31 @@   , let e' = e //- [(v, holeAsTypeOf v)]   , length (holes e') == 1   ]++-- | Compute candidate deconstructions from an 'Expr'.+--+-- This is used in the implementation of 'Conjure.Engine.candidateExprs'+-- followed by 'conjureIsDeconstruction'.+--+-- This is similar to 'canonicalVariations'+-- but always leaves a hole+-- of the same return type as the given expression.+--+-- > > candidateDeconstructionsFrom (i_ `mod'` i_)+-- > [ _ `mod` x+-- > , x `mod` _+-- > ]+--+-- To be contrasted with 'candidateDeconstructionsFrom'+candidateDeconstructionsFromHoled :: Expr -> [Expr]+candidateDeconstructionsFromHoled e  =  map (//- [(v, h)])+                                     $  concatMap canonicalVariations+                                     $  deholings v e+  where+  h  =  holeAsTypeOf e+  v  =  "_#_" `varAsTypeOf` e  -- a marker variable with an invalid name+  -- at some point I should get rid of candidateDeconstructionsFrom in favour+  -- of this one  -- | Checks if an 'Expr' is of an unbreakable type. conjureIsUnbreakable :: Conjurable f => f -> Expr -> Bool
src/Conjure/Defn.hs view
@@ -20,6 +20,7 @@   , devalFast   , showDefn   , defnApparentlyTerminates+  , isRedundantDefn   , module Conjure.Expr   ) where@@ -31,7 +32,7 @@ import Data.Express.Fixtures import Data.Dynamic import Control.Applicative ((<$>)) -- for older GHCs-import Test.LeanCheck.Utils ((-:>)) -- for toDynamicWithDefn+import Test.LeanCheck.Utils ((-:>), classifyOn)  -- | A function definition as a list of top-level case bindings ('Bndn'). --@@ -134,6 +135,7 @@   -- should only be used to evaluate an expr of the form:   -- ef' :$ exprExpr ex :$ exprExpr ey :$ ...   red :: Int -> Memo -> Expr -> Maybe (Int, Memo, Dynamic)+  red n m e  |  size e > n  =  error "toDynamicWithDefn: argument-size limit reached"   red n m e  =  case lookup e m of     Just Nothing -> error $ "toDynamicWithDefn: loop detected " ++ show e     Just (Just d) -> Just (n,m,d)@@ -194,3 +196,40 @@ defnApparentlyTerminates :: Defn -> Bool defnApparentlyTerminates [(efxs, e)]  =  apparentlyTerminates efxs e defnApparentlyTerminates _  =  True++-- | Returns whether the given 'Defn' is redundant+--   with regards to its patterns.+--+-- Here is an example of a redundant 'Defn':+--+-- > 0 ? 0  =  0+-- > 0 ? x  =  0+-- > x ? 0  =  x+-- > x ? y  =  x+--+-- It is redundant because it is equivalent to:+--+-- > 0 ? _  =  0+-- > x ? _  =  x+--+-- If the given expression is incomplete ('hasHole')+-- this function returns 'True' as nothing can be said.+isRedundantDefn :: Defn -> Bool+isRedundantDefn d  =  all isComplete (map snd d)+                   && any isRedundant1 (unfoldDefnArgs d)+  where+  isRedundant1 :: [(Expr,Expr)] -> Bool+  isRedundant1  =  all allEqual+                .  map (map snd)+                .  classifyOn fst+                .  map (unfoldPair . canonicalize . foldPair)++  -- Returns a list of degenerate 'Defn'+  -- whose patterns have been "lensed" on each argument.+  unfoldDefnArgs :: Defn -> [[(Expr,Expr)]]+  unfoldDefnArgs  =  transpose . map unfoldBndnArgs+    where+    unfoldBndnArgs :: Bndn -> [(Expr,Expr)]+    unfoldBndnArgs (p,r)  =  map (\a -> (a,r)) as+      where+      (_:as)  =  unfoldApp p
src/Conjure/Engine.hs view
@@ -49,6 +49,7 @@ import Test.LeanCheck import Test.LeanCheck.Tiers import Test.LeanCheck.Error (errorToTrue, errorToFalse, errorToNothing)+import Test.LeanCheck.Utils (classifyOn)  import Test.Speculate.Reason (Thy, rules, equations, invalid, canReduceTo, printThy, closureLimit, doubleCheck) import Test.Speculate.Engine (theoryFromAtoms, grounds, groundBinds, boolTy)@@ -163,6 +164,7 @@   , maxDeconstructionSize :: Int  -- ^ maximum size of deconstructions (e.g.: @_ - 1@)   , requireDescent        :: Bool -- ^ require recursive calls to deconstruct arguments   , usePatterns           :: Bool -- ^ use pattern matching to create (recursive) candidates+  , copyBindings          :: Bool -- ^ copy partial definition bindings in candidates   , showTheory            :: Bool -- ^ show theory discovered by Speculate used in pruning   , uniqueCandidates      :: Bool -- ^ unique-modulo-testing candidates   }@@ -189,6 +191,7 @@   , maxDeconstructionSize  =   4   , requireDescent         =  True   , usePatterns            =  True+  , copyBindings           =  True   , showTheory             =  False   , uniqueCandidates       =  False   }@@ -217,12 +220,18 @@     putStrLn $ "{-"     printThy thy     putStrLn $ "-}"-  when (not . null $ invalid thy) $+  when (not . null $ invalid thy) $ do     putStrLn $ "-- reasoning produced "             ++ show (length (invalid thy)) ++ " incorrect properties,"             ++ " please re-run with more tests for faster results"+    when (showTheory args) $ do+      putStrLn $ "{-"+      putStrLn $ "invalid:"+      putStr   $ unlines $ map showEq $ invalid thy+      putStrLn $ "-}"   pr 1 0 rs   where+  showEq eq  =  showExpr (fst eq) ++ " == " ++ showExpr (snd eq)   pr n t []  =  do putStrLn $ "-- tested " ++ show t ++ " candidates"                    putStrLn $ "cannot conjure\n"   pr n t ((is,cs):rs)  =  do@@ -395,6 +404,7 @@        $  cjHoles (prim nm f:ps) ++ [val False, val True] ++ es   (===)  =  cjAreEqual (prim nm f:ps) maxTests + -- | Return apparently unique candidate definitions --   using pattern matching. candidateDefnsC :: Conjurable f => Args -> String -> f -> [Prim] -> ([[Defn]], Thy)@@ -413,11 +423,17 @@   appsWith :: Expr -> [Expr] -> [[Expr]]   appsWith eh vs  =  enumerateAppsFor eh keep $ vs ++ es -   ps2fss :: [Expr] -> [[Defn]]-  ps2fss pats  =  discardT (allEqual . map snd) . products $ map p2eess pats+  ps2fss pats  =  discardT isRedundantDefn+               .  discardT (allEqual . map snd)+               .  products+               $  map p2eess pats     where     p2eess :: Expr -> [[Bndn]]+    -- the following guarded line is an optional optimization+    -- if the function is defined for the given pattern,+    -- simply use its return value as the only possible result+    p2eess pat | copyBindings && isGroundPat f pat  =  [[(pat, toValPat f pat)]]     p2eess pat  =  mapT (pat,)                 .  appsWith pat                 .  tail@@ -436,7 +452,6 @@   fillingsFor :: Defn -> [[Defn]]   fillingsFor  =  products . map fillingsFor1 -  ds  =  filter (conjureIsDeconstructor f maxTests) es   keepR ep | requireDescent  =  descends isDecOf ep            | otherwise       =  const True     where@@ -444,13 +459,18 @@                     [  ()                     |  d <- deconstructions                     ,  m <- maybeToList (e `match` d)-                    ,  filter (uncurry (/=)) m == [(holeAsTypeOf e', e')]+                       -- h (_) is bound to e'+                    ,  lookup h m == Just e'+                       -- other than (h,e') we only accept (var,var)+                    ,  all (\(e1,e2) -> e1 == h || isVar e2) m                     ]+      where+      h = holeAsTypeOf e'     deconstructions :: [Expr]     deconstructions  =  filter (conjureIsDeconstruction f maxTests)-                     $  concatMap candidateDeconstructionsFrom+                     $  concatMap candidateDeconstructionsFromHoled                      $  concat . take maxDeconstructionSize-                     $  concatMapT (`appsWith` vars ep) [hs]+                     $  concatMapT (`appsWith` hs) [hs]       where       hs  =  nub $ conjureArgumentHoles f   recs ep  =  filterT (keepR ep)@@ -547,6 +567,42 @@   isNotConstruction (p,e) | isVar p    =  e == p || e `isDecOf` p                           | otherwise  =  size e <= size p -- TODO: allow filter and id somehow -- TODO: improve this function with better isNotConstruction+++-- | Checks if the given pattern is a ground pattern.+--+-- A pattern is a ground pattern when its arguments are fully defined+-- and evaluating the function returns a defined value.+--+-- This is to be used on values returned by conjurePats.+--+-- For now, this is only used on 'candidateDefnsC'.+isGroundPat :: Conjurable f => f -> Expr -> Bool+isGroundPat f pat  =  errorToFalse . eval False $ gpat -==- gpat+  where+  gpat  =  toGroundPat f pat+  (-==-)  =  conjureMkEquation f+++-- | Given a complete "pattern", i.e. application encoded as expr,+--   converts it from using a "variable" function,+--   to an actual "value" function.+--+-- This function is used on 'isGroundPat' and 'toValPat'+toGroundPat :: Conjurable f => f -> Expr -> Expr+toGroundPat f pat  =  foldApp (value "f" f : tail (unfoldApp pat))++-- | Evaluates a pattern to its final value.+--+-- Only to be used when the function is defined for the given set of arguments.+--+-- For now, this is only used on 'candidateDefnsC'.+toValPat :: Conjurable f => f -> Expr -> Expr+toValPat f  =  conjureExpress f . toGroundPat f+-- NOTE: the use of conjureExpress above is a hack.+--       Here, one could have used a conjureVal function,+--       that lifts 'val' over 'Expr's.+--       However this function does not exist.   -- hardcoded filtering rules
src/Conjure/Expr.hs view
@@ -19,6 +19,7 @@   , mayNotEvaluateArgument   , compareSimplicity   , ifFor+  , caseForOrd   , valuesBFS   , holesBFS   , fillBFS@@ -28,6 +29,7 @@   , revaluate   , reval   , useMatches+  , deholings    , enumerateAppsFor   , enumerateFillings@@ -179,12 +181,19 @@ -- -- > > ifFor (undefined :: String) -- > if :: Bool -> [Char] -> [Char] -> [Char]------ You need to provide this as part of your building blocks on the primitives--- if you want recursive functions to be considered and produced. ifFor :: Typeable a => a -> Expr ifFor a  =  value "if" (\p x y -> if p then x else y `asTypeOf` a) +-- | Creates a case 'Expr' of the type of the given proxy.+--+-- > > caseForOrd (undefined :: Int)+-- > case :: Bool -> Int -> Int -> Int -> Int+--+-- > > caseForOrd (undefined :: String)+-- > case :: Bool -> [Char] -> [Char] -> [Char] -> [Char]+caseForOrd :: Typeable a => a -> Expr+caseForOrd a  =  value "case" (\o x y z -> case o of LT -> x; EQ -> y; GT -> z `asTypeOf` a)+ -- | Application cross-product between lists of Exprs (>$$<) :: [Expr] -> [Expr] -> [Expr] exs >$$< eys  =  catMaybes [ex $$ ey | ex <- exs, ey <- eys]@@ -422,6 +431,27 @@ rehole (e1 :$ e2)    = rehole e1 :$ rehole e2 rehole e | isVar e   = "" `varAsTypeOf` e          | otherwise = e++-- | Takes two expressions and returns all possible ways+--   in which the first expression can appear once in+--   one of the holes of the second expression.+--+-- > > deholings zero (i_ -+- i_ -+- i_)+-- > [ (0 + _) + _ :: Int+-- > , (_ + 0) + _ :: Int+-- > , (_ + _) + 0 :: Int+-- > ]+--+-- > > deholings zero (i_ -+- one -+- ord' c_)+-- > [(0 + 1) + ord _ :: Int]+deholings :: Expr -> Expr -> [Expr]+deholings e'  =  deh+  where+  deh (e1 :$ e2)  =  map (:$ e2) (deh e1)+                  ++ map (e1 :$) (deh e2)+  deh e  =  if typ e == typ e' && isHole e+            then [e']+            else []  instance Express A where  expr  =  val instance Express B where  expr  =  val
src/Conjure/Prim.hs view
@@ -14,6 +14,7 @@   , prim   , pr   , prif+  , primOrdCaseFor   , cjHoles   , cjTiersFor   , cjAreEqual@@ -51,6 +52,11 @@ -- | Provides an if condition bound to the given return type. prif :: Conjurable a => a -> Prim prif x  =  (ifFor x, conjureType x)+++-- | Provides a case condition bound to the given return type.+primOrdCaseFor :: Conjurable a => a -> Prim+primOrdCaseFor x  =  (caseForOrd x, conjureType x)   -- the following functions mirror their "conjure" counterparts from
src/Conjure/Utils.hs view
@@ -45,6 +45,8 @@ import System.IO.Unsafe  -- | Checks if all elements of a list are equal.+--+-- Exceptionally this function returns false for an empty or unit list. allEqual :: Eq a => [a] -> Bool allEqual []  =  False allEqual [x]  =  False
stack.yaml view
@@ -3,12 +3,12 @@ # Copyright (C) 2021 Rudy Matela # Distributed under the 3-Clause BSD licence (see the file LICENSE). -resolver: lts-18.14 # or ghc-8.10.7+resolver: lts-19.19 # or ghc-9.0.2  packages: - .  extra-deps:-- leancheck-0.9.10+- leancheck-1.0.0 - speculate-0.4.14-- express-1.0.8+- express-1.0.10
test/conjurable.hs view
@@ -320,6 +320,19 @@   , candidateDeconstructionsFrom (div' xx xx) == []   , candidateDeconstructionsFrom ((xx -+- xx) -+- yy) == [(xx -+- xx) -+- i_] +  , candidateDeconstructionsFromHoled (div' i_ i_) == [ div' i_ xx+                                                      , div' xx i_+                                                      ]+  , candidateDeconstructionsFromHoled (div' xx yy) == []+  , candidateDeconstructionsFromHoled ((i_ -+- i_) -+- i_) ==+      [ (i_ -+- xx) -+- yy+      , (i_ -+- xx) -+- xx+      , (xx -+- i_) -+- yy+      , (xx -+- i_) -+- xx+      , (xx -+- yy) -+- i_+      , (xx -+- xx) -+- i_+      ]+   , fromDynamic (conjureDynamicEq ((+) :: Int -> Int -> Int) `dynApp` toDyn (1::Int) `dynApp` toDyn (2::Int))     == Just False   , fromDynamic (conjureDynamicEq ((+) :: Int -> Int -> Int) `dynApp` toDyn (1::Int) `dynApp` toDyn (1::Int))
test/sdist view
@@ -2,7 +2,7 @@ # # test/sdist: tests the package generated by "cabal sdist". #-# Copyright (c) 2015-2021 Rudy Matela.+# Copyright (c) 2015-2023 Rudy Matela. # Distributed under the 3-Clause BSD licence.  set -xe@@ -29,7 +29,11 @@ tar -tf $pkg | sort --ignore-case --unique > $tmp/ls-cabal-iu diff -rud $tmp/ls-cabal-i $tmp/ls-cabal-iu -if [ -d .git ]+# Check if we have a clone of the repo and git is available+# The check that we can run git ls-files is needed to avoid:+# fatal: detected dubious ownership in repository at '/__w/.../hello-haskell'+# on CI.+if [ -d .git ] && git --version && git ls-files >/dev/null then 	# Test if files included by cabal are the same as files tracked in git. 	git ls-files                                         | sort > $tmp/ls-git