/*
 * 07-aristas_iguales.pl
 *
 * Defina un predicado aristas_iguales/2 que compruebe si dos aristas
 * son la misma en un grafo no dirigido representado mediante
 * una lista libre de aristas.
 * Ejemplo: si la arista entre los vértices j y k existe, entonces se la
 * denota con arista(j.k).  Por otro lado debe notarse que  el grafo no
 * es dirigido, por lo cual arista(j,k) y arista(k,j) son la misma arista.
 *
 * ejecutar desde el shell con el siguiente mandato:
 * gprolog --entry-goal "consult('07-aristas_iguales.pl')" --query-goal 'pruebas'
 */

p1_aristas_iguales :- aristas_iguales(arista(a,b), arista(a,b)).
p2_aristas_iguales :- aristas_iguales(arista(a,b), arista(b,a)).
p3_aristas_diferentes_falla :- \+(aristas_iguales(arista(a,b), arista(a,c))).
p4_no_arista_falla :- \+(aristas_iguales(algo, arista(a,b))).

pruebas :-
	p1_aristas_iguales,
	p2_aristas_iguales,
	p3_aristas_diferentes_falla,
	p4_no_arista_falla,
	paso('todo'), !.
pruebas :- fallo.

paso(Msg)  :- msg(paso,Msg), !.
fallo(Msg) :- msg(fallo,Msg), !.
fallo      :- msg(fallo,''), !.
msg(paso, Msg) :- write('Paso: '), write(Msg), nl.
msg(fallo, '') :- write('Fallo algo.'), nl.
msg(fallo, Msg) :- write('Fallo: '), write(Msg), nl.

aristas_iguales(arista(X,Y), arista(X,Y)).
aristas_iguales(arista(X,Y), arista(Y,X)).

/* EOF 07-aristas_iguales.pl */
