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 +35/−28
- .gitignore +1/−0
- Makefile +5/−3
- TODO.md +5/−20
- bench/candidates.hs +10/−0
- bench/candidates.out +11181/−8869
- bench/gps.hs +40/−2
- bench/gps.out +60/−61
- bench/gps2.out +50/−49
- bench/ill-hit.out +5/−5
- bench/lowtests.out +6/−2
- bench/p12.out +6/−6
- bench/runtime/zero/bench/candidates.runtime +1/−1
- bench/runtime/zero/bench/gps.runtime +1/−1
- bench/runtime/zero/bench/gps2.runtime +1/−1
- bench/runtime/zero/bench/lowtests.runtime +1/−1
- bench/runtime/zero/bench/p12.runtime +1/−1
- bench/runtime/zero/bench/terpret.runtime +1/−1
- bench/runtime/zero/eg/bools.runtime +1/−1
- bench/runtime/zero/eg/bst.runtime +1/−0
- bench/runtime/zero/eg/dupos.runtime +1/−1
- bench/runtime/zero/eg/factorial.runtime +1/−1
- bench/runtime/zero/eg/fib01.runtime +1/−1
- bench/runtime/zero/eg/fibonacci.runtime +1/−1
- bench/runtime/zero/eg/list.runtime +1/−1
- bench/runtime/zero/eg/pow.runtime +1/−1
- bench/runtime/zero/eg/replicate.runtime +1/−1
- bench/runtime/zero/eg/setelem.runtime +1/−1
- bench/runtime/zero/eg/tree.runtime +1/−1
- bench/runtime/zero/proto/u-conjure.runtime +1/−1
- bench/runtime/zero/versions +3/−3
- bench/self.out +12/−12
- bench/take-drop.out +12/−12
- bench/terpret.out +14/−14
- bench/versions +5/−1
- changelog.md +15/−2
- code-conjure.cabal +6/−9
- eg/arith.out +26/−26
- eg/bst.hs +218/−0
- eg/bst.out +122/−0
- eg/count.hs +1/−1
- eg/dupos.out +12/−12
- eg/factorial.out +11/−11
- eg/fib01.hs +9/−0
- eg/fib01.out +5/−5
- eg/fibonacci.out +12/−12
- eg/gcd.hs +13/−2
- eg/gcd.out +4/−4
- eg/list.hs +35/−24
- eg/list.out +57/−45
- eg/pow.out +14/−14
- eg/replicate.out +4/−4
- eg/setelem.out +8/−8
- eg/sort.out +9/−9
- eg/spec.out +4/−4
- eg/subset.out +3/−3
- eg/tree.hs +58/−50
- eg/tree.out +86/−30
- mk/depend.mk +13/−0
- mk/haskell.mk +7/−6
- src/Conjure.hs +2/−1
- src/Conjure/Conjurable.hs +35/−2
- src/Conjure/Defn.hs +40/−1
- src/Conjure/Engine.hs +63/−7
- src/Conjure/Expr.hs +33/−3
- src/Conjure/Prim.hs +6/−0
- src/Conjure/Utils.hs +2/−0
- stack.yaml +3/−3
- test/conjurable.hs +13/−0
- test/sdist +6/−2
.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