1.4. Алгебра термов |
||||||
Многосортные алгебры.Под алгеброй понимают некоторое множество объектов с
определёнными на нём операциями (функциями). Объекты могут быть
разнотипными, тогда каждому объекту приписывают так называемый
сорт Сигнатурой алгебры (т.е. системой обозначений) называется тройка W = (S,F,s), где S - множество сортов, F - множество функциональных символов, s - типовая функция, приписывающая каждому функциональному символу его тип - список сортов всех аргументов и результата соответствующей функции. Таким образом, для каждого f О F определён его тип s(f) = < s1,...,sn,sn+1>, где s1, ..., sn - сорта аргументов, sn+1 - сорт результата функции f, n ³ 0 - число аргументов функции, т.е. её арность (говорят n-арная или n-местная функция). 0-арная функция называется константой. W-алгеброй называется пара (A,I), где A - множество объектов алгебры, её носитель, а I - интерпретация сигнатуры W на A:
На одном носителе A можно определить множество W-алгебр. Если определенная интерпретация подразумевается, то будем обозначать алгебру (A,W), а если подразумевается и сигнатура, то обозначаем её просто A. Для определения понятия терм будем считать, что с каждым
сортом s связано счётное множество символов Vs
W-термом сорта s называется любая переменная или константа сорта s, а также любое конечное (т.е., состоящее из конечного числа символов) выражение вида f(t1,...,tn), где f О F, s(f) = < s1,...,sn,s > и ti - W-терм сорта si для каждого 1 Ј i Ј n. Терм t, содержащий переменные x1, ..., xk, будем обозначать t(x1,...,xk) или t(x). На каждой W-алгебре (A,I) такой терм определяет некоторую k-местную функцию. Пусть задана некоторая тотальная (т.е. всюду определённая) функция g: V ® A такая, что g(x) О As, если x О Vs. Эта функция называется оценкой (или интерпретацией) переменных на A. Значение терма t на W-алгебре (A,I) при оценке g обозначается tI[g] или tI(a1,...,ak), если t = t(x1,...,xk) и g(xi) = ai. Оно определяется следующим образом (индекс I будем опускать):
В силу тотальности оценки значение любого W-терма на тотальной W-алгебре определено при любой оценке. Алгебры термов.Термы не только являются средством задания функций над различными типами данных, но и сами используются как данные в ряде языков программирования (Лисп, Пролог и др.), а также в теоретических исследованиях. Благодаря рекурсивному построению, они позволяют легко образовывать и обрабатывать сложные динамические структуры данных (списки, деревья, формулы и пр.). Обычно используются алгебры термов. Носителем такой алгебры являются термы определённых сортов, а её операциями - функции, образующие сложные термы из более простых. Эти операции называются конструкторами. Перейдём к точным определениям. Алгебра термов почти полностью определяется её сигнатурой W = (S,F,s), которая должна удовлетворять следующим условиям:
Для полного задания W-алгебры термов необходимо ещё задать носители первичных сортов As для всех s О Sp (если Sp № Ж ). Предполагается, что каждый объект первичного сорта добавляет в W соответствующую константу того же сорта, которая может использоваться для образования термов конструируемого сорта. Носитель любого конструируемого сорта s О Sc есть множество Ts основных термов сорта s, т.е. термов сорта s, состоящих только из объектов первичных сортов и конструкторов из F. Переменных и других функций основные термы не содержат. Операции алгебры (соответствующие конструкторам) определяются следующим образом. Пусть f О F, тогда:
Из данного определения непосредственно следует У т в е р ж д е н и е 1.10.
Ђ Пример 1.5. Натуральные числа: первичных сортов нет; Число n > 0 представляется термом S(...S(0)...),
где S повторяется n раз. Пример 1.6. Последовательности: E - первичный сорт элементов
последовательности; Последовательность < e1,e2,e3 >
представляется термом Пример 1.7. Списки: E - первичный сорт элементов,
не являющихся списками; Разрешается опускать индексы конструкторов, а также применять
сокращения, используемые для последовательностей. Тогда список
< e1,< >,<e2,e3> >
представляется термом Алгоритм унификации.В алгебре термов часто возникает задача решения уравнения t1 = t2
(или даже системы таких уравнений), где t1, t2
- термы, возможно содержащие переменные. Под решением понимаются
такие значения переменных, при которых термы t1 и t2
становятся одинаковыми, унифицированными. Например, в алгебре
списков уравнение Подстановкой называется система уравнений вида q = {x1 = u1, ..., xn = un}, где xi - переменные, ui - термы, не содержащие переменных x1, ..., xn. Такая подстановка определяет переменные x1, ..., xn. Будем рассматривать также пустую подстановку { }. Пусть q - произвольная система
уравнений (возможно, пустая) или терм. Обозначим qq
результат применения подстановки
q к q, т.е. результат замены в q всех
вхождений каждой переменной xi на соответствующий
терм ui. Пусть q
и q ' Подстановка называется решением (или унификатором) системы уравнений E, если Eq является тождеством, т.е. выполняется при любых значениях переменных в данной алгебре. Решение q называется наиболее общим (НОР), если любое другое решение получается из q применением некоторой подстановки q '. Предыдущий пример решения является наиболее общим. Т е о р е м а 1.3. Система уравнений имеет решение тогда и только тогда, когда она имеет НОР. Следующий алгоритм находит НОР, если решение существует, в противно случае сообщает об отсутствии решения. Алгоритм 1.2 (унификации). Система уравнений E решается рекурсией по структуре системы.
Доказательство. Остаётся доказать, что алгоритм никогда не
зацикливается. Зациклиться он может из-за того, что на шаге 4
увеличивает число уравнений, а на шаге 5, при переходе от системы
E' к системе E'q,
удлиняет уравнения (в случае непустой подстановки
q ). Но зацикливания не
происходит, т.к. на шаге 4 уменьшается общее число символов в
системе уравнений, а на шаге 5 при непустой q
уменьшается число переменных в системе, а при пустой подстановке
система E' не меняется (при переходе от E к E'
число символов уменьшается) . Таким образом, при решении системы
число её переменных монотонно уменьшается (число символов в
уравнениях может при этом возрастать), а в промежутках между
изменением числа переменных монотонно уменьшается число символов в
системе, что в конечном итоге приводит к завершению алгоритма.
Машины Тьюринга.Машины Тьюринга представляют собой простой формально определённый рекурсивно полный класс алгоритмов (это недоказуемое утверждение называется тезисом Чёрча-Тьюринга). Каждая машина Тьюринга представляет один алгоритм. Она состоит из
Правило имеет вид (q,a) ®
(q',a',S), где q и q' Конфигурацией машины Тьюринга называется цепочка
вида aqab,
где aab
Формально, машина Тьюринга определяется набором M = (S,Q,P,q0,qf),
где На самом деле, рекурсивно полным будет класс всех машин Тьюринга с произвольным фиксированным алфавитом S, например, с S = {L,1}. Разные алфавиты мы используем только для удобства программирования. Назовём L-выходом (выходом с пустым входом) машины Тьюринга любую цепочку a = bg, не начинающуюся и не кончающуюся символом L, если есть вычисление q0L ®T* Lmb qf g Ln (m, n ³ 0). С помощью тезиса Чёрча-Тьюринга можно доказать следующее утверждение (доказательство опускаем). У т в е р ж д е н и е 1.9. Пусть задан произвольный конечный алфавит A. Произвольное множество цепочек B в алфавите A рекурсивно перечислимо тогда и только тогда, когда оно совпадает с множеством L-выходов некоторой машины Тьюринга. Очевидно, что при |B|>1 машина должна быть недетерминированной. Пример 1.4. Пусть A = {a, b}. Множество A* всех цепочек в алфавите A рекурсивно перечислимо, т. к. совпадает с множеством L-выходов машины Тьюринга с правилами (q0,L)
® (q0,a,R), Вычисление для такой машины имеет вид q0L
® aq0L
® abq0L
® abbq0L
® abbqf L. Машины Тьюринга дают ещё классические примеры нерекурсивных множеств. Ограничимся классом машин с одним фиксированным ленточным алфавитом. Рассматривая программу машины как последовательность символов, можно закодировать её в этом ленточном алфавите и подать на вход любой машине из этого класса. Точно также можно программу машины подать на вход ей самой. Машина, для которой её собственная программа является допустимым входом, называется самоприменимой. В противном случае она называется несамоприменимой. Известно, что множество самоприменимых машин Тьюринга нерекурсивно, но рекурсивно перечислимо, а множество несамоприменимых машин не является рекурсивно перечислимым (и, следовательно, нерекурсивно). Таким образом, проблемы самоприменимости и несамоприменимости машин Тьюринга неразрешимы (но в разной степени).. |
||||||