La question que vous posez est intéressante et connue. Vous utilisez le codage dit imprédicatif des nombres naturels. Permettez-moi d'expliquer un peu l'arrière-plan.
Étant donné un constructeur de type , nous pourrions être intéressés par le type "minimal" A satisfaisant A ≅ T ( A ) . En termes de théorie des catégories, T est un foncteur et A est l' algèbre T initiale . Par exemple, si T ( X ) = 1 + X, alors A correspond aux nombres naturels. Si T ( X ) = 1 XT: T y p e → T y p eUNEA ≅T( A )TUNETT( X) = 1 + XUNE puis A est le type d'arbres binaires finis.T( X) = 1 + X× XUNE
Une idée avec une longue histoire est que le premier -alg'ebre est le type
A : = Π X : T y p e ( T ( X ) → X ) → X .
(Vous utilisez la notation Agda pour les produits dépendants, mais j'utilise une notation mathématique plus traditionnelle.) Pourquoi cela devrait-il être? Eh bien, A code essentiellement le principe de récursivité pour l'initialeT
A : = ∏X: T y p e( T( X) → X) → X.
UNEalgèbre
T: étant donné toutealgèbre
T Y avec un morphisme de structure
f : T ( YTTOui , on obtient un homomorphisme d'algèbre
ϕ : A → Y par
ϕ ( a ) = aF: T( O) → Yϕ : A → Y
Nous voyons donc que
A est
faiblementϕ ( a ) = aOuiF.
UNE initial à coup sûr. Pour qu'il soit initial, nous devons savoir que
est également unique. Ce n'est pas vrai sans autres hypothèses, mais les détails sont techniques et désagréables et nécessitent la lecture de certains documents d'information. Par exemple, si nous pouvons montrer un
théorème de paramétrie satisfaisant
, alors nous gagnons, mais il existe également d'autres méthodes (comme masser la définition de
A et supposer le
K- axiome et l'extensionnalité de la fonction).
ϕUNEK
T( X) = 1 + X
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 eX→ ( X→ X) → X.
La réponse technique à votre question est la suivante: il existe des modèles de théorie des types dans lesquels le type SimpleNat
contient des éléments exotiques qui ne correspondent pas aux chiffres, et de plus, ces éléments cassent le principe d'induction. Le type SimpleNat
dans ces modèles est trop grand et n'est qu'une faible algèbre initiale.