Je pensais aux preuves et suis tombé sur une observation intéressante. Les preuves sont donc équivalentes aux programmes via l'isomorphisme de Curry-Howard, et les preuves circulaires correspondent à une récursion infinie. Mais nous savons par le problème de l'arrêt qu'en général, tester si un programme arbitraire se reproduit pour toujours est indécidable. Par Curry-Howard, cela signifie-t-il qu'aucun «vérificateur d'épreuves» ne peut déterminer si une épreuve utilise un raisonnement circulaire?
J'ai toujours pensé que les preuves sont censées être composées d'étapes facilement vérifiables (qui correspondent à des applications de règles d'inférence), et vérifier toutes les étapes vous donne la certitude que la conclusion suit. Mais maintenant je me demande: peut-être qu'il est en fait impossible d'écrire un tel correcteur d'épreuves, car il n'y a aucun moyen de contourner le problème d'arrêt et de détecter le raisonnement circulaire?
la source
Function
ou desProgram Fixpoint
constructions pour prouver qu'une fonction est totale si le vérificateur de totalité échoue. Un exemple simple est la fonction de fusion-tri sur les listes. Il faut prouver manuellement que nous avons divisé les listes (de longueur> 1) en sous-listes strictement plus petites.Program
et similaires sont un hareng rouge. Ils ne changent pas la théorie. Ce qu'ils font, c'est du sucre syntaxique pour utiliser une mesure dans une preuve: plutôt que de raisonner que l'objet qui vous intéresse devient plus petit, vous ajoutez un niveau d'indirection: calculer un autre objet devient plus petit (par exemple une certaine taille) et prouver qu'il devient plus petit. Voir laWf
bibliothèque.