Що таке коіндукція?


67

Я чув про (структурну) індукцію. Це дозволяє будувати кінцеві структури з менших і дає доказові принципи для міркувань про такі структури. Ідея досить зрозуміла.

А як щодо коіндукції? Як це працює? Як можна сказати щось безперечне про нескінченну структуру?

Існує (принаймні) два кути, на які слід звернути увагу, а саме коіндукція як спосіб визначення речей і як техніка доказування.

Що стосується коіндукції як доказової техніки, то який взаємозв'язок між коіндукцією та бісімуляцією?


4
Я насправді хотів би знати відповідь на це :)
Суреш

1
Дивіться також cs.cornell.edu/~kozen/papers/Structural.pdf для підручника.
mrp

Відповіді:


59

По-перше, розвіяти можливий когнітивний дисонанс: міркування про нескінченні структури не є проблемою, ми робимо це постійно. Поки структура є гранично описаною, це не проблема. Ось кілька поширених типів нескінченних структур:

  • мови (набори рядків над деяким алфавітом, який може бути кінцевим);
  • дерева дерев (набори дерев над деяким алфавітом);
  • сліди виконання недетермінованої системи;
  • реальні числа;
  • множини цілих чисел;
  • набори функцій від цілих чисел до цілих чисел; …

Коіндуктивність як найбільший фіксований момент

Якщо індуктивні визначення будують структуру з елементарних будівельних блоків, коіндуктивні визначення формують структури з того, як їх можна деконструювати. Наприклад, тип списків, елементи яких є в наборі A, визначений у Coq:

Inductive list (A:Set) : Set :=
  | nil : list A
  | cons : A -> list A -> list A.

Неофіційно listтип - це найменший тип, який містить усі значення, побудовані з конструкторів nilта cons, з аксіомою, що . І навпаки, ми можемо визначити найбільший тип, який містить усі значення, побудовані з цих конструкторів, зберігаючи аксіому дискримінації:ху,нiлcонсху

CoInductive colist (A:Set) : Set :=
  | conil : colist A
  | cocons : A -> colist A -> colist A.

listізоморфна підгрупі colist. Крім того, colistмістить нескінченні списки: списки з coconsна cocons.

CoFixpoint flipflop : colist ℕ := cocons 1 (cocons 2 flipflop).
CoFixpoint from (n:ℕ) : colist ℕ := cocons n (from (1 + n)).

flipflopє нескінченним (циклічний список) ; це нескінченний список натуральних чисел 0 : : 1 : : 2 : : ... .1::2::1::2::from 00::1::2::

Рекурсивне визначення добре формується, якщо результат будується з менших блоків: рекурсивні дзвінки повинні працювати на менших входах. Основневизначальне визначення добре формується, якщо результат будує більші об'єкти. Індукція дивиться на конструктори, індукція дивиться на деструктори. Зверніть увагу, як подвійність не тільки змінюється меншою на більшу, але й вкладає у виходи. Наприклад, причина сформульованих вище flipflopта fromвизначень добре полягає в тому, що coconsв обох випадках виклик основного потоку захищається викликом до конструктора.

Якщо висловлювання про індуктивні об'єкти мають індуктивні докази, заяви про коіндуктивні об'єкти мають коіндуктивне доведення. Наприклад, визначимо нескінченний присудок на колістях; інтуїтивно, нескінченні колісти - це ті, на яких не закінчується conil.

CoInductive Infinite A : colist A -> Prop :=
  | Inf : forall x l, Infinite l -> Infinite (cocons x l).

Щоб довести, що колісти форми from nнескінченні, ми можемо міркувати шляхом спільної індукції . from nдорівнює cocons n (from (1 + n)). Це показує, що from nбільший за from (1 + n), що нескінченний гіпотезою про індукцію, отже from n, нескінченний.

Біологічність, індуктивна властивість

Коіндукція як доказова техніка застосовується також до кінцевих предметів. Інтуїтивно кажучи, індуктивні докази про об'єкт базуються на тому, як об’єкт побудований. Коіндуктивні докази ґрунтуються на тому, як об’єкт можна розкласти.

При вивченні детермінованих систем прийнято визначати еквівалентність за допомогою індуктивних правил: дві системи є рівнозначними, якщо ви можете отримати від однієї до іншої ряд перетворень. Такі визначення, як правило, не охоплюють безліч різних способів недетермінованих систем можуть мати однакову (помітну) поведінку, незважаючи на різну внутрішню структуру. (Модернізація також корисна для опису систем, що не закінчуються, навіть коли вони детерміновані, але на цьому я не зупинюся.)

Недетерміновані системи, такі як паралельні системи, часто моделюються міченими перехідними системами . LTS - це спрямований графік, на якому краї позначені міткою. Кожен край представляє можливий перехід системи. Слід LTS - це послідовність крайових міток над контуром у графі.

АБSLRS×S

(p,q)R, якщо pαp' тоді q',qαq' і (p',q')R

АББАR

R1R2R1R2

Біологічність - це індуктивна властивість. Його можна визначити як найбільшу точку фіксації оператора: це найбільше відношення, яке при розширенні для виявлення еквівалентних станів залишається тим самим.

Список літератури

  • Кок і обчислення індуктивних конструкцій

    • Ів Берто і П'єр Кастеран. Доведення інтерактивних теорем і розробка програм - Coq'Art: Обчислення індуктивних конструкцій . Спрингер, 2004. Ч. 13. [ веб-сайт ] [ Амазонка ]
    • Едуардо Гіменес. Застосування коіндуктивних типів у coq: перевірка протоколу змінного біту . У семінарі "Типи доказів та програм" , № 1158, в Лекційних записках з інформатики , стор. 135–152. Springer-Verlag, 1995. [ Книги Google ]
    • Едуардо Гіменес та П'єр Кастеран. Навчальний посібник щодо [Co-] індуктивних типів у Coq. 2007. [ PDF ]
  • Мічені перехідні системи та бісумуляції

    • Робін Мілнер. Зв'язок та одночасність . Prentice Hall, 1989.
    • Девід Сангіоргі. Про витоки бісумуляції та коіндукції . Операції ACM з мов та систем програмування (TOPLAS), том 31 випуск 4, травень 2009 р. [ PDF ] [ ACM ] Пов’язані слайди курсу: [ PDF ] [ CiteSeer ]
    • Девід Сангіоргі. Пі-числення: теорія мобільних процесів . Cambridge University Press, 2003. [ Амазонка ]

    • Глава в завіреної програмуванні з залежними типами А. Chlipala

    • Д. Сангіоргі. "Вступ до бізімуляції та коіндукції". 2011. [ PDF ]
    • Д. Сангіоргі та Дж. Руттен. Розширені теми з питань бисимуляції та коіндукції . Cambridge University Press, 2012. [ CUP ]

21

Розглянемо наступне спонукальне визначення:

εТшТашТашТбашТ

Тб

Т={ε,а,аа,ба,ааа,аба,}=L((баа))Σ.

ТТ={а,б}

f:2Σ2Σ

f(Т)=Т{ε}{ашшТ}{башашТ}

Тff(2Σ,){ε}Т

шашашшТ'Т'ΣббТ'=L((баа)ω)

fТ'Т'{ε}Σ


Позначення:

  • Σ=ΣΣω
  • ΣωΣ

шТашТ
{ε}


2
Сподіваюсь, індуктивне пояснення доречне.
Рафаель

ω

ωΣ

Приємне пояснення. Однак я не розумію цього речення We can not turn the anchor around, so it goes away.
hengxin

εТ'εТ'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.