Los hechos son afirmaciones sobre el mundo. Se utilizan para representar datos y relaciones que siempre se consideran verdaderas.
Una colección de hechos se conoce como base de hechos
Ejemplos de hechos:
hombre(carlos).
le_pertenece(maria, moneda).
padre(homero, bart).
actividad(juan, deportes([futbol, skate, taekwondo])).
actividad(juan, ocupaciones([estudiante])).
?- actividad(juan, X)
X = deportes([futbol, skate, taekwondo])
X = ocupaciones([estudiante])
Representada por ,
(coma). Indica que ambas condiciones deben ser verdaderas.
feliz(X) :- tieneTrabajo(X), buenaSalud(X).
X es feliz
si X tieneTrabajo
y buenaSalud
Representada por ;
. Se usa cuando alguna de las condiciones debe ser verdadera.
contento(X) :- juega(X, futbol) ; juega(X, baloncesto).
X está contento
si X juega al futbol
o X juega al baloncesto
Representada por \+
, que significa “no es cierto que”.
no_tieneHijos(X) :- \+ padre(X, _).
X no tiene hijos
si no es cierto que X es padre de alguien
Su respuesta siempre es true/false
.
Ejemplo, consderando la siguiente base de hechos:
le_gusta(juan, pescado).
le_gusta(juan, maria).
le_gusta(maria, libro).
le_gusta(juan, libro).
le_gusta(juan, Italia).
Preguntas/consultas:
?-le_gusta(juan, dinero).
false
?-le_gusta(juan, maria).
true
Su respuesta es el objeto que cumple el objetivo o false
Preguntas/consultas:
% Consulta: ¿Qué le gusta a juan?
?- le_gusta(juan, X)
% Respuesta:
X = pescado
X = maria
X = libro
X = italia
% Consulta: ¿A qué le gusta maria?
?-le_gusta(X, maria).
% Respuesta:
X = juan
% Consulta: ¿Qué le gusta a Maria & a Juan?
?-le_gusta(maria, X), le_gusta(juan, X).
% Respuesta:
X = libro.
Las reglas definen relaciones o condiciones entre hechos. Se leen como “es verdadero si…”.
En Prolog, el operador :-
se usa para expresar “si”.
hijo(X, Y) :- padre(Y, X).
abuelo(X, Z) :- padre(X, Y), padre(Y, Z).
hijo(X, Y)
es verdadero si Y es padre de X.
abuelo(X, Z)
es verdadero si X es padre de Y y Y es padre de Z.
Prolog cuenta con operadores para la unificación y comparación, sea con evaluación o sea simbólica, como los siguientes:
X is Y %unificación con evaluación.
X = Y %unificación simbólica
X=:=Y %comparación con evaluación
X == Y %comparación simbólica.
?- X is 3+5.
X = 8
?- X = 3+5.
X = 3+5
?- 3+5 =:= 2+6.
yes
?- 3+5 == 2+6.
no
?- 3+5 == 3+5.
yes
✍️ Autor: Emilio Giordano
🔗 Más resúmenes de Programación Declarativa en el repositorio