Что такое индукция-индукция?


11

Что такое индукция-индукция ?

Ресурсы, которые я нашел:

Первые две ссылки слишком кратки для меня, а последние две слишком технические. Кто-нибудь может объяснить это в терминах непрофессионала? Было бы лучше, если бы был код Агды.


В вашей четвертой цитате есть код Агды.
— Жиль "ТАК - перестать быть злым"

Конечно, но было бы очень трудно прочитать этот огромный объем кода. И (я думаю) супер просто, увидев 1 или 2 примера.
— 盛安安

Ответы:


13

Дополнение 2016-10-03: Я перепутал индукцию-индукцию и индукцию-рекурсию (не первый раз, когда я это сделал!). Мои извинения за беспорядок. Я обновил ответ, чтобы покрыть оба.

Я нахожу объяснения в статье Форсберга и Сетцера. Конечная аксиоматизация индуктивно-индуктивных определений освещает.

Индукция-рекурсия

Индуктивно-рекурсивное определение - это определение, в котором мы определяем тип A и семейство типов B:A→Type одновременно особым образом:

  1. A определяется как индуктивный тип.
  2. B определяется рекурсии наA .
  3. Важно отметить , что определение A может использовать B .

Без третьего требования, мы могли бы сначала определить A , а затем отдельно B .

Вот детский пример. Определим A индуктивно, чтобы иметь следующие конструкторы:

  • a:A
  • ℓ:(∑x:AB(x))→A

Семейство типов B определяется как

  • B(a)=bool
  • B(ℓ(x,f))=nat

A

a:A.
B(a)bool
ℓ(a,false)
ℓ(a,true)
AB(ℓ(a,false))=B(ℓ(a,true))=natn:nat
ℓ(ℓ(a,false),n):A
ℓ(ℓ(a,true),n):A
B(ℓ(ℓ(a,true),n))=nat
m:nat
ℓ(ℓ(ℓ(a,true),n),m):A
ℓ(ℓ(ℓ(a,false),n),m):A
A

Индукция индукции

AB:A→Type

  1. A
  2. BA
  3. AB

B

B(c(…))=⋯
c(…)ABB

A

  • a:A
  • ℓ:(∑x:AB(x))→A

B

  • Tru:B(a)
  • Fal:B(a)
  • x:Ay:B(x)Zer:B(ℓ(x,y))
  • x:Ay:B(x)z:B(ℓ(x,y))Suc(z):B(ℓ(x,y))

BB(a)B(ℓ(x,y))


почему, черт возьми, кто-то может определять такие типы данных D:
— 盛安安

7
Для того, чтобы научить, что такое индуктивно-индуктивный тип. Я мог бы привести вам реальный пример, а именно тип вселенной, но это может сбить с толку.
— Андрей Бауэр

3
@AndrejBauer Для меня это больше похоже на индукцию-рекурсию. Индукция-индукция - это когда типовое семейство определяется как индуктивный тип .
— Gallais

2
Ой, ты абсолютно прав. Я исправлю это.
— Андрей Бауэр

ℓ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.