about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--README.md7
-rw-r--r--cache.md123
-rw-r--r--cache.picklebin6413 -> 7457 bytes
-rw-r--r--solve.py14
4 files changed, 78 insertions, 66 deletions
diff --git a/README.md b/README.md
index 59f9ca7..11a1f5b 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,13 @@ Exec solve script:
 
 Caching implemented, view the current cache here: [cache.md](./cache.md)
 
+format:
+
+```
+((s, t), (goal_s, goal_t)) ['(v1)', '(v2)', '(v3)', ...]
+```
+
+
 ## Challenge Description
 
 Let's have some fun with Lambda Calculus!
diff --git a/cache.md b/cache.md
index e786de0..f2d8569 100644
--- a/cache.md
+++ b/cache.md
@@ -1,64 +1,63 @@
-# Cache
-
-Here a readable dump, format:
-
+# cache
 ```
-((s, t), (goal_s, goal_t)) ['(v1)', '(v2)', '(v3)', ...]
-```
-
-```
-(('(λa. a a)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')) ['(λp. p (λe f. f) (λc d. c))', '(λb a c c. (λc d. c))', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λa b. b)']
-(('(λa. a a)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. b)', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)']
-(('(λa b. a a)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. a b a)', '(λa b. b)']
-(('(λa b. a (b a))', '(λa b. a (a b))'), ('(λx y. x)', '(λx y. y)')) ['(λc d. c)', '(λa b c. b c a c)', '(λa b. a b a)', '(λa b c. b a a b)', '(λa b. b)', '(λa. (λc d. c))', '(λa b c. b c c a)']
-(('(λa. a a)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')) ['(λa b c. b a a c)', '(λb. (λe f. f))', '(λa. (λc d. c))', '(λa b. b)']
-(('(λa b. a b)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')) ['(λa b c. b c c b)', '(λp. p (λe f. f) (λc d. c))', '(λa b. a b a)', '(λa b. b)', '(λc d. c)']
-(('(λa b. a a)', '(λa. a a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. a b a)', '(λb. (λe f. f))', '(λa b. a)', '(λa b. b a b)', '(λc d. c)', '(λa b. b)']
-(('(λa b. a (b a))', '(λa b. a (a a))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. b)', '(λa b c. a b b b)', '(λa b c. c c b b)', '(λa b. a a b)', '(λa b. a)', '(λa. a)', '(λa b. b)']
-(('(λa b. b b)', '(λa. a a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. a)', '(λb. (λe f. f))', '(λc d. c)', '(λb a c c. (λc d. c))']
-(('(λa. a a)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b c. b c c b)', '(λb. (λe f. f))', '(λb a c c. (λc d. c))', '(λa b. a a a)', '(λa b. b)', '(λc d. c)']
-(('(λa b. a (b a))', '(λa b. a (b b))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a b b)', '(λa b. a)', '(λa. a)', '(λa b. a)', '(λa b. b)']
-(('(λa b. a (b b))', '(λa b. a (a a))'), ('(λx y. x)', '(λx y. y)')) ['(λa. a)', '(λa b. a)', '(λa b. b)']
-(('(λa b. a (b b))', '(λa b. a (b a))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa. a)', '(λb. (λe f. f))', '(λa b c. a b b c)', '(λa b c. c b c a)', '(λa b c. b c c a)', '(λa. (λc d. c))', '(λa b. b)']
-(('(λa b. a b)', '(λa. a a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. b)', '(λb. (λe f. f))', '(λc d. c)']
-(('(λa b. a (a a))', '(λa b. a (a b))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. b)', '(λb a c c. (λc d. c))', '(λa b. a)']
-(('(λa b. a (a b))', '(λa b. a (b b))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b c. b b c c)', '(λa b. a b a)', '(λc d. c)', '(λa b. a)', '(λa b. a b a)', '(λa b. b)', '(λc d. c)']
-(('(λa b. b a)', '(λa. a a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b c. a b a a)', '(λp. p (λe f. f) (λc d. c))', '(λb. (λe f. f))', '(λa b. a)']
-(('(λa b. b b)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. b b a)', '(λa b. b)', '(λa. (λc d. c))', '(λa b c. b a b c)']
-(('(λa b. a b)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b c. b c c c)', '(λa b c. b a c b)', '(λa b. b)', '(λa b. a)', '(λc d. c)']
-(('(λa b. b a)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')) ['(λb. (λe f. f))', '(λa b. b b a)', '(λc d. c)', '(λa b. b)', '(λa b c. a b c c)', '(λb. (λe f. f))', '(λc d. c)']
-(('(λa b. b b)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')) ['(λe f. f)', '(λa b. a)', '(λa b. b)']
-(('(λa b. a (a b))', '(λa b. a (a a))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a b a)', '(λa. (λc d. c))', '(λa b. b)', '(λa b. b)']
-(('(λa b. a (a a))', '(λa b. a (b a))'), ('(λx y. x)', '(λx y. y)')) ['(λp. p (λe f. f) (λc d. c))', '(λa b c. b a c b)', '(λa b c. a a c b)']
-(('(λa b. b b)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. b a b)', '(λa b. b)', '(λa b c. c b a c)', '(λa. (λc d. c))', '(λa b. b a a)', '(λe f. f)']
-(('(λa b. a (b b))', '(λa b. a (a b))'), ('(λx y. x)', '(λx y. y)')) ['(λc d. c)', '(λa b. b)', '(λa b. a b b)', '(λc d. c)']
-(('(λa b. a (a a))', '(λa b. a (b b))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λe f. f)', '(λb a c c. (λc d. c))', '(λa b. b)']
-(('(λa b. b a)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')) ['(λb. (λe f. f))', '(λc d. c)', '(λb. (λe f. f))', '(λp. p (λe f. f) (λc d. c))', '(λa b c. a c c b)', '(λa b. a)']
-(('(λa b. a b)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')) ['(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λa b c. c b a b)', '(λa b. a b a)', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λe f. f)']
-(('(λa b. a a)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. b)', '(λa b. a b a)', '(λc d. c)', '(λa b. b)']
-(('(λa b c. a a c)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')) ['(λa. a)', '(λp. p (λe f. f) (λc d. c))', '(λa b. a)']
-(('(λa b. a (a b))', '(λa b. a (b a))'), ('(λx y. x)', '(λx y. y)')) ['(λp. p (λe f. f) (λc d. c))', '(λc d. c)']
-(('(λa b. a a)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')) ['(λc d. c)', '(λa b. b)', '(λa b. b)']
-(('(λa b. a a)', '(λa b c. a c)'), ('(λx y. x)', '(λx y. y)')) ['(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λa b. a b a)']
-(('(λa b. a b)', '(λa b c. a c b)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. b b b)', '(λe f. f)', '(λa b. a)']
-(('(λa b. b a)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a b a)', '(λa b. b)', '(λa b. a)']
-(('(λa b c. b a a)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b c. b b c b)', '(λa b. b)', '(λa b. b)', '(λa b c. c c b a)', '(λc d. c)', '(λa b. b)', '(λa. a)']
-(('(λa b. a a (a a b))', '(λa b c. a a (a a c))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. a)', '(λa b. a a b)', '(λa b. a)', '(λa. a)', '(λp. p (λe f. f) (λc d. c))', '(λa. (λc d. c))', '(λc d. c)']
-(('(λa b. a b b)', '(λa b c. c b)'), ('(λx y. x)', '(λx y. y)')) ['(λa b c. b c a b)', '(λa b. b)', '(λa b. a b a)', '(λa b. a)']
-(('(λa b. a λc. b c)', '(λa b. a λc. a c)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. a a b)', '(λb a c c. (λc d. c))', '(λb. (λe f. f))', '(λa b c. a b b c)', '(λa b. a)']
-(('(λa b. a (λc. c a) a)', '(λa b. a (λc. c b b) a)'), ('(λx y. x)', '(λx y. y)')) ['(λa. a)', '(λa b. a b a)', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)']
-(('(λa b c. b b)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λb. (λe f. f))', '(λb a c c. (λc d. c))', '(λa b. a)', '(λa b. a)', '(λa. (λc d. c))', '(λa b. b)', '(λa b. b)']
-(('(λa b c. b (c a))', '(λa b c. b (c b))'), ('(λx y. x)', '(λx y. y)')) ['(λa. a)', '(λa b. a)', '(λa b. a)', '(λp. p (λe f. f) (λc d. c))', '(λa b c. b a a c)', '(λa b. b b a)', '(λa. (λc d. c))', '(λe f. f)', '(λa b. a b a)']
-(('(λa b c. a b b)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')) ['(λe f. f)', '(λa b. a)', '(λa b. b)']
-(('(λa b. a (λc. b a (c c a)) a)', '(λa b. a (λc. b a (c a)) a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. a b a)', '(λp. p (λe f. f) (λc d. c))']
-(('(λa b c. a (a b a))', '(λa b. a (a b))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a a b)', '(λc d. c)', '(λe f. f)', '(λb a c c. (λc d. c))']
-(('(λa b. a (a a))', '(λa b c. a (c b))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. b a a)', '(λa b. a)', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)']
-(('(λa. a a a)', '(λa b c. b b)'), ('(λx y. x)', '(λx y. y)')) ['(λp. p (λe f. f) (λc d. c))', '(λe f. f)', '(λa b. b b b)', '(λa b. b)', '(λa b. b b b)', '(λa b. a a b)', '(λa b. b)', '(λp. p (λe f. f) (λc d. c))', '(λc d. c)']
-(('(λa b c. b (c a b) a)', '(λa b c. b (c b a) a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. b)', '(λc d. c)', '(λa b. b b b)']
-(('(λa b c. b (c b c) a)', '(λa b c. b (c b a) a)'), ('(λx y. x)', '(λx y. y)')) ['(λa. (λc d. c))', '(λp. p (λe f. f) (λc d. c))', '(λe f. f)', '(λa b. b)', '(λa b c. b a c a)']
-(('(λa b. a a)', '(λa b c. a b c)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. b)', '(λa b c. b c a b)']
-(('(λa b. a (λc. c c b) a)', '(λa b. a (λc. b c c) a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a)', '(λa b. a)', '(λa b. b)']
-(('(λa b. a (b b b))', '(λa b c. a (b a b))'), ('(λx y. x)', '(λx y. y)')) ['(λa b. b)', '(λa b. a a b)', '(λa. (λc d. c))', '(λa b. b)']
-(('(λa b c. a a b)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')) ['(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λa b. b)']
-(('(λa b. a (a b) a)', '(λa b. a (λc. a a b) a)'), ('(λx y. x)', '(λx y. y)')) ['(λa b. a b b)', '(λa b. b)', '(λb. (λe f. f))', '(λa b. a)']
+(('(λa. a a)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')): ['(λp. p (λe f. f) (λc d. c))', '(λb a c c. (λc d. c))', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λa b. b)']
+(('(λa. a a)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b)', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)']
+(('(λa b. a a)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. a b a)', '(λa b. b)']
+(('(λa b. a (b a))', '(λa b. a (a b))'), ('(λx y. x)', '(λx y. y)')): ['(λc d. c)', '(λa b c. b c a c)', '(λa b. a b a)', '(λa b c. b a a b)', '(λa b. b)', '(λa. (λc d. c))', '(λa b c. b c c a)']
+(('(λa. a a)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. b a a c)', '(λb. (λe f. f))', '(λa. (λc d. c))', '(λa b. b)']
+(('(λa b. a b)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. b c c b)', '(λp. p (λe f. f) (λc d. c))', '(λa b. a b a)', '(λa b. b)', '(λc d. c)']
+(('(λa b. a a)', '(λa. a a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. a b a)', '(λb. (λe f. f))', '(λa b. a)', '(λa b. b a b)', '(λc d. c)', '(λa b. b)']
+(('(λa b. a (b a))', '(λa b. a (a a))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. b)', '(λa b c. a b b b)', '(λa b c. c c b b)', '(λa b. a a b)', '(λa b. a)', '(λa. a)', '(λa b. b)']
+(('(λa b. b b)', '(λa. a a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. a)', '(λb. (λe f. f))', '(λc d. c)', '(λb a c c. (λc d. c))']
+(('(λa. a a)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. b c c b)', '(λb. (λe f. f))', '(λb a c c. (λc d. c))', '(λa b. a a a)', '(λa b. b)', '(λc d. c)']
+(('(λa b. a (b a))', '(λa b. a (b b))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a b b)', '(λa b. a)', '(λa. a)', '(λa b. a)', '(λa b. b)']
+(('(λa b. a (b b))', '(λa b. a (a a))'), ('(λx y. x)', '(λx y. y)')): ['(λa. a)', '(λa b. a)', '(λa b. b)']
+(('(λa b. a (b b))', '(λa b. a (b a))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa. a)', '(λb. (λe f. f))', '(λa b c. a b b c)', '(λa b c. c b c a)', '(λa b c. b c c a)', '(λa. (λc d. c))', '(λa b. b)']
+(('(λa b. a b)', '(λa. a a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b)', '(λb. (λe f. f))', '(λc d. c)']
+(('(λa b. a (a a))', '(λa b. a (a b))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. b)', '(λb a c c. (λc d. c))', '(λa b. a)']
+(('(λa b. a (a b))', '(λa b. a (b b))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b c. b b c c)', '(λa b. a b a)', '(λc d. c)', '(λa b. a)', '(λa b. a b a)', '(λa b. b)', '(λc d. c)']
+(('(λa b. b a)', '(λa. a a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. a b a a)', '(λp. p (λe f. f) (λc d. c))', '(λb. (λe f. f))', '(λa b. a)']
+(('(λa b. b b)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b b a)', '(λa b. b)', '(λa. (λc d. c))', '(λa b c. b a b c)']
+(('(λa b. a b)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. b c c c)', '(λa b c. b a c b)', '(λa b. b)', '(λa b. a)', '(λc d. c)']
+(('(λa b. b a)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')): ['(λb. (λe f. f))', '(λa b. b b a)', '(λc d. c)', '(λa b. b)', '(λa b c. a b c c)', '(λb. (λe f. f))', '(λc d. c)']
+(('(λa b. b b)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')): ['(λe f. f)', '(λa b. a)', '(λa b. b)']
+(('(λa b. a (a b))', '(λa b. a (a a))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a b a)', '(λa. (λc d. c))', '(λa b. b)', '(λa b. b)']
+(('(λa b. a (a a))', '(λa b. a (b a))'), ('(λx y. x)', '(λx y. y)')): ['(λp. p (λe f. f) (λc d. c))', '(λa b c. b a c b)', '(λa b c. a a c b)']
+(('(λa b. b b)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b a b)', '(λa b. b)', '(λa b c. c b a c)', '(λa. (λc d. c))', '(λa b. b a a)', '(λe f. f)']
+(('(λa b. a (b b))', '(λa b. a (a b))'), ('(λx y. x)', '(λx y. y)')): ['(λc d. c)', '(λa b. b)', '(λa b. a b b)', '(λc d. c)']
+(('(λa b. a (a a))', '(λa b. a (b b))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λe f. f)', '(λb a c c. (λc d. c))', '(λa b. b)']
+(('(λa b. b a)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')): ['(λb. (λe f. f))', '(λc d. c)', '(λb. (λe f. f))', '(λp. p (λe f. f) (λc d. c))', '(λa b c. a c c b)', '(λa b. a)']
+(('(λa b. a b)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')): ['(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λa b c. c b a b)', '(λa b. a b a)', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λe f. f)']
+(('(λa b. a a)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. b)', '(λa b. a b a)', '(λc d. c)', '(λa b. b)']
+(('(λa b c. a a c)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')): ['(λa. a)', '(λp. p (λe f. f) (λc d. c))', '(λa b. a)']
+(('(λa b. a (a b))', '(λa b. a (b a))'), ('(λx y. x)', '(λx y. y)')): ['(λp. p (λe f. f) (λc d. c))', '(λc d. c)']
+(('(λa b. a a)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')): ['(λc d. c)', '(λa b. b)', '(λa b. b)']
+(('(λa b. a a)', '(λa b c. a c)'), ('(λx y. x)', '(λx y. y)')): ['(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λa b. a b a)']
+(('(λa b. a b)', '(λa b c. a c b)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b b b)', '(λe f. f)', '(λa b. a)']
+(('(λa b. b a)', '(λa b. a b)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a b a)', '(λa b. b)', '(λa b. a)']
+(('(λa b c. b a a)', '(λa b. b a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. b b c b)', '(λa b. b)', '(λa b. b)', '(λa b c. c c b a)', '(λc d. c)', '(λa b. b)', '(λa. a)']
+(('(λa b. a a (a a b))', '(λa b c. a a (a a c))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. a)', '(λa b. a a b)', '(λa b. a)', '(λa. a)', '(λp. p (λe f. f) (λc d. c))', '(λa. (λc d. c))', '(λc d. c)']
+(('(λa b. a b b)', '(λa b c. c b)'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. b c a b)', '(λa b. b)', '(λa b. a b a)', '(λa b. a)']
+(('(λa b. a λc. b c)', '(λa b. a λc. a c)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. a a b)', '(λb a c c. (λc d. c))', '(λb. (λe f. f))', '(λa b c. a b b c)', '(λa b. a)']
+(('(λa b. a (λc. c a) a)', '(λa b. a (λc. c b b) a)'), ('(λx y. x)', '(λx y. y)')): ['(λa. a)', '(λa b. a b a)', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)']
+(('(λa b c. b b)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λb. (λe f. f))', '(λb a c c. (λc d. c))', '(λa b. a)', '(λa b. a)', '(λa. (λc d. c))', '(λa b. b)', '(λa b. b)']
+(('(λa b c. b (c a))', '(λa b c. b (c b))'), ('(λx y. x)', '(λx y. y)')): ['(λa. a)', '(λa b. a)', '(λa b. a)', '(λp. p (λe f. f) (λc d. c))', '(λa b c. b a a c)', '(λa b. b b a)', '(λa. (λc d. c))', '(λe f. f)', '(λa b. a b a)']
+(('(λa b c. a b b)', '(λa b. a a)'), ('(λx y. x)', '(λx y. y)')): ['(λe f. f)', '(λa b. a)', '(λa b. b)']
+(('(λa b. a (λc. b a (c c a)) a)', '(λa b. a (λc. b a (c a)) a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. a b a)', '(λp. p (λe f. f) (λc d. c))']
+(('(λa b c. a (a b a))', '(λa b. a (a b))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a a b)', '(λc d. c)', '(λe f. f)', '(λb a c c. (λc d. c))']
+(('(λa b. a (a a))', '(λa b c. a (c b))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b a a)', '(λa b. a)', '(λp. p (λe f. f) (λc d. c))', '(λa b. b)']
+(('(λa. a a a)', '(λa b c. b b)'), ('(λx y. x)', '(λx y. y)')): ['(λp. p (λe f. f) (λc d. c))', '(λe f. f)', '(λa b. b b b)', '(λa b. b)', '(λa b. b b b)', '(λa b. a a b)', '(λa b. b)', '(λp. p (λe f. f) (λc d. c))', '(λc d. c)']
+(('(λa b c. b (c a b) a)', '(λa b c. b (c b a) a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b)', '(λc d. c)', '(λa b. b b b)']
+(('(λa b c. b (c b c) a)', '(λa b c. b (c b a) a)'), ('(λx y. x)', '(λx y. y)')): ['(λa. (λc d. c))', '(λp. p (λe f. f) (λc d. c))', '(λe f. f)', '(λa b. b)', '(λa b c. b a c a)']
+(('(λa b. a a)', '(λa b c. a b c)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. b)', '(λa b c. b c a b)']
+(('(λa b. a (λc. c c b) a)', '(λa b. a (λc. b c c) a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. a)', '(λa b. b)']
+(('(λa b. a (b b b))', '(λa b c. a (b a b))'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b)', '(λa b. a a b)', '(λa. (λc d. c))', '(λa b. b)']
+(('(λa b c. a a b)', '(λa b. b b)'), ('(λx y. x)', '(λx y. y)')): ['(λp. p (λe f. f) (λc d. c))', '(λa b. b)', '(λa b. b)']
+(('(λa b. a (a b) a)', '(λa b. a (λc. a a b) a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a b b)', '(λa b. b)', '(λb. (λe f. f))', '(λa b. a)']
+(('(λa b. a (λc. a (a a a)) a)', '(λa b. a (λc. a (b c a)) a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. a)', '(λa b. a)', '(λa b. b)', '(λa b. a a b)']
+(('(λa b c. b b b)', '(λa b. b b a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. a b b b)', '(λb. (λe f. f))', '(λa b. a b a)', '(λb. (λe f. f))', '(λb a c c. (λc d. c))', '(λp. p (λe f. f) (λc d. c))', '(λa b. a)']
+(('(λa b c. b b (c b))', '(λa b c. b b (c c))'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. c c c b)', '(λa. a)', '(λa b c. a c c a)', '(λa b. b)', '(λe f. f)', '(λa b. b a a)', '(λa b. a)', '(λa b. a b b)']
+(('(λa b. a (b a))', '(λa b c. a (c a b))'), ('(λx y. x)', '(λx y. y)')): ['(λa b c. a b b b)', '(λa b. a a b)', '(λc d. c)', '(λb. (λe f. f))', '(λa b. a)', '(λa b c. a b a c)']
+(('(λa b. b a)', '(λa b c. b c)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b a b)', '(λa b. b a a)', '(λp. p (λe f. f) (λc d. c))', '(λa b. a a b)', '(λa b. b)', '(λa b. a)']
+(('(λa b. a a (a a a))', '(λa b. a a λc. b c a)'), ('(λx y. x)', '(λx y. y)')): ['(λa b. b)', '(λa. (λc d. c))', '(λa b. a)', '(λc d. c)']
 ```
\ No newline at end of file
diff --git a/cache.pickle b/cache.pickle
index f99981e..29f3d2d 100644
--- a/cache.pickle
+++ b/cache.pickle
Binary files differdiff --git a/solve.py b/solve.py
index 60ae42c..06daab1 100644
--- a/solve.py
+++ b/solve.py
@@ -198,8 +198,9 @@ def beta_reduce(depth, expression):
     # move lambdas from body to params
     if "λ" in body:
         idx = body.index("λ")
-        params.append(body[idx+1])
-        del body[idx:idx+3] # the lambda, the arg and the dot
+        if body[idx-1] != "(":
+            params.append(body[idx+1])
+            del body[idx:idx+3] # the lambda, the arg and the dot
     # +++++++++++++ THIS COULD BE BROKEN ++++++++
 
 
@@ -664,8 +665,13 @@ while True:
             pickle.dump(cache, handle, protocol=pickle.HIGHEST_PROTOCOL)
 
         for k in cache:
-            #print(k, cache[k])
-            print(k)
+
+            cache_human_readable = open("cache.md", "w")
+            cache_human_readable.write(f"# cache\n```\n")
+            for k in cache:
+                cache_human_readable.write(f"{k}: {cache[k]}\n")
+                print(k)
+            cache_human_readable.write(f"```")
 
 
         break