% 2*c = (3*a*b - 5*c^2*d) / (2*a*c - 6*x^2*y)
% ocurre( +Incognita, +Expr )
ocurre( X, X ).
ocurre( X, A + B ) :-
ocurre( X, A );
ocurre( X, B ).
ocurre( X, A - B ) :-
ocurre( X, A );
ocurre( X, B ).
ocurre( X, Expr ) :-
Expr =.. [ _, A, B ],
( ocurre(X, A); ocurre(X, B) ).
% resuelve( +Incognita, +Ecuacion, -Solucion ).
resuelve( X, X = R, X = R ).
resuelve( X, A + B = C, Resp ) :-
ocurre( X, A ),
resuelve( X, A = C - B, Resp ).
resuelve( X, A + B = C, Resp ) :-
ocurre( X, B ),
resuelve( X, B = C - A, Resp ).
resuelve( X, A * B = C, Resp ) :-
ocurre( X, A ),
resuelve( X, A = C / B, Resp ).
resuelve( X, A * B = C, Resp ) :-
ocurre( X, B ),
resuelve( X, B = C / A, Resp ).
:- op( 150, yfx, [ => ]).
% xfx, xfy, yfx, fx, fy, xf, yf
% 1. A ana le gustan todos los juguetes que le gustan a susana.
% 2. A susana le gustan todos los juguetes con los
% que juega
% 3. Susana juega con snoopy.
% 4. Susana juega con sally.
% 5. snoopy es un juguete.
:- op( 500, xfy, [juegacon, esun, gusta] ).
:- op( 510, xfy, y ).
:- op( 520, xfy, si ).
:- dynamic gusta/2, y/2, esun/2, gusta/2.
:- dynamic si/2, juegacon/2.
ana gusta X si susana gusta X.
susana gusta X si X esun juguete y susana juegacon X.
susana juegacon snoopy.
susana juegacon sally.
snoopy esun juguete.
% pregunta( +Consulta ).
pregunta( X ) :- X.
pregunta( X y Y ) :-
pregunta(X), pregunta(Y).
pregunta( X ) :-
X si Y,
pregunta( Y ).
               (
geocities.com/mx)