1

Hello I am having trouble proving these combinators S K = K I

The steps with the brackets [] are just telling you the step i am doing. For example [λxy.x / x] in λyz.x z(y z) means I am about to substitute (λxy.x) for every x in the expression λyz.x z(y z)

what I have tried so far is reducing S K and I got this:

S K
(λxyz.x z(y z)) (λxy.x)
[λxy.x / x] in λyz.x z(y z) 
(λyz. (λxy.x) z(y z))
[z/x] in λy.x
(λyz. (λy.z) (y z))
[y/y] in λy.z
(λyz. z z)

and then reducing K I and I got this:

K I
(λxy.x) (λx.x)
[λx.x / x] in λy.x
λy. λx.x

though the two answers do not seem to be equal to me (λyz. z z) and λy. λx.x can someone please explain to me what I did wrong? Thank you.

Paul Sweatte
  • 24,148
  • 7
  • 127
  • 265
Andrew Lohr
  • 5,380
  • 1
  • 26
  • 38

1 Answers1

1

(λy.z) (y z) reduces to just z, not z z, so (λyz. (λy.z) (y z)) is λyz. z, which is the same as λy. λx. x.

jwodder
  • 54,758
  • 12
  • 108
  • 124
  • Ah okay thank you! can you just explain why (λy.z) (y z) is reduced to just z? what happens the the second z? – Andrew Lohr Apr 03 '13 at 02:58
  • 1
    In `(λy. z) (y z)`, the `(λy. z)` lambda is applied to the whole of `(y z)` (because it has parentheses around it), so it becomes `z[(y z)/y]`, but as there is no `y` in `z`, it remains just `z`. – jwodder Apr 03 '13 at 04:11
  • okay thank you. I thought it was just the y that gets substituted in (λy. z) and the other z just is left over. Thanks for clearing that up. – Andrew Lohr Apr 03 '13 at 04:15