{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Anti-de Sitter spacetime\n", "\n", "This notebook demonstrates some capabilities of SageMath in computations regarding the 4-dimensional anti-de Sitter spacetime. The corresponding tools have been developed within the [SageManifolds](https://sagemanifolds.obspm.fr) project." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*NB:* a version of SageMath at least equal to 8.8 is required to run this notebook:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'SageMath version 9.4, Release Date: 2021-08-22'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "version()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we set up the notebook to display mathematical objects using LaTeX rendering:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%display latex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We initialize a time counter for benchmarking:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import time\n", "comput_time0 = time.perf_counter()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Spacetime manifold\n", "\n", "We declare the anti-de Sitter spacetime as a 4-dimensional Lorentzian manifold:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4-dimensional Lorentzian manifold M\n" ] }, { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathcal{M}\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathcal{M}$$" ], "text/plain": [ "4-dimensional Lorentzian manifold M" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M = Manifold(4, 'M', r'\\mathcal{M}', structure='Lorentzian')\n", "print(M); M" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
We consider hyperbolic coordinates $(\\tau,\\rho,\\theta,\\phi)$ on $\\mathcal{M}$. Allowing for the standard coordinate singularities at $\\rho=0$, $\\theta=0$ or $\\theta=\\pi$, these coordinates cover the entire spacetime manifold (which is topologically $\\mathbb{R}^4$). If we restrict ourselves to regular coordinates (i.e. to considering only mathematically well defined charts), the hyperbolic coordinates cover only an open part of $\\mathcal{M}$, which we call $\\mathcal{M}_0$, on which $\\rho$ spans the open interval $(0,+\\infty)$, $\\theta$ the open interval $(0,\\pi)$ and $\\phi$ the open interval $(0,2\\pi)$. Therefore, we declare:
" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Chart (M_0, (ta, rh, th, ph))\n" ] }, { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\mathcal{M}_0,({\\tau}, {\\rho}, {\\theta}, {\\phi})\\right)\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\mathcal{M}_0,({\\tau}, {\\rho}, {\\theta}, {\\phi})\\right)$$" ], "text/plain": [ "Chart (M_0, (ta, rh, th, ph))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M0 = M.open_subset('M_0', r'\\mathcal{M}_0' )\n", "X_hyp.The expression of $g$ in terms of $\\mathcal{M}$'s default frame is found to be
" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}g = -\\cosh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\tau}\\otimes \\mathrm{d} {\\tau} + {\\ell}^{2} \\mathrm{d} {\\rho}\\otimes \\mathrm{d} {\\rho} + {\\ell}^{2} \\sinh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + {\\ell}^{2} \\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}g = -\\cosh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\tau}\\otimes \\mathrm{d} {\\tau} + {\\ell}^{2} \\mathrm{d} {\\rho}\\otimes \\mathrm{d} {\\rho} + {\\ell}^{2} \\sinh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + {\\ell}^{2} \\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}$$" ], "text/plain": [ "g = -cosh(rh)^2 dta⊗dta + l^2 drh⊗drh + l^2*sinh(rh)^2 dth⊗dth + l^2*sin(th)^2*sinh(rh)^2 dph⊗dph" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.display()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "-\\cosh\\left({\\rho}\\right)^{2} & 0 & 0 & 0 \\\\\n", "0 & {\\ell}^{2} & 0 & 0 \\\\\n", "0 & 0 & {\\ell}^{2} \\sinh\\left({\\rho}\\right)^{2} & 0 \\\\\n", "0 & 0 & 0 & {\\ell}^{2} \\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2}\n", "\\end{array}\\right)\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "-\\cosh\\left({\\rho}\\right)^{2} & 0 & 0 & 0 \\\\\n", "0 & {\\ell}^{2} & 0 & 0 \\\\\n", "0 & 0 & {\\ell}^{2} \\sinh\\left({\\rho}\\right)^{2} & 0 \\\\\n", "0 & 0 & 0 & {\\ell}^{2} \\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2}\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ -cosh(rh)^2 0 0 0]\n", "[ 0 l^2 0 0]\n", "[ 0 0 l^2*sinh(rh)^2 0]\n", "[ 0 0 0 l^2*sin(th)^2*sinh(rh)^2]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Riemann tensor of $g$ is
" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field Riem(g) of type (1,3) on the 4-dimensional Lorentzian manifold M\n" ] } ], "source": [ "Riem = g.riemann()\n", "print(Riem)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\tau}} \\, {\\rho} \\, {\\tau} \\, {\\rho} }^{ \\, {\\tau} \\phantom{\\, {\\rho}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\rho}} } & = & -1 \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\tau}} \\, {\\theta} \\, {\\tau} \\, {\\theta} }^{ \\, {\\tau} \\phantom{\\, {\\theta}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\theta}} } & = & -\\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\tau}} \\, {\\phi} \\, {\\tau} \\, {\\phi} }^{ \\, {\\tau} \\phantom{\\, {\\phi}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\phi}} } & = & -\\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\rho}} \\, {\\tau} \\, {\\tau} \\, {\\rho} }^{ \\, {\\rho} \\phantom{\\, {\\tau}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\rho}} } & = & -\\frac{\\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\rho}} \\, {\\theta} \\, {\\rho} \\, {\\theta} }^{ \\, {\\rho} \\phantom{\\, {\\theta}} \\phantom{\\, {\\rho}} \\phantom{\\, {\\theta}} } & = & -\\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\rho}} \\, {\\phi} \\, {\\rho} \\, {\\phi} }^{ \\, {\\rho} \\phantom{\\, {\\phi}} \\phantom{\\, {\\rho}} \\phantom{\\, {\\phi}} } & = & -\\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\theta}} \\, {\\tau} \\, {\\tau} \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, {\\tau}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\theta}} } & = & -\\frac{\\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\theta}} \\, {\\rho} \\, {\\rho} \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, {\\rho}} \\phantom{\\, {\\rho}} \\phantom{\\, {\\theta}} } & = & 1 \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\theta} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & -\\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\phi}} \\, {\\tau} \\, {\\tau} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\tau}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\phi}} } & = & -\\frac{\\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\phi}} \\, {\\rho} \\, {\\rho} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\rho}} \\phantom{\\, {\\rho}} \\phantom{\\, {\\phi}} } & = & 1 \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\sinh\\left({\\rho}\\right)^{2} \\end{array}\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\tau}} \\, {\\rho} \\, {\\tau} \\, {\\rho} }^{ \\, {\\tau} \\phantom{\\, {\\rho}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\rho}} } & = & -1 \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\tau}} \\, {\\theta} \\, {\\tau} \\, {\\theta} }^{ \\, {\\tau} \\phantom{\\, {\\theta}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\theta}} } & = & -\\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\tau}} \\, {\\phi} \\, {\\tau} \\, {\\phi} }^{ \\, {\\tau} \\phantom{\\, {\\phi}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\phi}} } & = & -\\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\rho}} \\, {\\tau} \\, {\\tau} \\, {\\rho} }^{ \\, {\\rho} \\phantom{\\, {\\tau}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\rho}} } & = & -\\frac{\\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\rho}} \\, {\\theta} \\, {\\rho} \\, {\\theta} }^{ \\, {\\rho} \\phantom{\\, {\\theta}} \\phantom{\\, {\\rho}} \\phantom{\\, {\\theta}} } & = & -\\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\rho}} \\, {\\phi} \\, {\\rho} \\, {\\phi} }^{ \\, {\\rho} \\phantom{\\, {\\phi}} \\phantom{\\, {\\rho}} \\phantom{\\, {\\phi}} } & = & -\\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\theta}} \\, {\\tau} \\, {\\tau} \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, {\\tau}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\theta}} } & = & -\\frac{\\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\theta}} \\, {\\rho} \\, {\\rho} \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, {\\rho}} \\phantom{\\, {\\rho}} \\phantom{\\, {\\theta}} } & = & 1 \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\theta} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & -\\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\phi}} \\, {\\tau} \\, {\\tau} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\tau}} \\phantom{\\, {\\tau}} \\phantom{\\, {\\phi}} } & = & -\\frac{\\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\phi}} \\, {\\rho} \\, {\\rho} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\rho}} \\phantom{\\, {\\rho}} \\phantom{\\, {\\phi}} } & = & 1 \\\\ \\mathrm{Riem}\\left(g\\right)_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\sinh\\left({\\rho}\\right)^{2} \\end{array}$$" ], "text/plain": [ "Riem(g)^ta_rh,ta,rh = -1 \n", "Riem(g)^ta_th,ta,th = -sinh(rh)^2 \n", "Riem(g)^ta_ph,ta,ph = -sin(th)^2*sinh(rh)^2 \n", "Riem(g)^rh_ta,ta,rh = -cosh(rh)^2/l^2 \n", "Riem(g)^rh_th,rh,th = -sinh(rh)^2 \n", "Riem(g)^rh_ph,rh,ph = -sin(th)^2*sinh(rh)^2 \n", "Riem(g)^th_ta,ta,th = -cosh(rh)^2/l^2 \n", "Riem(g)^th_rh,rh,th = 1 \n", "Riem(g)^th_ph,th,ph = -sin(th)^2*sinh(rh)^2 \n", "Riem(g)^ph_ta,ta,ph = -cosh(rh)^2/l^2 \n", "Riem(g)^ph_rh,rh,ph = 1 \n", "Riem(g)^ph_th,th,ph = sinh(rh)^2 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Riem.display_comp(only_nonredundant=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Ricci tensor:
" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field of symmetric bilinear forms Ric(g) on the 4-dimensional Lorentzian manifold M\n" ] }, { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{Ric}\\left(g\\right) = \\frac{3 \\, \\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} \\mathrm{d} {\\tau}\\otimes \\mathrm{d} {\\tau} -3 \\mathrm{d} {\\rho}\\otimes \\mathrm{d} {\\rho} -3 \\, \\sinh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} -3 \\, \\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{Ric}\\left(g\\right) = \\frac{3 \\, \\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} \\mathrm{d} {\\tau}\\otimes \\mathrm{d} {\\tau} -3 \\mathrm{d} {\\rho}\\otimes \\mathrm{d} {\\rho} -3 \\, \\sinh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} -3 \\, \\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}$$" ], "text/plain": [ "Ric(g) = 3*cosh(rh)^2/l^2 dta⊗dta - 3 drh⊗drh - 3*sinh(rh)^2 dth⊗dth - 3*sin(th)^2*sinh(rh)^2 dph⊗dph" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ric = g.ricci()\n", "print(Ric)\n", "Ric.display()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "\\frac{3 \\, \\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} & 0 & 0 & 0 \\\\\n", "0 & -3 & 0 & 0 \\\\\n", "0 & 0 & -3 \\, \\sinh\\left({\\rho}\\right)^{2} & 0 \\\\\n", "0 & 0 & 0 & -3 \\, \\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2}\n", "\\end{array}\\right)\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "\\frac{3 \\, \\cosh\\left({\\rho}\\right)^{2}}{{\\ell}^{2}} & 0 & 0 & 0 \\\\\n", "0 & -3 & 0 & 0 \\\\\n", "0 & 0 & -3 \\, \\sinh\\left({\\rho}\\right)^{2} & 0 \\\\\n", "0 & 0 & 0 & -3 \\, \\sin\\left({\\theta}\\right)^{2} \\sinh\\left({\\rho}\\right)^{2}\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 3*cosh(rh)^2/l^2 0 0 0]\n", "[ 0 -3 0 0]\n", "[ 0 0 -3*sinh(rh)^2 0]\n", "[ 0 0 0 -3*sin(th)^2*sinh(rh)^2]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ric[:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Ricci scalar:
" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Scalar field r(g) on the 4-dimensional Lorentzian manifold M\n" ] }, { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{llcl} \\mathrm{r}\\left(g\\right):& \\mathcal{M} & \\longrightarrow & \\mathbb{R} \\\\ \\mbox{on}\\ \\mathcal{M}_0 : & \\left({\\tau}, {\\rho}, {\\theta}, {\\phi}\\right) & \\longmapsto & -\\frac{12}{{\\ell}^{2}} \\end{array}\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{llcl} \\mathrm{r}\\left(g\\right):& \\mathcal{M} & \\longrightarrow & \\mathbb{R} \\\\ \\mbox{on}\\ \\mathcal{M}_0 : & \\left({\\tau}, {\\rho}, {\\theta}, {\\phi}\\right) & \\longmapsto & -\\frac{12}{{\\ell}^{2}} \\end{array}$$" ], "text/plain": [ "r(g): M → ℝ\n", "on M_0: (ta, rh, th, ph) ↦ -12/l^2" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "R = g.ricci_scalar()\n", "print(R)\n", "R.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We recover the fact that AdS spacetime has a constant curvature. It is indeed a **maximally symmetric space**. In particular, the Riemann tensor is expressible as\n", "$$ R^i_{\\ \\, jlk} = \\frac{R}{n(n-1)} \\left( \\delta^i_{\\ \\, k} g_{jl} - \\delta^i_{\\ \\, l} g_{jk} \\right), $$\n", "where $n$ is the dimension of $\\mathcal{M}$: $n=4$ in the present case. Let us check this formula here, under the form $R^i_{\\ \\, jlk} = -\\frac{R}{6} g_{j[k} \\delta^i_{\\ \\, l]}$:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}$$" ], "text/plain": [ "True" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "delta = M.tangent_identity_field() \n", "Riem == - (R/6)*(g*delta).antisymmetrize(2,3) # 2,3 = last positions of the \n", " # type-(1,3) tensor g*delta" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We may also check that AdS metric is a solution of the vacuum **Einstein equation** with (negative) cosmological constant $\\Lambda = - 3/\\ell^2$:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}$$" ], "text/plain": [ "True" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Lambda = -3/l^2\n", "Ric - 1/2*R*g + Lambda*g == 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Radial null geodesics\n", "\n", "Null geodesics that are radial with respect to coordinates $(\\tau,\\rho,\\theta,\\phi)$ obey\n", "$$ \\tau = \\pm 2 \\ell \\left( \\mathrm{atan} \\left(\\mathrm{e}^\\rho\\right) - \\frac{\\pi}{4} \\right) + \\tau_0,$$\n", "where $\\tau_0$ is a constant (the value of $\\tau$ at $\\rho=0$). Note that, due to the homogeneity of AdS spacetime, any null geodesic is a \"radial\" geodesic with respect to some coordinate system $(\\tau',\\rho',\\theta',\\phi')$, as in Minkowski spacetime, any null geodesic is a straight line and one can always find a Minkowskian coordinate system $(t',x',y',z')$ with respect to which the null geodesic is radial.\n", "\n", "Let us consider two finite families of radial null geodesics having $\\theta=\\pi/2$ and $\\phi=0$ or $\\pi$: \n", "- `null_geod1` has $\\phi=\\pi$ when $\\tau< 0$ and $\\phi=0$ when $\\tau>0$\n", "- `null_geod2` has $\\phi=0$ when $\\tau<0$ and $\\phi=\\pi$ when $\\tau>0$" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "lamb = var('lamb', latex_name=r'\\lambda')\n", "null_geod1 = [M.curve({X_hyp: [2*sgn(lamb)*l*(atan(exp(abs(lamb))) - pi/4) + 2*pi*(i-4)/8, \n", " abs(lamb), pi/2, pi*unit_step(-lamb)]}, \n", " (lamb, -oo, +oo)) for i in range(9)]\n", "null_geod2 = [M.curve({X_hyp: [2*sgn(lamb)*l*(atan(exp(abs(lamb))) - pi/4) + 2*pi*(i-4)/8, \n", " abs(lamb), pi/2, pi*unit_step(lamb)]}, \n", " (lamb, -oo, +oo)) for i in range(9)]\n", "null_geods = null_geod1 + null_geod2" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Curve in the 4-dimensional Lorentzian manifold M\n" ] } ], "source": [ "print(null_geods[0])" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{llcl} & \\Bold{R} & \\longrightarrow & \\mathcal{M} \\\\ & {\\lambda} & \\longmapsto & \\left({\\tau}, {\\rho}, {\\theta}, {\\phi}\\right) = \\left(-\\pi - \\frac{1}{2} \\, {\\left(\\pi - 4 \\, \\arctan\\left(e^{\\left({\\left| {\\lambda} \\right|}\\right)}\\right)\\right)} {\\ell} \\mathrm{sgn}\\left({\\lambda}\\right), {\\left| {\\lambda} \\right|}, \\frac{1}{2} \\, \\pi, \\pi \\mathrm{u}\\left(-{\\lambda}\\right)\\right) \\end{array}\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{llcl} & \\Bold{R} & \\longrightarrow & \\mathcal{M} \\\\ & {\\lambda} & \\longmapsto & \\left({\\tau}, {\\rho}, {\\theta}, {\\phi}\\right) = \\left(-\\pi - \\frac{1}{2} \\, {\\left(\\pi - 4 \\, \\arctan\\left(e^{\\left({\\left| {\\lambda} \\right|}\\right)}\\right)\\right)} {\\ell} \\mathrm{sgn}\\left({\\lambda}\\right), {\\left| {\\lambda} \\right|}, \\frac{1}{2} \\, \\pi, \\pi \\mathrm{u}\\left(-{\\lambda}\\right)\\right) \\end{array}$$" ], "text/plain": [ "ℝ → M\n", " lamb ↦ (ta, rh, th, ph) = (-pi - 1/2*(pi - 4*arctan(e^abs(lamb)))*l*sgn(lamb), abs(lamb), 1/2*pi, pi*unit_step(-lamb))" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "null_geods[0].display()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{llcl} & \\Bold{R} & \\longrightarrow & \\mathcal{M} \\\\ & {\\lambda} & \\longmapsto & \\left({\\tau}, {\\rho}, {\\theta}, {\\phi}\\right) = \\left(-\\pi - \\frac{1}{2} \\, {\\left(\\pi - 4 \\, \\arctan\\left(e^{\\left({\\left| {\\lambda} \\right|}\\right)}\\right)\\right)} {\\ell} \\mathrm{sgn}\\left({\\lambda}\\right), {\\left| {\\lambda} \\right|}, \\frac{1}{2} \\, \\pi, \\pi \\mathrm{u}\\left({\\lambda}\\right)\\right) \\end{array}\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{llcl} & \\Bold{R} & \\longrightarrow & \\mathcal{M} \\\\ & {\\lambda} & \\longmapsto & \\left({\\tau}, {\\rho}, {\\theta}, {\\phi}\\right) = \\left(-\\pi - \\frac{1}{2} \\, {\\left(\\pi - 4 \\, \\arctan\\left(e^{\\left({\\left| {\\lambda} \\right|}\\right)}\\right)\\right)} {\\ell} \\mathrm{sgn}\\left({\\lambda}\\right), {\\left| {\\lambda} \\right|}, \\frac{1}{2} \\, \\pi, \\pi \\mathrm{u}\\left({\\lambda}\\right)\\right) \\end{array}$$" ], "text/plain": [ "ℝ → M\n", " lamb ↦ (ta, rh, th, ph) = (-pi - 1/2*(pi - 4*arctan(e^abs(lamb)))*l*sgn(lamb), abs(lamb), 1/2*pi, pi*unit_step(lamb))" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "null_geods[9].display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To graphically display these geodesics, we introduce a Cartesian-like coordinate system\n", "$(\\tau,x_\\rho,y_\\rho,z_\\rho)$ linked to $(\\tau,\\rho,\\theta,\\phi)$ by the standard formulas:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left\\{\\begin{array}{lcl} {\\tau} & = & {\\tau} \\\\ {x_\\rho} & = & {\\rho} \\cos\\left({\\phi}\\right) \\sin\\left({\\theta}\\right) \\\\ {y_\\rho} & = & {\\rho} \\sin\\left({\\phi}\\right) \\sin\\left({\\theta}\\right) \\\\ {z_\\rho} & = & {\\rho} \\cos\\left({\\theta}\\right) \\end{array}\\right.\\]" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left\\{\\begin{array}{lcl} {\\tau} & = & {\\tau} \\\\ {x_\\rho} & = & {\\rho} \\cos\\left({\\phi}\\right) \\sin\\left({\\theta}\\right) \\\\ {y_\\rho} & = & {\\rho} \\sin\\left({\\phi}\\right) \\sin\\left({\\theta}\\right) \\\\ {z_\\rho} & = & {\\rho} \\cos\\left({\\theta}\\right) \\end{array}\\right.$$" ], "text/plain": [ "ta = ta\n", "x_rho = rh*cos(ph)*sin(th)\n", "y_rho = rh*sin(ph)*sin(th)\n", "z_rho = rh*cos(th)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_hyp_graph.