Pourquoi il est impossible de déclarer un principe d'induction pour les chiffres de l'Église


17

Imaginez, nous avons défini les nombres naturels dans le calcul lambda typé de manière dépendante comme des chiffres de l'Église. Ils peuvent être définis de la manière suivante:

SimpleNat = (R : Set) → R → (R → R) → R

zero : SimpleNat
zero = λ R z _ → z

suc : SimpleNat → SimpleNat
suc sn = λ R z s → s (sn R z s)

SimpleNatRec : (R : Set) → R → (R → R) → SimpleNat → R
SimpleNatRec R z s sn = sn R z s

Cependant, il semble que nous ne pouvons pas définir les chiffres de l'Église avec le type de principe d'induction suivant:

NatInd : (C : Nat -> Set) -> (C zero) -> ((n : Nat) -> C n -> C (suc n)) -> (n : Nat) -> (C n)

Pourquoi en est-il ainsi? Comment puis-je le prouver? Il semble que le problème soit de définir un type pour Nat qui devient récursif. Est-il possible de modifier le calcul lambda pour permettre cela?

Réponses:


20

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:TypeTypeUNEUNET(UNE)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

UNE:=X:Type(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(Oui)Ouiϕ:UNEOui Nous voyons donc que A estfaiblement
ϕ(une)=uneOuiF.
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

Nunet=X:Type((1+X)X)X=X:Type(X×(XX))X=X:TypeX(XX)X.

La réponse technique à votre question est la suivante: il existe des modèles de théorie des types dans lesquels le type SimpleNatcontient des éléments exotiques qui ne correspondent pas aux chiffres, et de plus, ces éléments cassent le principe d'induction. Le type SimpleNatdans ces modèles est trop grand et n'est qu'une faible algèbre initiale.


8
Je conviens que la réponse est excellente, mais quelques références pourraient être utiles ici: l' article de Geuvers sur la non-dérivabilité de l'induction et l'article de Neel K et Derek Dreyer sur l'obtention (une) induction de la paramétricité . Je ne suis pas au courant d'un article qui explore pleinement la relation.
cody

Je ne suis pas trop fort sur les références dans ce domaine, merci @cody!
Andrej Bauer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.