Does asinh(x)=ln(x+sqrt(x^2+1)) ?! Great example, thanks!

Can I ask what question you asked your students to get this answer? Did your students use Wolfram alpha etc.? This really is an esoteric mathematical question.

Now to how STACK deals with this.

The "Algebraic Equivalence" function gives "false". I agree this is probably a bug (in Maxima, and my extensions to STACK).

The "Integration" answer test returns "true", because this differentiates each expression internally, so that is one approach. If you are confident the student's answer is continuous, you can differentiate both sides, and check at one additional point, e.g. x=0. If this is an integration problem then a very similar example is here: https://github.com/maths/moodle-qtype_stack/blob/master/tests/fixtures/answertestfixtures.class.php#L940

A viable alternative is to look for numerical evidence that the expressions really are the same, as in your numerical example. For example, this Maxima code generates 10 unpleasant small numbers, and evaluates the difference of both expressions.

expr:asinh(x)-ln(x+sqrt(x^2+1));

L:maplist(lambda([ex], ev(expr,x=ex)), makelist(float((sqrt(2)^k+k*%pi)/4), k, 10));

L:maplist(lambda([ex], is(abs(ex)<10^-6)), L);

result:apply("and", L);

Many online assessment systems take this kind of evidence as sufficient for algebraic equivalence. STACK does this kind of thing, but uses it as evidence of **difference**.

Note, all my numbers above are positive (so this test will decide x=abs(x).....) and there is no error checking on if I'm unlucky and hit a singularity. We could create some positive and negative numbers, but then choose x+a=abs(x+a), for a suitable large a..... This is why STACK does not use this approach. The outcome from STACK are problems such as you have reported.

I'm very open to suggestions. We could have a "numerical equivalence" test, but I'm confident this will generate more examples such as yours, in the other direction.

Anyway, I've made a note of your example and added it to the unit tests as a "known fail". I'm also going to add it to my list of fun calculus examples....