%
/*
    rel_d3.pro
    Ejercicio 7.4, "Matemáticas Discretas", Ross, p.314
    Alberto Pacheco, alberto@acm.org, Ago'99
    Automatiza creación de conjunto S por medio de rangos: new_set()

    Consultar "rel_x.pro"
    Ejecutar ?- main.
    Anote Nombre de archivo: rel_d3

*/

%-- RELACION DE NOMBRES DE RELACIONES
data(r1).
data(r3).
data(r5).

%-- RELACIONES
init :- % Genera conjunto S=[0,3]
    new_set(s,0,3).

% R1 = { m+n=3 | m#S y n#S } (NR,S)
% (0,3),(1,2),(2,1),(3,0)
r1(X,Y) :-
    s(X),
    s(Y),
    3 is X+Y.

% R3 = { m<=n | m#S y n#S } (R,AS,T)
% (0,0),(0,1),(0,2),(0,3),(1,1),(1,2),(1,3),(2,2),(2,3),(3,3)
r3(X,Y) :-
    s(X),
    s(Y),
    X =< Y.

% R5 = { max(x,y)=3 | m#S y n#S } (S)
% (0,3),(1,3),(2,3),(3,0),(3,1),(3,2),(3,3)
r5(X,Y) :-
    s(X),
    s(Y),
    max(X,Y,3).

max(X,Y,X) :- X>Y.
max(X,Y,Y).

%