%% triangle1(A,B,C), triangle2(1,D,E,A,B,C). /** A = 1.41421, B = 1.0, C = 1.0, D = 1.0, E = 1.41421 ; **/ triangle1(A,B,C) :- number1(D), number1(E), number1(F), F is D + E, A = sqrt(D), B = sqrt(E), C = sqrt(F). number1(1.0). number1(2.0). number1(3.0). number1(4.0). number1(5.0). number1(6.0). number1(7.0). number1(8.0). number1(9.0). number1(10.0). number1(11.0). number1(12.0). number1(13.0). number1(14.0). number1(15.0). number1(16.0). number1(17.0). number1(18.0). number1(19.0). number1(20.0). number1(21.0). number1(22.0). number1(23.0). number1(24.0). number1(25.0). %% ?- triangle2(6.0,B,C). %% B = 8.0, %% C = 10.0 ; triangle2(D,E,F,A,B,C) :- number(D), E = D*(B/A), F = D*(C/A), !. triangle2(D,E,F,A,B,C) :- number(E), D = E*(A/B), F = E*(C/B). triangle2(D,E,F,A,B,C) :- number(F), D = F*(A/C), E = F*(B/C). simplify1(Value1*(sqrt(Value2)/sqrt(Value2)),Value1) :- !. simplify1(Value1*(Expression1/Expression2),Value2) :- simplify2(Expression1,Expression3), simplify2(Expression2,Expression4), simplify4(Value1*(Expression3/Expression4),Value2). simplify2(sqrt(Value1),Value2) :- Value2 is sqrt(Value1), number1(Value2), !. simplify2(Expression,Expression). simplify4(Value1*(sqrt(Value2)/sqrt(Value3)),Value1*(sqrt(Value2)/sqrt(Value3))) :- !. simplify4(Value1*(sqrt(Value2)/Value3),Value4*(sqrt(Value2))) :- Value4 is Value1 / Value3, !. simplify4(Value1*(Value2/sqrt(Value3)),Value4*(sqrt(Value3))) :- Value4 is Value1 * Value2, !. simplify4(Expression,Value) :- Value is Expression. simplify3(8,2,2) simplify3(Number1,Number2,Square) :- factor(Number1,[],Squares), factor(2,Squares,Squares) factor(Number1,Squares1,Squares2) :- number2(Number2), Number3 is Number1/Number2, Number1 mod Number2 is 0, append(Squares1,Number3,Squares3), factor(Numb number2(2). number2(3). number2(5). number2(7). number2(9). number2(11). number2(13). number2(17). number2(19). number2(23).