Вопрос, который вы задаете, интересен и известен. Вы используете так называемое нечеткое кодирование натуральных чисел. Позвольте мне объяснить немного фона.
Учитывая конструктор типа , нас может заинтересовать «минимальный» тип удовлетворяющий . В терминах теории категорий - функтор, а - начальная -алгебра. Например, если то соответствует натуральным числам. Если то - тип конечных бинарных деревьев. ≅ Т ( ) Т Т Т ( Х ) = 1 + Х Т ( Х ) = 1 + Х × Х AT: T y p e → T y p eAA ≅T( А )TATT( X) = 1 + XAT( X) = 1 + X× XA
Идея с длинной историей заключается в том, что исходная -алгебра имеет тип
(Вы используете нотацию Agda для зависимых продуктов, но я использую более традиционную математическую нотацию.) Почему это должно быть? Итак, существу кодирует принцип рекурсии для начальной алгебры: для любой алгебры со структурным морфизмом мы получаем гомоморфизм алгебр помощью
Таким образом , мы видим , что является слабо: = Π Х : Т у р е ( Т ( Х ) → Х ) → Х . A T T Y f : T ( Y ) → Y ϕ : A → Y ϕ ( a ) = aT
A : = ∏Икс: T y p e( Т( X) → X) → X,
ATTYе: T( Y) → Yϕ : A → YA ϕ A Kϕ ( a ) = aYе,
Aначальный точно. Чтобы он был начальным, мы должны знать, что уникальна. Это не верно без дополнительных предположений, но детали являются техническими и противными и требуют чтения некоторого справочного материала. Например, если мы можем показать удовлетворительную
теорему параметричности, то мы победим, но есть и другие методы (такие как массирование определения и допущение -аксиомы и экстенсиональности функции).
φAК
Применим вышеприведенное к :
Мы получили церковные цифры ! И теперь мы также понимаем, что мы получим принцип рекурсии бесплатно, потому что церковные цифры являются принципом рекурсии для чисел, но мы не получим индукцию без параметризации или подобного устройства.T( X) = 1 + X
N a t = ∏Икс: T y p e( ( 1 + Х) → X) → X= ∏Икс: T y p e( X× ( X→ X) ) → X= ∏Икс: T y p eИкс→ ( X→ X) → X,
Технический ответ на ваш вопрос таков: существуют модели теории типов, в которых тип SimpleNat
содержит экзотические элементы, которые не соответствуют цифрам, и, кроме того, эти элементы нарушают принцип индукции. Тип SimpleNat
в этих моделях слишком велик и является лишь слабой начальной алгеброй.