asksign uses facts even after they've been deleted
asksign uses facts even after they've been deleted
asksign(asin(x)) documentation
is({}<{}) should return unknown
Re "So why not give sign the missing answers instead: let it return imaginary or complex (as csign already does) when the declarations leave no better option. Then sign(z) => complex, sign(j) => imaginary, sign(j^2) => nz, and is maps imaginary to false and complex to unknown. asksign would still reject anything not known to be real." The raison d'être of csign is precisely that the return values of sign are a closed set. We can't "hope" that our users' code doesn't depend on this.
Re is(%i>0) is not false, but meaningless since %$i is not part of the ordered field R. It should return unknown, just as other meaningless statements do, e.g. is([1]>0) and is({}<[]) return unknown.
Yes, z might be real, but I disagree that sign should assume that it is real and thus return pnz. The root problem is that sign has no way to return unknown other than signaling an error. If is depends on the current behavior, that is a bug in is. cf. my comments in #4922.
Since sign is clearly documented as assuming that its argument is a real-valued expression, I would argue that as soon as it sees anything explicitly complex, it should raise an error, even if the overall value of the expression is real. That is, all the following cases should raise an error: sign(%i) << already gives error sign(z) sign(z^2) sign(j^2) sign(abs(x+%i)) sign((x+%i)*(x-%i)) => pos (because it expands) The error should be something like :The sign function is only defined for expressions...