из Митчелла, про Y-комбинатор

Feb 09, 2012 00:26

Отличное упражнение на свойства комбинатора неподвижной точки fix.

Докажите равенство

fix (f . g) = f (fix (g . f))

fprog, haskell, сборник задач и упражнений по Хаскелю, fp

Leave a comment

Comments 17

ext_4199 February 8 2012, 23:00:20 UTC
Это равенство, между прочим, лежит в основе worker/wrapper transformation.

Reply


ext_4199 February 8 2012, 23:12:03 UTC
Вообще, хорошо бы указать, в какой формальной системе это надо доказывать :)

В частности, Митчелл вводит важное правило, с которым это делается легко, а без которого (то есть используя только аксиому fix f = f (fix f)) фиг докажешь.

Правило выглядит так: если M ->> N M, то M = fix N.

Reply


kurilka February 9 2012, 04:16:31 UTC
а "Митчелл" в данном случае это что?

Reply

kurilka February 9 2012, 07:20:00 UTC
Думаю скорее http://www.rsdn.ru/res/book/prog/FoundationsForPL.xml :)
У меня так всё руки пока не доходят...

Reply


migmit February 9 2012, 04:48:35 UTC
(f . g) (f (fix (g . f))) = f (g (f (fix (g . f))) = f ((g . f) (fix (g . f))) = f (fix (g . f)). Так как fix - минимальная неподвижная точка, получаем, что fix (f . g) <= f (fix (g . f)).

Аналогично, fig (g . f) <= g (fix (f . g)). Так как f - морфизм доменов, получаем, что f (fix g . f) <= f (g (fix (f . g))) = (f . g) (fix (f . g)) = fix (f . g). Два неравенства вместе дают нужное равенство.

Reply

ext_4199 February 9 2012, 08:11:56 UTC
Строго говоря, ты доказал, что [[fix (f . g)]] = [[f (fix (g . f))]], т.е. что они эквивалентны денотационно. После этого должна идти апелляция к полноте подразумеваемой proof system по отношению к этой денотационной семантике. Которая вряд ли имеет место.

Reply

migmit February 9 2012, 10:41:45 UTC
Я человек простой, f от [[f]] не отличаю.

> Которая вряд ли имеет место.

А почему, кстати?

Reply

ext_4199 February 9 2012, 19:29:41 UTC
Вроде как здесь http://www.pps.jussieu.fr/~berline/BMS08.pdf доказано, что теория, порожденная семантикой Скотта, не является рекурсивно перечислимой.

Reply


Leave a comment

Up