In the following example radcan chooses the wrong sign. I tried, but could not manage to make a smaller example...
All variables are real, and we assume away the following degenerate case:
Assumption (A): it does not hold that L1=L2=0):
(%i236) facts();
(%o236) [%lambda>=0,1>%lambda,%delta>0,p>2,L1>=0,1>L1,0>=L2,L2>-1,g>=0,L2^2-2L1L2+L1^2+g^2>0,P1>=0,P2>0]
(%i216) p:(sqrt(1+P1^2) * sqrt(1+P2^2)-P1 * P2);
(%o216) sqrt(P1^2+1) * sqrt(P2^2+1)-P1 * P2
(%i235) radcan(p),P1=abs(g) / abs(L1-L2),P2=sqrt(1-L1^2) * sqrt(1-L2^2) / abs(L1-L2);
(%o235) ((L1 * L2-1) * sqrt(L2^2-2 * L1 * L2+L1^2+g^2)-g * sqrt(1-L1) * sqrt(L1+1) * sqrt(1-L2) * sqrt(L2+1)) / (L2^2-2 * L1 * L2+L1^2)
From the facts P1>=0,P2>0 and (%o216) it is clear that p>=0. However, from the facts L1>=0,0>=L2,g>=0 it follows that (L1*L2-1)<0 and -g<=0. Since
sqrt(L2^2-2 * L1 * L2+L1^2+g^2)=sqrt((L2-L1)^2+g^2)>0
by assumption (A), and
sqrt(1-L1) * sqrt(L1+1) * sqrt(1-L2) * sqrt(L2+1)) / (L2^2-2 * L1 * L2+L1^2)>0 by the facts 1>L1,L2>-1 and (A). Hence the expression in (%o235), which should equal p>=0, is negative. Radcan chose the wrong sign.
Thanks!
(%i238) build_info();
(%o238) build_info(version="5.36.1",timestamp="2015-05-08 21:35:46",host="i686-pc-linux-gnu",lisp_name="GNU Common Lisp (GCL)",lisp_version="GCL 2.6.7")