En lógica matemática , la notación De Bruijn es una sintaxis para términos en el cálculo λ inventada por el matemático holandés Nicolaas Govert de Bruijn . [1] Puede verse como una inversión de la sintaxis habitual para el cálculo λ donde el argumento en una aplicación se coloca al lado de su enlace correspondiente en la función en lugar de después del cuerpo de este último.
Los términos ( ) en la notación de De Bruijn son variables ( ), o tienen uno de los dos prefijos wagon . El abstractor wagon , escrito , corresponde al λ-ligante habitual del cálculo λ , y el aplicador wagon , escrito , corresponde al argumento en una aplicación en el cálculo λ .
Los términos de la sintaxis tradicional se pueden convertir a la notación De Bruijn definiendo una función inductiva para la cual:
Todas las operaciones sobre términos λ conmutan con respecto a la traslación. Por ejemplo, la β-reducción habitual,
en la notación de De Bruijn es, como era de esperar,
Una característica de esta notación es que los carros de abstracción y aplicación de β-redexes están emparejados como paréntesis. Por ejemplo, considere las etapas en la β-reducción del término , donde los rédex están subrayados: [2]
Por lo tanto, si se considera al aplicador como un paréntesis abierto (' (
') y al abstractor como un corchete cerrado (' ]
'), entonces el patrón en el término anterior es ' ((](]]
'. De Bruijn llamó a un aplicador y a su abstractor correspondiente en esta interpretación socios , y a los vagones sin socios solteros . Una secuencia de vagones, a la que llamó segmento , está bien equilibrada si todos sus vagones están asociados.
En un segmento bien equilibrado, los vagones asociados pueden moverse arbitrariamente y, siempre que no se destruya la paridad, el significado del término permanece igual. Por ejemplo, en el ejemplo anterior, el aplicador puede llevarse a su abstractor , o el abstractor al aplicador. De hecho, todas las conversiones conmutativas y permutativas en términos lambda pueden describirse simplemente en términos de reordenamientos que preservan la paridad de los vagones asociados. De este modo, se obtiene una primitiva de conversión generalizada para términos λ en la notación de De Bruijn.
Varias propiedades de los términos λ que son difíciles de enunciar y demostrar utilizando la notación tradicional se expresan fácilmente en la notación de De Bruijn. Por ejemplo, en un entorno de teoría de tipos , se puede calcular fácilmente la clase canónica de tipos para un término en un contexto de tipificación y reformular el problema de verificación de tipos como uno de verificación de que el tipo verificado es un miembro de esta clase. [3] También se ha demostrado que la notación de De Bruijn es útil en los cálculos para la sustitución explícita en sistemas de tipos puros . [4]