Está en la página 1de 10

LOGICA MATEMATICA Y DIGITAL

SEMANA 10

Jesica Santibáñez Gutiérrez


30 de Enero de 2023
Técnico en Automatización y Control
DESARROLLO DE LA ACTIVIDAD

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.

Dicho informe debe estar estructurado de la siguiente forma:

 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.

A partir de 1970 se desarrollaron en la Universidad de Edimburg intérpretes eficientes de Prolog


que aumentaron el interés en los sistemas de Programación Lógica. Campos de aplicación La
programación lógica encuentra su hábitat natural en aplicaciones de inteligencia artificial o
relacionadas:
Sistemas expertos, donde un sistema de información imita las recomendaciones de un experto
sobre algún dominio de conocimiento.
Demostración automática de teoremas, donde un programa genera nuevos teoremas sobre una
teoría existente.
Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con
limitaciones) la información contenida en una expresión lingüística humana, etc.
La programación lógica también se utiliza en aplicaciones más "mundanas" pero de manera muy
limitada, ya que la programación tradicional es más adecuada a tareas de propósito general.

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).

Lógica de primer orden.

El cálculo de predicados de primer orden consta de un alfabeto y de dos clases de expresiones


definidas a partir de los símbolos de este alfabeto, los términos y las fórmulas. El alfabeto del
lenguaje consta de los siguientes conjuntos:

V={ x, y, z, ....} cuyos elementos se denominan símbolos de variables (individuales).

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

y los operadores de cuantificación o cuantificadores:


∀(.) (denominado cuantificador universal) y
∃(.) (denominado cuantificador existencial).

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 x, a, f(x), g(a, f(b)) son términos

En consideraciones posteriores jugará un papel importante una clase de términos denominados


listas, que en la programación lógica se presenta con la notación: [ t1, t2, ..., tn ] con cabeza t1 el
car y cola [ t2, ..., tn].
La lista [X|Y] se denomina una lista patrón o un esquema de lista que denota cualquier lista con
un primer elemento X y resto Y.

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.

Si A es una fórmula elemental, entonces A es una fórmula.


Si A es una fórmula, entonces A es una fórmula.
Si A y B son fórmulas, entonces [A ∨ B], [A ∧ B], [A=>B] y [A <=> B] son fórmulas.
Si A es una fórmula, entonces ∀(x)A y ∃(x)A son fórmulas.

En ∀(x)A (∃(x)A), A se denomina el alcance del cuantificador ∀(x) (∃(x)).


Si x es una variable que ocurre en la fórmula A, entonces se dice que x está acotada o ligada en A,
Si A es el alcance del cuantificador ∀(x) (∃ (x)).
Si x es una variable que ocurre en la fórmula A, entonces se dice que x es libre en A si x no está
acotada en A.

Si X no ocurre libre en A, entonces ∀(x)A (∃(x)A) es simplemente la fórmula A. Una fórmula es


una fórmula cerrada o un enunciado si no contiene ocurrencia alguna de variable libre. Si tiene
ocurrencia de variables libres se llama predicado. El cálculo de predicados posee un grupo de
reglas de inferencia que permite deducciones a partir de axiomas y teoremas previamente
demostrados. La esencia de la programación lógica es consistir de una colección de enunciados
asumidos como axiomas y derivar un hecho deseado aplicando reglas de inferencia de forma
automática. Un lenguaje de programación lógica es un sistema rotacional para escribir
enunciados lógicos junto con algoritmos para implementar reglas de inferencia.
“El conjunto de enunciados lógicos que son asumidos como axiomas constituyen el programa
lógico.” Los enunciados que deben ser derivados, que pueden ser vistos como entradas que
desencadenan el cálculo son las demandas o metas.

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:

las aves vuelan


los pingüinos no vuelan
"colibrí" es un ave
"Spike" es un perro
"alegría" es un ave

y también reglas o restricciones:


una mascota vuela si es un ave y no es un pingüino
Ante dicho "programa" es posible establecer hipótesis que no son más que preguntas o
incógnitas, por ejemplo:
¿”colibrí" vuela ?
¿qué mascotas vuelan ?....
Gracias a que la lógica de primer orden es computable, el ordenador será capaz de verificar la
hipótesis, es decir, responder a las incógnitas:
Es cierto que "colibrí" vuela.
"colibrí" y "alegría" vuelan.

Obsérvese que el programa lógico no solamente es capaz de responder si una determinada


hipótesis es verdadera o falsa. También es capaz de determinar que valores de la incógnita hacen
cierta la hipótesis. Este ejemplo es claramente académico.
Sin embargo, consideremos el siguiente ejemplo:
El sistema de cajeros automáticos, constituye un alivio a los usuarios para retirar dinero de forma
rápida. El programa consiste básicamente por medio de una tarjeta con banda magnética o chips,
solicitar datos al usuario de reconocimiento de identidad, cumpliendo con los requisitos, puede
realizar la transacción requerida por el cliente. Este es un ejemplo imposible de resolver
mediante programación tradicional, ya que la lógica subyacente a la ejecución del conjunto de
actividades, queda enmascarada por simples órdenes imperativas del tipo “girar dinero”.

Conclusión.

La lógica de programación consiste en la organización y planificación coherente de las


instrucciones necesarias para ejecutar con éxito un programa, en la lógica de programación es
donde aplicamos todos los conceptos de algoritmos, la definición paso a paso y trasladamos toda
la lógica del algoritmo desarrollado, a un lenguaje de programación.
Dentro de ello hay una serie de patrones que se repiten en todos los lenguajes, como el uso de
variables, métodos o funciones, condicionales y bucles, las cuales organizadas y planificadas
coherentemente, ejecutando las instrucciones necesarias para ejecutar con éxito un programa.
Por otra parte, con su amplio rango de aplicabilidad, nos sirve para implementar aplicaciones que
sean capaces de encontrar soluciones a problemas en base al conocimiento. En la actualidad con
la programación nos referimos básicamente a un sistema estructurado de comunicación, el cual
nos permite comunicarnos con cualquier ordenador, Tablet o smartphone, por lo tanto
programar se vuelve indispensable para quienes se quieren dedicar al área de tecnología e
innovación, ya que en la actualidad vivimos rodeados de equipos tecnológicos.

Para completar tu informe, desarrolla las actividades que aparecen a continuación:

1. Elementos Básicos de la Programación Lógica: Explica con tus propias palabras,


justificando con un ejemplo, que entiendes por:

a) Cláusula de Horn: Es una disyunción de literales de los cuales uno, como mucho, es positivo.

Una cláusula de Horn es una cláusula de la forma:


A1 v ... v Ak ← B1 ^ ... ^ Bn, con k=1 ó k=0 y n>=0.
donde A y B representan átomos.

Las cláusulas de Horn con k=1 y n>0 son reglas.


Las cláusulas de Horn con k=1 y n=0 son hechos.
Las cláusulas de Horn con k=0 y n>0 son objetivos.

En las cláusulas de programa:


A←B1 ^...^Bn, con n>=0
El átomo A es la cabeza y el conjunto de átomos B es el cuerpo.

Ejemplos de los diferentes tipos de cláusulas de Horn:


Regla: hermanas(X,Y)←mujer(X) ^ mujer(Y) ^ padres(X,P,M) ^ padres(Y,P,M)
Hecho: mujer(Ana) ←
Objetivo: ← hermanas(X, Ana)

b) Unificación: es un proceso algorítmico para resolver ecuaciones con expresiones


simbólicas

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])

2. Motor de Inferencia: Tomando la base de datos de relaciones familiares que se muestra


en el siguiente gráfico, escribe un motor de inferencia, identificando seis hechos y dos
reglas. Luego explica el proceso de consulta que se puede realizar, dando dos ejemplos de
consultas cuya conclusión sea Verdadera y dos ejemplos de consultas con respuesta
Falso.

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}

3. Estrategia de Inferencia: Explica la estrategia de encadenamiento de reglas, determinando todas


las conclusiones posibles con el siguiente grupo de reglas y suponiendo los valores conocidos C =
verdadero, H = verdadero, K = falso y M = verdadero. Puedes diseñar un diagrama de bloque que
muestre el encadenamiento de las reglas.

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.

Programación Lógica, sitio web: https://www.uv.mx/personal/aguerra/files/2018/10/pia-02.pdf

Lógica de Programación, Sitio web: https://digitk.areandina.edu.co/bitstream/handle/areandina/1285/L


%C3%B3gica%20de%20programaci%C3%B3n.pdf?sequence=1&isAllowed=y

También podría gustarte