Moreschi (1986) Eqs. (A53) — (A57) give the transformation law as
\begin{align}
  u' &= k(u - \alpha) + \Omega \Delta u \\
  \zeta' &= \frac{a \zeta + b} {c \zeta + d} + \Omega \Delta \zeta \\
  \bar{\zeta}' &= \frac{\bar{a} \bar{\zeta} + \bar{b}} {\bar{c} \bar{\zeta} + \bar{d}} + \Omega \overline{\Delta \zeta} \\
  \Omega' &= k\, \Omega
\end{align}
where $k$ is a function of $(\zeta, \bar{\zeta})$ and the first-order parts are
\begin{equation}
  \Delta u = - \frac{1}{k} \eth u' \bar{\eth} u'
  \qquad \text{and} \qquad
  \Delta \zeta =  - \frac{1}{k} \left( \eth u' \bar{\eth} \zeta' + \eth \zeta' \bar{\eth} u' \right).
\end{equation}

Note that with $P = \frac{1}{2} (1 + \zeta \bar{\zeta})$, we can also write
\begin{equation}
  \eth f = P^{1-s} \frac{\partial} {\partial \zeta} (P^s f)
\end{equation}
for functions of spin weight $s$.  [Here, we will be consistently interpreting Moreschi's $\eth$ differently from how he means it by a factor of $\sqrt{2}$, just as a consistency test.  The results should be the same, regardless.  See below for a derivation using his interpretation.]  In particular, for $s=0$, we have $\partial_\zeta = P^{-1} \eth$.

In particular, we see that — at least in the limit $\Omega \to 0$ — we have $\bar{\eth} \zeta' = 0$ and $\eth \bar{\zeta}' = 0$, so the expression for $\Delta \zeta$ simplifies to
\begin{equation}
  \Delta \zeta =  - \frac{1}{k} \eth \zeta' \bar{\eth} u'.
\end{equation}

We can see that
\begin{equation}
  \frac{\partial \zeta'} {\partial \zeta} = \frac{1} {(c\zeta + d)^2},
\end{equation}
and Moreschi's Eq. (A52) gives
\begin{equation}
  k = \frac{2P} {|a \zeta + b|^2 + |c \zeta + d|^2}
\end{equation}

A useful expression is
\begin{equation}
  \frac{P'}{P} \frac{1} {\frac{\partial \zeta'} {\partial \zeta}}
  = \frac{|a \zeta + b|^2 + |c \zeta + d|^2} {(1 + \zeta \bar{\zeta})(\bar{c} \bar{\zeta} + \bar{d})(c \zeta + d)} (c \zeta + d)^2
  = \frac{c \zeta + d} {k (\bar{c} \bar{\zeta} + \bar{d})}
  = \frac{\exp(i \lambda)} {k},
\end{equation}
where the last expression may as well define $\exp(i \lambda)$, and can also be written as $\frac{P'} {\eth\zeta'} = \frac{\exp(i\lambda)}{k}$.

$\Delta \zeta = - \frac{1}{k} P \frac{\partial \zeta'} {\partial \zeta} \bar{\eth} u'$

# Manual derivation

\begin{align}
  \left. \begin{pmatrix}
  \frac{\partial u} {\partial u'} &
  \frac{\partial \zeta} {\partial u'} &
  \frac{\partial \bar{\zeta}} {\partial u'} &
  \frac{\partial \Omega} {\partial u'}
  \\
  \frac{\partial u} {\partial \zeta'} &
  \frac{\partial \zeta} {\partial \zeta'} &
  \frac{\partial \bar{\zeta}} {\partial \zeta'} &
  \frac{\partial \Omega} {\partial \zeta'}
  \\
  \frac{\partial u} {\partial \bar{\zeta}'} &
  \frac{\partial \zeta} {\partial \bar{\zeta}'} &
  \frac{\partial \bar{\zeta}} {\partial \bar{\zeta}'} &
  \frac{\partial \Omega} {\partial \bar{\zeta}'}
  \\
  \frac{\partial u} {\partial \Omega'} &
  \frac{\partial \zeta} {\partial \Omega'} &
  \frac{\partial \bar{\zeta}} {\partial \Omega'} &
  \frac{\partial \Omega} {\partial \Omega'}
  \end{pmatrix} \right|_{\Omega=0}
  &=
  \left. \begin{pmatrix}
  \frac{\partial u'} {\partial u} &
  \frac{\partial \zeta'} {\partial u} &
  \frac{\partial \bar{\zeta}'} {\partial u} &
  \frac{\partial \Omega'} {\partial u}
  \\
  \frac{\partial u'} {\partial \zeta} &
  \frac{\partial \zeta'} {\partial \zeta} &
  \frac{\partial \bar{\zeta}'} {\partial \zeta} &
  \frac{\partial \Omega'} {\partial \zeta'}
  \\
  \frac{\partial u'} {\partial \bar{\zeta}} &
  \frac{\partial \zeta'} {\partial \bar{\zeta}} &
  \frac{\partial \bar{\zeta}'} {\partial \bar{\zeta}} &
  \frac{\partial \Omega'} {\partial \bar{\zeta}}
  \\
  \frac{\partial u'} {\partial \Omega} &
  \frac{\partial \zeta'} {\partial \Omega} &
  \frac{\partial \bar{\zeta}'} {\partial \Omega} &
  \frac{\partial \Omega'} {\partial \Omega}
  \end{pmatrix} \right|_{\Omega=0} ^{-1}
  \\ &=
  \begin{pmatrix}
  k &
  0 &
  0 &
  0
  \\
  P^{-1} \eth u' &
  \frac{\partial \zeta'} {\partial \zeta} &
  0 &
  0
  \\
  P^{-1} \bar{\eth} u' &
  0 &
  \frac{\partial \bar{\zeta}'} {\partial \bar{\zeta}} &
  0
  \\
  \Delta u &
  \Delta \zeta &
  \overline{\Delta \zeta} &
  k
  \end{pmatrix}^{-1}
  \\ &=
  \begin{pmatrix}
  1/k &
  0 &
  0 &
  0
  \\
  - \frac{\eth u'} {P k \frac{\partial \zeta'} {\partial \zeta}} &
  1 / \frac{\partial \zeta'} {\partial \zeta} &
  0 &
  0
  \\
  - \frac{\bar{\eth} u'} {P k \frac{\partial \bar{\zeta}'} {\partial \bar{\zeta}}} &
  0 &
  1 / \frac{\partial \bar{\zeta}'} {\partial \bar{\zeta}} &
  0
  \\
  - \frac{\Delta u} {k^2}
  + \frac{\Delta \zeta\, \eth u'} {P k^2 \frac{\partial \zeta'} {\partial \zeta}}
  + \frac{\overline{\Delta \zeta}\, \bar{\eth} u'} {P k^2 \frac{\partial \bar{\zeta}'} {\partial \bar{\zeta}}} &
  -\frac{\Delta \zeta} {k \frac{\partial \zeta'} {\partial \zeta}} &
  -\frac{\overline{\Delta \zeta}} {k \frac{\partial \bar{\zeta}'} {\partial \bar{\zeta}}} &
  1/k
  \end{pmatrix}
  \\ &=
  \begin{pmatrix}
  1/k &
  0 &
  0 &
  0
  \\
  - \frac{\eth u'} {P k \frac{\partial \zeta'} {\partial \zeta}} &
  1 / \frac{\partial \zeta'} {\partial \zeta} &
  0 &
  0
  \\
  - \frac{\bar{\eth} u'} {P k \frac{\partial \bar{\zeta}'} {\partial \bar{\zeta}}} &
  0 &
  1 / \frac{\partial \bar{\zeta}'} {\partial \bar{\zeta}} &
  0
  \\
  -\frac{\eth u'\, \bar{\eth} u'} {k^3} &
  \frac{P \bar{\eth} u'} {k^2} &
  \frac{P \eth u'} {k^2} &
  1/k
  \end{pmatrix}
\end{align}

\begin{align}
  \mathbf{n}'
  &=
  \frac{\partial} {\partial u'}
  \\ &=
  \frac{\partial u} {\partial u'} \frac{\partial} {\partial u} + \frac{\partial \zeta} {\partial u'} \frac{\partial} {\partial \zeta} + \frac{\partial \bar{\zeta}} {\partial u'} \frac{\partial} {\partial \bar{\zeta}} + \frac{\partial \Omega} {\partial u'} \frac{\partial} {\partial \Omega}
  \\ &=
  \frac{1} {k} \frac{\partial} {\partial u}
  \\ &=
  \frac{1} {k} \mathbf{n}
  \\
  \mathbf{m}'
  &=
  P' \frac{\partial} {\partial \zeta'}
  \\ &=
  P' \frac{\partial u} {\partial \zeta'} \frac{\partial} {\partial u} + P' \frac{\partial \zeta} {\partial \zeta'} \frac{\partial} {\partial \zeta} + P' \frac{\partial \bar{\zeta}} {\partial \zeta'} \frac{\partial} {\partial \bar{\zeta}} + P' \frac{\partial \Omega} {\partial \zeta'} \frac{\partial} {\partial \Omega}
  \\ &=
  - \frac{P'}{P} \frac{\eth u'} {k \frac{\partial \zeta'} {\partial \zeta}} \frac{\partial} {\partial u} + \frac{P'}{P} \frac{1} {\frac{\partial \zeta'} {\partial \zeta}} P \frac{\partial} {\partial \zeta}
  \\ &=
  - \frac{\exp(i\lambda) \eth u'} {k^2} \frac{\partial} {\partial u} + \frac{\exp(i\lambda)} {k} P \frac{\partial} {\partial \zeta}
  \\ &=
  \frac{\exp(i\lambda)} {k} \left( \mathbf{m} - \frac{\eth u'} {k} \mathbf{n}  \right)
  \\
  \mathbf{l}'
  &=
  -\frac{\partial} {\partial \Omega'}
  \\ &=
  -\frac{\partial u} {\partial \Omega'} \frac{\partial} {\partial u} - \frac{\partial \zeta} {\partial \Omega'} \frac{\partial} {\partial \zeta} - \frac{\partial \bar{\zeta}} {\partial \Omega'} \frac{\partial} {\partial \bar{\zeta}} - \frac{\partial \Omega} {\partial \Omega'} \frac{\partial} {\partial \Omega}
  \\ &=
  -\frac{\partial u} {\partial \Omega'} \mathbf{n} - \frac{\partial \zeta} {\partial \Omega'} P^{-1} \mathbf{m} - \frac{\partial \bar{\zeta}} {\partial \Omega'} P^{-1} \bar{\mathbf{m}} + \frac{\partial \Omega} {\partial \Omega'} \mathbf{l}
  \\ &=
  \frac{\eth u'\, \bar{\eth} u'} {k^3} \mathbf{n} - \frac{\bar{\eth} u'} {k^2} \mathbf{m} - \frac{\eth u'} {k^2} \bar{\mathbf{m}} + \frac{1} {k} \mathbf{l}
\end{align}

# Sympy derivation


```python
import sympy
from sympy import symbols, sin, cos, exp, cot, pi, I
from sympy.diffgeom import Manifold, Patch, CoordSystem, TensorProduct, vectors_in_basis
from sympy import init_printing
init_printing()

u, Ω = symbols("u, Omega", real=True)
ζ, ζ̄ = symbols(r"\zeta, \bar{\zeta}")
up, ðup, ð̄up = symbols(r"u', {\eth}u', \bar{\eth}u'", cls=sympy.Function, real=True)
Ωp = symbols("Omega'", real=True)
ζp, ζ̄p = symbols(r"\zeta', \bar{\zeta}'", cls=sympy.Function)
κ, ðκ, ð̄κ = symbols('κ, ðκ, ð̄κ', cls=sympy.Function, real=True)
Δu, Δζ = symbols('Δu, Δζ')  # See note below about why these aren't functions
P = symbols('P', cls=sympy.Function)
ðζp, ð̄ζ̄p = symbols(r"ðζ', \bar{\eth}\bar{ζ}'", cls=sympy.Function)
λ = symbols(r"\lambda", real=True)

m = Manifold('M', 4)
patch = Patch('P', m)
asymptotic_stereographic = CoordSystem('asymptotic_stereographic', patch, ["u", "Ω", "ζ", "ζ̄"])
asymptotic_stereographic_transformed = CoordSystem('asymptotic_stereographic_transformed', patch, ["u'", "Ω'", "ζ'", "ζ̄'"])
```


```python
# NOTE: Strictly speaking, Δu and Δζ should be functions of (u, ζ, ζ̄).  However, I'm only interested in
# the asymptotic behavior, which means that any derivatives of these variables would still be multiplied
# by Ω, and thus would disappear in the limit Ω → 0.

asymptotic_stereographic.connect_to(
    asymptotic_stereographic_transformed,
    [u, Ω, ζ, ζ̄],
    [
        up(u, ζ, ζ̄) - Ω * ðup(u, ζ, ζ̄) * ð̄up(u, ζ, ζ̄) / κ(ζ, ζ̄),
        κ(ζ, ζ̄) * Ω,
        ζp(ζ) - Ω * ð̄up(u, ζ, ζ̄) * ðζp(ζ) / κ(ζ, ζ̄),  # (a * ζ + b) / (c * ζ + d)
        ζ̄p(ζ̄) - Ω * ðup(u, ζ, ζ̄) * ð̄ζ̄p(ζ̄) / κ(ζ, ζ̄),  # (a.conjugate() * ζ̄ + b.conjugate()) / (c.conjugate() * ζ̄ + d.conjugate())
    ],
    inverse=False
)

J = sympy.simplify(asymptotic_stereographic.jacobian(asymptotic_stereographic_transformed, [u, Ω, ζ, ζ̄]))
```


```python
d = {
    sympy.Derivative(up(u, ζ, ζ̄), u): κ(ζ, ζ̄),
    sympy.Derivative(up(u, ζ, ζ̄), ζ): ðup(u, ζ, ζ̄) / sympy.sqrt(2) / P(ζ, ζ̄),
    sympy.Derivative(up(u, ζ, ζ̄), ζ̄): ð̄up(u, ζ, ζ̄) / sympy.sqrt(2) / P(ζ, ζ̄),
    sympy.Derivative(κ(ζ, ζ̄), ζ): ðκ(ζ, ζ̄) / sympy.sqrt(2) / P(ζ, ζ̄),
    sympy.Derivative(κ(ζ, ζ̄), ζ̄): ð̄κ(ζ, ζ̄) / sympy.sqrt(2) / P(ζ, ζ̄),
    sympy.Derivative(ζp(ζ), ζ): ðζp(ζ) / sympy.sqrt(2) / P(ζ, ζ̄),
    sympy.Derivative(ζ̄p(ζ̄), ζ̄): ð̄ζ̄p(ζ̄) / sympy.sqrt(2) / P(ζ, ζ̄),
    Δu: - ðup(u, ζ, ζ̄) * ð̄up(u, ζ, ζ̄) / κ(ζ, ζ̄),
    Δζ: - ð̄up(u, ζ, ζ̄) * ðζp(ζ) / κ(ζ, ζ̄),
    ð̄up(u, ζ, ζ̄).conjugate(): ðup(u, ζ, ζ̄),
    ðup(u, ζ, ζ̄).conjugate(): ð̄up(u, ζ, ζ̄),
#     ð̄ζ̄p(ζ̄).conjugate(): ðζp(ζ),
#     ðζp(ζ).conjugate(): ð̄ζ̄p(ζ̄)
}
```


```python
lᵃ = -asymptotic_stereographic.base_vector(1)
nᵃ = asymptotic_stereographic.base_vector(0)
mᵃ = sympy.sqrt(2) * P(ζ, ζ̄) * asymptotic_stereographic.base_vector(2)
m̄ᵃ = sympy.sqrt(2) * P(ζ, ζ̄) * asymptotic_stereographic.base_vector(3)
```

\begin{align}
  \sqrt{\frac{\partial \bar{\zeta}' / \partial \bar{\zeta}} {\partial \zeta' / \partial \zeta}}
  &=
  \sqrt{\frac{\bar{\eth} \bar{\zeta}'} {\eth \zeta'}}
  =
  \exp(i\lambda)
\end{align}
\begin{equation}
  \frac{P'} {\eth\zeta'} = \frac{\exp(i\lambda)}{\sqrt{2}k}
\end{equation}



```python
w1, w2, w3 = sympy.symbols('w1, w2, w3', cls=sympy.Wild)

limit_substitutions = {
    Ω: 0,
    Ωp: 0,
    asymptotic_stereographic_transformed.coord_function(1): 0,
    asymptotic_stereographic.coord_function(1): 0,
}

deriv_evaluations = [
    [sympy.Derivative(up(w1, w2, w3), (w1, 1)), κ(ζ, ζ̄)],
    [sympy.Derivative(up(w1, w2, w3), (w2, 1)), ðup(u, ζ, ζ̄) / sympy.sqrt(2) / P(ζ, ζ̄)],
    [sympy.Derivative(up(w1, w2, w3), (w3, 1)), ð̄up(u, ζ, ζ̄) / sympy.sqrt(2) / P(ζ, ζ̄)],
    [sympy.Derivative(ζp(w1), (w1, 1)), ðζp(ζ) / sympy.sqrt(2) / P(ζ, ζ̄)],
]

def replace_derivs(expr):
    for de in deriv_evaluations:
        expr = expr.replace(*de)
    return expr

basis_subs = {
    asymptotic_stereographic.base_vector(0): sympy.Dummy(r"n^a"),
    asymptotic_stereographic.base_vector(1): -sympy.Dummy(r"l^a"),
    asymptotic_stereographic.base_vector(2): sympy.Dummy(r"m^a") / sympy.sqrt(2) / P(ζ, ζ̄),
    asymptotic_stereographic.base_vector(3): sympy.Dummy(r"\bar{m}^a") / sympy.sqrt(2) / P(ζ, ζ̄),
    asymptotic_stereographic_transformed.base_vector(0): sympy.Dummy(r"n'^a"),
    asymptotic_stereographic_transformed.base_vector(1): -sympy.Dummy(r"l'^a"),
    asymptotic_stereographic_transformed.base_vector(2): sympy.Dummy(r"m'^a") / sympy.sqrt(2) / P(ζp(ζ), ζ̄p(ζ̄)),
    asymptotic_stereographic_transformed.base_vector(3): sympy.Dummy(r"\bar{m}'^a") / sympy.sqrt(2) / P(ζp(ζ), ζ̄p(ζ̄)),
}

pretty_subs = {
    P(ζp(ζ), ζ̄p(ζ̄)): ðζp(ζ) * sympy.exp(sympy.I * λ) / sympy.sqrt(2) / κ(ζ, ζ̄),
    ð̄ζ̄p(ζ̄): ðζp(ζ) * sympy.exp(2* sympy.I * λ),
    asymptotic_stereographic.coord_function(0): u,
    asymptotic_stereographic.coord_function(1): Ω,
    asymptotic_stereographic.coord_function(2): ζ,
    asymptotic_stereographic.coord_function(3): ζ̄,
}

def simplify(expr):
    expr = replace_derivs(expr.xreplace(d).xreplace(d).subs(limit_substitutions))
    return sympy.simplify(sympy.expand(sympy.simplify(sympy.expand(expr.subs(basis_subs).subs(pretty_subs).subs(pretty_subs)))))

nᵃᵖ = simplify(vectors_in_basis(nᵃ, asymptotic_stereographic_transformed))
display(sympy.Eq(sympy.Dummy(r"n^a"), nᵃᵖ))
mᵃᵖ = simplify(vectors_in_basis(mᵃ, asymptotic_stereographic_transformed))
display(sympy.Eq(sympy.Dummy(r"m^a"), mᵃᵖ))
lᵃᵖ = simplify(vectors_in_basis(lᵃ, asymptotic_stereographic_transformed))
display(sympy.Eq(sympy.Dummy(r"l^a"), sympy.expand(lᵃᵖ)))
```

Unfortunately, the direct transformation is a little too hard for sympy to invert on its own, so I've expressed the relationship between new and old bases in an awkward way here.  But it's easy enough to invert the relations I derived above, so that I expect the last result to be the same as this:
\begin{align}
  \mathbf{n}
  &=
  k \mathbf{n}'
  \\
  \mathbf{m}
  &=
  \frac{k} {\exp(i\lambda)} \mathbf{m}' + \eth u' \mathbf{n}'
  \\
  \mathbf{l}
  &=
  k \mathbf{l}'
  -\frac{\eth u'\, \bar{\eth} u'} {k} \mathbf{n}'
  +\frac{\bar{\eth} u'} {k} \left( \frac{k} {\exp(i\lambda)} \mathbf{m}' + \eth u' \mathbf{n}' \right)
  +\frac{\eth u'} {k} \left( \frac{k} {\exp(-i\lambda)} \bar{\mathbf{m}}' + \bar{\eth} u' \mathbf{n}' \right)
  \\&=
  k \mathbf{l}'
  +\frac{\eth u'\, \bar{\eth} u'} {k} \mathbf{n}'
  +\frac{\bar{\eth} u'} {\exp(i\lambda)} \mathbf{m}'
  +\frac{\eth u'} {\exp(-i\lambda)} \bar{\mathbf{m}}'
\end{align}
By inspection we see that these are, indeed, equal.


```python

```

740a97f637d1c66a0c65ec44dbca189d74da6688
ipynb
Jupyter Notebook
notes/tetrad_bms_transformations.ipynb
akhairna/scri
3b7f307d19ef303914cef2fa088ee750ef8533c2
MIT
2018-03-11T03:09:19.000Z
2022-03-08T20:09:25.000Z
notes/tetrad_bms_transformations.ipynb
akhairna/scri
3b7f307d19ef303914cef2fa088ee750ef8533c2
MIT
2016-08-11T17:31:12.000Z
2021-11-17T17:18:23.000Z
notes/tetrad_bms_transformations.ipynb
akhairna/scri
3b7f307d19ef303914cef2fa088ee750ef8533c2
MIT
2015-06-22T22:16:30.000Z
2022-02-22T23:38:26.000Z
Qwen/Qwen-72B
1. YES
2. YES