{ "cells" : [ { "cell_origin" : "client", "cell_type" : "latex", "cells" : [ { "cell_origin" : "client", "cell_type" : "latex_view", "source" : "\\section*{Tensor monomials and multi-term symmetries}\n\nCadabra contains powerful algorithms to bring any tensorial expression into a canonical\nform. For multi-term symmetries, cadabra relies on Young tableau methods to generate\na canonical form for tensor monomials.\n\nAs an example, consider the following identity,\n\\[\nW_{p q r s} W_{p t r u} W_{t v q w} W_{u v s w}\n - W_{p q r s} W_{p q t u} W_{r v t w} W_{s v u w}\n = W_{m n a b} W_{n p b c} W_{m s c d} W_{s p d a}\n - \\frac{1}{4} W_{m n a b} W_{p s b a} W_{m p c d} W_{n s d c}\\,,\n\\]\nin which $W_{m n p q}$ is a Weyl tensor (all contracted indices have been written as subscripts \nfor easier readability). Proving this identity requires multiple uses of the Ricci cyclic\nidentity\n\\[\nW_{m[npq]}=0\\,.\n\\]\nWith Cadabra's Young tableau methods the proof is simple. We first declare our \nobjects and input the identity which we want to prove," } ], "hidden" : true, "source" : "\\section*{Tensor monomials and multi-term symmetries}\n\nCadabra contains powerful algorithms to bring any tensorial expression into a canonical\nform. For multi-term symmetries, cadabra relies on Young tableau methods to generate\na canonical form for tensor monomials.\n\nAs an example, consider the following identity,\n\\[\nW_{p q r s} W_{p t r u} W_{t v q w} W_{u v s w}\n - W_{p q r s} W_{p q t u} W_{r v t w} W_{s v u w}\n = W_{m n a b} W_{n p b c} W_{m s c d} W_{s p d a}\n - \\frac{1}{4} W_{m n a b} W_{p s b a} W_{m p c d} W_{n s d c}\\,,\n\\]\nin which $W_{m n p q}$ is a Weyl tensor (all contracted indices have been written as subscripts \nfor easier readability). Proving this identity requires multiple uses of the Ricci cyclic\nidentity\n\\[\nW_{m[npq]}=0\\,.\n\\]\nWith Cadabra's Young tableau methods the proof is simple. We first declare our \nobjects and input the identity which we want to prove," }, { "cell_origin" : "client", "cell_type" : "input", "source" : "{m,n,p,q,r,s,t,u,v,w,a,b,c,d,e,f}::Indices(vector).\nW_{m n p q}::WeylTensor." }, { "cell_origin" : "client", "cell_type" : "input", "cells" : [ { "cell_origin" : "server", "cell_type" : "latex_view", "source" : "\\begin{dmath*}{}W_{p q r s} W_{p t r u} W_{t v q w} W_{u v s w}-W_{p q r s} W_{p q t u} W_{r v t w} W_{s v u w}-W_{m n a b} W_{n p b c} W_{m s c d} W_{s p d a}+\\frac{1}{4}W_{m n a b} W_{p s b a} W_{m p c d} W_{n s d c}\\end{dmath*}" } ], "source" : "ex:= W_{p q r s} W_{p t r u} W_{t v q w} W_{u v s w}\n - W_{p q r s} W_{p q t u} W_{r v t w} W_{s v u w}\n - W_{m n a b} W_{n p b c} W_{m s c d} W_{s p d a}\n + (1/4) W_{m n a b} W_{p s b a} W_{m p c d} W_{n s d c};" }, { "cell_origin" : "client", "cell_type" : "latex", "cells" : [ { "cell_origin" : "client", "cell_type" : "latex_view", "source" : "Using a Young projector to project all Weyl tensors onto a form which shows the Ricci symmetry in\nmanifest form is done with" } ], "hidden" : true, "source" : "Using a Young projector to project all Weyl tensors onto a form which shows the Ricci symmetry in\nmanifest form is done with" }, { "cell_origin" : "client", "cell_type" : "input", "cells" : [ { "cell_origin" : "server", "cell_type" : "latex_view", "source" : "\\begin{dmath*}{}\\left(\\frac{2}{3}W_{p q r s} - \\frac{1}{3}W_{p s q r}+\\frac{1}{3}W_{p r q s}\\right) \\left(\\frac{2}{3}W_{p t r u}+\\frac{1}{3}W_{p u r t}+\\frac{1}{3}W_{p r t u}\\right) \\left(\\frac{2}{3}W_{q w t v}+\\frac{1}{3}W_{q v t w} - \\frac{1}{3}W_{q t v w}\\right) \\left(\\frac{2}{3}W_{s w u v}+\\frac{1}{3}W_{s v u w} - \\frac{1}{3}W_{s u v w}\\right)-\\left(\\frac{2}{3}W_{p q r s} - \\frac{1}{3}W_{p s q r}+\\frac{1}{3}W_{p r q s}\\right) \\left(\\frac{2}{3}W_{p q t u} - \\frac{1}{3}W_{p u q t}+\\frac{1}{3}W_{p t q u}\\right) \\left(\\frac{2}{3}W_{r v t w}+\\frac{1}{3}W_{r w t v}+\\frac{1}{3}W_{r t v w}\\right) \\left(\\frac{2}{3}W_{s v u w}+\\frac{1}{3}W_{s w u v}+\\frac{1}{3}W_{s u v w}\\right)-\\left(\\frac{2}{3}W_{a b m n} - \\frac{1}{3}W_{a n b m}+\\frac{1}{3}W_{a m b n}\\right) \\left(\\frac{2}{3}W_{b c n p} - \\frac{1}{3}W_{b p c n}+\\frac{1}{3}W_{b n c p}\\right) \\left(\\frac{2}{3}W_{c d m s} - \\frac{1}{3}W_{c s d m}+\\frac{1}{3}W_{c m d s}\\right) \\left(\\frac{2}{3}W_{a d p s} - \\frac{1}{3}W_{a s d p}+\\frac{1}{3}W_{a p d s}\\right)+\\frac{1}{4}\\left(\\frac{2}{3}W_{a b m n} - \\frac{1}{3}W_{a n b m}+\\frac{1}{3}W_{a m b n}\\right) \\left( - \\frac{2}{3}W_{a b p s} - \\frac{1}{3}W_{a p b s}+\\frac{1}{3}W_{a s b p}\\right) \\left(\\frac{2}{3}W_{c d m p} - \\frac{1}{3}W_{c p d m}+\\frac{1}{3}W_{c m d p}\\right) \\left( - \\frac{2}{3}W_{c d n s} - \\frac{1}{3}W_{c n d s}+\\frac{1}{3}W_{c s d n}\\right)\\end{dmath*}" } ], "source" : "young_project_tensor(_, modulo_monoterm=True);" }, { "cell_origin" : "client", "cell_type" : "latex", "cells" : [ { "cell_origin" : "client", "cell_type" : "latex_view", "source" : "This algorithm knows that the Weyl tensor sits in the `$2\\times 2$ box' representation of the rotation \ngroup $\\text{SO}(d)$, and effectively leads to a replacement\n\\[\n W_{m n p q} \\rightarrow \\frac{2}{3} W_{m n p q} - \\frac{1}{3} W_{m q n p} + \\frac{1}{3} W_{m p n q}\\,.\n\\]\nWe then expand the products of sums and canonicalise once more using mono-term symmetries," } ], "hidden" : true, "source" : "This algorithm knows that the Weyl tensor sits in the `$2\\times 2$ box' representation of the rotation \ngroup $\\text{SO}(d)$, and effectively leads to a replacement\n\\[\n W_{m n p q} \\rightarrow \\frac{2}{3} W_{m n p q} - \\frac{1}{3} W_{m q n p} + \\frac{1}{3} W_{m p n q}\\,.\n\\]\nWe then expand the products of sums and canonicalise once more using mono-term symmetries," }, { "cell_origin" : "client", "cell_type" : "input", "cells" : [ { "cell_origin" : "server", "cell_type" : "latex_view", "source" : "\\begin{dmath*}{}0\\end{dmath*}" } ], "source" : "distribute(_)\ncanonicalise(_)\nrename_dummies(_);" }, { "cell_origin" : "client", "cell_type" : "input", "source" : "" } ], "description" : "Cadabra JSON notebook format", "version" : 1.0 }