simp(1*X*Y,Z) :- !, simp(X*Y,Z). simp(0*Z+X,Y) :- !, simp(X,Y). simp(M*N*Y,Z) :- integer(M),integer(N),P is M*N, !, simp(P*Y,Z). simp(M*N,P) :- integer(M),integer(N),!,P is M*N. simp(X*(Y*Z),U) :- !, simp(X*Y*Z,U). simp(0+X+Y,Z) :- !, simp(X+Y,Z). simp(X^1,Y) :- !, simp(X,Y). simp(X+Y,U+V) :- !, simp(X,U), simp(Y,V). simp(X*Y,U*V) :- !, simp(X,U), simp(Y,V). simp((X)/(Y),(U)/(V)) :- !, simp(X,U), simp(Y,V). simp(X,X).