Jump to content

Коиндукция

(Перенаправлено с Коиндуктивного )

В информатике коиндукция это метод определения и доказательства свойств систем одновременно взаимодействующих объектов .

Коиндукция — это математический аналог структурной индукции . [ нужна ссылка ] Коиндуктивно определенные типы данных известны как кодаты и обычно представляют собой бесконечные структуры данных , такие как потоки .

В качестве определения или спецификации коиндукция описывает, как объект можно «наблюдать», «разбивать» или «разрушать» на более простые объекты. В качестве метода доказательства его можно использовать, чтобы показать, что уравнение удовлетворяется всеми возможными реализациями такой спецификации.

Для генерации кодовых данных и управления ими обычно используются коркурсивные функции в сочетании с ленивыми вычислениями . Неформально, вместо того, чтобы определять функцию путем сопоставления с образцом каждого из индуктивных конструкторов, определяется каждый из «деструкторов» или «наблюдателей» над результатом функции.

В программировании кологическое программирование (для краткости co-LP) «является естественным обобщением логического программирования и коиндуктивного логического программирования, которое, в свою очередь, обобщает другие расширения логического программирования, такие как бесконечные деревья, ленивые предикаты и параллельные взаимодействующие предикаты. Co-LP имеет приложения к рациональным деревьям, проверке бесконечных свойств, ленивым вычислениям, параллельному логическому программированию , проверке моделей , биподобия и т. д.». доказательствам [1] Экспериментальные реализации совместного LP доступны в Техасском университете в Далласе. [2] и на языке Logtalk (примеры см. [3] ) и SWI-Пролог .

Описание

[ редактировать ]

В [4] дается краткое изложение как принципа индукции , так и принципа коиндукции . в первую очередь не рассматривается Хотя в данной статье индукция , полезно сразу рассмотреть их несколько обобщенные формы. Чтобы сформулировать принципы, необходимо сделать несколько предварительных сведений.

Предварительные сведения

[ редактировать ]

Позволять быть набором и быть монотонной функцией , то есть:

Если не указано иное, будем считать монотонным.

X является F-замкнутым, если
X является F-согласованным, если
X является неподвижной точкой, если

Эти термины можно интуитивно понять следующим образом. Предположим, что представляет собой набор утверждений, и операция, приводящая к последствиям . Затем является F-замкнутым, когда вы не можете сделать вывод больше, чем вы уже утверждали, в то время как является F-непротиворечивым , когда все ваши утверждения поддерживаются другими утверждениями (т. е. нет «не- F -логических предположений»).

Теорема Кнастера -Тарского говорит нам, что наименьшая неподвижная точка (обозначается ) задается пересечением всех F-замкнутых множеств, а наибольшая неподвижная точка (обозначается ) задается объединением всех F-согласованных множеств. Теперь мы можем сформулировать принципы индукции и коиндукции.

Определение

[ редактировать ]
Принцип индукции : если является F-замкнутым , то
Принцип коиндукции : если является F-согласованным , то

Обсуждение

[ редактировать ]

Как уже говорилось, принципы несколько неясны, но их можно с пользой представить следующим образом. Предположим, вы хотите доказать свойство . По принципу индукции достаточно представить F-замкнутое множество на который удерживается имущество. Предположим, вы хотите показать, что . Тогда достаточно показать F-согласованное множество, что известно, что он является членом.

Определение набора типов данных

[ редактировать ]

Рассмотрим следующую грамматику типов данных:

То есть в набор типов входит "нижний тип" , "высший тип" и (неоднородные) списки. Эти типы можно идентифицировать по строкам в алфавите. . Позволять обозначают все (возможно, бесконечные) строки над . Рассмотрим функцию :

В этом контексте означает «объединение строк , символ и строка .» Теперь нам следует определить наш набор типов данных как фиксированную точку , но важно, возьмем ли мы наименьшую или наибольшую фиксированную точку.

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

Все типы данных в конечны

Чтобы прийти к этому выводу, рассмотрим множество всех конечных строк над . Четко не может создать бесконечную строку, поэтому оказывается, что это множество F-замкнуто , из чего следует вывод.

Теперь предположим, что мы берем как наш набор типов данных. Мы хотели бы использовать принцип коиндукции, чтобы доказать следующее утверждение:

Тип

Здесь обозначает бесконечный список, состоящий из всех . Чтобы использовать принцип коиндукции , рассмотрим набор:

Это множество оказывается F-согласованным , и поэтому . Это зависит от подозрительного заявления, которое

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

Коиндуктивные типы данных в языках программирования

[ редактировать ]

Рассмотрим следующее определение потока : [5]

data Stream a = S a (Stream a)

-- Stream "destructors"
head (S a astream) = a
tail (S a astream) = astream

Казалось бы, это определение недостаточно обосновано , но, тем не менее, оно полезно в программировании и о нем можно рассуждать. В любом случае поток — это бесконечный список элементов, из которого вы можете наблюдать первый элемент или помещать элемент перед ним, чтобы получить другой поток.

Источник: [6]

Рассмотрим эндофунктор в категории наборы :

Последняя F-коалгебра имеет связанный с ним следующий морфизм:

Это порождает еще одну коалгебру с ассоциированным морфизмом . Потому что является окончательным , существует единственный морфизм

такой, что

Состав индуцирует другой F -коалгебры гомоморфизм . С окончателен, этот гомоморфизм единственен и, следовательно, . Итого имеем:

Это свидетельствует об изоморфизме , что категорически указывает на то, что является фиксированной точкой и оправдывает обозначения.

Поток как конечная коалгебра

[ редактировать ]

Мы покажем это

Stream A

является конечной коалгеброй функтора . Рассмотрим следующие реализации:

out astream = (head astream, tail astream)
out' (a, astream) = S a astream

Легко увидеть, что они взаимно обратны, что свидетельствует об изоморфизме. Более подробную информацию смотрите в ссылке.

Мы покажем, как принцип индукции включает в себя математическую индукцию. Позволять быть некоторым свойством натуральных чисел . Примем следующее определение математической индукции:

Теперь рассмотрим функцию :

Это не должно быть трудно увидеть . Следовательно, по принципу индукции , если мы хотим доказать какое-то свойство из , достаточно показать, что является F-замкнутым . Подробно нам потребуется:

То есть,

Как уже говорилось, это именно математическая индукция .

См. также

[ редактировать ]
  1. ^ «Со-логическое программирование | Lambda the Ultimate» .
  2. ^ «Домашняя страница Гопала Гупты» .
  3. ^ «Logtalk3/Examples/Coinduction у мастера · LogtalkDotOrg/Logtalk3» . Гитхаб .
  4. ^ Бенджамин С. Пирс . «Типы и языки программирования» . Массачусетский технологический институт Пресс .
  5. ^ Декстер Козен , Александра Сильва . «Практическая коиндукция». CiteSeerX   10.1.1.252.3961 .
  6. ^ Ральф Хинце (2012). «Общее программирование с дополнениями» . Общее и индексированное программирование . Конспекты лекций по информатике. Том. 7470. Спрингер. стр. 47–129. дои : 10.1007/978-3-642-32202-0_2 . ISBN  978-3-642-32201-3 .

Дальнейшее чтение

[ редактировать ]
Учебники
Вводные тексты
История
Разнообразный
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 968575dc4f47306a9dc1a9e6f0333310__1713759060
URL1:https://arc.ask3.ru/arc/aa/96/10/968575dc4f47306a9dc1a9e6f0333310.html
Заголовок, (Title) документа по адресу, URL1:
Coinduction - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)