Изучение основных способов представления математических проблем в символьном виде, пригодном для формальной обработки на компьютере, страница 4

i(potens(plus(mult(X,A),B),flt(N)),X,div(potens(plus(mult(A,X),B),flt(M)),mult(A,flt(M)))):-N<>-1,M=N+1,const(A,X), const(B,X),!.

i(potens(plus(B,mult(A,X)),flt(N)),X,div(potens(plus(mult(A,X),B),flt(M)),mult(A,flt(M)))):-N<>-1,M=N+1,const(A,X), const(B,X),!.

i(potens(plus(B,mult(X,A)),flt(N)),X,div(potens(plus(mult(A,X),B),flt(M)),mult(A,flt(M)))):-N<>-1,M=N+1,const(A,X), const(B,X),!.

i(div(flt(F),plus(mult(A,X),B)),X,mult(div(flt(F),A),ln(abs(plus(mult(A,X),B))))):-const(A,X), const(B,X),!.

i(div(flt(F),plus(mult(X,A),B)),X,mult(div(flt(F),A),ln(abs(plus(mult(A,X),B))))):-const(A,X), const(B,X),!. 

i(div(flt(F),plus(B,mult(A,X))),X,mult(div(flt(F),A),ln(abs(plus(mult(A,X),B))))):-const(A,X), const(B,X),!. 

i(div(flt(F),plus(B,mult(X,A))),X,mult(div(flt(F),A),ln(abs(plus(mult(A,X),B))))):-const(A,X), const(B,X),!. 

i(div(flt(F),mult(plus(X,A),plus(X,B))),X,mult(div(flt(F),minus(A,B)),ln(abs(div(plus(X,B),plus(X,A)))))):-const(A,X), const(B,X),not(equal(A,B)), !.

i(div(flt(F),mult(plus(A,X),plus(X,B))),X,mult(div(flt(F),minus(A,B)),ln(abs(div(plus(X,B),plus(X,A)))))):-const(A,X), const(B,X),not(equal(A,B)),!. 

i(div(flt(F),mult(plus(X,A),plus(B,X))),X,mult(div(flt(F),minus(A,B)),ln(abs(div(plus(X,B),plus(X,A)))))):-const(A,X), const(B,X),not(equal(A,B)),!. 

i(div(flt(F),mult(plus(A,X),plus(B,X))),X,mult(div(flt(F),minus(A,B)),ln(abs(div(plus(X,B),plus(X,A)))))):-const(A,X), const(B,X),not(equal(A,B)),!. 

i(div(F,minus(potens(X,flt(2)),potens(A,flt(2)))),X,mult(div(F,mult(flt(2),A)),ln(abs(div(minus(X,A),plus(X,A)))))):-const(A,X), const(F,X), !. 

i(div(F,minus(potens(A,flt(2)),potens(X,flt(2)))),X,mult(div(mult(flt(-1),F),mult(flt(2),A)),ln(abs(div(minus(X,A),plus(X,A)))))):-const(A,X), const(F,X), !. 

i(div(F,plus(potens(X,flt(2)),potens(A,flt(2)))),X,mult(div(F,A),atan(div(X,A)))):-const(A,X), const(F,X), !. 

i(div(F,plus(potens(A,flt(2)),potens(X,flt(2)))),X,mult(div(F,A),atan(div(X,A)))):-const(A,X), const(F,X), !. 

i(potens(A,X),X,div(potens(A,X),ln(abs(A)))):-const(A,X), !.

i(mult(X,ln(X)),X,mult(potens(X,flt(2)),minus(div(ln(X),flt(2)),div(flt(1),flt(4))))):-!.

i(mult(ln(X),X),X,mult(potens(X,flt(2)),minus(div(ln(X),flt(2)),div(flt(1),flt(4))))):-!. 

i(mult(ln(X),potens(X,flt(N))),X,mult(potens(X,flt(M)),minus(div(ln(X),flt(M)),div(flt(1),potens(flt(M),flt(2)))))):-N<>-1, M=N+1, !.

i(mult(potens(X,flt(N)),ln(X)),X,mult(potens(X,flt(M)),minus(div(ln(X),flt(M)),div(flt(1),potens(flt(M),flt(2)))))):-N<>-1, M=N+1, !.

i(ln(X),X,minus(mult(X,ln(X)),X)):-!.

i(div(F,mult(X,ln(X))),X,mult(F,ln(ln(abs(X))))):-const(F,X), !.

i(div(F,mult(ln(X),X)),X,mult(F,ln(ln(abs(X))))):-const(F,X), !.

i(U,X,V):-reduce(U,U1), not(equal(U,U1)), i(U1,X,V), !.

i(mult(V,U),X,Y):-i(U,X,U1), doreduce(U1,U2), i(V,U2,Y), !.

i(mult(U,V),X,Y):-i(U,X,U1), doreduce(U1,U2), i(V,U2,Y), !.

i(mult(E,U),X,mult(E,V)):- const(E,X), i(U,X,V), !.

i(mult(U,E),X,mult(E,V)):- const(E,X), i(U,X,V), !.

i(div(E,U),X,mult(E,V)):- const(E,X), i(div(flt(1),U),X,V), !.

i(div(U,E),X,mult(div(flt(1),E),V)):- const(E,X), i(div(flt(1),U),X,V), !.

/*

CLAUSES FOR READING OF AN EXPRESSION

*/

readexp(EXP) :clearwindow,

cursor(11,1),

write("<?> for help     <ESC> to quit"),

cursor(1,1),

write("Write an expression: "),!,

readexp(EXP,"",0).

readexp(flt(0)):-exit(0).

readexp(EXP1,STR,Pos) :cursor(Ypos,Xpos),

editstr(STR,STR1,Xpos,Ypos,Pos),

cursor(2,0), write("                                            "),

cursor(2,22),

tokl(STR1,TOKL),

s_exp(TOKL,OL,EXP),

!,

check(EXP,OL,EXP1).

check(EXP,[],EXP):cursor(2,22),

write("                                             \n"),

write("                                             \n"),

write("                                             \n"),

write("                                             \n"),