Во-первых, чтобы развеять возможный когнитивный диссонанс: рассуждения о бесконечных структурах не проблема, мы делаем это постоянно. Пока структура конечно описываема, это не проблема. Вот несколько распространенных типов бесконечных структур:
- языки (наборы строк в некотором алфавите, которые могут быть конечными);
- древовидные языки (наборы деревьев над алфавитом);
- следы выполнения недетерминированной системы;
- действительные числа;
- наборы целых чисел;
- наборы функций от целых до целых чисел; ...
Коиндуктивность как самая большая точка фиксации
Там, где индуктивные определения строят структуру из элементарных строительных блоков, коиндуктивные определения формируют структуры из того, как их можно деконструировать. Например, тип списков, элементы которых находятся в наборе A
, определяется в Coq следующим образом:
Inductive list (A:Set) : Set :=
| nil : list A
| cons : A -> list A -> list A.
Неформально list
типа является самым маленьким типом , который содержит все значения , построенные из nil
и cons
конструкторов, с аксиомой , что . И наоборот, мы можем определить самый большой тип, который содержит все значения, построенные из этих конструкторов, сохраняя аксиому дискриминации:∀ хY,n i l ≠ c o n sИксY
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 0
0 : : 1 : : 2 : : ...
Рекурсивное определение правильно сформировано, если результат построен из меньших блоков: рекурсивные вызовы должны работать на меньших входах. Определение Corecursive будет правильно сформировано, если в результате будут построены более крупные объекты. Индукция смотрит на конструкторов, коиндукция смотрит на деструкторов. Обратите внимание, что дуальность не только меняется с меньшего размера на больший, но и вводится в выходные данные. Например, причина, по которой вышеприведенные определения flipflop
и from
определения являются правильными, заключается в том, что вызов corecursive защищен вызовом 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 - это последовательность меток ребер на пути в графе.
AВSL→R ⊆ S× S
∀ ( p , q) ∈ R , если p →αп' тогда ∃ q',Q→αQ' и ( р', д') ∈ R
AВВAр
р1р2р1∪ R2
Сходство является коиндуктивным свойством. Его можно определить как наибольшую точку фиксации оператора: это наибольшее отношение, которое при расширении для идентификации эквивалентных состояний остается неизменным.
Рекомендации