Candidates for: foo :: Int -> Int
  pruning with 27/65 rules
  [3,0,8,0,30,0,177,0,1203] direct candidates, 0 duplicates
  [3,3,9,10,32,39,185,233,1169] pattern candidates, 0 duplicates

rules:
x - x == 0
x * 0 == 0
x * 1 == x
0 * x == 0
1 * x == x
x + 0 == x
0 + x == x
x - 0 == x
(x * y) * z == x * (y * z)
(x * y) * z == y * (x * z)
(x + y) + z == x + (y + z)
(x + y) + z == y + (x + z)
x - (y - z) == z + (x - y)
(x - y) - z == x - (y + z)
(x - y) - z == x - (z + y)
(x + y) - z == x + (y - z)
(x + y) - z == y + (x - z)
(x + x) * y == x * (y + y)
x + (y - x) == y
(x - y) + y == x
x * y - x == x * (y - 1)
x * y - y == y * (x - 1)
x * (y + 1) == x + x * y
x * (y + 1) == x * y + x
(x + 1) * y == y + x * y
0 - x * y == x * (0 - y)
0 - x * y == y * (0 - x)
equations:
y * x == x * y
y + x == x + y
y * (x * z) == x * (y * z)
z * (x * y) == x * (y * z)
z * (y * x) == x * (y * z)
y + (x + z) == x + (y + z)
z + (x + y) == x + (y + z)
z + (y + x) == x + (y + z)
(z + y) * x == x * (y + z)
y + (x - z) == x + (y - z)
z * y + x == x + y * z
(x - z) + y == x + (y - z)
(z - y) + x == (x - y) + z
y * (x + x) == x * (y + y)
y - (x + y) == 0 - x
y - (y + x) == 0 - x
z - (y + z) == x - (x + y)
z - (y + z) == x - (y + x)
z - (z + y) == x - (x + y)
z - (z + y) == x - (y + x)
x * (1 - y) == x - x * y
x * (1 - y) == x - y * x
y * (0 - x) == x * (0 - y)
(0 - x) * y == x * (0 - y)
(0 - y) * x == (0 - x) * y
(1 - y) * x == x - x * y
(1 - y) * x == x - y * x
x + (0 - y) == x - y
(0 - y) + x == x - y
x - (x + 1) == 0 - 1
x - (1 + x) == 0 - 1
y - (y + 1) == x - (x + 1)
y - (y + 1) == x - (1 + x)
y - (1 + y) == x - (1 + x)
x * (0 - 1) == 0 - x
(0 - 1) * x == 0 - x
(0 - 1) * y == x - (x + y)
(0 - 1) * y == x - (y + x)

direct candidates:

foo x  =  x

foo x  =  0

foo x  =  1

foo x  =  x + x

foo x  =  x + 1

foo x  =  1 + 1

foo x  =  x * x

foo x  =  x - 1

foo x  =  0 - x

foo x  =  0 - 1

foo x  =  1 - x

foo x  =  x + (x + x)

foo x  =  x + (x + 1)

foo x  =  x + (1 + 1)

foo x  =  x + x * x

foo x  =  x + (x - 1)

foo x  =  x + (0 - 1)

foo x  =  1 + (x + x)

foo x  =  1 + (x + 1)

foo x  =  1 + (1 + 1)

foo x  =  1 + x * x

foo x  =  1 + (0 - x)

foo x  =  1 + (1 - x)

foo x  =  x * (x + x)

foo x  =  x * (x * x)

foo x  =  x * (x - 1)

foo x  =  x * (0 - x)

foo x  =  x * (0 - 1)

foo x  =  x * (1 - x)

foo x  =  x - (x + x)

foo x  =  x - (x + 1)

foo x  =  x - (1 + 1)

foo x  =  x - x * x

foo x  =  0 - (x + x)

foo x  =  0 - (x + 1)

foo x  =  0 - (1 + 1)

foo x  =  1 - (x + x)

foo x  =  1 - (x + 1)

foo x  =  1 - (1 + 1)

foo x  =  1 - x * x

foo x  =  x * x - 1


pattern candidates:

foo x  =  x

foo x  =  0

foo x  =  1

foo 0  =  0
foo x  =  1

foo 0  =  1
foo x  =  x

foo 0  =  1
foo x  =  0

foo x  =  x + x

foo x  =  x + 1

foo x  =  x * x

foo x  =  x - 1

foo x  =  0 - x

foo x  =  1 - x

foo 1  =  0
foo x  =  x

foo 1  =  0
foo x  =  1

foo 1  =  1
foo x  =  0

foo 0  =  0
foo x  =  x + 1

foo 0  =  0
foo x  =  x - 1

foo 0  =  0
foo x  =  1 - x

foo 0  =  1
foo x  =  x + x

foo 0  =  1
foo x  =  x * x

foo 0  =  1
foo x  =  x - 1

foo 0  =  1
foo x  =  0 - x

foo 0  =  0
foo 1  =  0
foo x  =  1

foo 0  =  1
foo 1  =  0
foo x  =  x

foo 0  =  1
foo 1  =  1
foo x  =  0

foo x  =  x + (x + x)

foo x  =  x + (x + 1)

foo x  =  x + x * x

foo x  =  x + (x - 1)

foo x  =  1 + (x + x)

foo x  =  1 + (x + 1)

foo x  =  1 + x * x

foo x  =  1 + (0 - x)

foo x  =  1 + (1 - x)

foo x  =  x * (x + x)

foo x  =  x * (x * x)

foo x  =  x * (x - 1)

foo x  =  x * (0 - x)

foo x  =  x * (1 - x)

foo x  =  x - (x + x)

foo x  =  x - (x + 1)

foo x  =  x - x * x

foo x  =  0 - (x + x)

foo x  =  0 - (x + 1)

foo x  =  1 - (x + x)

foo x  =  1 - (x + 1)

foo x  =  1 - x * x

foo x  =  x * x - 1

foo 1  =  0
foo x  =  x + x

foo 1  =  0
foo x  =  x + 1

foo 1  =  0
foo x  =  x * x

foo 1  =  0
foo x  =  0 - x

foo 1  =  1
foo x  =  x + x

foo 1  =  1
foo x  =  x + 1

foo 1  =  1
foo x  =  x - 1

foo 1  =  1
foo x  =  0 - x

foo 1  =  1
foo x  =  1 - x

foo 0  =  0
foo x  =  x + (x + 1)

foo 0  =  0
foo x  =  x + (x - 1)

foo 0  =  0
foo x  =  1 + (x + x)

foo 0  =  0
foo x  =  1 + (x + 1)

foo 0  =  0
foo x  =  1 + x * x

foo 0  =  0
foo x  =  1 + (0 - x)

foo 0  =  0
foo x  =  1 + (1 - x)

foo 0  =  0
foo x  =  x - (x + 1)

foo 0  =  0
foo x  =  0 - (x + 1)

foo 0  =  0
foo x  =  1 - (x + x)

foo 0  =  0
foo x  =  1 - x * x

foo 0  =  0
foo x  =  x * x - 1

foo 0  =  1
foo x  =  x + (x + x)

foo 0  =  1
foo x  =  x + x * x

foo 0  =  1
foo x  =  x + (x - 1)

foo 0  =  1
foo x  =  1 + (x + 1)

foo 0  =  1
foo x  =  1 + (1 - x)

foo 0  =  1
foo x  =  x * (x + x)

foo 0  =  1
foo x  =  x * (x * x)

foo 0  =  1
foo x  =  x * (x - 1)

foo 0  =  1
foo x  =  x * (0 - x)

foo 0  =  1
foo x  =  x * (1 - x)

foo 0  =  1
foo x  =  x - (x + x)

foo 0  =  1
foo x  =  x - (x + 1)

foo 0  =  1
foo x  =  x - x * x

foo 0  =  1
foo x  =  0 - (x + x)

foo 0  =  1
foo x  =  0 - (x + 1)

foo 0  =  1
foo x  =  1 - (x + 1)

foo 0  =  1
foo x  =  x * x - 1

foo 0  =  0
foo 1  =  0
foo x  =  x + 1

foo 0  =  0
foo 1  =  1
foo x  =  x + 1

foo 0  =  0
foo 1  =  1
foo x  =  x - 1

foo 0  =  0
foo 1  =  1
foo x  =  1 - x

foo 0  =  1
foo 1  =  0
foo x  =  x + x

foo 0  =  1
foo 1  =  0
foo x  =  x * x

foo 0  =  1
foo 1  =  0
foo x  =  0 - x

foo 0  =  1
foo 1  =  1
foo x  =  x + x

foo 0  =  1
foo 1  =  1
foo x  =  x - 1

foo 0  =  1
foo 1  =  1
foo x  =  0 - x



allowed patterns:

foo x  =  _


foo 0  =  _
foo x  =  _


foo 1  =  _
foo x  =  _


foo 0  =  _
foo 1  =  _
foo x  =  _




allowed deconstructions:

_ - 1 :: Int

Candidates for: ? :: Int -> Int -> Int
  pruning with 13/34 rules
  [3,3,9,18,60,162,489,1475,4619] direct candidates, 0 duplicates
  [3,8,25,71,205,632,1957,5906,18303] pattern candidates, 0 duplicates

rules:
x * 0 == 0
0 * x == 0
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)
(x + y) + z == x + (y + z)
(x + y) + z == y + (x + z)
(x + x) * y == x * (y + y)
equations:
y * x == x * y
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 + (x + z) == x + (y + z)
z + (x + y) == x + (y + z)
z + (y + x) == x + (y + z)
(z + y) * x == x * (y + z)
z * y + x == x + y * z
y * (x + x) == x * (y + y)
y + dec (dec x) == x + dec (dec y)
dec (dec x) + y == x + dec (dec y)
dec (dec y) + x == dec (dec x) + 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  =  dec (dec x)

x ? y  =  dec (dec y)

x ? y  =  dec (dec 0)

x ? y  =  x + x

x ? y  =  x + y

x ? y  =  y + y

x ? y  =  x * x

x ? y  =  x * y

x ? y  =  y * y

x ? y  =  dec (dec (dec x))

x ? y  =  dec (dec (dec y))

x ? y  =  dec (dec (dec 0))

x ? y  =  dec (x * x)

x ? y  =  dec (x * y)

x ? y  =  dec (y * 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 * 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  =  dec (dec (dec (dec x)))

x ? y  =  dec (dec (dec (dec y)))

x ? y  =  dec (dec (dec (dec 0)))

x ? y  =  dec (dec (x * x))

x ? y  =  dec (dec (x * y))

x ? y  =  dec (dec (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  =  x + dec (dec x)

x ? y  =  x + dec (dec y)

x ? y  =  x + dec (dec 0)

x ? y  =  x + (x + x)

x ? y  =  x + (x + y)

x ? y  =  x + (y + y)

x ? y  =  x + x * x

x ? y  =  x + x * y

x ? y  =  x + y * y

x ? y  =  y + dec (dec x)

x ? y  =  y + dec (dec y)

x ? y  =  y + dec (dec 0)

x ? y  =  y + (x + x)

x ? y  =  y + (x + y)

x ? y  =  y + (y + y)

x ? y  =  y + x * x

x ? y  =  y + x * y

x ? y  =  y + y * y

x ? y  =  x * dec (dec x)

x ? y  =  x * dec (dec y)

x ? y  =  x * dec (dec 0)

x ? y  =  x * (x + x)

x ? y  =  x * (x + y)

x ? y  =  x * (y + y)

x ? y  =  x * (x * x)

x ? y  =  x * (x * y)

x ? y  =  x * (y * y)

x ? y  =  y * dec (dec x)

x ? y  =  y * dec (dec y)

x ? y  =  y * dec (dec 0)

x ? y  =  y * (x + x)

x ? y  =  y * (x + y)

x ? y  =  y * (y + y)

x ? y  =  y * (x * x)

x ? y  =  y * (x * y)

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 y

x ? y  =  dec y + dec 0

x ? y  =  dec 0 + 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 y

x ? y  =  dec y * dec 0

x ? y  =  dec 0 * dec 0


pattern candidates:

x ? y  =  x

x ? y  =  y

x ? y  =  0

x ? y  =  dec x

x ? y  =  dec y

x ? 0  =  x
x ? y  =  y

x ? 0  =  x
x ? y  =  0

x ? 0  =  0
x ? y  =  x

0 ? x  =  x
x ? y  =  x

0 ? x  =  x
x ? y  =  0

0 ? x  =  0
x ? y  =  y

x ? y  =  dec (dec x)

x ? y  =  dec (dec y)

x ? y  =  x + x

x ? y  =  x + y

x ? y  =  y + y

x ? y  =  x * x

x ? y  =  x * y

x ? y  =  y * y

x ? 0  =  x
x ? y  =  dec x

x ? 0  =  x
x ? y  =  dec y

x ? 0  =  0
x ? y  =  dec x

x ? 0  =  0
x ? y  =  dec y

x ? 0  =  dec x
x ? y  =  x

x ? 0  =  dec x
x ? y  =  y

x ? 0  =  dec x
x ? y  =  0

0 ? x  =  x
x ? y  =  dec x

0 ? x  =  x
x ? y  =  dec y

0 ? x  =  0
x ? y  =  dec x

0 ? x  =  0
x ? y  =  dec y

0 ? x  =  dec x
x ? y  =  x

0 ? x  =  dec x
x ? y  =  y

0 ? x  =  dec x
x ? y  =  0

0 ? x  =  x
x ? 0  =  x
x ? y  =  0

0 ? x  =  x
x ? 0  =  0
x ? y  =  x

0 ? x  =  0
x ? 0  =  x
x ? y  =  y

x ? y  =  dec (dec (dec x))

x ? y  =  dec (dec (dec y))

x ? y  =  dec (x * x)

x ? y  =  dec (x * y)

x ? y  =  dec (y * y)

x ? y  =  x + dec x

x ? y  =  x + dec y

x ? y  =  y + dec x

x ? y  =  y + dec y

x ? y  =  x * dec x

x ? y  =  x * dec y

x ? y  =  y * dec x

x ? y  =  y * dec y

x ? 0  =  x
x ? y  =  dec (dec x)

x ? 0  =  x
x ? y  =  dec (dec y)

x ? 0  =  x
x ? y  =  x + x

x ? 0  =  x
x ? y  =  y + y

x ? 0  =  x
x ? y  =  x * x

x ? 0  =  x
x ? y  =  x * y

x ? 0  =  x
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  =  x + x

x ? 0  =  0
x ? y  =  x + y

x ? 0  =  0
x ? y  =  x * x

x ? 0  =  dec x
x ? y  =  dec y

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  =  x + x
x ? y  =  x

x ? 0  =  x + x
x ? y  =  y

x ? 0  =  x + x
x ? y  =  0

x ? 0  =  x * x
x ? y  =  x

x ? 0  =  x * x
x ? y  =  y

x ? 0  =  x * x
x ? y  =  0

0 ? x  =  x
x ? y  =  dec (dec x)

0 ? x  =  x
x ? y  =  dec (dec y)

0 ? x  =  x
x ? y  =  x + x

0 ? x  =  x
x ? y  =  y + y

0 ? x  =  x
x ? y  =  x * x

0 ? x  =  x
x ? y  =  x * y

0 ? x  =  x
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  =  x + y

0 ? x  =  0
x ? y  =  y + y

0 ? x  =  0
x ? y  =  y * y

0 ? x  =  dec x
x ? y  =  dec x

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  =  x + x
x ? y  =  x

0 ? x  =  x + x
x ? y  =  y

0 ? x  =  x + x
x ? y  =  0

0 ? x  =  x * x
x ? y  =  x

0 ? x  =  x * x
x ? y  =  y

0 ? x  =  x * x
x ? y  =  0

0 ? x  =  x
x ? 0  =  x
x ? y  =  dec x

0 ? x  =  x
x ? 0  =  x
x ? y  =  dec y

0 ? x  =  x
x ? 0  =  0
x ? y  =  dec x

0 ? x  =  x
x ? 0  =  0
x ? y  =  dec y

0 ? x  =  x
x ? 0  =  dec x
x ? y  =  x

0 ? x  =  x
x ? 0  =  dec x
x ? y  =  0

0 ? x  =  0
x ? 0  =  x
x ? y  =  dec x

0 ? x  =  0
x ? 0  =  x
x ? y  =  dec y

0 ? x  =  0
x ? 0  =  0
x ? y  =  dec x

0 ? x  =  0
x ? 0  =  0
x ? y  =  dec y

0 ? x  =  0
x ? 0  =  dec x
x ? y  =  y

0 ? x  =  dec x
x ? 0  =  x
x ? y  =  y

0 ? x  =  dec x
x ? 0  =  x
x ? y  =  0

0 ? x  =  dec x
x ? 0  =  0
x ? y  =  x

x ? y  =  dec (dec (dec (dec x)))

x ? y  =  dec (dec (dec (dec y)))

x ? y  =  dec (dec (x * x))

x ? y  =  dec (dec (x * y))

x ? y  =  dec (dec (y * y))

x ? y  =  dec (x * dec x)

x ? y  =  dec (x * dec y)

x ? y  =  dec (y * dec x)

x ? y  =  dec (y * dec y)

x ? y  =  x + dec (dec x)

x ? y  =  x + dec (dec y)

x ? y  =  x + (x + x)

x ? y  =  x + (x + y)

x ? y  =  x + (y + y)

x ? y  =  x + x * x

x ? y  =  x + x * y

x ? y  =  x + y * y

x ? y  =  y + dec (dec x)

x ? y  =  y + dec (dec y)

x ? y  =  y + (x + x)

x ? y  =  y + (x + y)

x ? y  =  y + (y + y)

x ? y  =  y + x * x

x ? y  =  y + x * y

x ? y  =  y + y * y

x ? y  =  x * dec (dec x)

x ? y  =  x * dec (dec y)

x ? y  =  x * (x + x)

x ? y  =  x * (x + y)

x ? y  =  x * (y + y)

x ? y  =  x * (x * x)

x ? y  =  x * (x * y)

x ? y  =  x * (y * y)

x ? y  =  y * dec (dec x)

x ? y  =  y * dec (dec y)

x ? y  =  y * (x + x)

x ? y  =  y * (x + y)

x ? y  =  y * (y + y)

x ? y  =  y * (x * x)

x ? y  =  y * (x * y)

x ? y  =  y * (y * y)

x ? y  =  dec x + dec x

x ? y  =  dec x + dec y

x ? y  =  dec y + dec y

x ? y  =  dec x * dec x

x ? y  =  dec x * dec y

x ? y  =  dec y * dec 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 (x * x)

x ? 0  =  x
x ? y  =  dec (x * y)

x ? 0  =  x
x ? y  =  dec (y * y)

x ? 0  =  x
x ? y  =  x + dec x

x ? 0  =  x
x ? y  =  x + dec y

x ? 0  =  x
x ? y  =  y + dec x

x ? 0  =  x
x ? y  =  y + dec y

x ? 0  =  x
x ? y  =  x * dec x

x ? 0  =  x
x ? y  =  x * dec y

x ? 0  =  x
x ? y  =  y * dec x

x ? 0  =  x
x ? y  =  y * dec 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 (x * x)

x ? 0  =  0
x ? y  =  dec (x * y)

x ? 0  =  0
x ? y  =  dec (y * y)

x ? 0  =  0
x ? y  =  x + dec x

x ? 0  =  0
x ? y  =  x + dec y

x ? 0  =  0
x ? y  =  y + dec x

x ? 0  =  0
x ? y  =  y + dec y

x ? 0  =  0
x ? y  =  x * dec x

x ? 0  =  0
x ? y  =  x * dec 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  =  x + x

x ? 0  =  dec x
x ? y  =  x + y

x ? 0  =  dec x
x ? y  =  y + y

x ? 0  =  dec x
x ? y  =  x * x

x ? 0  =  dec x
x ? y  =  x * y

x ? 0  =  dec x
x ? y  =  y * y

x ? 0  =  dec (dec x)
x ? y  =  dec x

x ? 0  =  dec (dec x)
x ? y  =  dec y

x ? 0  =  x + x
x ? y  =  dec x

x ? 0  =  x + x
x ? y  =  dec y

x ? 0  =  x * x
x ? y  =  dec x

x ? 0  =  x * x
x ? y  =  dec y

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 (x * x)
x ? y  =  x

x ? 0  =  dec (x * x)
x ? y  =  y

x ? 0  =  dec (x * x)
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 x
x ? y  =  x

x ? 0  =  x * dec x
x ? y  =  y

x ? 0  =  x * dec x
x ? y  =  0

0 ? x  =  x
x ? y  =  dec (dec (dec x))

0 ? x  =  x
x ? y  =  dec (dec (dec y))

0 ? x  =  x
x ? y  =  dec (x * x)

0 ? x  =  x
x ? y  =  dec (x * y)

0 ? x  =  x
x ? y  =  dec (y * y)

0 ? x  =  x
x ? y  =  x + dec x

0 ? x  =  x
x ? y  =  x + dec y

0 ? x  =  x
x ? y  =  y + dec x

0 ? x  =  x
x ? y  =  y + dec y

0 ? x  =  x
x ? y  =  x * dec x

0 ? x  =  x
x ? y  =  x * dec y

0 ? x  =  x
x ? y  =  y * dec x

0 ? x  =  x
x ? y  =  y * dec 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 (x * x)

0 ? x  =  0
x ? y  =  dec (x * y)

0 ? x  =  0
x ? y  =  dec (y * y)

0 ? x  =  0
x ? y  =  x + dec x

0 ? x  =  0
x ? y  =  x + dec y

0 ? x  =  0
x ? y  =  y + dec x

0 ? x  =  0
x ? y  =  y + dec y

0 ? x  =  0
x ? y  =  y * dec x

0 ? x  =  0
x ? y  =  y * dec 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  =  x + x

0 ? x  =  dec x
x ? y  =  x + y

0 ? x  =  dec x
x ? y  =  y + y

0 ? x  =  dec x
x ? y  =  x * x

0 ? x  =  dec x
x ? y  =  x * y

0 ? x  =  dec x
x ? y  =  y * y

0 ? x  =  dec (dec x)
x ? y  =  dec x

0 ? x  =  dec (dec x)
x ? y  =  dec y

0 ? x  =  x + x
x ? y  =  dec x

0 ? x  =  x + x
x ? y  =  dec y

0 ? x  =  x * x
x ? y  =  dec x

0 ? x  =  x * x
x ? y  =  dec y

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 (x * x)
x ? y  =  x

0 ? x  =  dec (x * x)
x ? y  =  y

0 ? x  =  dec (x * x)
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 x
x ? y  =  x

0 ? x  =  x * dec x
x ? y  =  y

0 ? x  =  x * dec x
x ? y  =  0

0 ? x  =  x
x ? 0  =  x
x ? y  =  dec (dec x)

0 ? x  =  x
x ? 0  =  x
x ? y  =  dec (dec y)

0 ? x  =  x
x ? 0  =  x
x ? y  =  x + x

0 ? x  =  x
x ? 0  =  x
x ? y  =  y + y

0 ? x  =  x
x ? 0  =  x
x ? y  =  x * x

0 ? x  =  x
x ? 0  =  x
x ? y  =  x * y

0 ? x  =  x
x ? 0  =  x
x ? y  =  y * y

0 ? x  =  x
x ? 0  =  0
x ? y  =  dec (dec x)

0 ? x  =  x
x ? 0  =  0
x ? y  =  dec (dec y)

0 ? x  =  x
x ? 0  =  0
x ? y  =  x + x

0 ? x  =  x
x ? 0  =  0
x ? y  =  x * x

0 ? x  =  x
x ? 0  =  dec x
x ? y  =  dec y

0 ? x  =  x
x ? 0  =  dec (dec x)
x ? y  =  x

0 ? x  =  x
x ? 0  =  dec (dec x)
x ? y  =  0

0 ? x  =  x
x ? 0  =  x + x
x ? y  =  x

0 ? x  =  x
x ? 0  =  x + x
x ? y  =  0

0 ? x  =  x
x ? 0  =  x * x
x ? y  =  x

0 ? x  =  x
x ? 0  =  x * x
x ? y  =  0

0 ? x  =  0
x ? 0  =  x
x ? y  =  dec (dec x)

0 ? x  =  0
x ? 0  =  x
x ? y  =  dec (dec y)

0 ? x  =  0
x ? 0  =  x
x ? y  =  y + y

0 ? x  =  0
x ? 0  =  x
x ? y  =  y * y

0 ? x  =  0
x ? 0  =  0
x ? y  =  dec (dec x)

0 ? x  =  0
x ? 0  =  0
x ? y  =  dec (dec y)

0 ? x  =  0
x ? 0  =  0
x ? y  =  x + y

0 ? x  =  0
x ? 0  =  dec x
x ? y  =  dec y

0 ? x  =  0
x ? 0  =  dec (dec x)
x ? y  =  y

0 ? x  =  0
x ? 0  =  x + x
x ? y  =  y

0 ? x  =  0
x ? 0  =  x * x
x ? y  =  y

0 ? x  =  dec x
x ? 0  =  x
x ? y  =  dec x

0 ? x  =  dec x
x ? 0  =  0
x ? y  =  dec x

0 ? x  =  dec x
x ? 0  =  dec x
x ? y  =  x

0 ? x  =  dec x
x ? 0  =  dec x
x ? y  =  y

0 ? x  =  dec x
x ? 0  =  dec x
x ? y  =  0

0 ? x  =  dec (dec x)
x ? 0  =  x
x ? y  =  y

0 ? x  =  dec (dec x)
x ? 0  =  x
x ? y  =  0

0 ? x  =  dec (dec x)
x ? 0  =  0
x ? y  =  x

0 ? x  =  x + x
x ? 0  =  x
x ? y  =  y

0 ? x  =  x + x
x ? 0  =  x
x ? y  =  0

0 ? x  =  x + x
x ? 0  =  0
x ? y  =  x

0 ? x  =  x * x
x ? 0  =  x
x ? y  =  y

0 ? x  =  x * x
x ? 0  =  x
x ? y  =  0

0 ? x  =  x * x
x ? 0  =  0
x ? y  =  x

0 ? 0  =  0
0 ? x  =  dec x
x ? y  =  dec x

x ? 0  =  x
x ? y  =  x ? dec y

x ? 0  =  x
x ? y  =  y ? dec x

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 y ? x

0 ? x  =  x
x ? y  =  x ? dec y

0 ? x  =  x
x ? y  =  y ? dec x

0 ? x  =  x
x ? y  =  y ? 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  =  x
x ? y  =  dec y ? x



allowed patterns:

x ? y  =  _


x ? 0  =  _
x ? y  =  _

0 ? x  =  _
x ? y  =  _


0 ? x  =  _
x ? 0  =  _
x ? y  =  _

0 ? 0  =  _
0 ? x  =  _
x ? y  =  _


0 ? 0  =  _
0 ? x  =  _
x ? 0  =  _
x ? y  =  _




allowed deconstructions:

dec _ :: Int
dec (dec _) :: Int
dec (dec (dec _)) :: Int

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,1,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 xs  =  xs ++ xs

goo []  =  []
goo (x:xs)  =  x:xs

goo []  =  []
goo (x:xs)  =  [x]

goo []  =  []
goo (x:xs)  =  xs ++ xs

goo xs  =  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 []  =  []
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)

goo []  =  []
goo (x:xs)  =  goo xs ++ goo xs



allowed patterns:

goo xs  =  _


goo []  =  _
goo (x:xs)  =  _




allowed deconstructions:


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,45,127,268,845,1565,5692] 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

[] ?? 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

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? 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
xs ?? (x:ys)  =  xs ?? ys

xs ?? []  =  xs
xs ?? (x:ys)  =  ys ?? xs

xs ?? []  =  xs
xs ?? (x:ys)  =  ys ?? ys

xs ?? []  =  xs
xs ?? (x:ys)  =  [] ?? xs

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 ?? []

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)

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  x:xs

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  x:ys

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  [x]

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  y:xs

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  y:ys

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  [y]

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ++ xs

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ++ ys

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ++ xs

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ++ ys

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  x:xs

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  x:ys

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  [x]

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  y:xs

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  y:ys

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  [y]

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs ++ xs

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs ++ ys

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys ++ xs

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys ++ ys

[] ?? xs  =  xs
(x:xs) ?? []  =  x:xs
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  xs
(x:xs) ?? []  =  x:xs
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  xs
(x:xs) ?? []  =  x:xs
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  xs
(x:xs) ?? []  =  [x]
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  xs
(x:xs) ?? []  =  [x]
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  xs
(x:xs) ?? []  =  [x]
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  xs
(x:xs) ?? []  =  xs ++ xs
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  xs
(x:xs) ?? []  =  xs ++ xs
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  xs
(x:xs) ?? []  =  xs ++ xs
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  x:xs

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  x:ys

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  [x]

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  y:xs

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  y:ys

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  [y]

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ++ xs

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ++ ys

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ++ xs

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ++ ys

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  x:xs

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  x:ys

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  [x]

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  y:xs

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  y:ys

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  [y]

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs ++ xs

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs ++ ys

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys ++ xs

[] ?? xs  =  []
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys ++ ys

[] ?? xs  =  []
(x:xs) ?? []  =  x:xs
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  []
(x:xs) ?? []  =  x:xs
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  []
(x:xs) ?? []  =  x:xs
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  []
(x:xs) ?? []  =  [x]
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  []
(x:xs) ?? []  =  [x]
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  []
(x:xs) ?? []  =  [x]
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  []
(x:xs) ?? []  =  xs ++ xs
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  []
(x:xs) ?? []  =  xs ++ xs
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  []
(x:xs) ?? []  =  xs ++ xs
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  xs ++ xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  xs ++ xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  xs ++ xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  xs ++ xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  x:xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  x:ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  [x]

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  xs ++ xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  xs ++ ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  ys ++ xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  ys ++ ys

[] ?? []  =  []
[] ?? (x:xs)  =  x:xs
(x:xs) ?? ys  =  xs

[] ?? []  =  []
[] ?? (x:xs)  =  x:xs
(x:xs) ?? ys  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  x:xs
(x:xs) ?? ys  =  []

[] ?? []  =  []
[] ?? (x:xs)  =  [x]
(x:xs) ?? ys  =  xs

[] ?? []  =  []
[] ?? (x:xs)  =  [x]
(x:xs) ?? ys  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  [x]
(x:xs) ?? ys  =  []

[] ?? []  =  []
[] ?? (x:xs)  =  xs ++ xs
(x:xs) ?? ys  =  xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs ++ xs
(x:xs) ?? ys  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs ++ xs
(x:xs) ?? ys  =  []

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ?? xs

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ?? ys

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ?? []

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ?? xs

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ?? ys

[] ?? xs  =  xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ?? []

[] ?? xs  =  xs
(x:xs) ?? []  =  xs ?? xs
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  xs
(x:xs) ?? []  =  xs ?? []
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  xs
(x:xs) ?? []  =  xs ?? xs
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  xs
(x:xs) ?? []  =  xs ?? []
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  xs
(x:xs) ?? []  =  xs ?? xs
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  xs
(x:xs) ?? []  =  xs ?? []
(x:xs) ?? (y:ys)  =  []

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs ?? xs

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs ?? ys

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  xs ?? []

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys ?? xs

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys ?? ys

[] ?? xs  =  xs
(x:xs) ?? []  =  []
(x:xs) ?? (y:ys)  =  ys ?? []

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ?? xs

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ?? ys

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  xs ?? []

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ?? xs

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ?? ys

[] ?? xs  =  []
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys ?? []

[] ?? xs  =  []
(x:xs) ?? []  =  xs ?? xs
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  []
(x:xs) ?? []  =  xs ?? []
(x:xs) ?? (y:ys)  =  xs

[] ?? xs  =  []
(x:xs) ?? []  =  xs ?? xs
(x:xs) ?? (y:ys)  =  ys

[] ?? xs  =  []
(x:xs) ?? []  =  xs ?? []
(x:xs) ?? (y:ys)  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  xs ?? xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  xs ?? ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  xs ?? []

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  ys ?? xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  ys ?? []

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  [] ?? xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? ys  =  [] ?? ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs ?? xs
(x:xs) ?? ys  =  xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs ?? []
(x:xs) ?? ys  =  xs

[] ?? []  =  []
[] ?? (x:xs)  =  [] ?? xs
(x:xs) ?? ys  =  xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs ?? xs
(x:xs) ?? ys  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs ?? []
(x:xs) ?? ys  =  ys

[] ?? []  =  []
[] ?? (x: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 ++ xs

[] ?? 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  =  []

[] ?? []  =  []
[] ?? (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
(x:xs) ?? (y:ys)  =  xs

[] ?? []  =  []
[] ?? (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)  =  []

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? []  =  xs ++ xs
(x:xs) ?? (y:ys)  =  xs

[] ?? []  =  []
[] ?? (x:xs)  =  xs
(x:xs) ?? []  =  xs ++ xs
(x:xs) ?? (y:ys)  =  []

[] ?? []  =  []
[] ?? (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]
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  [x]
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  []

[] ?? []  =  []
[] ?? (x:xs)  =  xs ++ xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  ys

[] ?? []  =  []
[] ?? (x:xs)  =  xs ++ xs
(x:xs) ?? []  =  xs
(x:xs) ?? (y:ys)  =  []

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)  =  x:[] ?? xs

xs ?? []  =  xs
xs ?? (x:ys)  =  x:[] ?? ys

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)  =  xs ++ [] ?? xs

xs ?? []  =  xs
xs ?? (x:ys)  =  xs ++ [] ?? ys

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
xs ?? (x:ys)  =  ys ++ [] ?? xs

xs ?? []  =  xs
xs ?? (x:ys)  =  ys ++ [] ?? ys

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 ?? (x:ys)  =  [] ?? xs ++ xs

xs ?? []  =  xs
xs ?? (x:ys)  =  [] ?? ys ++ xs

xs ?? []  =  xs
xs ?? (x:ys)  =  xs ?? ys ++ ys

xs ?? []  =  xs
xs ?? (x:ys)  =  ys ?? xs ++ ys

xs ?? []  =  xs
xs ?? (x:ys)  =  ys ?? ys ++ ys

xs ?? []  =  xs
xs ?? (x:ys)  =  [] ?? xs ++ ys

xs ?? []  =  xs
xs ?? (x:ys)  =  [] ?? ys ++ ys

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)  =  x:[] ?? xs

xs ?? []  =  []
xs ?? (x:ys)  =  x:[] ?? ys

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)  =  xs ++ [] ?? xs

xs ?? []  =  []
xs ?? (x:ys)  =  xs ++ [] ?? ys

xs ?? []  =  []
xs ?? (x:ys)  =  ys ++ xs ?? ys

xs ?? []  =  []
xs ?? (x:ys)  =  ys ++ ys ?? xs

xs ?? []  =  []
xs ?? (x:ys)  =  ys ++ ys ?? ys

xs ?? []  =  []
xs ?? (x:ys)  =  ys ++ [] ?? xs

xs ?? []  =  []
xs ?? (x:ys)  =  ys ++ [] ?? ys

xs ?? []  =  []
xs ?? (x:ys)  =  xs ?? ys ++ xs

xs ?? []  =  []
xs ?? (x:ys)  =  ys ?? xs ++ xs

xs ?? []  =  []
xs ?? (x:ys)  =  ys ?? ys ++ xs

xs ?? []  =  []
xs ?? (x:ys)  =  [] ?? xs ++ xs

xs ?? []  =  []
xs ?? (x:ys)  =  [] ?? ys ++ xs

xs ?? []  =  []
xs ?? (x:ys)  =  xs ?? ys ++ ys

xs ?? []  =  []
xs ?? (x:ys)  =  ys ?? xs ++ ys

xs ?? []  =  []
xs ?? (x:ys)  =  ys ?? ys ++ ys

xs ?? []  =  []
xs ?? (x:ys)  =  [] ?? xs ++ ys

xs ?? []  =  []
xs ?? (x:ys)  =  [] ?? ys ++ ys

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 ?? (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 ?? []

[] ?? 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 ?? []

[] ?? 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 ?? []

[] ?? 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 ?? [] ++ 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

[] ?? 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 ?? []

[] ?? 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 ?? []

[] ?? 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 ?? []

[] ?? 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 ?? [] ++ 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

[] ?? 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 ?? []

[] ?? []  =  []
[] ?? (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)  =  []

[] ?? []  =  []
[] ?? (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) ?? []  =  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)  =  []

xs ?? []  =  xs
xs ?? (x:ys)  =  (x:xs) ?? ys

xs ?? []  =  xs
xs ?? (x:ys)  =  (x:ys) ?? ys

xs ?? []  =  xs
xs ?? (x:ys)  =  [x] ?? ys

xs ?? []  =  xs
xs ?? (x:ys)  =  (xs ++ xs) ?? ys

xs ?? []  =  xs
xs ?? (x:ys)  =  (xs ++ ys) ?? ys

xs ?? []  =  xs
xs ?? (x:ys)  =  (ys ++ xs) ?? ys

xs ?? []  =  xs
xs ?? (x:ys)  =  (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)



allowed patterns:

xs ?? ys  =  _


xs ?? []  =  _
xs ?? (x:ys)  =  _

[] ?? xs  =  _
(x:xs) ?? ys  =  _


[] ?? xs  =  _
(x:xs) ?? []  =  _
(x:xs) ?? (y:ys)  =  _

[] ?? []  =  _
[] ?? (x:xs)  =  _
(x:xs) ?? ys  =  _


[] ?? []  =  _
[] ?? (x:xs)  =  _
(x:xs) ?? []  =  _
(x:xs) ?? (y:ys)  =  _




allowed deconstructions:


Candidates for: ton :: Bool -> Bool
  pruning with 39/49 rules
  [3,1,0,0,0,0,0,0,0] 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


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



allowed patterns:

ton p  =  _


ton False  =  _
ton True  =  _




allowed deconstructions:


Candidates for: &| :: Bool -> Bool -> Bool
  pruning with 39/49 rules
  [4,2,2,4,2,16,17,56,110] direct candidates, 0 duplicates
  [4,14,26,10,2,16,17,56,110] 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  =  p || q

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 p || not q

p &| q  =  p && (q && not p)

p &| q  =  p && (q || not p)

p &| q  =  q && (p && not q)

p &| q  =  q && (p || not q)

p &| q  =  p || q && not p

p &| q  =  p || (q || not p)

p &| q  =  q || p && not q

p &| q  =  q || (p || not q)

p &| q  =  not p && (p && q)

p &| q  =  not p && (p || q)

p &| q  =  not q && (p && q)

p &| q  =  not q && (p || q)

p &| q  =  not p || p && q

p &| q  =  not p || (p || q)

p &| q  =  not q || p && q

p &| q  =  not q || (p || 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  =  p || q

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 &| p  =  p
True &| False  =  False
True &| True  =  True

False &| p  =  p
True &| False  =  True
True &| True  =  False

False &| p  =  False
True &| False  =  False
True &| True  =  True

False &| p  =  False
True &| False  =  True
True &| True  =  False

False &| p  =  True
True &| False  =  False
True &| True  =  True

False &| p  =  True
True &| False  =  True
True &| True  =  False

False &| False  =  False
False &| True  =  True
True &| p  =  p

False &| False  =  False
False &| True  =  True
True &| p  =  False

False &| False  =  False
False &| True  =  True
True &| p  =  True

False &| False  =  True
False &| True  =  False
True &| p  =  p

False &| False  =  True
False &| True  =  False
True &| p  =  False

False &| False  =  True
False &| True  =  False
True &| p  =  True

p &| q  =  p && not q

p &| q  =  q && not p

p &| q  =  p || not q

p &| q  =  q || not p

False &| p  =  not p
True &| False  =  False
True &| True  =  True

False &| p  =  not p
True &| False  =  True
True &| True  =  False

False &| False  =  False
False &| True  =  True
True &| p  =  not p

False &| False  =  True
False &| True  =  False
True &| p  =  not p

False &| False  =  False
False &| True  =  True
True &| False  =  True
True &| True  =  False

False &| False  =  True
False &| True  =  False
True &| False  =  False
True &| True  =  True

p &| q  =  not p && not q

p &| q  =  not p || not q

p &| q  =  p && (q && not p)

p &| q  =  p && (q || not p)

p &| q  =  q && (p && not q)

p &| q  =  q && (p || not q)

p &| q  =  p || q && not p

p &| q  =  p || (q || not p)

p &| q  =  q || p && not q

p &| q  =  q || (p || not q)

p &| q  =  not p && (p && q)

p &| q  =  not p && (p || q)

p &| q  =  not q && (p && q)

p &| q  =  not q && (p || q)

p &| q  =  not p || p && q

p &| q  =  not p || (p || q)

p &| q  =  not q || p && q

p &| q  =  not q || (p || q)



allowed patterns:

p &| q  =  _


p &| False  =  _
p &| True  =  _

False &| p  =  _
True &| p  =  _


False &| p  =  _
True &| False  =  _
True &| True  =  _

False &| False  =  _
False &| True  =  _
True &| p  =  _


False &| False  =  _
False &| True  =  _
True &| False  =  _
True &| True  =  _




allowed deconstructions:


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,6,11,50,98,330,774,2714,6660] 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 0 x  =  x
gcd x y  =  x

gcd 0 x  =  x
gcd x y  =  0

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 0 x  =  x
gcd x 0  =  x
gcd x y  =  0

gcd 0 x  =  x
gcd x 0  =  0
gcd x y  =  x

gcd 0 x  =  0
gcd x 0  =  x
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  =  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  =  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 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  =  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  =  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 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  =  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  =  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  =  (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 0 x  =  x
gcd x 0  =  x
gcd x y  =  x `mod` x

gcd 0 x  =  x
gcd x 0  =  x
gcd x y  =  x `mod` y

gcd 0 x  =  x
gcd x 0  =  x
gcd x y  =  x `mod` 0

gcd 0 x  =  x
gcd x 0  =  x
gcd x y  =  y `mod` x

gcd 0 x  =  x
gcd x 0  =  x
gcd x y  =  y `mod` y

gcd 0 x  =  x
gcd x 0  =  x
gcd x y  =  y `mod` 0

gcd 0 x  =  x
gcd x 0  =  x
gcd x y  =  0 `mod` x

gcd 0 x  =  x
gcd x 0  =  x
gcd x y  =  0 `mod` y

gcd 0 x  =  x
gcd x 0  =  0
gcd x y  =  x `mod` x

gcd 0 x  =  x
gcd x 0  =  0
gcd x y  =  x `mod` y

gcd 0 x  =  x
gcd x 0  =  0
gcd x y  =  x `mod` 0

gcd 0 x  =  x
gcd x 0  =  0
gcd x y  =  y `mod` x

gcd 0 x  =  x
gcd x 0  =  0
gcd x y  =  y `mod` y

gcd 0 x  =  x
gcd x 0  =  0
gcd x y  =  y `mod` 0

gcd 0 x  =  x
gcd x 0  =  0
gcd x y  =  0 `mod` x

gcd 0 x  =  x
gcd x 0  =  0
gcd x y  =  0 `mod` y

gcd 0 x  =  x
gcd x 0  =  x `mod` x
gcd x y  =  x

gcd 0 x  =  x
gcd x 0  =  x `mod` x
gcd x y  =  0

gcd 0 x  =  x
gcd x 0  =  x `mod` 0
gcd x y  =  x

gcd 0 x  =  x
gcd x 0  =  x `mod` 0
gcd x y  =  0

gcd 0 x  =  x
gcd x 0  =  0 `mod` x
gcd x y  =  x

gcd 0 x  =  x
gcd x 0  =  0 `mod` x
gcd x y  =  0

gcd 0 x  =  0
gcd x 0  =  x
gcd x y  =  x `mod` x

gcd 0 x  =  0
gcd x 0  =  x
gcd x y  =  x `mod` y

gcd 0 x  =  0
gcd x 0  =  x
gcd x y  =  x `mod` 0

gcd 0 x  =  0
gcd x 0  =  x
gcd x y  =  y `mod` x

gcd 0 x  =  0
gcd x 0  =  x
gcd x y  =  y `mod` y

gcd 0 x  =  0
gcd x 0  =  x
gcd x y  =  y `mod` 0

gcd 0 x  =  0
gcd x 0  =  x
gcd x y  =  0 `mod` x

gcd 0 x  =  0
gcd x 0  =  x
gcd x y  =  0 `mod` y

gcd 0 x  =  0
gcd x 0  =  0
gcd x y  =  x `mod` x

gcd 0 x  =  0
gcd x 0  =  0
gcd x y  =  x `mod` y

gcd 0 x  =  0
gcd x 0  =  0
gcd x y  =  x `mod` 0

gcd 0 x  =  0
gcd x 0  =  0
gcd x y  =  y `mod` x

gcd 0 x  =  0
gcd x 0  =  0
gcd x y  =  y `mod` y

gcd 0 x  =  0
gcd x 0  =  0
gcd x y  =  y `mod` 0

gcd 0 x  =  0
gcd x 0  =  0
gcd x y  =  0 `mod` x

gcd 0 x  =  0
gcd x 0  =  0
gcd x y  =  0 `mod` y

gcd 0 x  =  0
gcd x 0  =  x `mod` x
gcd x y  =  y

gcd 0 x  =  0
gcd x 0  =  x `mod` 0
gcd x y  =  y

gcd 0 x  =  0
gcd x 0  =  0 `mod` x
gcd x y  =  y

gcd 0 x  =  x `mod` x
gcd x 0  =  x
gcd x y  =  y

gcd 0 x  =  x `mod` x
gcd x 0  =  x
gcd x y  =  0

gcd 0 x  =  x `mod` x
gcd x 0  =  0
gcd x y  =  x

gcd 0 x  =  x `mod` 0
gcd x 0  =  x
gcd x y  =  y

gcd 0 x  =  x `mod` 0
gcd x 0  =  x
gcd x y  =  0

gcd 0 x  =  x `mod` 0
gcd x 0  =  0
gcd x y  =  x

gcd 0 x  =  0 `mod` x
gcd x 0  =  x
gcd x y  =  y

gcd 0 x  =  0 `mod` x
gcd x 0  =  x
gcd x y  =  0

gcd 0 x  =  0 `mod` x
gcd x 0  =  0
gcd x y  =  x

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  =  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  =  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  =  (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  =  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  =  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  =  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  =  (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  =  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` 0
gcd x y  =  x `mod` x

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  =  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` 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  =  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  =  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  =  (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 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  =  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  =  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  =  (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  =  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  =  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  =  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  =  (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  =  x `mod` x
gcd x y  =  x `mod` x

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` 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  =  x `mod` 0

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  =  0 `mod` x
gcd x y  =  x `mod` x

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` x

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  =  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  =  (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 x 0  =  x
gcd x y  =  gcd x (x `mod` y)

gcd x 0  =  x
gcd x y  =  gcd x (y `mod` y)

gcd x 0  =  x
gcd x y  =  gcd y (x `mod` x)

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 0 (x `mod` y)

gcd x 0  =  x
gcd x y  =  gcd 0 (y `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` y) x

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` y) x

gcd 0 x  =  x
gcd x y  =  gcd x (x `mod` y)

gcd 0 x  =  x
gcd x y  =  gcd x (y `mod` y)

gcd 0 x  =  x
gcd x y  =  gcd y (x `mod` x)

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 (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 (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 (y `mod` y) x



allowed patterns:

gcd x y  =  _


gcd x 0  =  _
gcd x y  =  _

gcd 0 x  =  _
gcd x y  =  _


gcd 0 x  =  _
gcd x 0  =  _
gcd x y  =  _

gcd 0 0  =  _
gcd 0 x  =  _
gcd x y  =  _


gcd 0 0  =  _
gcd 0 x  =  _
gcd x 0  =  _
gcd x y  =  _




allowed deconstructions:

x `mod` _ :: Int

