Методы программирования / Мп2-6
.doc-2 -1 С 1 2
TRUE FALSE
- + * / поист? Функции
> < =
+ 1 3 4
Такой процесс упрощения называется редукцией.
* (+ 1 2) (-4 1)
* (+1 2) 3
* 3 3
9
( *х х)2 * 2 2
Введем еще один тип правил - -праввило.
-редукция – это копирование тела функции ????? с заменой всех вхождений связанной переменной на выражение аргумента.
((х. у. +ху)7)8
(у. +7 у)8
+7 8
15
Редуцируемое выражение называется редекс (Redex)
Таким образом наш процесс редукции -выражения состоит из множества редукций, примененных к редексам данного выражения до тех пор, пока выражение включает в себя хотя бы один редекс.
Существует понятие -редекса и -редекса
(х. (х. х) (+ 1 х))1
(х. 1 (+1 1))
В таких случаях используется -преобразование.
-преобразование заключается в том, мы переименовываем переменные, даем им уникальные имена.
Выражение эквивалентное с точностью до имен переменных называется алфавитно-эквивалентным.
Пример:
(f. x. f 4x)(у. х. +ху)3
редекс
(х. (у. х. +ху)4х)3
(у. х. +ху)4 3
(х. +х 4)3
+ 3 4
-
7
-
(х. (х. + х4)х)3
-
(х. + х4)3
-
+ 3 4
-
7
Порядок редукции имеет важное значение.
Порядок редукции и нормальные формы.
-выражение находится в нормальной форме, если к нему нельзя применить никакое правило редукции, т.е. нет редексов.
Пример: редекс
(х. у. у)((z. zz)(z. Zz))
редекс
у. у
(z. zz)(z. zz)
(z. zz)(z. zz)
Определение: Самый левый редекс – это такой редекс, символ которого (или идентификтор примитивной функции в случае редексов) текстуально расположен в самом выражении левее всех редексов.
Определение: Самый правый редекс – это такой редекс, смвол которого (или идентификтор примитивной функции в случае редексов) текстуально расположен в самом выражении правее всех редексов.
Определение: Самый внешний редекс – это такой редекс, который не содержит внутри никакого другого редекса.
Определение: Самый внутренний редекс – не содержит никаких других редексов.
Определение: Аппликативный порядок редукции предписывает в начале преобразовать самый левый из самых внутренних редексов (АПР)
Определение: Нормальный порядок редукции предписывает вначале преобразовать самый левый из самых внешних редексов (НПР)
Нормальный порядок редукции соответствует ленивому порядку вычисления.
Аппликативный порядок редукции соответствует энергичному порядку вычисления.
Преимущества ленивого порядка.
-
Если можно вычислить, то всегда вычислять.
-
Экономия на вычислениях.
Теорема Черча-Россера
Если выражение Е может быть приведено 2-мя различными способами к двум нормальным формам, то эти нормальные формы алфавитно эквивалентны.
Теорема стандартизации.
Если выражение Е имеет нормальную форму, то редукция самого левого из самых внешних редексов на каждом этапе вычисления гарантирует достижение этой нормальной формы.
Ромбическое свойство.
Отношение редукции заключается в том, что если выражение Е может быть редуцированно к двум выражениям Е1 и Е2,то сущестувует выражение N, которое можно получить повторно применяя отношение редукции, так из Е1 так и из Е2.
n0
* произвольное число шагов редукции.
* Е* * рефлексивное транзитивное
замыкание.
Е1 Е2
*N*
Е*Е1 и Е* Е2
N : E1N и E2N
Отношение редукции * называется редукция Черча-Россера, если * обладает ромбическим свойством.
-редукция – редукция Черча-Россера
Формальная запись теоремы Черча-Россера.
X cnv Y N : X*N и Y*N , где * означает -редукцию.
сnv – симметричное отношение -преобразований
X cnv Y XY или YX
Еслив отношение на ряду с –редукцией включена –редукция, то система может не обладать ромбическим свойством. Но имеет место слабое ромбическое свойство.
ЕЕ1 и ЕЕ2 N : Е1*N и E2*N
Отношение редукции является слабой редукцией Черча-Россера, если оно обладает слабым ромбическим свойством.
Редукции ЕЕ1 и ЕЕ2 должны быть одношаговыми.
Пусть M и N – две нормальные формы
Е*M и Е*N
Z : M*Z и N*Z
То получится, что М алфавитно эквивалентно N, т.е. нормальная форма единственна.
MNZ
-редукция. Проблема конфликта имен.
х. у. х у у
х - связанная переменная
у. х у у – самая внутренняя абстракция в у. х у у х - свободная переменная, а у – связанная.
В абстракции х у у все переменные свободные
F(e. x y y)={x}
F(x y y)={x,y}
F(k)=
k=const
F(x)={x}
F(E1E2)=F(E1)F(E2)
F(x. E)=F(E)-x
-выражение Е не содержит свободных переменных, т.е. пустое множество, называется замкнутымю.
(х. Е) А
Свяр??? Вхождение переменной х заменяем на А.
х.((у. х. +ху) х)
-редекс
х. (х. +хх) неверно
Процесс переименований -перестановок
х. х = у. у
Эти выражения алфавитно эквивалентны.
х. Е может быть преобразованно в х’. Е’, где Е’ полученно из Е заменой всех вхождений связанной переменной х на х’ при условии, что х’ само не является свободной переменной в Е (мы можем дать переменной имя, если оно не совпадает с другим).
x. f xy z. f z y
y. fyy неверно т.к. имя совпадает со свободной переменной.
Е1Е2
Проблемы ???? ??? накладывают ограничения на –редукцию. –редукционное выражение Е1Е2 можно выполнить только, если ни одно имя свободной в Е2 переменной не совпадает с именами связанных в Е1 переменных.
r-преобразование
х. Ех и Е обозначим одну и ту же функцию при условии, что х не является свободной переменной в А.
(х. Ех)АЕА
Фуннкциональная экстенсивность
х. Ех Е (-редукция)
-редекс
Обхождение проблемы конфликта имен.
х. ((у.х. +ху)х)
Это выражение не находится в нормальной форме
Надо произвести -преобразование.
Слабые заголовочные нормальные формы.
Выражение Е находится в слабой заголовочной нормальной форме, если:
-
Е-const;
-
E является выражением вида х. E’ E’;
-
E имеет форму вида РЕ1Е2…Еn для поистатн.??? функций Р арности k, k>n (1 аргумент – одноарная …)
Мы можем встретиь свободные переменные только в случае, еслипройдем через , т.к. все ссылки на переменные, стоящие после , будут свободными только справа от точки. Останавливаясь перед мы не входим в тело функции не можем встретить свободную переменную, вообще, только когда выражение применяется к аргументу мы поризводим вычисление.