¡Qué tal si comenzáramos por las funciones !

Piste rouge Le 28 août 2009  - Ecrit par  Pierre Lescanne
Le 2 avril 2019  - Traduit par  Mariana Haim
Article original : Et si on commençait par les fonctions ! Voir les commentaires
Lire l'article en  

En este artículo se muestra que en lugar de fundar las matemáticas sobre la noción de conjunto como lo quiere la tradición, se puede colocar la noción de función en el centro del edificio.

Sobre el buen uso de las flechas

En este artículo se usan tres tipos de flechas :

  • la flecha hacia la derecha precedida de una barra vertical $\mapsto$ para representar a las funciones.
  • la flecha que apunta hacia la derecha $\rightarrow$ para la reducción de las expresiones
  • la flecha que apunta hacia la izquierda ← para la sustitución de una variable por una expresión.

Elegimos estos símbolos, no porque sean esotéricos, sino porque son de uso corriente en matemáticas. Que el lector nos perdone el trabajo que esto puede exigir para no perderse en la lectura.

Del pasado hay que hacer añicos [1]

En la teoría de conjuntos, una función $f$ sobre un conjunto $A$ está definida por su gráfico, es decir, por el conjunto de pares $(a, f(a))$ con $a$ variando en $A$. La definición del concepto de función aparece después que la de conjunto, puesto que una función está definida como un conjunto particular. Se dice también que está definida por extensión, es decir que se recorre (uno se ’’extiende’’ sobre) el conjunto de los pares valor-resultado. De hecho, no se dice cómo se obtiene el resultado $f(a)$ a partir del valor $a$, se dice simplemente que $f(a)$ está asociado a $a$ de una forma ciertamente rigurosa, pero en algún sentido mágica.

En lo que sigue vamos a ver cómo se construyen las matemáticas a partir de nada o de casi nada [2]. Tradicionalmente desde Cantor, el punto de partida de las matemáticas es el conjunto. En nuestro caso, partiremos del concepto de función, pero no de las funciones del liceo, definidas sobre los números reales, sino de funciones que manipulan lo que ya conocemos.

Pero ¿qué es lo que conocemos cuando decimos que el concepto primitivo es el de función ? Justamente, ¡las funciones ! Es por esto que las funciones que consideramos son funciones definidas sobre funciones.

JPEG - 494.1 ko

Dos funciones que se portan bien

Comencemos por una función bien simple (quizá demasiado simple), la función identidad sobre $A$. Desde un punto de vista conjuntista, su gráfico es la ’’diagonal’’ del conjunto producto $A \times A$, es decir el conjunto de todos los pares de la forma $(a,a)$. Nos gustaría decir que es la función que al valor $a$ le asocia el resultado $a$, describiendo cómo se obtiene el resultado (es decir $a$) a partir del dato original (es decir $a$). En otras palabras, nos gustaría decir que la función identidad es $a \mapsto a$. La función identidad no es suficientemente complicada, pasemos entonces a la función cuadrado definida sobre $\mathbb {N}$ [3]. El gráfico de esta nueva función contiene a “(3,9), (0,0), (2,4), (4,16), (1,1), (12, 144), ...”. Tenemos el inconveniente de poner puntos sucesivos que dejan un sabor a duda sobre lo que no es dicho. Desearíamos afirmar que la función cuadrado es $n \mapsto n \times n$, bajo el acuerdo de que el operador de multiplicación $\times$ ya fue definido. Decimos entonces que $a \mapsto a$ y $n \mapsto n \times n$ sont definiciones por intención, puesto que cargan con lo que queremos decir con las palabras ’’función identidad’’ y ’’función cuadrado’’, es decir un mecanismo que devela cómo se obtiene (cómo se calcula) el resultado a partir del dato original. La función se identifica con lo que tenemos la ’’intención’’ de hacerla decir, de donde surge el adjetivo ’’intencional’’. Todo esto es algo filosófico, pero va a hacerse más claro en lo que sigue.

El mutismo de las variables

Hemos escrito $a \mapsto a$, pero podríamos haber escrito también $x\, \mapsto\, x$ o $y\mapsto y$, para la misma función. Asimismo, podríamos haber escrito $k\mapsto k \times k$ o $y \mapsto y \times y$ en lugar de $n \mapsto n \times n$. Esto significa que el nombre de la variable no es realmente importante y que por consecuencia podemos ’’renombrarla’’. Se dice también que la variable $x$ está ligada dentro de la expresión $x \mapsto x$ o que es muda. Consideremos el rol de $x$ en $x \mapsto x$ y en ${\forall \ x. (x \in \mathbb{Z}) \Rightarrow x^2 \geq 0}$. Tanto en una expresión como en la otra, la variable $x$ puede ser cambiada por la variable $y$ sin que cambie el significado de la expresión. En efecto, sabemos que ${\forall \ x. (x \in \mathbb{Z}) \Rightarrow x^2 \geq 0}$ tiene el mismo significado que ${\forall \ y. (y \in \mathbb{Z}) \Rightarrow y^2 \geq 0}$, así como $x \mapsto x$ tiene el mismo significado que $y \mapsto y$.

Aplicar una función a un valor

Una función está hecha para ser aplicada a ciertos valores. Recordemos que los valores son a la vez funciones. Si tenemos una función $f$ y un valor $a$, vamos a usar $f~a$ para denotar el resultado de la aplicación de $f$ a $a$. [4]. De este modo, la aplicación de identidad a $b$ se escribe $(a \mapsto a)~b$ y la aplicación de identidad al valor cuadrado se escribe $(a \mapsto a)~ (n \mapsto n \times n)$. Tenemos entonces dos construcciones de base, el operador $\mapsto$ (que llamaremos abstracción) y la aplicación [5].

JPEG - 15.9 ko

Algunas funciones más

Con el operador $\mapsto$ podemos definir funciones, bastante inocentes o bastante ’’fundamentales’’ :

  • la función que fabrica funciones constantes es una función que recibe un valor, pongamos $c$, y devuelve la función idéntica a $c$, es decir $c \mapsto (x \mapsto c)$. La llamaremos con su nombre tradicional K. Notemos que el primero de los $\mapsto$ toma el valor $c$ y produce una función.
  • la función que permuta sus argumentos es la función que recibe una función $f$ y devuelve la función que produce $f~y~x$ cuando toma $x$ y luego $y$, es decir : $f \mapsto (x \mapsto (y \mapsto (f\ y\ x))$. La llamaremos con su nombre tradicional C. Cuando aplicamos C$~f$ a $x$ e $y$ obtenemos $f~y~x$.
  • la función dos

    es la función que recibe una función y devuelve la función que se obtiene de aplicar dos veces la función dada a su argumento, es decir $f \mapsto (x \mapsto f\ (f\ x))$. Si aplicamos dos al cuadrado obtenemos la función bicuadrado, qui produce la potencia cuarta del valor que toma, es decir (dos cuadrado) devuelve el mismo resultado [6] que la función $n \mapsto n \times n \times n \times n$.

Acabamos de considerar funciones que devuelven funciones, como lo hace la función K, y funciones que reciben funciones, como lo hace la función C. No hay nada sorprendente en esto, puesto que a partir de ahora todo es función o, como dicen algunos, las funciones son los ciudadanos de primera clase [7]. Notemos al pasar un hecho relevante : la función identidad es la identidad sobre $A$, sobre $B$, sobre ℕ, sobre las funciones de $A$ hacia $B$, etc. Al estar definida más bien a partir del ’’cómo’’ y no del ’’qué’’, puede servir en distintos contextos, se dice que es ’’polimórfica’’, y está muy bien así.

Un nuevo cálculo

Ya definimos algunas funciones, pero no sabemos qué hacer con ellas.

Calcular o reducir expresiones

Si aplicamos una función a un determinado valor, por ejemplo la función identidad al valor $\textbf{v}$, obtenemos $(a \mapsto a) ~\textbf{v}$, pero ¡no es exactamente lo que queremos ! Queremos que $(a \mapsto a)~ \textbf{v}$ ’’dé’’ $\textbf{v}$. Para esto, nos hace falta un mecanismo de reducción de las expresiones que se base él mismo sobre la noción de sustitución. No insistiremos sobre el mecanismo de sustitución ; diremos simplemente que tiene que ser sutil, en el sentido de tener especial cuidado en no ligar una variable que no lo estaba y de no renombrar una variable ligada. Suponemos que los lectores son suficientemente inteligentes como para evitar estas trampas [8].

Denotemos por $\mathbf{t}[x←u]$ la sustitución de la variable $x$ por la expresión $ \mathbf{u}$ dentro de la expresión $\mathbf{t}$. La reducción de $(x \mapsto \mathbf{t})~ \mathbf{t}'$ produce $\mathbf{t}[x←\mathbf{t}']$. De esta forma, la reducción de $(a \mapsto a)~ \mathbf{v}$ es $\mathbf{v}$ puesto que claramente $a[a←\mathbf{v}]$ es $\mathbf{v}$. La reducción se denota con una flecha $\rightarrow$ ; se escribe entonces : \[(x \mapsto \mathbf{t})~ \mathbf{t}' \quad\rightarrow \quad \mathbf{t}[x←\mathbf{t}'].\]

Expresiones que no se reducen nunca

La más simple de estas expresiones que no se reducen nunca es la expresión $Ω = (x \mapsto x~x)~(x \mapsto x~x)$. La variable $x$ aparece ligada en dos contextos diferentes, ¡renombramos entonces la segunda instancia en que aparece $x$ ! Se obtiene $(x \mapsto x~x)~(y \mapsto y~y)$. Reduzcamos esta expresión :

\[(x \mapsto x~x)~(y \mapsto y ~y) \quad \rightarrow\quad (x~x)[x ← (y \mapsto y ~y)] \ \equiv\ (y \mapsto y~y)~(y \mapsto y~y).\]

¡Sorpresa ! Obtenemos la misma expresión que teníamos al principio, a menos de un cambio de nombre. Pero hay que decir que esta función que se aplica a ella misma es bastante sorprendente.

Una expresión más ’’útil’’ es $\mathbf{Y} = f \mapsto (x \mapsto f~(x~x))~(x \mapsto f~(x~x))$. Si aplicamos $\mathbf{Y}$ a $\mathbf{g}$, observamos que $\mathbf{Y~g}$ se reduce a $\mathbf{g~(Y~g)}$. Dicho de otro modo, si consideramos dos expresiones que se reducen una en la otra son iguales, entonces la expresión $\mathbf{Y~g}$ es ’’igual’’ a $\mathbf{g}~(\mathbf{Y}~\mathbf{g})$. Los matemáticos dicen que $\mathbf{Y~g}$ es un punto fijo de $\mathbf{g}$.

Dar un sentido a las expresiones

Cuando tenemos una expresión algo complicada, podemos darle un sentido reduciéndola todo lo que podamos hasta llegar a una expresión que ya no puede ser reducida. Surgen entonces dos preguntas :

  • ¿Este proceso de ir reduciendo efectivamente termina ? La respuesta es no [9], como nos muestran los ejemplos anteriores.
  • En caso de que una determinada expresión se reduzca a una expresión irreducible, ¿es esta única ? La respuesta es sí. En efecto, de existir dos reducciones posibles, si elegimos una, podremos reducir la nueva expresión de manera de caer en un reducido del otro camino.

A partir de esto, hay dos soluciones para dar un sentido :

  • Considerar solo las expresiones para las cuales el proceso de reducción termina. Esto puede hacerse restringiendo las expresiones aceptables, es decir limitando el uso de la aplicación y de la abstracción. En particular, se eliminarían las funciones que se aplican a sí mismas [10]

Un cálculo sin pares

No hemos hablado de pares porque no tuvimos necesidad y tampoco la tendremos. De hecho, en lugar de escribir $f(x,y)$, escribimos $f~x~y$ y el resultado de aplicar la función $g$ a $x$ y luego aplicar el resultado $g~x$ a $y$, es decir $g~x~y$, tomará el rol de $g(x,y)$.

Aplicación, abstracción y variables

El formalismo que hemos definido está especialmente depurado. Tiene dos construcciones : la abstracción y la aplicación. Además, están por un lado las variables, como base para la construcción de las expresiones, y por otro la reducción, para hacer cálculos sobre las expresiones y darles un sentido. Este formalismo simple es el que puede servir de base a las matemáticas.

Definición de los enteros naturales

Von Neumann fue el primero en proponer que se defina a los enteros naturales dentro de la teoría de conjuntos procediendo como sigue.

  • ø es 0, dicho de otra forma, el conjunto vacío representa al entero cero.
  • {ø} es 1, dicho de otra forma el conjunto que contiene únicamente al conjunto vacío representa al entero 1.
  • {{ø}, ø}, o sea {1, ø} es 2, dicho de otra forma 2 es el conjunto que contiene únicamente a los conjuntos 0 et 1, es decir al conjunto vacío y al singleton que contiene al conjunto vacío.
  • Más en general, para representar al natural n+1 como un conjunto, tomamos la unión del singleton $\{$n$\}$ con el conjunto que representa al entero n. Este conjunto tiene exactamente n+1 elementos.

Para representar a los naturales usando funciones partimos de una idea similar : tratamos de encontrar una función que pueda asociarse naturalmente a los enteros. Ya vimos que la representacíon del entero $2$, es la función dos que asocia a la función $f$ su repetición (dos instancias de $f$). De manera análoga, la función $\mathbf{n}$ es la siguiente

\[f \mapsto (x \mapsto f (... {\scriptstyle n}{\scriptsize fois} ... (f~x)) ,\]

es decir, la repetición de manera de obtener $n$ instancias de la función $f$. El número $5$ se representa entonces por la función $\mathbf{cinq} = f \mapsto (x \mapsto f~(f~(f~(f~(f~x)))))$. El número $0$ se representa por la función $f\mapsto (x \mapsto x)$, es decir la función constante que toma siempre el valor identidad. El número $1$ se representa entonces por la función $f \mapsto (x \mapsto f~x)$.

A partir de esto, podemos describir toda la aritmética dentro de la teoría de funciones y a partir de ella todas las matemáticas. Así, la suma de dos naturales se representa por la siguiente función :

\[ \mathbf{add} = (p \mapsto (q \mapsto (f \mapsto (x \mapsto (p~f)~((q~f)~x ))))).\]

Algo de historia

El origen de todo esto es un libro de Russell [11] y Whitehead, que se llama Principia Mathematica (del cual una leyenda cuenta que jamás fue leido, de tan aburrido que era), que tenía por objetivo fundar rigurosamente las matemáticas en una época atormentada por la crisis de sus fundamentos. Esta investigación fue revitalizada por Alonzo Church, para darle el formalismo que hemos presentado, bajo una notación diferente.

¿Para qué sirve todo esto ?

Este formalismo tiene muchas aplicaciones contemporáneas.

  • Fundar las matemáticas sobre una base sólida.
  • Ofrecer un marco riguroso y eficaz para razonar, que conduzca a la mecanización del razonamiento por computadora y a los asistentes de prueba modernos como Coq [12].
  • Proveer de un fundamento matemático a los lenguages de programación, y así iniciar un nuevo estilo de programación [13].

Para saber más

  • Los que quieren aprehender los resortes filosóficos de esta teoría pueden leer el libro de Gilles Dowek, Les métamorphoses du calcul : une étonnante histoire de mathématiques, Le Pommier, Essais, (2007). Gran premio de filosofía de la Académie Française.
  • Los que quieren comprender la matemática de todo esto pueden leer el libro de Lambda-Calcul, types et modèles, Masson 1991.
  • Los que quieren sobre todo jugar con las funciones pueden leer la obra lúdica de Raymond Smullyan [14], To Mock a Mockingbird, ISBN 0192801422.
Post-scriptum :

Lo que acabamos de explicar se conoce como λ-cálculo, aunque no mencionamos λ, que es una notación para $\mapsto$.

Article original édité par Étienne Ghys

Notes

[1Nota de traducción : este subtítulo traduce el juego de palabras en el texto original ’’Du passé faisons table rase’’ que refiere a un verso del canto del movimiento obrero ’’L’internationale’’.

[2Extrañamente, esto supone que conocemos las matemáticas. En efecto, lo que vamos a presentar sirve de base a las matemáticas, pero es también una parte de un área de las matemáticas, que llamamos la lógica matemática.

[3Admitimos que conocemos este objeto ℕ, veremos más tarde que está formado por funciones particulares.

[4En general, esto se nota $f(a)$, ¡pero ya tenemos de estos paréntesis !

[5cuyo operador es un espacio « ».

[6Con el nivel de formalismo que usamos aquí, no podemos demostrar que dos funciones que devuelven el mismo resultado son iguales.

[7en contraposición a la teoría de conjuntos en la que los conjuntos son los ciudadanos de primera clase.

[8Algo divertido es que las primeras puestas en práctica de lenguajes de programación fundados sobre este formalismo cayeron en la trampa. El lector podrá entrenarse con la sustitución :
\[ ((x \mapsto x)~(y \mapsto x)) [x ← y]\]
autrement dit on substitue $y$ à $x$ dans $ (x \mapsto x)~(y \mapsto x)$.

[9Esto recuerda el tema tratado en el artículo Est-ce que ça s’arrête ?

[10Entramos entonces en el área de la teoría de tipos.

[11De manera sorprendente, ¡Russell recibió el premio Nobel de literatura en 1950 ! Es que, a decir verdad, él dedicó solo una pequeña parte de su vida a las matemáticas.

[12La demonstración del teorema de los cuatro colores de Gonthier y Werner es una gran gran gran función. Ver también este artículo.

[13☺ Este estilo de programación lleva el nombre poco original de programación funcional.

[14Raymond Smullyan fue alumno de Church.

Partager cet article

Pour citer cet article :

Mariana Haim — «¡Qué tal si comenzáramos por las funciones !» — Images des Mathématiques, CNRS, 2019

Commentaire sur l'article

Laisser un commentaire

Forum sur abonnement

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.

Connexions’inscriremot de passe oublié ?