Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 11
На сайте нет зарегистрированных пользователей

Пользователей: 13,370
новичок: dogoco6
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Лабораторная работа по динамическим спискам на Turbo Pascal (удаление ду...
Моделирование процесса поступления заявок в систему, состоящую из трёх Э...
Моделирование процесса обработки заданий на вычислительном центре на GP...

Оболочка Каруби
Теоретические сведения. Исследовательская работа в программировании
часто начинается с выбора объемлющей теории, то есть теории-оболочки,
в которой удобно представлять и исследовать вновь разрабатываемые
механизмы. При необходимости установления и поддержания системы
типов возникает необходимость в использовании такой теории-оболочки,
которая позволяет устанавливать и рассматривать различные идеи, каса-
ющиеся типов. По всей вероятности, в оболочке лучше совсем отказаться
от какой-либо априорной идеи типизации. Другими словами, приходится
иметь дело с бестиповой теорией, и хорошим примером такого рода слу-
жит бестиповое λ-исчисление.
В настоящем разделе исследуется установление связи теоретико-ка-
тегорных понятий с понятиями бестипового λ-исчисления. Пусть L - не-
которое исчисления λ-конверсий. Оболочкой Каруби для L, обозначаемой
через C(L), будем считать категорию, определяемую следующим образом.
Положим a ◦ b = λx.a(bx) для a, b принадлежащих L, где “◦” - знак
композиции функций.
Множество объектов категории :
{a ∈ L | a ◦ a = a}.



Множество морфизмов :
Hom(a, b) = {f ∈ L | b ◦ f ◦ a = f}.



Тождественный изоморфизм :
id a = a.



Композиция морфизмов :
f ◦ g.



Задача 13.1 Показать, что C(L) - категория. Предлагается это
проверить самостоятельно, выполнив согласование с какой-либо фор-
мой определения категории.
Уточнение формулировки задачи. Примем следующие определения
необходимых для проведения исследования объектов. Напомним, что
в данном случае необходимость выполнения следующих равенств
предполагается заранее:

A = λx.A(A(x)) = A ◦ A, (A)
F = λx.B(f(A(x))) = B ◦ f ◦ A. (f)



1. Декартово произведение:
A × B = λuλz.z(A(u(λxλy.x)))(B(u(λxy.y))).



2. Проекция на первый и на второй элемент соответственно:
pAB = λu.(A × B)(u)(λxλy.x), pAB : A × B → A;
qAB = λu.(A × B)(u)(λxλy.y), qAB : A × B → B.



3. Спаривание функций:
< f, g >= λtλz.z(f(t))(g(t)) = λt.[f(t), g(t)],
f : C → A, g : C → B, < f, g >: C → (A × B).



4. Множество отображений (функциональное пространство):
(A → B) = λf.B ◦ f ◦ A.



5. Аппликация (приложение функций к аргументу):
εBC = λu.C(u(λxy.x)(B(u(λxy.y)))),
εBC : (B → C) × B → C.



6. Функция каррирования, то есть перевода “обычных” функций
в аппликативный вид, названа в честь Х.
Карри (Еще раз на-
поминаем: часто эту функцию обозначают через “Curry”; в
данном случае полагаем, что Curry ≡ Λ, то есть функцию
каррирования обозначаем через “Λ”):
(A × B) → C,ΛABCh : A → (B → C).



Требуется доказать следующее:
• Свойства проекций:
pAB ◦ < f, g >= f, qAB ◦ < f, g >= g,
< pAB ◦ h, qAB ◦ h >= h.
• Пусть h : (A × B) → C, k : A → (B → C). Тогда
ε ◦ < (Λh) ◦ p, q >= h,
Λ(ε ◦ < k ◦ p, q >) = k,
гдеΛ = ΛABC, p = pAB, ε = εBC, q = qAB .



Решение. Доказательство сводится к проверке свойств введенных
объектов.
C(L)--1. Заметим, что отображение h : (A × B) → C имеет перевод
в терм λ-исчисления, причем выполняется равенство:

h = λx.C(h((A × B)(x))),



где x = [x1, x2]. Это непосредственное следствие (f).
C(L)--2. Установим комбинаторную характеристику h:
h[x1, x2] = C(h((A × B)[x1, x2]))
= C(h(λz.z(A([x1, x2]K))(B([x1, x2](KI)))))
= C(h(λz.z(A x1)(B x2))) = C(h[A x1, B x2]).



Таким образом,
h[x1, x2] = C(h[A x1, B x2]).



C(L)--3. Еще раз обратим внимание на необходимость учета следующих
равенств:

x = λz.a(x(1 z)) = A ◦ x,
f = λz.B(f(A z)) = B ◦ f ◦ A,



где
1 = λy.y = I.



C(L)--4. Нетрудно видеть (доказать самостоятельно !), что
(A × B) = λu.[A(u K), B(u(K I))],



где K = λxy.x, I = λx.x. Тогда непосредственной проверкой уста-
навливается следующая комбинаторная характеристика декарто-
ва произведения:

(A × B)[u, v] = λz.z(A([u, v]K))(B([u, v](K I)))
= λz.z(A u)(B v)
= [Au, Bv].



C(L)--5. Проверка свойств проекций приводит к следующим характери-
стикам:

pAB([u, v]) = (A × B)[u, v]K = [Au, Bv]K = A u,
qAB([u, v]) = (A × B)[u, v](K I) = [A u, B v](K I) = B v.



C(L)--6. Рассматривая упорядоченную пару [f, x], покажем, как с помо-
щью отображения εBC получить аппликацию f к x:

εBC([C ◦ f ◦ B, B ◦ x]) = εBC([f, x])
= C([C ◦ f ◦ B, B ◦ x]K(B([C ◦ f ◦ B, B ◦ x](K I))))
= C((C ◦ f ◦ B)(B(B ◦ x)))
= C(f(B x))
= (C ◦ f ◦ B)(x)
= f(x).



Отметим необходимость учета свойств композиции.1 По существу,
далее будем обосновывать простое равенство:ΛABC h x y = h([x, y])
(см. раздел 6, где определена функция каррирования).
C(L)--7. Пусть t представимо упорядоченной парой, то есть t = [t1, t2].
Тогда
(ε ◦ < (Λh) ◦ p, q >)t = ε[(Λh)(p t), q t]
= ε[(λxy.h[x, y])(pt), qt]
= ε[(λxy.h[x, y])t1, t2]
= ε[λy.h[t1, y], t2]
= (λy.h[t1, y])t2
= h[t1, t2].



Получено характеристическое равенство:
ε ◦ < (Λh) ◦ p, q >= h.





1
Напомним, что C ◦ f = f, B ◦ x = x.



C(L)--8. Установим теперь второе характеристическое равенство, где
#(t1) = A, #(t2) = B, #(t) = A × B, a t = [t1, t2],


то есть
t представлено в виде упорядоченной пары; через “#” обозначаем
функцию “вычисления типа”:

Λ(ε ◦ < k ◦ p, q >)t1 t2 = (ε ◦ < k ◦ p, q >)([t1, t2])
= ε[k(p t), q t] = ε[kt1, t2]
= (λu.C(uK(B(u(K I)))))[k t1, t2]
= C(k t1(B(t2)))
= C(k t1 t2)
= k t1 t2.



Тем самым2 обосновано характеристическое равенство
Λ(ε ◦ < k ◦ p, q >) = k.



Все введенные равенства действительно имеют место, что завершает
доказательство.
Использование оболочки Каруби привлекает те же самые идеи,
что и рассмотренные в разделе 10 при анализе функции list1. Дей-
ствительно, λ-исчисление дает широкий спектр различных термов.
Среди них отбираются только такие, на синтаксическую форму кото-
рых наложены специальные ограничения. Совокупность этих огра-
ничений, перечисленная в начале настоящего раздела, задает соотне-
сение. В качестве теории-концепта (общая оболочка) выступает бе-
стиповое λ-исчисление, рассматриваемое как теория вычислений. В
результате ее применения к соотнесению получается теория-индивид,
которая в свою очередь обладает свойствами оболочки. В частности,
в ее рамках представим специальный класс вычислений -- катего-
риальные вычисления. В данном случае вопрос о сравнении выра-
зительных возможностей теории-концепта и теории-индивида имеет
математический характер.


2
Следует учесть, что B(t2) = t2.


Опубликовал Kest April 15 2014 22:42:44 · 0 Комментариев · 2806 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
С# для профессион...
netBIOS
Report
EMSQuickImport
Длинный заголовок...
Моделирование дви...
Разработка Web-пр...
DCAVI
Geo-Whois
Java 2. Наиболее ...
PHP, MySQL и Drea...
Encrypt Decrypt
В.Понамарев - COM...
Illusion
Мод "register.php...
Allsubmitter 4.7 ...
Работа с матрицами
iComm v.6.1 - выв...
Панель поиска
Borland Delphi 6....

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97836
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10291
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Дополнительная лит...
Лючки в пол под ро...
емый контроллер), ...
Игра в Вулкан Клуб...
Заказчик на месте ...
Асимметричная пере...
Сжатие страниц на PHP
Полный локальный в...
Осваивайте PowerSh...
Конструкция компью...
Создание поставщик...
Эвакуатор Краснодар
Topology Change и ...
Официальный сайт к...
Магнитные выключатели
Заблуждения в С++
7.12. Отображение...
на попытки сканиро...
Этап выполнения
Стяжка пола
уровня
Очереди
Программисту нужно...
Продвижение сайта ...
Windows исправно о...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?