Питання, яке ви задаєте, цікаве і відоме. Ви використовуєте так зване непередбачуване кодування натуральних чисел. Дозвольте мені пояснити трохи тло.
Враховуючи конструктор типу , нас може зацікавити "мінімальний" тип A, що задовольняє A ≅ T ( A ) . З точки зору теорії категорій Т є функтором, а А - початковою Т -алгеброю. Наприклад, якщо T ( X ) = 1 + X, то A відповідає натуральним числам. Якщо T ( X ) = 1 +Т: T y p e → T y p eАА ≅Т( А )ТАТТ( X) = 1 + XА то A - тип кінцевих бінарних дерев.Т( X) = 1 + X× XА
Ідея з тривалою історією є те , що початкова - алгебра є тип
: = Π Х : Т у р е ( Т ( Х ) → Х ) → Х .
(Ви використовуєте позначення Agda для залежних продуктів, але я використовую більш традиційні математичні позначення.) Чому це має бути? Ну, A по суті кодує принцип рекурсії для початкової Т- алгебри: дається будь-яка Т -алгебра Y зі структурним морфізмом f : T ( YТ
A : = ∏Х: Т у р е( Т( X) → X) → X.
АТТY , отримаємо гомоморфізм алгебри
ϕ : A → Y від
ϕ ( a ) = af: Т( Y) → Yϕ : А → У
Таким чиномми бачимощоє
слабопочатковим точно. Щоб це було початковим, ми повинні знати, що
ϕ також унікальний. Це неправда без подальших припущень, але деталі технічні та неприємні та вимагають ознайомлення з деяким довідковим матеріалом. Наприклад, якщо ми можемо показати задовільну
теорему параметричності, то ми виграємо, але є й інші методи (наприклад, масаж визначення
А та припущення
K -аксіоми та розширення функції).
ϕ ( a ) = aYf.
АϕАК
Застосуємо сказане до :
N a t = ∏ X : T y p e ( ( 1 + X ) → X ) → X = ∏ X : T y p e ( X × ( X → X ) ) → X = ∏ X : T y p eТ( X) = 1 + X
У нас є церковні цифри! І тепер ми також розуміємо, що отримаємо принцип рекурсії безкоштовно, тому що церковні цифриєпринципом рекурсії для чисел, але ми не отримаємо індукцію без параметричності чи подібного пристрою.
N a t = ∏Х: Т у р е( ( 1 + X) → X) → X= ∏Х: Т у р е( X× ( X→ X) ) → X= ∏Х: Т у р еХ→ ( X→ X) → X.
Технічна відповідь на ваше запитання така: існують моделі теорії типів, в яких тип SimpleNat
містить екзотичні елементи, які не відповідають цифрам, і, крім того, ці елементи порушують принцип індукції. Тип SimpleNat
у цих моделей занадто великий і є лише слабкою початковою алгеброю.