Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEMANA 10
Lee atentamente la información que se presenta. Analízala de acuerdo con los contenidos
revisados en la semana y desarrolla la actividad evaluativa.
Has aplicado para un nuevo trabajo en una importante empresa líder en el desarrollo de sistemas
automatizados de última tecnología, enfocados en Programación lógica como herramienta base
para la aplicación de sistemas expertos e inteligencia artificial.
La programación lógica es una variedad de la programación declarativa, muy diferente a los
lenguajes de programación que se usan comúnmente en la actualidad. En ella un algoritmo se
crea para generar nuevo conocimiento a partir de sentencias o datos que se definen como
conocidos y que se relacionan en forma lógica mediante un mecanismo de inferencia.
Como paso previo para la selección, los postulados al puesto deben superar ciertas pruebas
técnicas sobre el tema, donde se plantean dos de los problemas más analizados por la
Programación Lógica, como son, las relaciones familiares o jerárquicas, y el encadenamiento de
datos.
Por tanto, es necesario, aunque resulte un tema bastante complejo, manejar los conceptos
relativos a este tipo de programación basada en lógica de primer orden, o como también se
conoce Lógica de Predicados, porque constituye el punto de origen y base teórica en la cual se
fundamentan las diversas aplicaciones de sistemas expertos e Inteligencia Artificial, que inundan
la cotidianidad humana, tanto a nivel personal (apps móviles con reconocimiento de voz,
sistemas de navegación, GPS, entre otros), así como en el área laboral e industrial (charlas
virtuales chatbot, sistematización industrial, por nombrar algunos).
A partir de la información anterior, elabora un informe escrito, que relacione los principios y
elementos básicos de la programación lógica, con la finalidad de establecer su importancia como
herramienta para la formulación de algoritmos de programación.
Introducción.
Desarrollo de actividades.
Conclusiones.
Aportes profesionales.
Referencias bibliográficas.
INTRODUCCION
La programación lógica consiste en la aplicación del conocimiento sobre lógica para el diseño de
lenguajes de programación; no debe confundirse con la disciplina de la lógica computacional. La
programación lógica es un conjunto de conceptos de programación dentro del paradigma de
programación declarativa. El resto de los subparadigmas de programación dentro de la
programación declarativa son: programación funcional, programación basada en restricciones,
programas DSL (de dominio específico) e híbridos. La programación lógica gira en torno al
concepto de predicado, o relación entre elementos. La programación funcional se basa en el
concepto de función (que no es más que una evolución de los predicados), del tipo más
matemático.
DESARROLLO
Históricamente, los ordenadores se han programado utilizando lenguajes muy cercanos a las
particularidades de la propia máquina: operaciones aritméticas simples, instrucciones de acceso
a memoria, etc. Un programa escrito de esta manera puede ocultar totalmente su propósito a la
comprensión de un ser humano e incluso uno entrenado. Hoy día, estos lenguajes
pertenecientes al paradigma de la Programación imperativa han evolucionado de manera que ya
no son tan crípticos.
En cambio, la lógica matemática es la manera más sencilla, para la inteligencia humana, de
expresar formalmente problemas complejos y de resolverlos mediante la aplicación de reglas,
hipótesis y teoremas. De ahí que el concepto de "programación lógica" resulte atractivo en
diversos campos donde la programación tradicional es un fracaso. La lógica ha estado muy
relacionada históricamente con las computadoras y los lenguajes de programación, a
continuación se presentan algunos ejemplos:
Los circuitos de las computadoras son diseñados con la ayuda del álgebra booleana (George
Boole)
Datos y expresiones booleanos son usados en casi todos los lenguajes de programación para el
control de acciones del programa.
Proposiciones lógicas se han usado para describir formalmente la semántica de los lenguajes de
programación, según el método axiomático que tuvo a Floyd y Hoare como iniciadores.
Enunciados lógicos se usan para especificaciones formales que describen el comportamiento de
un programa, lo que permite realizar sobre estas pruebas de corrección.
Las computadoras han sido empleadas para implementar los principios de la lógica matemática,
a través de sistemas de deducción automática y demostradores de teoremas.
Enunciados lógicos vistos como un lenguaje de programación y ejecutados en la computadora.
Estos trabajos, iniciados por Robinson, Colmenaner y Kowalsky, condujeron al lenguaje Prolog.
La programación lógica implica forzosamente al uso de hechos y relaciones para representar la
información y al de deducciones para responder a consultas. Las consultas permiten conocer
informaciones sobre las relaciones. Estos dos aspectos reflejan una división de labores entre los
programadores y un lenguaje para la programación lógica. El programador proporciona las reglas
y los hechos, mientras que el lenguaje usa la deducción para dar respuesta a consultas. Esta
división de labores es usualmente representado por la ecuación: algoritmo = lógica + control.
La lógica se refiere a los hechos y reglas que especifican lo que realiza el algoritmo, y el control se
refiere a cómo puede implementarse el algoritmo mediante la aplicación de reglas en un orden
particular. El programador proporciona la parte lógica y el lenguaje de programación proporciona
el control. Las consultas en los programas lógicos pueden usarse de dos formas: 1. Para
determinar si un determinado conjunto de valores pertenece a una relación, en las cuales el
intérprete responde Si, en caso de pertenecer la tupla, y Fracaso en caso de fracasar la deducción
de una respuesta Si. 2. Para determinar una instancia de valores para cada una de las variables
presentes en la consulta, que pueda deducirse a partir de las reglas y hechos del programa
lógico.
Fundamentos
La mayoría de los lenguajes de programación lógica se basan en la teoría lógica de primer orden,
aunque también incorporan algunos comportamientos de orden superior. En este sentido,
destacan los lenguajes funcionales, ya que se basan en el cálculo lambda, que es la única teoría
lógica de orden superior que es demostradamente computable (hasta el momento).
F={ f, g, h, ....} , donde cada elemento f es un símbolo funcional n-ario (n ≥ 0), por ejemplo
sucesor(x). Si n = 0 el símbolo de función se denomina símbolo de constante. Las constantes más
empleadas son true y false.
R={ R, S, .....} , donde cada elemento R es un símbolo de relación n-aria ( n ≥ 0). Si n = 0 el símbolo
de relación se denomina símbolo de constante proposicional o proposición.
Un conjunto finito de símbolos denominados operadores lógicos:
¬: denominado negación,
∧ : denominado conjunción,
∨ : denominado disyunción,
⇒ : denominado implicación,
⇔: denominado bicondicional
Símbolos auxiliares de escritura. Términos Sea t una sucesión lineal finita de símbolos del
alfabeto de L, entonces:
* Si t es una variable, entonces es un término.
* Si f es un símbolo de función n-aria (n ≥ 0) y tl,t2,...,tn son términos, entonces f( tl,t2, ,tn) un
término.
Ejemplos
[1,2,3]
[a, 3, [3], [[3]]]
[[X, Y| [2,3]]
[[X|Y], Z, [X|W]]
Fórmulas.
Si R es un símbolo relacional n-ario ( n ≥ 0 ) y tl,t2,...,tn son términos, entonces R(t1,t2,...,tn) es
una fórmula elemental o átomo.
Por ello los sistemas de programación lógica son llamadas bases de datos deductivas, en el
sentido de volúmenes de datos que consisten en un conjunto de enunciados y un sistema de
deducción que responde a demandas En qué consiste (ejemplo) La programación lógica permite
formalizar hechos del mundo real, por ejemplo:
Conclusión.
a) Cláusula de Horn: Es una disyunción de literales de los cuales uno, como mucho, es positivo.
f (x, b) y f (a, y)
unif((f (x, b) = f (a, y), ∈)
= unif((x = a, b = y), ∈)
= unif((b = y)[x/a], ∈ [x/a])
= unif((b = y), [x/a])
= unif((), [x/a][y/b])
= [x/a, y/b])
Juan: Padre
Sara: Madre
Julia: Hija de Juan
José: Hijo de Juan
Pablo: Hijo de ambos padres
Erika: Hija de Julia
Doris: Hija de José
Pedro: Hijo de José
Hans: Hijo de Pablo
María: Hija de Pablo
Si Juan es padre de Julia, su nieta es Erika
Si Juan y Sara son padres de pablo entonces, Hans y María son sus nietos
Si Juan es padre entonces, la madre es María
Si Juan es padre de José, entonces la madre es Sara.
R = {R2, R3}
R = {R1, R2}
C= verdadero
H=verdadero
K= Falso
M= verdadero
Aplicando Modus Ponens, se conoce el valor de C, por lo tanto A y B son verdaderos. (regla 1)
Aplicando Modus Tollens, se conoce valor de K y C, por lo tanto el valor de G es falso. (regla 4)
REFERENCIAS BIBLIOGRÁFICAS
IACC (2022). Programación lógica I. Lógica Matemática y Digital. Semana 7.