When working on the lambda calculation without type, I am asked to give two terms that are equivalent in semantics of call by name but not in call by value.

Call $ text {fls} = lambda x. λ and. and $ Y $ Omega = ( lambda x. X x) ( lambda x. X x) $ . They proposed to look at these terms:

$ text {fls} ( lambda x. Omega) $ which in both semantics is reduced to $ lambda and. and $

$ text {fls} ( lambda x. Omega x) $ which on call by name is reduced to $ lambda and. and $ but in the value call "diverges when evaluating the argument for $ text {fls} $".

I don't see how they diverge, except if I guess $ text {eta} $-conversion that was not assumed in my course. On top of that, I don't see how one can diverge and evaluate the argument for $ text {fls} $. Does this make sense to you?

**Apart**

I proposed the terms $ ( lambda f. Omega) $ Y $ ( lambda t. lambda f. f) Omega $ I think this is a valid example …

**The notion of equivalence:**

The notion of equivalence that I am using is behavioral equivalence (see Pierce's TAPL book for more details). The definition says that for any sequence of values to which my terms apply, I should have the same observation: the two results diverge or Results do not diverge.

A separate notion is that of call by value or call by name, which are some standard evaluation strategies for lambda terms.