
- •Рекурсивно-определенные предикаты.
- •Представление формул ориентированными размеченными графами (ориентированными деревьями)
- •Правила преобразования формул – правила трансформации фрагментов диаграмм
- •Описание правил трансформации диаграмм (деревьев)
- •Алгоритм перевода дерева в бесскобочную формулу-строку
- •Пример перевода в бесскобочную запись
- •Нормальный алгоритм Маркова

Рекурсивно-определенные предикаты.
Пример: множество натуральных чисел (с нулем).
A:N(0) // 0 – натуральное.
B:x(N(s(x))←N(x)) // s(x) – натуральное, если x – натуральное. Проверим, что s(s(0)) – натуральное:
N(s(s(0)))? B: x=s(0): N(s(0))? B: x=0: N(0)? A:□.
Результат:
Рекурсивный алгоритм распознавания правильности построения формулы:
Быть натуральным числом = быть правильно построенной формулой в алфавите { 0, s, (, ) }.

Рекурсивное определение для двухместной операции сложения (обозначенной формулах символом “+” ).
A:x (x+0=x)
B:x y ( x+s(y)=s(x+y) )
Здесь = - бинарное отношение (двухместный предикат).
Вообще можно сказать, что мы задаем только отношения:
E - равенство (эквивалентность):
x E(x,x)
x y (E(x,y) E(y,x))
x y z ((E(x,y)&E(y,z)) E(x,z))
S – “Следовать за” (инъективная функция, не покрывающая 0):
x y u v ((S(x,y)&S(u,v)&E(y,v)) E(x,u))
x(S(x,0))
A – быть суммой (трехместное отношение):
x z (A(x,0,z) E(z,x))
x y z r ((S(y,z)&A(x,z,r)&A(x,y,u)&S(u,v)) E(r,v))

Применение правил для вычисления результата рекурсивно определенной операции +
A:x (x+0=x)
B:x y ( x+s(y)=s(x+y) )
“1+2=3”:
s(0)+s(s(0)) = s(s(0)+s(0)) = s(s(s(0)+0)) = s(s(s(0))
B: x=s(0), y=s(0) |
B: x=s(0), y=0 |
A: x=s(0) |

Представление формул ориентированными размеченными графами (ориентированными деревьями)
s(0)+s(s(0))
T
t
+
lr
ss
nn
0s
n
0
Отношения: |
Фрагмент |
||
T |
|||
l – быть левым операндом |
|
t |
|
|
|||
r – быть правым операндом |
будем |
||
n – быть единственным операндом |
|||
опускать |
|||
|
|
|
t – быть корнем
Разметка вершин:
символы алфавита формулы (плюс символ корня T) Разметка ребер:
символы отношений позиций операндов

Правила преобразования формул – правила трансформации фрагментов диаграмм
(и построения новых графов-деревьев формул)
A:x (x+0=x)
B:x y ( x+s(y)=s(x+y) )
|
? |
|
? |
|
? |
|
|
? |
|
|
|
|
|
|
|
||
|
+ |
|
|
|
+ |
|
|
s |
|
A |
|
l |
r |
|
B |
n |
|
l |
r |
x |
|
|||||
|
|
|
|
|
+ |
|||
x |
|
|
|
x |
s |
|
|
|
0 |
|
|
|
l |
r |
|||
|
|
|
n |
|||||
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y |
|
x |
y |

Пример: вычисление 1+2=3 графически
s(0)+s(s(0)) = s(s(0)+s(0)) = s(s(s(0)+0)) = s(s(s(0))
|
+ |
|
s |
|
|
s |
|
|
s |
|
|
|
|
|
|
|
|||
l |
r |
B |
n |
|
B |
n |
|
A |
n |
|
|
|
|
||||||
|
|
|
|
|
|
|
|||
s |
s |
|
+ |
|
|
s |
|
|
s |
|
|
|
|
|
|
|
|
||
n |
n |
|
l |
r |
|
n |
|
|
n |
|
|
|
|
|
|
|
|
||
0 |
s |
|
s |
s |
|
+ |
|
|
s |
|
n |
|
n |
n |
|
l |
r |
|
n |
|
|
|
|
|
|||||
|
0 |
|
0 |
0 |
|
s |
0 |
|
0 |
|
|
|
|
|
|
|
n 0

Описание правил трансформации диаграмм (деревьев)
(возможный синтаксис языка описания трансформаций)
<Условие> <Что менять>/<На что менять>
T = вся диаграмма, а также ее корневой символ в условии
Tl = левая поддиаграмма, если из корня идет стрелка l.
Trn = поддиаграмма, достижимая из корня по маршруту стрелок r,n Конструктор новых диаграмм (от корня по месту замены):
s(n:<Конструктор>) = вершина s, из которой идет стрелка n, и далее как указано +(l:<конструктор1>,r:<конструктор2>) = вершина +, со стрелками l и r…
(T=+)&(Tr=0) T/Tl |
|
|
Нет подстановочных символов!!! |
||||
(T=+)&(Tr=s) T/s(n:+(l:Tl,r:Trn)) |
|
|
|
|
|||
|
|
|
|
|
T |
T’ |
|
|
T + |
|
|
|
+ |
s |
|
|
A |
|
l |
B |
n |
||
l |
r |
T’=Tl |
r |
||||
|
|
|
+ |
|
|||
|
|
|
|
|
|
||
|
|
|
|
|
s |
|
|
Tl |
0Tr |
Tl |
|
l |
r |
||
|
n |
||||||
|
|
|
|
|
Trn |
T’nl=Tl |
T’nr=Trn |
|
|
|
|
|
|
|

Представление деревьев строками в алфавите {0,s,+} (обратная польская бесскобочная запись)
+
lr
ss
nn
0s
n
0
0s0ss+
s
n
+
lr
ss
n n
0 0
0s0s+s
s
n
s
n
+
lr
s 0 n
0
0s0+ss
s
n
s
n
s
n
0
0sss

Алгоритм перевода дерева в бесскобочную формулу-строку
Для каждого алфавита и валентности символов указать рекурсивную схему
g – функция построения бесскобочной записи для своего аргумента-диаграммы
0-местный символ (терминальная вершина): g(0)=0
s 1-местный символ: g( n )=g(x)s
x
+
2-местный символ: g( l |
r )=g(x)g(y)+ |
xy

Пример перевода в бесскобочную запись
|
|
s |
|
|
+ |
|
|
s |
s |
||||
g( |
|
n ) = |
g( |
|
)s = g( |
|
n |
)g( |
n )+s = g(0)sg(0)s+s = 0s0s+s |
||||
|
|
|
|
||||||||||
|
|
|
|
|
|
l |
|
r |
|
|
|
|
|
|
|
+ |
|
|
|
0 |
0 |
||||||
|
|
|
|
|
|
|
|
||||||
|
l |
|
r |
s |
|
s |
|||||||
|
|
|
|
|
|
|
|||||||
s |
|
s |
|
n |
|
|
n |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||||
|
n |
|
|
n |
0 |
|
0 |
|
|
|
|
||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
00

Алгоритмы на строках символов алфавита {0,s,+}
|
|
+ |
|
|
s |
|
|
|
s |
|
s |
|||
|
|
|
|
|
|
|
|
|
||||||
|
l |
r |
|
|
n |
|
|
|
|
n |
|
|
n |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
s |
s |
|
|
|
|
|
|
|
|
|
|
|
||
+ |
|
|
|
|
|
|
|
|
||||||
|
|
|
s |
|
s |
|||||||||
|
n |
|
n |
|
l |
r |
|
|
||||||
|
|
|
|
|
n |
|
|
n |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
0 |
s |
s |
s |
|
|
|
|
|
|
|||||
+ |
|
s |
||||||||||||
|
|
|
n |
|
n |
|
n |
|
l |
r |
|
n |
||
|
|
|
|
|
|
|
|
|||||||
|
|
0 |
|
|
|
|
|
s |
|
0 |
||||
|
|
0 |
|
0 |
0 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|||||
|
0s0ss+ |
0s0s+s |
|
n |
|
|
|
|||||||
|
|
|
|
|
0sss |
|||||||||
|
0 |
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
0s0+ss |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Каковы правила трансформации строк? |
s+ +s |
Здесь – пустая строка |
|
0+ |
|||
|
|
||
|
|
|