Лекции по СЯП (987656), страница 7
Текст из файла (страница 7)
Утверждение 20. Пусть t(x,F) – терм, задающий суперпозицию монотонных функций. Тогда оператор τ, τ[F](x) = t(x,F), непрерывен.
Доказательство. Мы используем индукцию по структуре термов.
База индукции. Простейшими термами являются h(x) и F(x), где h – монотонная функция. В первом случае имеем τ[F](x) = h(x), т.е.
τ[F] = h, во втором случае – τ[F](x) = F(x), т.е. τ[F] = F. В обоих случаях оператор τ непрерывен.
Индуктивный переход. Опять имеем два случая:
А) t(x,F) = f (t1(x,F), t2(x,F),…, tm(x,F));
B) t(x,F) = F(t1(x,F), t2(x,F),…, tm(x,F)) .
Нужно доказать: если все операторы τj (1 j
m),
τj [F](x) = tj(x,F)
непрерывны, то оператор τ,
τ[F](x) = t(x,F)
также непрерывен.
Замечание. Мы здесь докажем индуктивный переход только для случая А. Случай В доказывается аналогично.
Сначала доказываем, что оператор τ монотонен:
g h
τj [g]
τj [h] для всех 1
j
m (так как τj – непрерывен
и, значит, монотонен)
τj [g](x)
τj [h](x) для всех х
А и всех 1
j
m
tj (x, g)
tj (x, h) для всех х
А и всех 1
j
m
f (t1 (x, g), t2 (x, g),…, tj (x, g))
f (t1 (x, g), t2 (x, g),…, tj (x, g)) для всех х
А (так как
функция f монотонна)
Докажем теперь, что оператор τ непрерывен, т.е. для любой цепи f0 f1
f2
…
fn
… имеет место
τ[sup{fn | n N} = sup{τ[fn] | n
N}.
Это соотношение эквивалентно двум соотношениям
τ[sup{fn | n N}
sup{τ[fn] | n
N}, (1)
sup{τ[fn] | n N}
τ[sup{fn | n
N}. (2)
Соотношение (1) доказывается проще:
имеем fk sup{fn | n
N} для всех k
N и
τ[fk]
τ[sup{fn | n
N}] для всех k
N (так как оператор τ
монотонен)
sup{τ[fk] | k
A}
τ[sup{fn | n
N}]
sup{τ[fn] | n
A}
τ[sup{fn | n
N}].
Доказываем (2):
τ[sup{fn | n N}(x) = t(x, sup{fn | n
N})
= f (t1(x, sup{fn | n N}), …, tm(x, sup{fn | n
N}F))
= f (τ1[sup{fn | n N}](x), …, f(τm[sup{fn | n
N}](x))
= f (sup{τ1[fn] | n N}(x), …, sup{τm[fn] | n
N}(x))
(так как все τj непрерывны)
= f (sup{τ1[fn](х) | n N}, …, sup{τm[fn](х) | n
N}).
Благодаря монотонности τj имеем цепь
τj [f0](х) τj [f1](х)
τj [f2](х)
…
τj [fn](х)
… .
Так как все члены этой цепи принадлежат множеству. В+, которое имеет тривиальный порядок, то существует индекс k(j) такой, что
τj [f0](х) = τj [f1](х) = τj [f2](х) =…= τj [fk(j)](х) = ┴
< τj [fk(j)+1](х) = τj [fk(j)+2](х) = τj [fk(j)+2](х) = …
Возьмем k = max{k(j) | 1 j
m}. Тогда для всех n
k и всех 1
j
m имеем:
τj [fn](х) = τj [fn+1](х) = τj [fn+2](х) =…
и следовательно, sup{τj [fn](х) | n N} = τj [fk](х). Поэтому
f (sup{τ1[fn](х) | n N},…, sup{τm[fn](х) | n
N})
= f (τ1[fk](х), τ2[fk](х), …, τm[fn](х))
= f (t1(fk, х), t2(fk, х), …, tm(fn, х))
= τ(fk, х) = τ[fk]( х) sup{τ [fn]( х) | n
N}.
Таким образом,
τ[sup{fn | n N}(x)
sup{τ [fn]( х) | n
N}.
Ч.т.д.
3.1. Неподвижные точки непрерывных операторов
Если оператор τ непрерывен, то для нахождения его неподвижной точки можно применить теорему Клини, согласно которой неподвижная точка вычисляется как супремум sup{τn [] | n N}.
Примеры. Рассмотрим функционал τ : F(N+,N+) F(N+,N+), определяемый как
τ[F](x) = if x = 0 then 1 else x•F(x–1).
Замечание. Через ┴ мы обозначаем не только неопределенное значение, но и всюду неопределенную функцию: ┴(х) =┴.
Имеем:
τ[┴](x) = if x=0 then 1 else x• ┴(х–1) = if x=0 then 1 else ┴
τ2[┴](х) = τ[τ[┴]](х) = if x=0 then 1 else x• τ[┴](х–1)
= if x=0 then 1 else x• (if x–1=0 then 1 else ┴)
= if x=0 then 1 else x• (if x=1 then 1 else ┴)
= if x=0 then 1 else (if x=1 then x else ┴)
= if x<2 then 1 else ┴ = if x<2 then x! else ┴.
Докажем индукцией, что 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
τk[┴](х) = if x<k then x! else ┴ .
Если это верно, то
τk+1[┴](х) = ττk[┴](х) = τ[τk[┴]](х)
= if x=0 then 1 else х• τk[┴](х–1)
= if x=0 then 1 else х• (if x –1<k then (x–1)! else ┴)
= if x=0 then 1 else (if x<k+1 then x! else ┴)
= if x<k+1 then x! else ┴ .
Ясно, что τk[┴] τk+1[┴]. Следовательно,
sup{τk[┴] | k = 0,1,2,…}(x) = x!
4. СЕМАНТИКА РЕКУРСИВНЫХ ПРОГРАММ
Рассмотрим рекурсивную программу
Q: F(x,y) <= if x=y then y+1 else F(x, F(x–1, y+1)).
С этой программой связан оператор τQ, преобразующий множество двуместных функций в себя. В данном случае этим множеством является Fun(Z Z, Z). Оператор τQ сопоставляет каждой функции f
Fun(Z
Z, Z) функцию τQ[f]
F(Z
Z, Z) :
τQ[f](x,y) if x=y then y+1 else F(x, F(x–1, y+1)).
Пример. Возьмем функцию f (x,y) x+y. Тогда
τР[f](x,y) if x=y then y+1 else f (x, f (x–1, y+1))
if x=y then y+1 else x+(x–1+,y+1))
В программе Q буква F обозначает функциональную переменную, т.е. переменную, принимающую значения в множестве функций F(Z Z, Z).
В общем случае рекурсивная программа (с одной функциональной переменной) имеет вид:
P: F(x1, x2,.., xn) <= t(x1, x2,.., xn F),
где t(x1, x2,.., xn F) – некоторый функциональный терм, составленный из имен базовых функций и имени F функциональной переменной.
Таким образом, имеется некоторый набор базовых функций, включающий функцию if-then-else.
Замечание. Терм t(x1, x2,.., xn F) сокращенно записываем как t(x, F).
Терм t(x,F) задает функцию, являющуюся суперпозицией тех функций, имена которых входят в этот терм. Кроме того, терм включает функциональную переменную, вместо которой можно подставлять имя произвольной функции суперпозиция базовых функций. Подставив вместо F имя f какой-либо конкретной функции, мы получаем терм, определяющий некоторую функцию, которая является суперпозицией входящих в терм функций и функции f.
С программой Р ассоциирован оператор τP:
τP[f](x) = t(x,F).
Утверждение 19. Следующие 3 функции f1, f2 и f3 являются неподвижными точками оператора τQ , ассоциированного с программой Q: F(x,y) <= if x=y then y+1 else F(x, F(x–1, y+1)):
f1(x,y): if x=y then y+1 else x+1,
f2(x,y): if (x 1)
(х=у) then x+1 else y –1,
f3(x,y): if (x y)
(x–y четно) then x+1 else ┴
Доказательство. Функцию if X then Y else Z графически можно представить так:
if X then Y else Z if X then Y else Z
Y Z Y Z
В частности, f1(x,y): if x=y then y+1 else x+1 представляется так:
f1(x,y): if x=y then y+1 else x+1
x=y
y+1 x+1
Для выражения τ[f1](x,y) имеем следующее дерево:
τ[f1](x,y): if x=y then y+1 else f1(x, f1(x–1,y+1))
х=у
y+1 f1(x, f1(x–1,y+1))
x= f1(x–1,y+1)
f1(x–1,y+1)+1= x+1 x+1
Ясно, что это дерево эквивалентно дереву
f1(x,y): if x=y then y+1 else x+1
х=у
у+1 х+1
Это показывает, что τ[f1](x,y) = f1(x,y). Следовательно, τ[f1] = f1.
2
) f2(x,y): if (x
1)
(х = у) then x+1 else y –1
x+1 y–1
τ[f2](x,y): if x=y then y+1 else f2(x, f2(x–1,y+1))
у+1= х+1 f1(x, f1(x–1,y+1))
х<1
x+1 f1(x–1,y+1))–1
(x–1)–1 = x–2 (y+1)–1–1= y–1
3)Эквивалентность двух деревьев
f3(x,y): if (x y)
(x–y четно) then x+1 else ┴
x+1 ┴
τ[f3](x,y): if x=y then y+1 else f3(x, f3(x–1,y+1))
x=y
f2(x, f2(x–1,y+1))
y+1 = x+1
х+1 ┴
следует из того, что утверждение «(if x – y четно then 1 else ┴ ) четно» ложно. В самом деле, если х – у четно, то это утверждение переходит в утверждение «1 четно»; если х – у нечетно, то оно переходит в утверждение «┴ четно».
Ч.т.д.
Рассмотрим вычисления по программе Q (в общем случае).
А)
F(a,a)
if a=a then a+1 else F(a,F(a–1,a+1))
a+1
Б) Пусть a<b. Тогда имеем:
F(a,b)
if a=b then b+1 else F(a,F(a–1,b+1))
F(a,F(a–1,b+1))
F(a, if a–1=b+1 then b+1+1 else F(a–1,F(a–1–1,b+1+1)))
F(a,F(a–1,F(a–2,b+2)))
F(a,F(a–1, if a–2=b+2 then b+2+1 else F(a–2,F(a–2–1,b+2+1))))
F(a,F(a–1,F(a–2,F(a–3,b+3))))
:
:
Следовательно, F(a,b) = ┴ , если a<b.
С) Пусть a b. Положим а = b+k.
F(b+k,b)
if b+k=b then b+k+1 else F(b+k,F(b+k–1,b+1))
F(b+k,F(b+k–1,b+1))
F(b+k, if b+k–1=b+1 then b+1+1 else F(b+k–1,F(b+k–1–1,b+1+1)).
Если a+k–2>a, то
F(b+k,F(b+k–1,F(b+k–2,b+2)).
F(b+k,F(b+k–1, if b+k–2=b+2 then b+2+1
else F(b+k–2,F(b+k–2–1,b+2+1))))
Если b+k–4>b, то
F(b+k,F(b+k–1,F(b+k–2,F(b+k–3,b+3))))
F(b+k,F(b+k–1,F(b+k–2, if b+k–3=b+3 then b+3+1
else F(b+k–3,F(b+k–3–1, b+3+1)))))
Если b+k–6=b, то
F(b+k,F(b+k–1,F(b+k–2,F(b+k–3,F(b+k–4,b+4))))) (1)
:
:
Предположим, что k четно, например, k = 8. Тогда терм (1) будет таким