1. Алфавит, слова, операции над словами

Вид материалаДокументы

Содержание


3. Абстрактные формальные системы
4. Формальные порождающие грамматики
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   14

3. Абстрактные формальные системы



Абстрактная формальная система – это

Алфавит А ( множество слов в этом алфавите – А*).

Разрешимое множество А1  А*, элементы множества А1 называют аксиомами.

Конечное множество вычислимых отношений Ri (1, …, n, ) на множестве A*, называемых правилами вывода. Говорят, что слово выводимо из слов 1, …, n по правилу Ri.

Аксиомы тоже могут быть заданы как унарные отношения, но это не всегда удобно.

Выводимость. Вывод формулы В из формул A1, A2, … , An - последовательность формул F1, F2, … , Fm = B, такая, что Fi (i=1,…m) либо аксиома, либо одна из формул A1, A2, … , An, либо непосредственно выводима из F1, F2, … , Fi-1 по одному из правил вывода. Если существует вывод формулы В из формул A1, A2, … , An, то В выводима из A1, A2, … , An . Множество формул, выводимых из аксиом, называется теоремами теории.

Теорема. Для любой формальной теории множество выводимых в ней слов перечислимо.

Док-во:

А** - множество всех конечных последовательностей 1, …, n, где i - слова в алфавите А. А** - перечислимо. Из-за разрешимости множества аксиом и вычислимости правил вывода по любой последовательности можно эффективно узнать, является ли она выводом в данной формальной системе (FS).

Если в процессе перечисления А** отбрасывать все последовательности, не являющиеся выводами, то получаем перечисление множества выводов  последних слов выводов.

 множество слов (формул), выводимых в произвольной формальной системе, перечислимо.

Примеры формальных систем: системы продукций Поста (канонические системы), системы подстановок, формальные грамматики, исчисления и т.д.

Каноническая система

A= {a1,a2,…, an} – алфавит констант,

X= {x1, x2,…,xm} – алфавит переменных,

M= {M1, M2, …, Mk} – множество аксиом, Mi(AX)*,

R = {R1, R2, …, Rl} – множество продукций, имеющих вид

1, 2,…, j, i, (AX)*, 1, 2,…,j называются посылками,  - следствием.

Слова в (AX)* называются термами, слова в А* - просто словами.

Слово  называется применением аксиомы , если  получается из  подстановкой слов вместо переменных.

Слово  непосредственно выводимо из 1, …, n применением продукции R , если существует подстановка слов вместо переменных в продукцию R, которая посылки превратит в 1, …, n, а заключение – в .

Например, из acb , cabb применением продукции a x1 b, x1 b x2  b x2 (подстановка x1=ca, x2=b) непосредственно выводимо bb.

Выводимость – транзитивное и рефлексивное замыкание непосредственной выводимости.

Доказуемо (теорема формальной системы ) - выводимо из множества аксиом.

Например, <{I}, {x}, {I}, {xx I I}> позволяет построить множество нечетных чисел в унарном представлении.

Теорема. Для любого перечислимого множества М слов в алфавите А существует каконическая система над А, множество теорем которой совпадает с М.

(доказательство, с использованием МТ, приводится в [3])

4. Формальные порождающие грамматики


Порождающей грамматикой называется упорядоченная четверка G=< VT,VN, S, R>, где VT - алфавит терминальных или основных символов; VNалфавит нетерминальных или вспомогательных символов(VTVN =  ); S - начальный символ или аксиома, S VN, R - конечное множество правил или продукций вида   , где  (VTVN )* VN (VTVN )*, (VTVN )* - различные цепочки, а  специальный символ, не принадлежащий VTVN и служащий для отделения левой части правила  от правой . Такие символы, которые служат для описания языка, но не принадлежат самому языку, будем называть метасимволами. Го­ворят, что цепочка 1 непосредственно выводима из цепочки 0 (обозначается 01 ), если существуют такие 1, 2, , , что 01  2, 11  2 и существует правило  ( R). Иными словами 01 , если в 0 найдется вхождение левой части какого-либо пра­вила грамматики, а цепочка 1 получена заменой этого вхож­дения на правую часть правила. Существенно, что при опреде­лении отношения непосредственной выводимости обозначаемого ( разумеется, также метасимвол) мы не указываем, какое правило нужно применять и к какому именно вхождению (если их несколько). Здесь проявляются характерные черты ис­числений, к классу которых относятся и порождающие грамма­тики. Исчисления представляют собой "разрешения" в отличие от алгоритмов, являющихся "предписаниями".

Говорят, что цепочка n выводима из цепочки 0 за один или несколько шагов или просто выводима (обозначается 0+n ), если существует последовательность цепочек 1, 2,…, n (n>0), такая, что ii+1, i{0,…n}. Эта последовательность называется выводом n из 0, а n – длиной вывода. Выводимость за n шагов иногда обозначается 0n n На­конец, если 0+n или 0=n , то пишут 0*n.

Нетрудно видеть, что + есть транзитивное, а * - транзитивно-рефлексивное замыкание отношения .

Цепочка называется сентенциальной формой, если она совпадает или выводима из начального символа грамматики, т.е. если S   ,

Множество цепочек в основном алфавите грамматики, вы­водимых из начального символа, иначе множество сентенциаль­ных форм, состоящих из терминальных символов, называется языком, порождаемым грамматикой G, и обозначается L(G).

L(G) = {x / S * x & xVT }.

Для любого перечислимого множества слов М существует грамматика G, такая, что М= L(G).

Говорят, что грамматики G1 и G2 эквивалентны, если L(G1 )=L(G2).

Например,

G1 = < {S}, {a}, S, { Sa, S a a S}>

L(G1)= {a 2n+1, n 0}

G2 = < {S, A}, {0, 1}, S, R>

R = {S  1 A, A  1 A, A  0 A, A 0 }

L(G2) – множество четных двоичных чисел, больших нуля.

G3 = < {S, A}, {0, 1}, S, R>

R = {S  1 A 0, A  1 A, A  0 A, A  }

L(G2) = L(G3)


Для сокращения записи грамматик и выводов будем изо­бражать нетерминальные символы прописными буквами латин­ского алфавита А , В , С , … , S терминальные -строчными буквами a, b, c,… и цифрами. Прописными буквами U, V, Z будем обозначать символы, которые могут быть как терминальными, так и нетерминальными; строчными буквами u, v, z c индексами или без них - цепочки, составленные из терминальных сим­волов, а буквами  … - из любых символов. Кроме того, для обозначения правил

1

2

………..

n

будем пользоваться записью 12…n .

Правила вида   , где   VT, называются заключительными.