PDF de programación - Tema DA-7: Formalización en Prolog de la lógica proposicional

Imágen de pdf Tema DA-7: Formalización en Prolog de la lógica proposicional

Tema DA-7: Formalización en Prolog de la lógica proposicionalgráfica de visualizaciones

Publicado el 17 de Agosto del 2017
1.247 visualizaciones desde el 17 de Agosto del 2017
126,2 KB
39 paginas
Creado hace 20a (21/09/2003)
Razonamiento Automático

Curso 2002–03

Tema DA-7: Formalización en

Prolog de la lógica proposicional

José A. Alonso Jiménez

Miguel A. Gutiérrez Naranjo

Dpto. de Ciencias de la Computación e Inteligencia Artificial

Universidad de Sevilla

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.1

Sintaxis de la lógica proposicional
x Alfabeto proposicional:
u símbolos proposicionales.
u conectivas lógicas: ¬ (negación), ∧ (conjunción), ∨
(disyunción), → (condicional), ↔ (equivalencia).
u símbolos auxiliares: “(“ y “)”.
x Fórmulas proposicionales:
u símbolos proposicionales
u ¬F , (F ∧ G), (F ∨ G), (F → G), (F ↔ G)

.x Eliminación de paréntesis:
u Eliminación de paréntesis externos.
u Precedencia: ¬, ∧, ∨ →, ↔
u Asociatividad: ∧ y ∨ asocian por la derecha
x Sintaxis en Prolog
Usual ¬ ∧ ∨ → ↔
Prolog - & v => <=>
x Declaración de operadores:

-).
:- op(610, fy,
:- op(620, xfy, &).
:- op(630, xfy, v).
:- op(640, xfy, =>).
:- op(650, xfy, <=>).

% negación
% conjunción
% disyunción
% condicional
% equivalencia

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.2

Valores y funciones de verdad
x Valores de verdad:
u 1: verdadero y 0: falso
x Def. de valor de verdad:
u valor de verdad(?V) si V es un valor de verdad.

valor_de_verdad(0).
valor_de_verdad(1).

x Funciones de verdad:

i ¬i
1 0
0 1

i
j
1 1
1 0
0 1
0 0

i ∧ j i ∨ j i → j i ↔ j
1
0
0
0

1
0
1
1

1
1
1
0

1
0
0
1

x Def. de funcion de verdad:
u funcion de verdad(+Op, +V1, +V2, -V) si Op(V1,V2)=V.

0, 0, 0) :- !.
_, _, 1).
1, 1, 1) :- !.
_, _, 0).

funcion_de_verdad(v,
funcion_de_verdad(v,
funcion_de_verdad(&,
funcion_de_verdad(&,
funcion_de_verdad(=>, 1, 0, 0) :- !.
funcion_de_verdad(=>, _, _, 1).
funcion_de_verdad(<=>, X, X, 1) :- !.
funcion_de_verdad(<=>, _, _, 0).

u funcion de verdad(+Op, +V1, -V) si Op(V1)) = V

.

funcion_de_verdad(-, 1, 0).
funcion_de_verdad(-, 0, 1).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.3

Valor de una fórmula
x Representación de las intepretaciones
u Listas de pares de variables y valores de verdad
u Ejemplo: [(p,1),(r,0),(u,1)]
x Def. del valor de una fórmula en una inter-
u valor(+F, +I, -V) se verifica si el valor de la fórmula
u Ejemplos:

F en la interpretación I es V

pretación

?- valor((p v q) & (-q v r),[(p,1),(q,0),(r,1)],V).
V = 1
?- valor((p v q) & (-q v r),[(p,0),(q,0),(r,1)],V).
V = 0

u Def. de valor:

valor(F, I, V) :-

memberchk((F,V), I).

valor(-A, I, V) :-

valor(A, I, VA),
funcion_de_verdad(-, VA, V).

valor(F, I, V) :-

F =.. [Op, A, B],
valor(A, I, VA),
valor(B, I, VB),
funcion_de_verdad(Op, VA, VB, V).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.4

Interpretaciones de una fórmula
x I interpretación principal de F syss I es una

aplicación del conjunto de los símbolos proposi-
cionales de F en el conjunto de los valores de
verdad.

x Cálculo de las interpretaciones principales:
u interpretaciones formula(+F,-L) se verifica si L es el

conjunto de las interpretaciones principales de la
fórmula F.

u Ejemplo

?- interpretaciones_formula((p v q) & (-q v r),L).
L = [[ (p, 0), (q, 0), (r, 0)],
(r, 1)],
(r, 0)],
(r, 1)],
(r, 0)],
(r, 1)],
(r, 0)],
(r, 1)]]

[ (p, 0), (q, 0),
[ (p, 0), (q, 1),
[ (p, 0), (q, 1),
[ (p, 1), (q, 0),
[ (p, 1), (q, 0),
[ (p, 1), (q, 1),
[ (p, 1), (q, 1),

u Def. de interpretaciones formula:

interpretaciones_formula(F,U) :-

findall(I,interpretacion_formula(I,F),U).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.5

Interpretaciones de una fórmula
x Interpretación de una fórmula:
u interpretacion formula(?I,+F) se verifica si I es una
u Ejemplo:

interpretación de la fórmula F.

?- interpretacion_formula(I,(p v q) & (-q v r)).
I = [ (p, 0), (q, 0), (r, 0)] ;
I = [ (p, 0), (q, 0), (r, 1)] ;
I = [ (p, 0), (q, 1), (r, 0)] ;
I = [ (p, 0), (q, 1), (r, 1)] ;
I = [ (p, 1), (q, 0), (r, 0)] ;
I = [ (p, 1), (q, 0), (r, 1)] ;
I = [ (p, 1), (q, 1), (r, 0)] ;
I = [ (p, 1), (q, 1), (r, 1)] ;
No

u Def. de interpretacion formula:

interpretacion_formula(I,F) :-

simbolos_formula(F,U),
interpretacion_simbolos(U,I).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.6

Interpretaciones de una fórmula
x Símbolos de una fórmula
u simbolos formula(+F,?U) se verifica si U es el conjunto

ordenado de los símbolos proposicionales de la fórmula
F.

u Ejemplo:

?- simbolos_formula((p v q) & (-q v r), U).
U = [p, q, r]

u Def. de simbolo formula

simbolos_formula(F,U) :-

simbolos_formula_aux(F,U1),
sort(U1,U).

simbolos_formula_aux(F,[F]) :-

atom(F).

simbolos_formula_aux(-F,U) :-
simbolos_formula_aux(F,U).

simbolos_formula_aux(F,U) :-

F =.. [_Op,A,B],
simbolos_formula_aux(A,UA),
simbolos_formula_aux(B,UB),
union(UA,UB,U).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.7

Interpretaciones de una fórmula
x Interpretación de una lista de símbolos:
u interpretacion simbolos(+L,-I) se verifica si I es una

interpretación de la lista de símbolos proposicionales
L.

u Ejemplo:

?- interpretacion_simbolos([p,q,r],I).
I = [ (p, 0), (q, 0), (r, 0)] ;
I = [ (p, 0), (q, 0), (r, 1)] ;
I = [ (p, 0), (q, 1), (r, 0)] ;
I = [ (p, 0), (q, 1), (r, 1)] ;
I = [ (p, 1), (q, 0), (r, 0)] ;
I = [ (p, 1), (q, 0), (r, 1)] ;
I = [ (p, 1), (q, 1), (r, 0)] ;
I = [ (p, 1), (q, 1), (r, 1)] ;
No

u Def. de interpretacion simbolos

interpretacion_simbolos([], []).
interpretacion_simbolos([A|L],[(A,V)|IL]) :-

valor_de_verdad(V),
interpretacion_simbolos(L, IL).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.8

Modelo de una fórmula
x La interpretación I es un modelo de la fórmula
x Comprobación de modelo de una fórmula:
u es modelo formula(+I,+F)
u Ejemplos:

se verifica si
pretación I es un modelo de la fórmula F.

F si el valor de F en I es verdadero.

la inter-

?- es_modelo_formula([(p,1),(q,0),(r,1)],
(p v q) & (-q v r)).

Yes
?- es_modelo_formula([(p,0),(q,0),(r,1)],
(p v q) & (-q v r)).

No

u Def. de es modelo formula:

es_modelo_formula(I,F) :-

valor(F,I,V),
V = 1.

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.9

Cálculo de los modelos de una fórmula
x Cálculo de los modelos principales de una
u modelo formula(?I,+F) se verifica si I es un modelo
u Ejemplo:

principal de la fórmula F.

fórmula:

?- modelo_formula(I,(p v q) & (-q v r)).
I = [ (p, 0), (q, 1), (r, 1)] ;
I = [ (p, 1), (q, 0), (r, 0)] ;
I = [ (p, 1), (q, 0), (r, 1)] ;
I = [ (p, 1), (q, 1), (r, 1)] ;
No

u Def. de modelo formula:

modelo_formula(I,F) :-

interpretacion_formula(I,F),
es_modelo_formula(I,F).

u modelos formula(+F,-L) se verifica si L es el conjunto
u Ejemplo:

de los modelos principales de la fórmula F.

?- modelos_formula((p v q) & (-q v r),L).
L = [[ (p, 0), (q, 1), (r, 1)],
(r, 0)],
(r, 1)],
(r, 1)]]

[ (p, 1), (q, 0),
[ (p, 1), (q, 0),
[ (p, 1), (q, 1),

u Def. de modelos formula

modelos_formula(F,L) :-

findall(I,modelo_formula(I,F),L).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.10

insatisfacible si no lo tiene.

Satisfacibilidad
x Una fórmula es satisfacible si tiene modelo e
x Comprobación de satisfacibilidad:
u es satisfacible(+F) se verifica si la fórmula F es satis-
u Ejemplos:

facible.

?- es_satisfacible((p v q) & (-q v r)).
Yes
?- es_satisfacible((p & q) & (p => r) & (q => -r)).
No

u Def. de es satisfacible:

es_satisfacible(F) :-

interpretacion_formula(I,F),
es_modelo_formula(I,F).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.11

Contramodelo de una fórmula
x Un contramodelo principal de F es una inter-

pretación principal de F que no es modelo de
F .

x Cálculo de contramodelos:
u contramodelo formula(?I,+F) se verifica si I es un con-
u Ejemplos:

tramodelo principal de la fórmula F.

?- contramodelo_formula(I, p <=> q).
I = [ (p, 0), (q, 1)] ;
I = [ (p, 1), (q, 0)] ;
No
?- contramodelo_formula(I, p => p).
No

u Def. de contramodelo formula:

contramodelo_formula(I,F) :-

interpretacion_formula(I,F),
not(es_modelo_formula(I,F)).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.12

pretaciones son modelos de F .

Validez. Tautologías
x F es válida (o tautología) si todas las inter-
x Comprobación de tautologías:
u es tautologia(+F) se verifica si la fórmula F es una
u Ejemplos:

tautología.

?- es_tautologia((p => q) v (q => p)).
Yes
?- es_tautologia(p => q).
No

u Def. de es tautologia:

es_tautologia(F) :-

not(contramodelo_formula(_I,F)).

u Definición alternativa:

es_tautologia_alt(F) :-

not(es_satisfacible(-F)).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.13

Interpretaciones de conjuntos
x Una interpretación principal de un conjunto

de fórmulas es una aplicación del conjunto de
sus símbolos proposicionales en el conjunto de
los valores de verdad.

x Cálculo de las interpretaciones principales de
u interpretaciones conjunto(+S,-L) se verifica si L es el

un conjunto de fórmulas:

conjunto de las interpretaciones principales del con-
junto S.

u Ejemplo:

?- interpretaciones_conjunto([p => q, q=> r],U).
U = [[ (p, 0), (q, 0), (r, 0)],
(r, 1)],
(r, 0)],
(r, 1)],
(r, 0)],
(r, 1)],
(r, 0)],
(r, 1)]]

[ (p, 0), (q, 0),
[ (p, 0), (q, 1),
[ (p, 0), (q, 1),
[ (p, 1), (q, 0),
[ (p, 1), (q, 0),
[ (p, 1), (q, 1),
[ (p, 1), (q, 1),

u Def. de interpretaciones conjunto:

interpretaciones_conjunto(S,U) :-

findall(I,interpretacion_conjunto(I,S),U).

RA 2002–03

CcIa

Formalización en Prolog de la lógica proposicional DA-7.14

Interpretaciones de conjuntos
u interpretacion conjunto(?I,+S) se verifica si I es una
u Ejemplo:

interpretación del conjunto de fórmulas S.

?- interpretacion_conjunto(I,[p => q, q=> r]).
I = [ (p, 0), (q, 0), (r, 0)] ;
I = [ (p, 0), (q, 0), (r, 1)] ;
I = [ (p, 0), (q, 1), (r, 0)] ;
I = [ (p, 0), (q, 1), (r, 1)] ;
I = [ (p, 1), (q, 0), (r, 0)]
  • Links de descarga
http://lwp-l.com/pdf6503

Comentarios de: Tema DA-7: Formalización en Prolog de la lógica proposicional (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad