2.5.4 FPL/Programación Lógica
Temas:
Core
- Cuantificadores universales vs existenciales.
- Lógica de predicados de primer orden vs lógica de orden superior.
- Expresar relaciones complejas usando conectivos lógicos y relaciones más simples.
- Definiciones de cláusula de Horn, hechos (facts), metas (goals) y submetas (subgoals).
- Unificación y algoritmo de unificación; unificación vs aserción vs evaluación de expresiones.
- Mezclar relaciones con funciones.
- Cortes (cuts), retroceso (backtracking) y no determinismo.
- Suposiciones de mundo cerrado (closed-world) vs mundo abierto (open-world).
Non Core
- Sobrecarga de memoria por copia de variables al manejar programas iterativos.
- Construcciones de programación para almacenar cómputo parcial y podar árboles de búsqueda.
- Mezclar programación funcional y programación lógica usando conceptos como lógica ecuacional, estrechamiento (narrowing), residuación y unificación semántica.
- Programación lógica de orden superior, con restricciones (constraint) e inductiva.
- Integración con otros paradigmas de programación como la programación orientada a objetos.
- Construcciones de programación avanzadas como listas de diferencia (difference-lists), creación de estructuras de datos definidas por el usuario, conjunto de (set of), etc.
Aprendizaje esperado (Learning Outcomes):
Core:
- Usar un lenguaje lógico para implementar un algoritmo convencional [Usar]
- Usar un lenguaje lógico para implementar un algoritmo que emplee búsqueda implícita usando cláusulas, relaciones y cortes (cuts) [Usar]
- Usar un ejemplo ilustrativo simple para mostrar la correspondencia entre la Lógica de Predicados de Primer Orden (FOPL) y los programas lógicos que usan cláusulas de Horn [Usar]
- Usar ejemplos para ilustrar el algoritmo de unificación y su papel en el paso de parámetros en la reducción de consultas [Usar]
- Usar programas lógicos simples que entrelazan relaciones, funciones y programación recursiva, como números factoriales y de Fibonacci, y relaciones complejas simples entre entidades, e ilustrar la ejecución y paso de parámetros usando unificación y retroceso [Usar]
NonCore:
- Ilustrar el cómputo de programas simples como Fibonacci y mostrar la sobrecarga por recomputación, y luego mostrar cómo mejorar la sobrecarga de ejecución [Aplicar]
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM