# evaluation – Hold parents of ArcTan

If this question is beating a dead horse about `Hold`, `Inactivate` etc., a close vote is fair enough. That being said, I’m curious about ways to achieve this.

I have an expression, the result of an integral,

``````(-3 ArcTan((1 - a)/Sqrt(1 - a^2))^2 - ArcSin(a) (2 ArcTan((1 - a)/Sqrt(1 - a^2)) +
ArcTan(a/Sqrt(1 - a^2))) /. a -> 1/2) - (-3 ArcTan((1 - a)/Sqrt(1 - a^2))^2 -
ArcSin(a) (2 ArcTan((1 - a)/Sqrt(1 - a^2)) + ArcTan(a/Sqrt(1 - a^2))) /. a -> 0)
``````

I want to evaluate the two `ReplaceAll`‘s, and all `ArcTan`‘s and `ArcSin`‘s, but not any nodes higher than them in the expression tree. I obtained the full expression with

``````Inactive((# /. a -> 1/2) - (# /. a -> 0)) &@
Integrate((# /. b -> 1 - a) - (# /. b -> a) &@ Integrate(1/(1 + b^2 - a^2), b), a)
``````

Bumbling around a bit, here’s what I got:

``````Activate(Inactivate((# /. a -> 1/2) - (# /. a -> 0)), ReplaceAll) /.
{
Inactive(ArcTan)(x_) :> Activate(ArcTan@x),
Inactive(ArcSin)(x_) :> Activate(ArcSin@x)
}&@
Integrate((# /. b -> 1 - a) - (# /. b -> a) &@ Integrate(1/(1 + b^2 - a^2), b), a)
``````

I suppose this (activating `ReplaceAll`‘s, then replacing selected inactive expressions with their activated versions) is a pretty straightforward way of achieving this — is it a rightheaded approach? Are there more concise approaches, perhaps with `Hold`?