3 answers

The issue comes from the fact that the max(a,b) function is a Python builtin, that basically asks whether a<b and if not returns a. However, the symbolic expressions abs(x) and abs(y) are not comparable,

sage: bool(abs(x) < abs(y))
False
sage: bool(abs(x) > abs(y))
False

Hence, the max function will always return the first argument:

sage: max(abs(x),abs(y))
abs(x)
sage: max(abs(y),abs(x))
abs(y)

Here, you want to deal with the max wiewed as a symbolic expression, so you have to use max_symbolic instead: