Created
May 13, 2014 19:54
-
-
Save Glorp/6ccb40722f18b19a1843 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Syntax: | |
Exp u ::= x variable | |
λx.u λ-abstraction | |
u1 u2 application | |
Computation rule: | |
(λx.u2) u1 | |
[u1/x]u2 | |
0 := λf.λx.x | |
1 := λf.λx.f x | |
2 := λf.λx.f (f x) | |
(λf.λx.f (f x)) foo bar | |
(λx.foo (foo x)) bar | |
foo (foo bar) | |
s := λn.λf.λx.f (n f x) | |
s 2 | |
1 | |
(λf.λx.f x) s 0 | |
(λx.s x) 0 | |
s 0 | |
+ := λa.λb.a s b | |
* := λa.λb.a (+ b) 0 | |
* 2 (+ 2 2) | |
2 | |
λf.λx.f x | |
solution from last time: | |
replace x with (0, 0) | |
replace f with something that maps (a, b) to (a + 1, a) | |
(0, 0) | |
(1, 0) | |
(2, 1) | |
(3, 2) | |
then pick the second part of the pair to get previous number | |
keeping track of two numbers is maybe meh | |
- dependencies on bleeding-edge technologies like pairs | |
- dependencies! | |
- mvn | |
s (s (s (s (s 0)))) | |
λf.λx.f (f (f (f (f x)))) | |
1 | |
(λf.λx.f x) zero | |
2 | |
identity (identity zero) | |
---- | |
Tony Morris: Explain List Folds to Yourself | |
http://functionaltalks.org/2013/06/19/tony-morris-explain-list-folds-to-yourself/ | |
cons | |
nil | |
fold foo bar (cons 1 (cons 3 (cons 5 nil))) | |
(foo 1 (foo 3 (foo 5 bar))) | |
fold + 0 (cons 1 (cons 2 (cons 3 nil))) | |
=> (+ 1 (+ 2 (+ 3 0))) | |
appendy: | |
a = (cons 1 (cons 2 nil)) | |
b = (cons 3 (cons 4 nil)) | |
fold cons b a | |
=> fold cons b (cons 1 (cons 2 nil)) | |
=> (cons 1 (cons 2 b)) | |
=> (cons 1 (cons 2 (cons 3 (cons 4 nil)))) | |
cons | |
nil | |
s | |
0 | |
list: | |
(cons 1 (cons 2 (cons 3 nil))) | |
number: | |
(s (s (s 0))) | |
so numbers are basically lists, but without junk in them: | |
list: | |
junk | |
_______|_______ | |
| | | | |
v v v | |
(cons 1 (cons 2 (cons 3 nil))) | |
number: | |
no junk | |
_______|_______ | |
| | | | |
v v v | |
(s (s (s 0))) | |
fold foo bar (cons 1 (cons 2 (cons 3 nil))) | |
=> (foo 1 (foo 2 (foo 3 bar))) | |
and so | |
fold foo bar (s (s (s 0))) | |
=> (foo (foo (foo bar))) | |
(s (s (s 0))) foo bar | |
(λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))) foo bar | |
(λf.λx.f ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) f x)) foo bar | |
(λx.foo ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) foo x)) bar | |
foo ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) foo bar) | |
foo ((λf.λx.f ((λn.λf.λx.f (n f x)) (λf.λx.x) f x)) foo bar) | |
foo ((λx.foo ((λn.λf.λx.f (n f x)) (λf.λx.x) foo x)) bar) | |
foo (foo ((λn.λf.λx.f (n f x)) (λf.λx.x) foo bar)) | |
foo (foo ((λf.λx.f ((λf.λx.x) f x)) foo bar)) | |
foo (foo ((λx.foo ((λf.λx.x) foo x)) bar)) | |
foo (foo (foo ((λf.λx.x) foo bar))) | |
foo (foo (foo ((λx.x) bar))) | |
foo (foo (foo bar)) | |
(s (s (s 0))) | |
(λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))) | |
λf.λx.f ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) f x) | |
λf.λx.f ((λf.λx.f ((λn.λf.λx.f (n f x)) (λf.λx.x) f x)) f x) | |
λf.λx.f ((λx.f ((λn.λf.λx.f (n f x)) (λf.λx.x) f x)) x) | |
λf.λx.f (f ((λn.λf.λx.f (n f x)) (λf.λx.x) f x)) | |
λf.λx.f (f ((λf.λx.f ((λf.λx.x) f x)) f x)) | |
λf.λx.f (f ((λx.f ((λf.λx.x) f x)) x)) | |
λf.λx.f (f (f ((λf.λx.x) f x))) | |
λf.λx.f (f (f ((λx.x) x))) | |
λf.λx.f (f (f x)) | |
---- | |
In fact, a data structure can be faithfully represented by -- is isomorphic to -- its right fold. For example, the entire list processing library, from head and tail to drop and take and even zipWith can be written entirely in terms of foldr. | |
http://okmij.org/ftp/Haskell/AlgorithmsH1.html#foldl | |
---- | |
constructors and that then: | |
0 : nat | |
0 := λf.λx.x | |
s : nat -> nat | |
s := λn.λf.λx.f (n f x) | |
and then | |
fold thing : (a -> a) -> a -> a | |
e.g. if we pass in a nat to replace 0, we must pass in a nat -> nat to replace s | |
if we pass in a (nat -> nat) -> nat for 0, we must do ((nat -> nat) -> nat) -> ((nat -> nat) -> nat) for s | |
etc | |
id := λx.x | |
(s (s (s 0))) id 0 | |
(λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))) (λx.x) (λf.λx.x) | |
(λf.λx.f ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) f x)) (λx.x) (λf.λx.x) | |
(λx.(λx.x) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) (λx.x) x)) (λf.λx.x) | |
(λx.x) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) (λx.x) (λf.λx.x)) | |
(λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) (λx.x) (λf.λx.x) | |
(λf.λx.f ((λn.λf.λx.f (n f x)) (λf.λx.x) f x)) (λx.x) (λf.λx.x) | |
(λx.(λx.x) ((λn.λf.λx.f (n f x)) (λf.λx.x) (λx.x) x)) (λf.λx.x) | |
(λx.x) ((λn.λf.λx.f (n f x)) (λf.λx.x) (λx.x) (λf.λx.x)) | |
(λn.λf.λx.f (n f x)) (λf.λx.x) (λx.x) (λf.λx.x) | |
(λf.λx.f ((λf.λx.x) f x)) (λx.x) (λf.λx.x) | |
(λx.(λx.x) ((λf.λx.x) (λx.x) x)) (λf.λx.x) | |
(λx.x) ((λf.λx.x) (λx.x) (λf.λx.x)) | |
(λf.λx.x) (λx.x) (λf.λx.x) | |
(λx.x) (λf.λx.x) | |
λf.λx.x | |
s (s (s 0)) s -1 | |
Peano axiom 7: For every natural number n, S(n) = 0 is false. That is, there is no natural number whose successor is 0. | |
---- | |
s foo | |
foo s | |
z_repl : (nat -> nat) -> nat | |
z_repl := λ_.0 | |
s_repl : ((nat -> nat) -> nat) -> ((nat -> nat) -> nat) | |
s_repl := λg.λh.h (g s) | |
s_repl (s_repl (s_repl z_repl)) | |
pred := λn.(n s_repl z_repl) id | |
pred (s (s (s (s 0)))) | |
(λn.n (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λx.x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))))) | |
(λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)))) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λx.x) | |
(λf.λx.f ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))) f x)) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λx.x) | |
(λx.(λg.λh.h (g (λn.λf.λx.f (n f x)))) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))) (λg.λh.h (g (λn.λf.λx.f (n f x)))) x)) (λ_.λf.λx.x) (λx.x) | |
(λg.λh.h (g (λn.λf.λx.f (n f x)))) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x)) (λx.x) | |
(λh.h ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)))) (λx.x) | |
(λx.x) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x))) | |
(λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x))) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) | |
(λf.λx.f ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) f x)) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) | |
(λx.(λg.λh.h (g (λn.λf.λx.f (n f x)))) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) (λg.λh.h (g (λn.λf.λx.f (n f x)))) x)) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) | |
(λg.λh.h (g (λn.λf.λx.f (n f x)))) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x)) (λn.λf.λx.f (n f x)) | |
(λh.h ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)))) (λn.λf.λx.f (n f x)) | |
(λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x))) | |
λf.λx.f ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x)) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x) | |
λf.λx.f ((λf.λx.f ((λn.λf.λx.f (n f x)) (λf.λx.x) f x)) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x) | |
λf.λx.f ((λx.(λg.λh.h (g (λn.λf.λx.f (n f x)))) ((λn.λf.λx.f (n f x)) (λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) x)) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x) | |
λf.λx.f ((λg.λh.h (g (λn.λf.λx.f (n f x)))) ((λn.λf.λx.f (n f x)) (λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x)) (λn.λf.λx.f (n f x)) f x) | |
λf.λx.f ((λh.h ((λn.λf.λx.f (n f x)) (λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)))) (λn.λf.λx.f (n f x)) f x) | |
λf.λx.f ((λn.λf.λx.f (n f x)) ((λn.λf.λx.f (n f x)) (λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x))) f x) | |
λf.λx.f ((λf.λx.f ((λn.λf.λx.f (n f x)) (λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x)) f x) | |
λf.λx.f ((λx.f ((λn.λf.λx.f (n f x)) (λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x)) x) | |
λf.λx.f (f ((λn.λf.λx.f (n f x)) (λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x)) | |
λf.λx.f (f ((λf.λx.f ((λf.λx.x) f x)) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x)) | |
λf.λx.f (f ((λx.(λg.λh.h (g (λn.λf.λx.f (n f x)))) ((λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) x)) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x)) | |
λf.λx.f (f ((λg.λh.h (g (λn.λf.λx.f (n f x)))) ((λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x)) (λn.λf.λx.f (n f x)) f x)) | |
λf.λx.f (f ((λh.h ((λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)))) (λn.λf.λx.f (n f x)) f x)) | |
λf.λx.f (f ((λn.λf.λx.f (n f x)) ((λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x))) f x)) | |
λf.λx.f (f ((λf.λx.f ((λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x)) f x)) | |
λf.λx.f (f ((λx.f ((λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x)) x)) | |
λf.λx.f (f (f ((λf.λx.x) (λg.λh.h (g (λn.λf.λx.f (n f x)))) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x))) | |
λf.λx.f (f (f ((λx.x) (λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x))) | |
λf.λx.f (f (f ((λ_.λf.λx.x) (λn.λf.λx.f (n f x)) f x))) | |
λf.λx.f (f (f ((λf.λx.x) f x))) | |
λf.λx.f (f (f ((λx.x) x))) | |
λf.λx.f (f (f x)) | |
nil foo bar => bar | |
(cons 1 (cons 2 nil)) foo bar => foo 1 (foo 2 bar) | |
nil := λc.λn.n | |
s | |
λn.λf.λx.f (n f x) | |
cons := λh.λt.λc.λn.c h (t c n) | |
(cons t1 (cons t2 (cons t3 nil))) foo bar | |
foo t1 (foo t2 (foo t3 bar)) | |
append := λa.λb.a cons b | |
alist := cons t1 (cons t2 nil) | |
append alist alist | |
(λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λb.(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) (λh.λt.λc.λn.c h (t c n)) b) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λt.λc.λn.c t1 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n)) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λn.(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)))) | |
(λt.λc.λn.c t1 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)))) | |
λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) c n) | |
λc.λn.c t1 ((λt.λc.λn.c t2 (t c n)) (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) c n) | |
λc.λn.c t1 ((λc.λn.c t2 ((λc.λn.n) c n)) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) c n) | |
λc.λn.c t1 ((λn.(λh.λt.λc.λn.c h (t c n)) t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) c n) | |
λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)))) c n) | |
λc.λn.c t1 ((λt.λc.λn.c t2 (t c n)) ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)))) c n) | |
λc.λn.c t1 ((λc.λn.c t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) c n)) c n) | |
λc.λn.c t1 ((λn.c t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) c n)) n) | |
λc.λn.c t1 (c t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) c n)) | |
λc.λn.c t1 (c t2 ((λn.n) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) c n)) | |
λc.λn.c t1 (c t2 ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t2 ((λt.λc.λn.c t1 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t2 ((λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n)) c n)) | |
λc.λn.c t1 (c t2 ((λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n)) n)) | |
λc.λn.c t1 (c t2 (c t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n))) | |
λc.λn.c t1 (c t2 (c t1 ((λt.λc.λn.c t2 (t c n)) (λc.λn.n) c n))) | |
λc.λn.c t1 (c t2 (c t1 ((λc.λn.c t2 ((λc.λn.n) c n)) c n))) | |
λc.λn.c t1 (c t2 (c t1 ((λn.c t2 ((λc.λn.n) c n)) n))) | |
λc.λn.c t1 (c t2 (c t1 (c t2 ((λc.λn.n) c n)))) | |
λc.λn.c t1 (c t2 (c t1 (c t2 ((λn.n) n)))) | |
λc.λn.c t1 (c t2 (c t1 (c t2 n))) | |
map := λf.λl.l (λh.λt.cons (f h) t) nil | |
useful := λx.cons x (cons x nil) | |
map useful alist | |
(λf.λl.l (λh.λt.(λh.λt.λc.λn.c h (t c n)) (f h) t) (λc.λn.n)) (λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λl.l (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) | |
(λt.λc.λn.c t1 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) | |
(λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n)) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) | |
(λn.(λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) n)) (λc.λn.n) | |
(λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) | |
(λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) t) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) | |
(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) | |
(λt.λc.λn.c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) | |
λc.λn.c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n))) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c ((λt.λc.λn.c t1 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n))) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n) c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 ((λt.λc.λn.c t1 (t c n)) (λc.λn.n) c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 ((λc.λn.c t1 ((λc.λn.n) c n)) c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 ((λn.c t1 ((λc.λn.n) c n)) n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 ((λc.λn.n) c n))) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 ((λn.n) n))) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λt.λc.λn.c t2 (t c n)) (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λc.λn.c t2 ((λc.λn.n) c n)) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λn.(λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) t2 ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) n)) (λc.λn.n) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) t2 ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) t) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λt.λc.λn.c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λc.λn.c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) c n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) ((λn.c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) n) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c ((λh.λt.λc.λn.c h (t c n)) t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c ((λt.λc.λn.c t2 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 ((λt.λc.λn.c t2 (t c n)) (λc.λn.n) c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 ((λc.λn.c t2 ((λc.λn.n) c n)) c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 ((λn.c t2 ((λc.λn.n) c n)) n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 (c t2 ((λc.λn.n) c n))) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 (c t2 ((λn.n) n))) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 (c t2 n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 (c t2 n)) ((λn.n) (λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 (c t2 n)) ((λc.λn.n) c n)) | |
λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 (c t2 n)) ((λn.n) n)) | |
flat := λl.l append nil | |
flat (λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 (c t2 n)) n)) | |
(λl.l (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) (λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 (c t2 n)) n)) | |
(λc.λn.c (λc.λn.c t1 (c t1 n)) (c (λc.λn.c t2 (c t2 n)) n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λn.(λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t1 (c t1 n)) ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) n)) (λc.λn.n) | |
(λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t1 (c t1 n)) ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n)) | |
(λb.(λc.λn.c t1 (c t1 n)) (λh.λt.λc.λn.c h (t c n)) b) ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n)) | |
(λc.λn.c t1 (c t1 n)) (λh.λt.λc.λn.c h (t c n)) ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n)) | |
(λn.(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t1 n)) ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n)) | |
(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t1 ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n))) | |
(λt.λc.λn.c t1 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n))) | |
λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t1 ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n)) c n) | |
λc.λn.c t1 ((λt.λc.λn.c t1 (t c n)) ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n)) c n) | |
λc.λn.c t1 ((λc.λn.c t1 ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n) c n)) c n) | |
λc.λn.c t1 ((λn.c t1 ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n) c n)) n) | |
λc.λn.c t1 (c t1 ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.c t2 (c t2 n)) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λb.(λc.λn.c t2 (c t2 n)) (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λc.λn.c t2 (c t2 n)) (λh.λt.λc.λn.c h (t c n)) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λn.(λh.λt.λc.λn.c h (t c n)) t2 ((λh.λt.λc.λn.c h (t c n)) t2 n)) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λh.λt.λc.λn.c h (t c n)) t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λt.λc.λn.c t2 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λc.λn.c t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n)) c n)) | |
λc.λn.c t1 (c t1 ((λn.c t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n)) n)) | |
λc.λn.c t1 (c t1 (c t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λt.λc.λn.c t2 (t c n)) (λc.λn.n) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λc.λn.c t2 ((λc.λn.n) c n)) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λn.c t2 ((λc.λn.n) c n)) n))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λc.λn.n) c n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λn.n) n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 n))) | |
flatmap := λf.λl.flat (map f l) | |
flatmap useful alist | |
(λf.λl.(λl.l (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) ((λf.λl.l (λh.λt.(λh.λt.λc.λn.c h (t c n)) (f h) t) (λc.λn.n)) f l)) (λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λl.(λl.l (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) ((λf.λl.l (λh.λt.(λh.λt.λc.λn.c h (t c n)) (f h) t) (λc.λn.n)) (λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) l)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) | |
(λl.l (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) ((λf.λl.l (λh.λt.(λh.λt.λc.λn.c h (t c n)) (f h) t) (λc.λn.n)) (λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)))) | |
(λf.λl.l (λh.λt.(λh.λt.λc.λn.c h (t c n)) (f h) t) (λc.λn.n)) (λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λl.l (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) ((λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n))) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λt.λc.λn.c t1 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n)) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λn.(λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) n)) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) t) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λt.λc.λn.c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λc.λn.c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) | |
(λn.(λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) n)) (λc.λn.n) | |
(λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) | |
(λb.(λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1 (λh.λt.λc.λn.c h (t c n)) b) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) | |
(λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t1 (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) | |
(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n)) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) | |
(λt.λc.λn.c t1 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n)) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) | |
(λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n) c n)) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) | |
(λn.(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) | |
(λh.λt.λc.λn.c h (t c n)) t1 ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n))) | |
(λt.λc.λn.c t1 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n))) | |
λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t1 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n) | |
λc.λn.c t1 ((λt.λc.λn.c t1 (t c n)) (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n) | |
λc.λn.c t1 ((λc.λn.c t1 ((λc.λn.n) c n)) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n) | |
λc.λn.c t1 ((λn.(λh.λt.λc.λn.c h (t c n)) t1 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n) | |
λc.λn.c t1 ((λh.λt.λc.λn.c h (t c n)) t1 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n))) c n) | |
λc.λn.c t1 ((λt.λc.λn.c t1 (t c n)) ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n))) c n) | |
λc.λn.c t1 ((λc.λn.c t1 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) c n) | |
λc.λn.c t1 ((λn.c t1 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) n) | |
λc.λn.c t1 (c t1 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λn.n) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λt.λc.λn.c t2 (t c n)) (λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λc.λn.c t2 ((λc.λn.n) c n)) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λn.(λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) t2 ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) n)) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) t2 ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) t) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λt.λc.λn.c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λc.λn.c ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) c n)) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λn.(λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) n)) (λc.λn.n) c n)) | |
λc.λn.c t1 (c t1 ((λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λb.(λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2 (λh.λt.λc.λn.c h (t c n)) b) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) t2 (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λh.λt.λc.λn.c h (t c n)) t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λt.λc.λn.c t2 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n)) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λc.λn.c t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) c n)) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λn.(λh.λt.λc.λn.c h (t c n)) t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) | |
λc.λn.c t1 (c t1 ((λh.λt.λc.λn.c h (t c n)) t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n))) c n)) | |
λc.λn.c t1 (c t1 ((λt.λc.λn.c t2 (t c n)) ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n))) c n)) | |
λc.λn.c t1 (c t1 ((λc.λn.c t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) c n)) | |
λc.λn.c t1 (c t1 ((λn.c t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) n)) | |
λc.λn.c t1 (c t1 (c t2 ((λh.λt.λc.λn.c h (t c n)) t2 (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λt.λc.λn.c t2 (t c n)) (λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λc.λn.c t2 ((λc.λn.n) c n)) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λn.(λh.λt.λc.λn.c h (t c n)) t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λh.λt.λc.λn.c h (t c n)) t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n))) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λt.λc.λn.c t2 (t c n)) ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n))) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λc.λn.c t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) c n))) | |
λc.λn.c t1 (c t1 (c t2 ((λn.c t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)) n))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λc.λn.n) (λh.λt.λc.λn.c h (t c n)) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λn.n) ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n)) c n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λc.λn.n) (λh.λt.(λh.λt.λc.λn.c h (t c n)) ((λx.(λh.λt.λc.λn.c h (t c n)) x ((λh.λt.λc.λn.c h (t c n)) x (λc.λn.n))) h) t) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λn.n) (λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λc.λn.n) (λa.λb.a (λh.λt.λc.λn.c h (t c n)) b) (λc.λn.n) c n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λn.n) (λc.λn.n) c n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λc.λn.n) c n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 ((λn.n) n)))) | |
λc.λn.c t1 (c t1 (c t2 (c t2 n))) | |
tail-implementation can be done like the first predecessor | |
i.e. "count" in pairs to drop this one | |
__________________________| | |
| | |
v | |
(cons 1 (cons 2 (cons 3 nil))) | |
=> (cons 2 (cons 3 nil)) | |
can keep the *first* length-1 elements by doing like second predecessor | |
i.e. replace nil with something that eats this one | |
______________________| | |
| | |
v | |
(cons 1 (cons 2 (cons 3 nil))) | |
=> (cons 1 (cons 2 nil)) | |
---- | |
http://llama-the-ultimate.org/lambdum/ | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment