Checking cross-ratio preservation with Mathematica

I want to know how to check/prove with symbolic package that cross ratio is preserved by Möbius transformations. I also proved on paper that any inversion "almost" keeps cross ratio - it is just conjugate of normal cross-ratio. I want to check this as well. This should not be hard for experienced user. My code:

f[z_] := (a z + b) / (c z + d)
g[z_] := (a Conjugate[ z] + b) / (c Conjugate[z] + d)
CR[z1_, z2_, z3_, z4_] := (z3 - z1) (z4 - z2) / ((z3 - z2) (z4 - z1))

What I want to check is for any complex numbers $z_1, z_2, z_3, z_4$ and $ad-bc=1$the following is true: $$CR(z_1, z_2, z_3, z_4)=CR(f(z_1), f(z_2), f(z_3), f(z_4))$$ and $$CR(z_1, z_2, z_3, z_4)=\overline{CR(g(z_1), g(z_2), g(z_3), g(z_4))}.$$ I know for sure that first statement is true and I am almost sure that second is true as well.

• The first one is easy enough: (CR[f[z1], f[z2], f[z3], f[z4]] // FullSimplify) == (CR[z1, z2, z3, z4] // FullSimplify) returns True. For the second you may need to break each z into real and imaginary parts and then apply FullSimplify -- Conjugate only works on numbers (not symbols). May 29 '17 at 14:36
• @bill s If you can please post your answer for the second as well and I will accept it. May 29 '17 at 14:52

It's a bit slow, but you can use ComplexExpand + Simplify to prove your identities:

r1 = ComplexExpand[
CR[z1, z2, z3, z4],
{z1, z2, z3, z4}
] //Simplify; //Timing

r2 = ComplexExpand[
CR[f[z1], f[z2], f[z3], f[z4]],
{z1, z2, z3, z4}
] //Simplify; //Timing

r3 = Conjugate @ ComplexExpand[
CR[g[z1], g[z2], g[z3], g[z4]],
{z1, z2, z3, z4}
] //Simplify; //Timing

r1 === r2 === r3

{0.007178, Null}

{10.5087, Null}

{29.2022, Null}

True

• Thanks a lot! I will study your code carefully. May 29 '17 at 16:01