En "Tipos y lenguajes de programación", en la sección 6.1.2 se habla de un contexto de nomenclatura utilizado para numerar variables libres en expresiones lambda. Usando el esquema de ejemplo que han proporcionado, tanto λx.xb
como λx.xx
tendrán su representación de Bruijn como λ.00
cuando sean términos claramente diferentes. ¿Como funciona esto?¿Cómo usar un contexto de nomenclatura para encontrar índices de Bruijn de variables libres?
Respuesta
Como mencionaste, el libro utiliza un contexto de nomenclatura que asigna n
variables gratuitas a los números del 0
al n-1
. Sin embargo, si observa detenidamente los ejemplos del libro, notará que no utiliza esos números directamente para representar las variables. Por ejemplo, se representa como λw. y w
λ. 4 0
a pesar de que la asignación para y
es 3, 4. No
Lo que sucede aquí es que, añade la profundidad de anidamiento de la variable al número. Es decir. si una variable libre v
está anidada en d
lambdas, obtiene el índice Γ(v)+d
, no solo Γ(v)
.
Así que en tu ejemplo mediante el contexto Γ {b -> 0}
λx.xb
se representaría como λ. 0 1
, no λ. 0 0
. Por lo tanto, no hay ambigüedad.
Creé un [intérprete basado en la web] (http://pure-fn.appspot.com/about) para un método basado en un índice más simple en un esfuerzo por aprender el funcionamiento del Cálculo Lambda. Agradecería sus comentarios al respecto. – dansalmo
- 1. Gramáticas libres de contexto versus gramáticas sensibles al contexto?
- 2. Generando n sentencias de gramáticas libres de contexto
- 3. ¿En LISP cómo inspeccionar variables libres en un cierre?
- 4. Convenciones de nomenclatura para las variables "número de foos"
- 5. La implementación de un estándar de nomenclatura para las llaves, índices, restricciones
- 6. Utilidad del editor de gramática para gramáticas libres de contexto en Java
- 7. Norma de nomenclatura/formato para las variables globales
- 8. esquema de nomenclatura para typedefs
- 9. Django ¿cómo pasar las variables personalizadas al contexto para usar en la plantilla de administración personalizada?
- 10. Convenciones de nomenclatura de PostgreSQL
- 11. Convención de nomenclatura de las variables de Python
- 12. Reglas de nomenclatura para recursos de Android
- 13. ¿Cómo calcular secuencias de Bruijn para alfabetos que no son de potencia de dos?
- 14. Convención de nomenclatura para widgets de Qt
- 15. Cómo usar múltiples variables para un alcance de cerradura en C#
- 16. Cómo probar variables de contexto de plantilla con Flask
- 17. Variables de contexto Django y respuesta ajax
- 18. Locales de contexto: ¿cómo hacen que las variables de contexto locales sean globales?
- 19. Cómo usar transacciones con un contexto de datos
- 20. Restricciones de nomenclatura de las variables en java
- 21. Convención de nomenclatura para el contexto de la aplicación Spring XML
- 22. convenciones de nomenclatura para hilos?
- 23. Cómo usar variables de cadena para crear una lista de variables para ddply?
- 24. Convención de nomenclatura para restricción única
- 25. ¿Cómo puedo encontrar la lista de índices de Sybase para una base de datos determinada?
- 26. Convenciones de nomenclatura de SQL Server
- 27. Django simple_tag y configuración de variables de contexto
- 28. Cuándo usar índices compuestos?
- 29. Cocoa NSIndexSet: Índices múltiples. ¿Cómo crear el conjunto de índices, múltiples índices?
- 30. Cómo encontrar variables de plantilla no utilizadas en Django
¿Qué te hace pensar que la representación de la primera sería 'λ.00'. No creo que el primero pueda representarse en absoluto ya que 'b' no está vinculado a ninguna parte. – sepp2k
En la sección que mencioné, hablan sobre cómo se pueden representar las variables libres usando un _naming context_. – sanjoyd
Ah, ya veo. Escribiré una respuesta en breve. – sepp2k