Эквивалентность ДМП-автоматов — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «Предположим детерминированный строгий автомат с единственным состоянием с элементами, ...»)
 
Строка 1: Строка 1:
 
Предположим детерминированный строгий автомат с единственным состоянием с элементами, представленный тройкой: входной алфавит на ленте <tex>\Sigma</tex>, стековым алфавит <tex>\Gamma</tex> и множеством переходов <tex>\Delta</tex>. Мы предполагаем наличие полного порядка на <tex>\Sigma</tex>,и говорим, что слово <tex>u</tex> короче слова <tex>v</tex> если <tex>|u| < |v|</tex> или <tex>|u| = |v|</tex> и <tex>u</tex> лексикографически меньше <tex>v</tex>. Пусть <tex>E, F, G,\dotsc</tex> - допустимые конфигурации.
 
Предположим детерминированный строгий автомат с единственным состоянием с элементами, представленный тройкой: входной алфавит на ленте <tex>\Sigma</tex>, стековым алфавит <tex>\Gamma</tex> и множеством переходов <tex>\Delta</tex>. Мы предполагаем наличие полного порядка на <tex>\Sigma</tex>,и говорим, что слово <tex>u</tex> короче слова <tex>v</tex> если <tex>|u| < |v|</tex> или <tex>|u| = |v|</tex> и <tex>u</tex> лексикографически меньше <tex>v</tex>. Пусть <tex>E, F, G,\dotsc</tex> - допустимые конфигурации.
 
{{Определение
 
{{Определение
|definition=<tex>E \cdot u</tex> - '''конфигурация <tex>E</tex> после слова <tex>u</tex>''', единственная допустимая конфигурация <tex>F</tex> такая что <tex>(E, u) \rightarrow F</tex>, которая может быть и <tex>\emptyset</tex>.  
+
|definition=<tex>E \cdot u</tex> - конфигурация '''<tex>E</tex> после слова <tex>u</tex>''', единственная допустимая конфигурация <tex>F</tex> такая что <tex>(E, u) \rightarrow F</tex>, которая может быть и <tex>\emptyset</tex>.
 
}}
 
}}
 
{{Определение
 
{{Определение
Строка 12: Строка 12:
 
Равенство задаваемых языков также может быть приблизительным.
 
Равенство задаваемых языков также может быть приблизительным.
 
{{Определение
 
{{Определение
|definition=<tex>E \sim_n F,  n \geq 0</tex> - конфигурафии <tex>E</tex> и <tex>F</tex> '''<tex>n</tex>-эквивалентны'''  если они принимают одни и те же слова, длина которых не больше <tex>n</tex>:  
+
|definition=<tex>E \sim_n F,  n \geq 0</tex> - конфигурафии <tex>E</tex> и <tex>F</tex> '''<tex>n</tex>-эквивалентны'''  если они принимают одни и те же слова, длина которых не больше <tex>n</tex>:
 
<br>для всех слов <tex>w</tex>, таких что <tex>|w| \leq n, (E \cdot w) = \varepsilon</tex> тогда и только тогда, когда <tex>(F \cdot w) = \varepsilon</tex>
 
<br>для всех слов <tex>w</tex>, таких что <tex>|w| \leq n, (E \cdot w) = \varepsilon</tex> тогда и только тогда, когда <tex>(F \cdot w) = \varepsilon</tex>
 
}}
 
}}
Строка 55: Строка 55:
 
}}
 
}}
  
Можно рассматривать дополнения как матрицы. Если <tex>E''</tex> расширяет <tex>E'</tex> с помощью <tex>e</tex> и <tex>E'</tex> расширяет <tex>E</tex> с помощью <tex>f</tex>, то <tex>E''</tex> расширяет <tex>E</tex> с помощью <tex>ef</tex>(в смысле умножения матриц).  
+
Можно рассматривать дополнения как матрицы. Если <tex>E''</tex> расширяет <tex>E'</tex> с помощью <tex>e</tex> и <tex>E'</tex> расширяет <tex>E</tex> с помощью <tex>f</tex>, то <tex>E''</tex> расширяет <tex>E</tex> с помощью <tex>ef</tex>(в смысле умножения матриц).
  
 
Особый случай расширения возникает когда хвосты одинаковы. Если <tex>E = E_1G_1 + ... + E_nG_n</tex> и <tex>F = F_1G_1+...+F_nG_n</tex>, тогда <tex>F</tex> расширяет <tex>E</tex> с помощью <tex>e = ( \varepsilon + \emptyset +... + \emptyset ,..., \emptyset + \emptyset +...+ \varepsilon)</tex>. Расширение <tex>e</tex> сокращается до тождества <tex>\varepsilon</tex> (аналог единичной матрицы).
 
Особый случай расширения возникает когда хвосты одинаковы. Если <tex>E = E_1G_1 + ... + E_nG_n</tex> и <tex>F = F_1G_1+...+F_nG_n</tex>, тогда <tex>F</tex> расширяет <tex>E</tex> с помощью <tex>e = ( \varepsilon + \emptyset +... + \emptyset ,..., \emptyset + \emptyset +...+ \varepsilon)</tex>. Расширение <tex>e</tex> сокращается до тождества <tex>\varepsilon</tex> (аналог единичной матрицы).
 +
 +
== Процедура проверки ==
 +
Процедура для проверки <tex>E \sim F</tex> - направленное дерево доказательства из выражений, имеющие графическое представление, со стартовой целью <tex>E \doteq F</tex>. Чтобы проверить конфигурации на эквивалентность мы будем разбивать выражения на подвыражения используя правила вывода. Существует всего три правила вывода:
 +
[[Файл:unf_600.jpg]]
 +
 +
где <tex>C</tex> - это условие:
 +
# Каждая <tex>E_i \neq \varepsilon</tex> и хотя бы одна <tex>H_i \neq \varepsilon</tex>.
 +
# Имеется ровно <tex>max \{ |w(X_i)| : E_i \neq \emptyset , 1 \leq i \leq k \}</tex> применений <tex>UNF</tex> между верхним и нижним выражением, и не применяются другие правила.
 +
# Если <tex>u</tex> - это слово относящиеся к полседовательности операция <tex>UNF</tex>, то <tex>E_i = (X_i \cdot u)</tex> для каждого <tex>i : 1 \leq i \leq k \</tex>.
 +
 +
<tex>UNF</tex> - означает развертывание(англ. ''unfold''), редуцирует выражение <tex>E \doteq F</tex> на подвыражения <tex>(E \cdot a) \doteq (F \cdot a)</tex> для каждого <tex>a</tex> из алфавита. Если исходное выражение истинно, то истинны и его подвыражения. Более строгая версия этого факта зафиксирована в следующих фактах:
 +
# Если <tex>E \sim F</tex> и <tex>a \in \sigma</tex>, то <tex>(E \cdot a) \sim (F \cdot a)</tex>.
 +
# Если <tex>E \nsim_{m+1} F</tex>, то для какого-то <tex>a \in \sigma</tex> выполняется <tex>(E \cdot a) \nsim_m (F \cdot a)</tex>
 +
 +
Применение <tex>BAL</tex> использует <tex>F</tex>, если <tex>F</tex> - конфигурация в исходном выражении правила вывода. Если есть успешное представление, корень которого является ложным, то существует ветвь таблицы, внутри которой каждое подвыражение является ложной. Если два исходных выражения принадлежат последующей ветке, то подвыражение сохраняет уровень ложности второй предпосылки. Запишем это более строго:
 +
 +
{{Утверждение
 +
|statement=
 +
Справедливы следующие факты о <tex>BAL</tex>:
 +
# Если <tex>X_1H_1+...+X_kH_k \sim F</tex> и <tex>E_1H_1+...+E_kH_k \sim F'</tex>, тогда <tex>E_1(F \cdot w(X_1))+...+X_k(F \cdot w(X_k)) \sim F'</tex>.
 +
# Если <tex>X_1H_1+...+X_kH_k \sim_{n+m} F</tex> и <tex>E_1H_1+...+E_kH_k \nsim_{n+1} F'</tex> и каждая <tex>E_i \neq \varepsilon</tex> и <tex>m \ge max \{ |w(X_i)| : E_i \neq \emptyset \}</tex>, то <tex>E_1(F \cdot w(X_1))+...+E_k(F \cdot w(X_k)) \nsim_{n+1} F'</tex>.
 +
}}
 +
 +
{{Теорема
 +
|about=о расширении
 +
|statement=Пусть есть два семейства выражений <tex>g(i), h(i), 1 \leq i \leq 2^n</tex>,  и каждое выражение <tex>g(i)</tex> имеет форму <tex>E_1G^i_1+...+E_nG^i_n=F_1G^i_1+...+F_nG^i_n</tex> и каждое выражение <tex>h(i)</tex> имеет форму <tex>E_1H^i_1+...+E_nH^i_n=F_1H^i_1+...+F_nH^i_n</tex>.
 +
Пусть расширения <tex>e_1,...,e_n</tex> такие, что для каждого <tex>e_j</tex> и  <tex>i \ge 0, g(2^j i + 2^{j-1} + 1)</tex> расширяет <tex>g(2^j i + 2^{j-1})</tex> с помощью <tex>e_j</tex> и  <tex>h(2^j i + 2^{j-1} + 1)</tex> расширяет <tex>h(2^j i + 2^{j-1})</tex> с помощью <tex>e_j</tex>.
 +
 +
Если для каждое выражение <tex>g(i)</tex> верно на уровне <tex>m, i: 1 \leq i \leq 2^n</tex>,  и для каждого выражения <tex>h(j),j: 1 \leq j < 2^n</tex> верно на уровне <tex>m</tex>,
 +
то <tex>h(2^n)</tex> верно на уровне <tex>m</tex>.
 +
}}
 +
{{Определение
 +
|definition=Пусть ветка доказательства состоит из выражений <tex>d(0),...,d(l)</tex>.  Выражение <tex>d(l)</tex> '''удовлетворяет''' теореме о расширении если существеют выражения <tex>g(i),h(i),1 \leq i \leq 2^n</tex>,  и расширения <tex>e_1,...,e_n</tex> как описано в теормере о расширении,  и выражения принадлежат <tex>\{d(0),...,d(l)\}</tex>,  и <tex>h(2^n)</tex> - это <tex>d(l)</tex>  и есть хотя бы одно применение <tex>UNF</tex> между выражением <tex>h(2^n-1)</tex> и <tex>d(l)</tex>.
 +
}}
 +
{{Определение
 +
|definition=Пусть ветка доказательства состоит из выражений <tex>g(0),...,g(n)</tex>, где <tex>g(0)</tex> - корневое выражение. Выражение <tex>g(n)</tex> - это финальное выражние находящиеся одном из следующих условий:
 +
# Если <tex>g(n)</tex> - это тождество <tex>E \doteq E</tex>, то <tex>g(n)</tex> - это успешное финальное выражение.
 +
# Если <tex>g(n)</tex> удовлетворяет теореме о расширении, то <tex>g(n)</tex> - это успешное финальное выражение.
 +
# Если <tex>g(n)</tex> имеет форму <tex>E \doteq \emptyset</tex> или <tex>\emptyset \doteq E</tex> (и <tex>E \neq \emptyset</tex>), тогда <tex>g(n)</tex> - это неуспешное финальное выражение.
 +
}}
 +
{{Лемма
 +
|statement=В бесконечной ветке доказательств состоящей из выражений <tex>g(0),...,g(n),...</tex> где <tex>g(0)</tex> - корневое выражение, существует такое <tex>n</tex>, что <tex>g(n)</tex> - финальное выражение.
 +
}}
 +
 +
Введём несложную '''процедуру проверки <tex>E \sim F</tex>''', и зададим её пошагово.
 +
# '''Шаг <tex>0</tex>:''' начинаем с корневого выражение <tex>g(0)</tex>, <tex>E \doteq F</tex>, что является вершиной ветвления ветки <tex>g(0)</tex>.
 +
# '''Шаг <tex>n+1</tex>:''' Если текущая вершина ветвления <tex>g(n)</tex> ветки <tex>g(0),...,g(n)</tex> - это неуспешное финальное выражение, то прерываемся и возвращаем "некорректное представление";<br>Если каждая вершина ветвления <tex>g(n)</tex>  ветки <tex>g(0),...,g(n)</tex> - успешное финальное выражение, тогда возвращаем "корректное представление";<br>Иначе для каждой вершины ветвления <tex>g(n)</tex> ветки <tex>g(0),...,g(n)</tex>, которая не является финальной целью, применяем следующие правило, и подвыражения, получившиеся в результате, - новые вершины ветвления расширенных веток.
 +
 +
{{Теорема
 +
|statement=Справедливы следующие факты:
 +
# Если <tex>E \nsim F</tex>, то процедура проверки вернёт "некорректное представление".
 +
# Если <tex>E \sim F</tex>, то процедура проверки вернёт "корректное представление".
 +
}}

Версия 00:02, 17 января 2017

Предположим детерминированный строгий автомат с единственным состоянием с элементами, представленный тройкой: входной алфавит на ленте [math]\Sigma[/math], стековым алфавит [math]\Gamma[/math] и множеством переходов [math]\Delta[/math]. Мы предполагаем наличие полного порядка на [math]\Sigma[/math],и говорим, что слово [math]u[/math] короче слова [math]v[/math] если [math]|u| \lt |v|[/math] или [math]|u| = |v|[/math] и [math]u[/math] лексикографически меньше [math]v[/math]. Пусть [math]E, F, G,\dotsc[/math] - допустимые конфигурации.

Определение:
[math]E \cdot u[/math] - конфигурация [math]E[/math] после слова [math]u[/math], единственная допустимая конфигурация [math]F[/math] такая что [math](E, u) \rightarrow F[/math], которая может быть и [math]\emptyset[/math].


Определение:
Язык, задаваемой конфигурацией [math]E[/math], [math]L(E) = \{ E : (E \cdot u) = \varepsilon \}[/math].


Определение:
[math]E \sim F[/math] - две конфигурации [math]E[/math] и [math]F[/math] эквивалентны если [math]L(E) = L(F)[/math].


Равенство задаваемых языков также может быть приблизительным.

Определение:
[math]E \sim_n F, n \geq 0[/math] - конфигурафии [math]E[/math] и [math]F[/math] [math]n[/math]-эквивалентны если они принимают одни и те же слова, длина которых не больше [math]n[/math]:
для всех слов [math]w[/math], таких что [math]|w| \leq n, (E \cdot w) = \varepsilon[/math] тогда и только тогда, когда [math](F \cdot w) = \varepsilon[/math]


Утверждение:
Справедливы следующие факты:
  1. [math]E \sim F[/math] тогда и только тогда, когда для любого [math] n \geq 0[/math] выполняется [math]E \sim_n F[/math]
  2. Если [math]E \nsim F[/math], то существует [math] n \geq 0[/math] такой, что [math]E \sim_n F[/math] и [math]E \nsim_{n+1} F[/math]
  3. Если [math]E \sim F[/math], то для любого [math]u \in \Sigma^*[/math], [math](E \cdot u) \sim (F \cdot u)[/math].
  4. [math]E \sim_{n} F[/math], тогда и только тогда, когда для любого [math]u \in \Sigma^*[/math], где [math]|u| \leq n[/math], [math](E \cdot u) \sim_{n-|u|} (F \cdot u)[/math].
  5. Если [math]E \sim_{n} F[/math] и [math]0 \leq m \lt n[/math], то [math]E \sim_{m} F[/math].
  6. Если [math]E \sim_{n} F[/math] и [math]F \nsim_{n} G[/math], то [math]E \nsim_{n} G[/math].


Определение:
Для каждого стекового символа [math]X[/math] словом [math]w(X)[/math] называется самое короткое слово в множестве [math]\{u : (X \cdot u) = \varepsilon \}[/math]


Определение:
[math]E = E_1G_1 + ... + E_nG_n[/math] находится в форме голова/хвост, если голова [math]E_1 + ...+E_n[/math] допустима и хотя бы один [math]E_i= \emptyset[/math], и каждый хвост [math]G_i = \emptyset[/math].


Приведём некоторые свойства формы голова/хвост. Эквивалентность и n-эквивалентность языков согласуются с операциями [math]+[/math] и суммы. Следовательно, форма голова/хвост позволяет подставить эквивалентное выражение в хвост (т.к. допустимость сохраняется).

Утверждение:
Пусть [math]E = E_1G_1 + ... + E_nG_n[/math], тогда справедливы следующие факты:
  1. Если [math](E_i \cdot u) = \varepsilon[/math], то для всех [math]j \neq i[/math] выполняется [math](E_j \cdot u) = \emptyset[/math] и [math](E \cdot u) = G_i[/math]
  2. Если [math](E_i \cdot u) = \emptyset[/math], то [math](E \cdot u) = (E_1 \cdot u)G_1 + ... + (E_n \cdot u)G_n[/math].
  3. Если [math]H_i \neq \emptyset, 1 \leq i \leq n[/math], то [math]E_1H_1 + ... + E_nH_n[/math] в форме голова/хвост.
  4. Если каждая [math]H_i \neq \emptyset[/math] и каждая [math]E_i \neq \varepsilon[/math] и для каждого [math]j[/math] такого, что [math]E_j \neq \emptyset[/math] выполняется [math]H_j \sim_m G_j[/math], то [math]E \sim{m+1} E_1H_1 + ... + E_nH_n[/math].
  5. Если [math]H_i \sim G_i, 1 \leq i \leq n[/math], то [math]E \sim E_1H_1 + ... + E_nH_n[/math].

Две конфигурации могут иметь одинаковые головы и разные хвосты, или одинаковые хвосты и различие в головах. Если [math]E[/math] представлена в форме голова/хвост[math]E_1G_1 + ... + E_nG_n[/math] и [math]F[/math] имеет схожую форму голова/хвост [math]F_1G_1 + ... + E_nF_n[/math], имеющая тот же самый хвост. Несоответствие между [math]E[/math] и [math]F[/math], соответственное этому представлению - это [math]max\{|E_i|, |F_i| : 1 \leq i \leq n\}[/math]. Если несоответствие равно 0, то конфигурации одинаковы.

Замечание: любая пара конфигураций [math]E[/math] и [math]F[/math] имеет форму голова/хвост включающую в себя одинаковые хвосты: [math] E = EG[/math] и [math]F = FG[/math], где [math]G = \varepsilon[/math].


Определение:
Если [math]E = E_1G_1 + ... + E_nG_n[/math] и [math]F = F_1F_1 + ... + F_nF_n[/math], тогда [math]F[/math] в его форме голова/хвост - хвостовое дополнение [math]E[/math] в его форме голова/хвост обеспечивается [math]H_i = K^i_1G_1 + ... + K^i_nG_n, 1 \leq i \leq m[/math]. Когда [math]F[/math] - хвостовое дополнение [math]E[/math], относящиеся к нему дополнение [math]e[/math] - кортеж из m элементов [math](K^1_1+...+K_n^1,...,K_1^m +...+K_n^m)[/math] без [math]G_is[/math], и говорится, что [math]F[/math] дополняет [math]E[/math] с помощью [math]e[/math].


Можно рассматривать дополнения как матрицы. Если [math]E''[/math] расширяет [math]E'[/math] с помощью [math]e[/math] и [math]E'[/math] расширяет [math]E[/math] с помощью [math]f[/math], то [math]E''[/math] расширяет [math]E[/math] с помощью [math]ef[/math](в смысле умножения матриц).

Особый случай расширения возникает когда хвосты одинаковы. Если [math]E = E_1G_1 + ... + E_nG_n[/math] и [math]F = F_1G_1+...+F_nG_n[/math], тогда [math]F[/math] расширяет [math]E[/math] с помощью [math]e = ( \varepsilon + \emptyset +... + \emptyset ,..., \emptyset + \emptyset +...+ \varepsilon)[/math]. Расширение [math]e[/math] сокращается до тождества [math]\varepsilon[/math] (аналог единичной матрицы).

Процедура проверки

Процедура для проверки [math]E \sim F[/math] - направленное дерево доказательства из выражений, имеющие графическое представление, со стартовой целью [math]E \doteq F[/math]. Чтобы проверить конфигурации на эквивалентность мы будем разбивать выражения на подвыражения используя правила вывода. Существует всего три правила вывода: Unf 600.jpg

где [math]C[/math] - это условие:

  1. Каждая [math]E_i \neq \varepsilon[/math] и хотя бы одна [math]H_i \neq \varepsilon[/math].
  2. Имеется ровно [math]max \{ |w(X_i)| : E_i \neq \emptyset , 1 \leq i \leq k \}[/math] применений [math]UNF[/math] между верхним и нижним выражением, и не применяются другие правила.
  3. Если [math]u[/math] - это слово относящиеся к полседовательности операция [math]UNF[/math], то [math]E_i = (X_i \cdot u)[/math] для каждого [math]i : 1 \leq i \leq k \[/math].

[math]UNF[/math] - означает развертывание(англ. unfold), редуцирует выражение [math]E \doteq F[/math] на подвыражения [math](E \cdot a) \doteq (F \cdot a)[/math] для каждого [math]a[/math] из алфавита. Если исходное выражение истинно, то истинны и его подвыражения. Более строгая версия этого факта зафиксирована в следующих фактах:

  1. Если [math]E \sim F[/math] и [math]a \in \sigma[/math], то [math](E \cdot a) \sim (F \cdot a)[/math].
  2. Если [math]E \nsim_{m+1} F[/math], то для какого-то [math]a \in \sigma[/math] выполняется [math](E \cdot a) \nsim_m (F \cdot a)[/math]

Применение [math]BAL[/math] использует [math]F[/math], если [math]F[/math] - конфигурация в исходном выражении правила вывода. Если есть успешное представление, корень которого является ложным, то существует ветвь таблицы, внутри которой каждое подвыражение является ложной. Если два исходных выражения принадлежат последующей ветке, то подвыражение сохраняет уровень ложности второй предпосылки. Запишем это более строго:

Утверждение:
Справедливы следующие факты о [math]BAL[/math]:
  1. Если [math]X_1H_1+...+X_kH_k \sim F[/math] и [math]E_1H_1+...+E_kH_k \sim F'[/math], тогда [math]E_1(F \cdot w(X_1))+...+X_k(F \cdot w(X_k)) \sim F'[/math].
  2. Если [math]X_1H_1+...+X_kH_k \sim_{n+m} F[/math] и [math]E_1H_1+...+E_kH_k \nsim_{n+1} F'[/math] и каждая [math]E_i \neq \varepsilon[/math] и [math]m \ge max \{ |w(X_i)| : E_i \neq \emptyset \}[/math], то [math]E_1(F \cdot w(X_1))+...+E_k(F \cdot w(X_k)) \nsim_{n+1} F'[/math].
Теорема (о расширении):
Пусть есть два семейства выражений [math]g(i), h(i), 1 \leq i \leq 2^n[/math], и каждое выражение [math]g(i)[/math] имеет форму [math]E_1G^i_1+...+E_nG^i_n=F_1G^i_1+...+F_nG^i_n[/math] и каждое выражение [math]h(i)[/math] имеет форму [math]E_1H^i_1+...+E_nH^i_n=F_1H^i_1+...+F_nH^i_n[/math].

Пусть расширения [math]e_1,...,e_n[/math] такие, что для каждого [math]e_j[/math] и [math]i \ge 0, g(2^j i + 2^{j-1} + 1)[/math] расширяет [math]g(2^j i + 2^{j-1})[/math] с помощью [math]e_j[/math] и [math]h(2^j i + 2^{j-1} + 1)[/math] расширяет [math]h(2^j i + 2^{j-1})[/math] с помощью [math]e_j[/math].

Если для каждое выражение [math]g(i)[/math] верно на уровне [math]m, i: 1 \leq i \leq 2^n[/math], и для каждого выражения [math]h(j),j: 1 \leq j \lt 2^n[/math] верно на уровне [math]m[/math],

то [math]h(2^n)[/math] верно на уровне [math]m[/math].
Определение:
Пусть ветка доказательства состоит из выражений [math]d(0),...,d(l)[/math]. Выражение [math]d(l)[/math] удовлетворяет теореме о расширении если существеют выражения [math]g(i),h(i),1 \leq i \leq 2^n[/math], и расширения [math]e_1,...,e_n[/math] как описано в теормере о расширении, и выражения принадлежат [math]\{d(0),...,d(l)\}[/math], и [math]h(2^n)[/math] - это [math]d(l)[/math] и есть хотя бы одно применение [math]UNF[/math] между выражением [math]h(2^n-1)[/math] и [math]d(l)[/math].


Определение:
Пусть ветка доказательства состоит из выражений [math]g(0),...,g(n)[/math], где [math]g(0)[/math] - корневое выражение. Выражение [math]g(n)[/math] - это финальное выражние находящиеся одном из следующих условий:
  1. Если [math]g(n)[/math] - это тождество [math]E \doteq E[/math], то [math]g(n)[/math] - это успешное финальное выражение.
  2. Если [math]g(n)[/math] удовлетворяет теореме о расширении, то [math]g(n)[/math] - это успешное финальное выражение.
  3. Если [math]g(n)[/math] имеет форму [math]E \doteq \emptyset[/math] или [math]\emptyset \doteq E[/math][math]E \neq \emptyset[/math]), тогда [math]g(n)[/math] - это неуспешное финальное выражение.
Лемма:
В бесконечной ветке доказательств состоящей из выражений [math]g(0),...,g(n),...[/math] где [math]g(0)[/math] - корневое выражение, существует такое [math]n[/math], что [math]g(n)[/math] - финальное выражение.

Введём несложную процедуру проверки [math]E \sim F[/math], и зададим её пошагово.

  1. Шаг [math]0[/math]: начинаем с корневого выражение [math]g(0)[/math], [math]E \doteq F[/math], что является вершиной ветвления ветки [math]g(0)[/math].
  2. Шаг [math]n+1[/math]: Если текущая вершина ветвления [math]g(n)[/math] ветки [math]g(0),...,g(n)[/math] - это неуспешное финальное выражение, то прерываемся и возвращаем "некорректное представление";
    Если каждая вершина ветвления [math]g(n)[/math] ветки [math]g(0),...,g(n)[/math] - успешное финальное выражение, тогда возвращаем "корректное представление";
    Иначе для каждой вершины ветвления [math]g(n)[/math] ветки [math]g(0),...,g(n)[/math], которая не является финальной целью, применяем следующие правило, и подвыражения, получившиеся в результате, - новые вершины ветвления расширенных веток.
Теорема:
Справедливы следующие факты:
  1. Если [math]E \nsim F[/math], то процедура проверки вернёт "некорректное представление".
  2. Если [math]E \sim F[/math], то процедура проверки вернёт "корректное представление".