Мое понимание (которое может быть неправильным) звучит так:
Коиндукция - это способ доказать вещи о бесконечных структурах данных.
Точно так же, как индукция, поначалу это кажется обманом. Главное, что нужно понять, это то, что вместо:
- доказательство того, что что-то работает для базовых случаев
- доказательство того, что оно работает для каждого "одного шага", при условии, что оно работает для всех (конечных) случаев
- затем утверждая, что оно работает для всех (конечных) случаев (это индукция)
вы вместо этого:
- докажите, исходя из предположения, что он работает для всех не конечных случаев, что он работает для каждого "одного шага"
- утверждают, что поэтому он работает для всех не конечных случаев (это коиндукция, и это оправдано, поскольку каждый не конечный случай представляет собой (конечную) последовательность одиночных шагов, за которыми следует бесконечная часть, которая работает по гипотезе) 1020 *
Коиндукция является полезным методом доказательства для установления структурно «очевидных» утверждений о бесконечных структурах данных. К сожалению (или нет?) Тот факт, что он обычно полезен для доказательства «очевидных» вещей, усложняет понимание того, как он вообще что-то доказывает, а не просто машет рукой.
Эта статья полезна в некоторых отношениях и вводит в заблуждение других (по крайней мере, тех, кто не связан с теорией категорий, среди которых я себя считаю).