> Отдельным комментарием приведу, в качестве примера, некоторую конкретную историю
В эпоху парадоксов математики запретили множеству быть элементом самого себя, как непосредственно, так и через промежуточные множества например, ситуация A принадлежит B, B принадлежит C, а C принадлежит A, является запрещенной).
Из-за этого получилось, что функция не может быть своим собственным аргументом (функция определяется, как множество пар (аргумент, результат), а пара (x,y) определяется, например, как множество {x, {x,y}}).
Однако в программировании текст программы всегда можно подать ей самой на вход, и есть язык, отражающий это обстоятельство в чистом виде, - лямбда-исчисление, - где программы и данные в точности одно и тоже.
Поэтому возникли трудности в создании формальной математической семантики модели этого языка. Трудности эти были преодолены следующим образом. Dana Scott (1969) показал, что хотя мощность множества всех функций A->A всегда больше мощности множества A, практически любое топологическое пространство R можно непрерывно вложить в некоторое топологическое пространство X(R), такое что X(R) гомеоморфно множеству всех непрерывных функций [X(R)->X(R)] (квадратные скобки обозначают, что берутся только непрерывные функции).
"X(R) гомеоморфно множеству всех непрерывных функций [X(R)->X(R)]" --- это уравнение, решающееся с помощью изящного предельного перехода. Строится удобное X0(R), затем X1 = [X0->X0], X2 = [X1->X1], ... И если все это делать достаточно аккуратно, то оказывается, что эта последовательность имеет предел, X(R), который и является решением искомого уравнения. Запишем получившийся гомеоморфизм, как пару функций, i:X(R)->[X(R)->X(R)], j:[X(R)->X(R)]->X(R).
Тогда программа p из лямбда-исчисления в модели обозначает элемент P принадлежщий X(R). Результат применения p к самой себе в модели есть (i(P))(P). Все получается без парадоксов...
no subject
Date: 2005-05-22 06:24 pm (UTC)В эпоху парадоксов математики запретили множеству быть элементом самого себя, как непосредственно, так и через промежуточные множества например, ситуация A принадлежит B, B принадлежит C, а C принадлежит A, является запрещенной).
Из-за этого получилось, что функция не может быть своим собственным аргументом (функция определяется, как множество пар (аргумент, результат), а пара (x,y) определяется, например, как множество {x, {x,y}}).
Однако в программировании текст программы всегда можно подать ей самой на вход, и есть язык, отражающий это обстоятельство в чистом виде, - лямбда-исчисление, - где программы и данные в точности одно и тоже.
Поэтому возникли трудности в создании формальной математической семантики модели этого языка. Трудности эти были преодолены следующим образом. Dana Scott (1969) показал, что хотя мощность множества всех функций A->A всегда больше мощности множества A, практически любое топологическое пространство R можно непрерывно вложить в некоторое топологическое пространство X(R), такое что X(R) гомеоморфно множеству всех непрерывных функций [X(R)->X(R)] (квадратные скобки обозначают, что берутся только непрерывные функции).
"X(R) гомеоморфно множеству всех непрерывных функций [X(R)->X(R)]" --- это уравнение, решающееся с помощью изящного предельного перехода. Строится удобное X0(R), затем X1 = [X0->X0], X2 = [X1->X1], ... И если все это делать достаточно аккуратно, то оказывается, что эта последовательность имеет предел, X(R), который и является решением искомого уравнения. Запишем получившийся гомеоморфизм, как пару функций, i:X(R)->[X(R)->X(R)], j:[X(R)->X(R)]->X(R).
Тогда программа p из лямбда-исчисления в модели обозначает элемент P принадлежщий X(R). Результат применения p к самой себе в модели есть (i(P))(P). Все получается без парадоксов...