Структурная индукция

Материал из testwiki
Версия от 09:17, 29 января 2022; imported>Eoan Ermine (WPCleaner v2.04 - Check Wikipedia: исправление ошибок (Порядковый номер с надстрочным текстом))
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Структурная индукция — конструктивный метод математического доказательства, обобщающий математическую индукцию (применяемую над натуральным рядом) на произвольные рекурсивно определённые частично упорядоченные совокупности. Структурная рекурсия — реализация структурной индукции в форме определения, процедуры доказательства или программы, обеспечивающая индукционный переход над частично упорядоченной совокупностью.

ИзначальноШаблон:Переход метод использовался в математической логике, также нашёл применениеШаблон:Переход в теории графов, комбинаторике, общей алгебре, математической лингвистике, но наибольшее распространение как самостоятельно изучаемый метод получил в теоретической информатикеШаблон:Sfn, где применяется в вопросах семантики языков программирования, формальной верификации, вычислительной сложности, функционального программирования.

В отличие от нётеровой индукции — наиболее общей формы математической индукции, применяемой над произвольными фундированными множествами, — в понятии о структурной индукции подразумевается конструктивный характер, вычислительная реализация. При этом фундированность совокупности — свойство, необходимое для рекурсивной определяемости[1], таким образом, структурную рекурсию можно считать частным вариантом нётеровой индукцииШаблон:Sfn.

История

Использование метода встречается по крайней мере с 1950-х годов, в частности, в доказательстве теоремы Лося об ультрапроизведениях применяется индукция по построению формулы, при этом сам метод особым образом явно не назывался[2]. В те же годы метод применялся в теории моделей для доказательств над цепями моделей, считается, что появление термина «структурная индукция» связано именно с этими доказательствамиШаблон:Sfn. Карри поделил все виды применения индукции в математике на два типа — дедуктивную индукцию и структурную индукцию, классическую индукцию над натуральными числами считая подтипом последнейШаблон:Sfn.

С другой стороны, не позднее начала 1950-х годов метод трансфинитной индукции уже распространялся на произвольные частично упорядоченные множества, удовлетворяющие условию обрыва возрастающих цепей (что эквивалентно фундированности[3]), в то же время Генкин отсылал к возможности индукции «в некоторых типах частично-упорядоченных систем»[4]. В 1960-е годы метод закрепился под наименованием нётеровой индукции (по аналогии с нётеровым кольцом, в котором выполнено условие обрыва возрастающих цепей идеалов)[5].

Явное определение структурной индукции, ссылающееся как на рекурсивную определимость, так и на нётерову индукцию, дано Шаблон:Нп2 в конце 1960-х годовШаблон:Sfn, и в литературе по информатике именно к нему относят введение метода[6][7].

В дальнейшем в информатике возникло несколько направлений, основывающихся на структурной индукции как базовом принципе, в частности, таковы структурная операционная семантика языков программирования Шаблон:Нп2[8], серия индуктивных методов формальной верификации[9][10], структурно-рекурсивный язык запросов UnQL[11]. В 1990-е годы в теоретической информатике получил распространение метод коиндукции, применяемый над нефундированными (как правило, бесконечными) структурами и считающийся двойственным структурной индукции[12].

В связи с широким применением в теоретической информатике и немногочисленностью упоминаний в математической литературе, по состоянию на 2010-е годы считается, что выделение структурной индукции как особого метода в большей степени характерно для информатики, нежели для математикиШаблон:Sfn.

Определение

Наиболее общее определениеШаблон:SfnШаблон:Sfn вводится для класса структур 𝔖 (без уточнения природы структур S𝔖) с отношением частичного порядка между структурами , с условием минимального элемента S0 в 𝔖 и условием наличия для каждой S𝔖 вполне упорядоченной совокупности из всех строго предшествующих ей структур: S={T𝔖TS}. Принцип структурной индукции в этом случае формулируется следующим образом: если выполнение свойства P для 𝔖 следует из выполнения свойства для всех строго предшествующих ей структур, то свойство выполнено и для всех структур класса; символически (в обозначениях систем натурального вывода):

TS:P(T)P(S)S𝔖:P(S).

Рекурсивность в этом определении реализуется совокупностью вложенных структур: как только есть способ определять выводить свойства структуры исходя из свойств всех предшествующих ей, можно говорить о рекурсивной определимости структуры.

В литературе по информатике распространена и другая форма определения структурной индукции, ориентированная на рекурсию по построениюШаблон:Sfn, в ней 𝔖 рассматривается как класс объектов, определённых над некоторым множеством атомарных элементов 𝒜𝔖 и набором операций {i:𝔖ki𝔖}, при этом каждый объект S𝔖 — результат последовательного применения операций к атомарным элементам. В этой формулировке принцип утверждает, что свойство P выполняется для всех объектов S𝔖, как только имеет место для всех атомарных элементов и для каждой операции i из выполнения свойства для элементов S1,,Sik следует выполнение свойства для i(S1,,Sik):

A𝒜:P(A),i:(P(S1),P(SikP(i(S1,,Sik))S𝔖:P(S).

Роль отношения частичного порядка из общего определения здесь играет отношение включения по построению: j=1ikSji(S1,,Sik)Шаблон:Sfn.

Примеры

Введение принципа в информатику мотивировалось рекурсивным характером таких структур данных, как списки и деревьяШаблон:Sfn. Первый пример над списком, приводимый Бёрстоллом — утверждение о свойствах свёртки списков с элементами типа T двухместной функцией :T2T и начальным элементом свёртки tT в связи с конкатенацией списков :

(S1S2)t=S1(S2t).

Структурная индукция в доказательстве этого утверждения ведётся от пустых списков — если S1=, то:

левая часть, по определению конкатенации: (S2)t=S2t,
правая часть, по определению свёртки: (S2t)=S2t

и в случае, если список непуст, и начинается элементом x, то:

левая часть, по определениям конкатенации и свёртки: ((x::S1)S2)t=x((S1S2)t),
правая часть, по определению свёртки и предположению индукции: (x::S1)(S2t)=x((S1S2)t).

Предположение индукции основывается на истинности утверждения для S1 и включении S1x::S1.

В теории графов структурная индукция часто применяется для доказательств утверждений о многодольных графах (с использованием перехода от (k1)-дольных к k-дольным), в теоремах об Шаблон:Iw, свойств деревьев и лесовШаблон:Sfn. Другие структуры в математике, для которых применяется структурная индукция — перестановки, матрицы и их тензорные произведения, конструкции из геометрических фигур в комбинаторной геометрии.

Типичное применение в математической логике и универсальной алгебре — структурная индукция по построению формул из атомарных термов, например, показывается, что выполнение требуемого свойства P для термов A и B влечёт P(AB), P(AB), P(¬A) и так далее. Также по построению формул работают многие структурно-индуктивные доказательства в теории автоматов, математической лингвистике; для доказательства синтаксической корректности компьютерных программ широко используется структурная индукция по БНФ-определению языка (иногда даже выделяется в отдельный подтип — БНФ-индукцияШаблон:Sfn).

Примечания

Шаблон:Примечания

Литература

Шаблон:Нет иллюстрации