stringtranslate.com

Índice de Bruijn

En lógica matemática , el índice de Bruijn es una herramienta inventada por el matemático holandés Nicolaas Govert de Bruijn para representar términos del cálculo lambda sin nombrar las variables ligadas. [1] Los términos escritos utilizando estos índices son invariantes con respecto a la conversión α , por lo que la verificación de la equivalencia α es la misma que la de la igualdad sintáctica. Cada índice de Bruijn es un número natural que representa una aparición de una variable en un término λ y denota el número de carpetas que están dentro del alcance entre esa ocurrencia y su carpeta correspondiente. Los siguientes son algunos ejemplos:

Representación pictórica de ejemplo.

Los índices de De Bruijn se utilizan comúnmente en sistemas de razonamiento de orden superior, como los demostradores de teoremas automatizados y los sistemas de programación lógica . [2]

Definicion formal

Formalmente, los términos λ ( M , N , ...) escritos utilizando índices de De Bruijn tienen la siguiente sintaxis (los paréntesis se permiten libremente):

METRO , norte , ... ::= norte | M N | λ METRO

donde n ( números naturales mayores que 0) son las variables. Una variable n está vinculada si está en el alcance de al menos n vinculantes (λ); de lo contrario es gratis . El sitio de unión para una variable n es el enésimo enlazador en el que se encuentra dentro del alcance , comenzando desde el enlazador más interno.

La operación más primitiva en términos λ es la sustitución : reemplazar variables libres en un término por otros términos. En la reducción βM ) N , por ejemplo, debemos

  1. encuentre las instancias de las variables n 1 , n 2 , ..., n k en M que están ligadas por λ en λ M ,
  2. disminuir las variables libres de M para que coincidan con la eliminación del aglutinante λ externo, y
  3. reemplace n 1 , n 2 , ..., n k con N , incrementando adecuadamente las variables libres que ocurren en N cada vez, para igualar el número de λ-aglutinantes, bajo los cuales la variable correspondiente ocurre cuando N sustituye a uno de los n i .

Para ilustrar, considere la aplicación

(λ λ 4 2 (λ 1 3)) (λ 5 1)

que podría corresponder al siguiente término escrito en la notación habitual

x . λ y . z xu . u x )) (λ x . w x ).

Luego del paso 1, obtenemos el término λ 4 □ (λ 1 □), donde las variables que están destinadas a la sustitución se reemplazan por cajas. El paso 2 disminuye las variables libres, dando λ 3 □ (λ 1 □). Finalmente, en el paso 3, reemplazamos los cuadros con el argumento, a saber, λ 5 1; el primer cuadro está debajo de una carpeta, por lo que lo reemplazamos con λ 6 1 (que es λ 5 1 con las variables libres aumentadas en 1); el segundo está bajo dos carpetas, por lo que lo reemplazamos con λ 7 1. El resultado final es λ 3 (λ 6 1) (λ 1 (λ 7 1)).

Formalmente, una sustitución es una lista ilimitada de términos, escrita M 1 . M 2 ..., donde M i es el reemplazo de la i -ésima variable libre. La operación creciente en el paso 3 a veces se llama desplazamiento y se escribe ↑ k donde k es un número natural que indica la cantidad a aumentar las variables y se define por

Por ejemplo, ↑ 0 es la sustitución de identidad, lo que deja un término sin cambios. Una lista finita de términos M 1 . M 2 ... M n abrevia la sustitución M 1 . M 2 ... M n .(n+1).(n+2)... dejando todas las variables mayores que n sin cambios. La aplicación de una sustitución s a un término M se escribe M [ s ]. La composición de dos sustituciones s 1 y s 2 se escribe s 1 s 2 y se define por

( M 1 . M 2 ...) s = M 1 [ s ]. M2 [ s ] ...

satisfacer la propiedad

METRO [ s 1 s 2 ] = ( M [ s 1 ]) [ s 2 ],

y la sustitución se define en los siguientes términos:

Los pasos descritos anteriormente para la reducción β se expresan de manera más concisa como:

M ) Nβ M [ N ].

Alternativas a los índices de Bruijn

Cuando se utiliza la representación estándar "nombrada" de términos λ, donde las variables se tratan como etiquetas o cadenas, se debe manejar explícitamente la conversión α al definir cualquier operación en los términos. En la práctica, esto resulta engorroso, ineficiente y, a menudo, propenso a errores. Por tanto, ha llevado a la búsqueda de diferentes representaciones de dichos términos. Por otro lado, la representación con nombre de los términos λ es más generalizada y puede ser más inmediatamente comprensible para otros porque a las variables se les pueden dar nombres descriptivos. Por lo tanto, incluso si un sistema utiliza índices de Bruijn internamente, presentará una interfaz de usuario con nombres.

Una forma alternativa de ver los índices de Bruijn es como niveles de Bruijn, que indexan las variables desde la parte inferior de la pila en lugar de desde la parte superior. Esto elimina la necesidad de reindexar variables libres, por ejemplo, cuando se debilita el contexto, mientras que los índices de Bruijn eliminan la necesidad de reindexar variables ligadas, por ejemplo, cuando se sustituye una expresión cerrada en otro contexto. [3]

Los índices de De Bruijn no son la única representación de términos λ que obvia el problema de la conversión α. Entre las representaciones con nombre, las técnicas nominales de Pitts y Gabbay son un enfoque, donde la representación de un término λ se trata como una clase de equivalencia de todos los términos que se pueden reescribir mediante permutaciones variables. [4] Este enfoque lo adopta el paquete de tipo de datos nominal de Isabelle/HOL . [5]

Otra alternativa común es apelar a representaciones de orden superior donde el aglutinante λ se trata como una función verdadera. En tales representaciones, las cuestiones de α-equivalencia, sustitución, etc. se identifican con las mismas operaciones en una metalógica .

Al razonar sobre las propiedades metateóricas de un sistema deductivo en un asistente de prueba , a veces es deseable limitarse a representaciones de primer orden y tener la capacidad de nombrar o cambiar el nombre de supuestos. El enfoque localmente sin nombre utiliza una representación mixta de variables (índices de De Bruijn para variables ligadas y nombres para variables libres) que puede beneficiarse de la forma α-canónica de los términos indexados de De Bruijn cuando sea apropiado. [6] [7]

Convención de variables de Barendregt

La convención de variables de Barendregt [8] es una convención comúnmente utilizada en pruebas y definiciones donde se supone que:

En el contexto general de una definición inductiva, no es posible aplicar la conversión α según sea necesario para convertir una definición inductiva que usa la convención a una en la que no se usa la convención, porque una variable puede aparecer tanto en una posición vinculante como en una posición no vinculante. -posición vinculante en la norma. El principio de inducción se cumple si toda regla satisface las dos condiciones siguientes: [9]

Ver también

Referencias

  1. ^ de Bruijn, Nicolaas Govert (1972). "Notación de cálculo Lambda con maniquíes sin nombre: una herramienta para la manipulación automática de fórmulas, con aplicación al teorema de Church-Rosser" (PDF) . Indagaciones Mathematicae . 34 : 381–392. ISSN  0019-3577. Archivado (PDF) desde el original el 20 de mayo de 2011.
  2. ^ Gabbay, Murdoch J.; Pitts, Andy M. (1999). "Un nuevo enfoque de la sintaxis abstracta que involucra carpetas" (PDF) . 14º Simposio Anual del IEEE sobre Lógica en Ciencias de la Computación . págs. 214-224. doi :10.1109/LICS.1999.782617. Archivado (PDF) desde el original el 27 de julio de 2004.
  3. ^ Bauer, Andrej. "Cómo implementar la teoría del tipo dependiente III". Matemáticas y Computación . Archivado desde el original el 7 de agosto de 2016 . Consultado el 20 de octubre de 2021 .
  4. ^ Pitts, Andy M. (2003). "Lógica nominal: una teoría de nombres y vinculación de primer orden". Información y Computación . 186 (2): 165-193. doi : 10.1016/S0890-5401(03)00138-X . ISSN  0890-5401.
  5. ^ "Sitio web nominal de Isabelle". Archivado desde el original el 14 de diciembre de 2014 . Consultado el 28 de marzo de 2007 .
  6. ^ McBride, Conor ; McKinna, James (2004). Perla funcional: no soy un número, soy una variable libre (PDF) . Nueva York, Nueva York, Estados Unidos: ACM Press. doi :10.1145/1017472.1017477. Archivado desde el original (PDF) el 28 de septiembre de 2013.
  7. ^ Aydemir, Brian; Charguéraud, Arthur; Pierce, Benjamín Crawford ; Pollack, Randy; Weirich, Stephanie (2008). "Metateoría formal de la ingeniería" (PDF) . Actas del 35º simposio anual ACM SIGPLAN-SIGACT sobre principios de lenguajes de programación. Nueva York, Nueva York, Estados Unidos: ACM Press. págs. 3-15. doi :10.1145/1328438.1328443. ISBN 9781595936899. Archivado desde el original el 27 de julio de 2010.
  8. ^ Barendregt, Hendrik Pieter (1984). El cálculo Lambda: su sintaxis y semántica . Holanda del Norte . pag. 26.ISBN 978-0-444-87508-2.
  9. ^ Urbano, cristiano; Berghofer, Stefan; Norrish, Michael (2007). "Convención de variables de Barendregt en inducciones de reglas" (PDF) . Deducción Automatizada – CADE-21 . Apuntes de conferencias sobre informática. vol. 4603, págs. 35–50. doi :10.1007/978-3-540-73595-3_4. ISBN 978-3-540-73594-6. Archivado (PDF) desde el original el 6 de julio de 2017.