Le théorème smn est-il le même concept que le curry?


12

J'étudie le théorème smn et le concept m'a rappelé le curry.

De l'article de wikipedia sur le théorème smn :

le théorème dit que pour un langage de programmation donné et des entiers positifs m et n, il existe un algorithme particulier qui accepte en entrée le code source d'un programme avec m + n variables libres, ainsi que m valeurs. Cet algorithme génère du code source qui substitue efficacement les valeurs des m premières variables libres, laissant le reste des variables libres.

Extrait d'un article sur le curry :

Intuitivement, le curry dit "si vous corrigez certains arguments, vous obtenez une fonction des arguments restants"

Semble comme la même idée pour moi. La seule raison pour laquelle je ne suis pas sûr est que les documents que j'ai rencontrés sur smn ne mentionnent pas le curry (et vice versa), donc je voulais le consulter pour m'assurer que je l'obtiens réellement.


En effet. Certaines preuves de calcul ont une saveur lambdish. Le théorème smn, très grossièrement, permet de prétendre que les indices des fonctions récursives sont des termes lambda, de sorte que, étant donné nous pouvons créer l'informel g ( x ) = # λ y . ϕ i ( x , y ) et affirmons que g est récursif primitif. Même la deuxième preuve du théorème de récursivité (qui exploite smn) est le combinateur de points fixes de Church déguisé, caché derrière s ( )ϕje(-,-)g(x)=#λy.ϕi(x,y)gs()les usages. Le point clé ici est que même si l'énumération est définie en énumérant, disons, des MT (ou Java, ou ...), nous pouvons toujours prétendre que nous avons des lambdas! ϕi
chi

Eh bien, smn fait une déclaration existentielle tandis que l'existence d'une fonction curry fournit le "compilateur". Mais l'idée est la même.
Raphael

Réponses:


15

Oui, c'est la même chose.

Le curry est un concept de -calculus. C'est une transformation entre A × B C et A ( B C ) . Considérez ceci comme "si nous avons une fonction de deux arguments de types A et B , alors nous pouvons fixer le premier argument (de type A ), et nous obtiendrons une fonction de l'argument restant (de type B )". En fait, cette transformation est un isomorphisme. Ceci est rendu mathématiquement précis par des modèles mathématiques de λ -calculus (typés) , qui sont des catégories fermées cartésiennes .λA×BCA(BC)ABABλ

Il existe une catégorie d'ensembles numérotés. Un ensemble numéroté est une paire A est un ensemble et ν A : NA est une surjection partielle , c'est-à-dire une carte des nombres sur A , qui peut également être indéfinie. Si ν A ( n ) = x alors on dit que n est un code de x . Dans la théorie de la calculabilité, il existe de nombreux exemples. Chaque fois que nous encodons des informations avec un numéro, nous obtenons un ensemble numéroté. Par exemple, il existe une numérotation standard(A,νA)AνA:NAAνA(n)=xnx de fonctions partielles calculables, de sorte que φ n ( k ) est le nombre calculé par la fonction partielle calculable codée par n lorsqu'elle est appliquée à k . (Le résultat peut être indéfini.)φφn(k)nk

f:(A,νA)(B,νB)nNf(νA(k))=νB(φn(k))kνAφnfϕnf

λ


PER(UNE)νUNE
chi

1
Oui, les deux catégories sont équivalentes, et la troisième version équivalente est celle des ensembles modestes (recherche "ensembles et assemblages modestes").
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.