{ "cells" : [ { "cell_origin" : "client", "cell_type" : "latex", "cells" : [ { "cell_origin" : "client", "cell_type" : "latex_view", "source" : "\\algorithm{explicit_indices}{Make indices explicit on an expression with implicit indices.}\n\nIn Cadabra you can write expressions which are understood to have indices suppressed, in order\nto get a cleaner notation. This is often used for vector/matrix notation, or when dealing\nwith spinors. In order to inform Cadabra about these implicit indices, you use the\n\\prop{ImplicitIndex} property (which is also necessary to prevent Cadabra from moving\nthese objects through each other when sorting products into canonical form). \nThe \\algo{explicit_indices} algorithm can then make these indices explicit, which can \nsometimes make them easier to work with, for example when doing substitutions." } ], "hidden" : true, "source" : "\\algorithm{explicit_indices}{Make indices explicit on an expression with implicit indices.}\n\nIn Cadabra you can write expressions which are understood to have indices suppressed, in order\nto get a cleaner notation. This is often used for vector/matrix notation, or when dealing\nwith spinors. In order to inform Cadabra about these implicit indices, you use the\n\\prop{ImplicitIndex} property (which is also necessary to prevent Cadabra from moving\nthese objects through each other when sorting products into canonical form). \nThe \\algo{explicit_indices} algorithm can then make these indices explicit, which can \nsometimes make them easier to work with, for example when doing substitutions." }, { "cell_origin" : "client", "cell_type" : "latex", "cells" : [ { "cell_origin" : "client", "cell_type" : "latex_view", "source" : "In the following example we define two sets of indices, and several objects which are assumed\nto have implicit indices." } ], "hidden" : true, "source" : "In the following example we define two sets of indices, and several objects which are assumed\nto have implicit indices." }, { "cell_origin" : "client", "cell_type" : "input", "cells" : [ { "cell_origin" : "server", "cell_type" : "latex_view", "source" : "\\begin{dmath*}{}\\text{Attached property Indices(position=fixed) to~}\\left[m,~\\discretionary{}{}{} n,~\\discretionary{}{}{} p\\right].\\end{dmath*}" }, { "cell_origin" : "server", "cell_type" : "latex_view", "source" : "\\begin{dmath*}{}\\text{Attached property Indices(position=fixed) to~}\\left[a,~\\discretionary{}{}{} b,~\\discretionary{}{}{} c,~\\discretionary{}{}{} d,~\\discretionary{}{}{} e,~\\discretionary{}{}{} f,~\\discretionary{}{}{} g,~\\discretionary{}{}{} h\\right].\\end{dmath*}" }, { "cell_origin" : "server", "cell_type" : "latex_view", "source" : "\\begin{dmath*}{}\\text{Attached property ImplicitIndex to~}\\sigma^{p}.\\end{dmath*}" }, { "cell_origin" : "server", "cell_type" : "latex_view", "source" : "\\begin{dmath*}{}\\text{Attached property ImplicitIndex to~}\\psi.\\end{dmath*}" }, { "cell_origin" : "server", "cell_type" : "latex_view", "source" : "\\begin{dmath*}{}\\text{Attached property ImplicitIndex to~}\\chi.\\end{dmath*}" } ], "source" : "{m,n,p}::Indices(spacetime, position=fixed);\n{a,b,c,d,e,f,g,h}::Indices(spinor, position=fixed);\n\\sigma^{p}::ImplicitIndex(\\sigma^{p a}_{b});\n\\psi::ImplicitIndex(\\psi_{a});\n\\chi::ImplicitIndex(\\chi^{a});" }, { "cell_origin" : "client", "cell_type" : "latex", "cells" : [ { "cell_origin" : "client", "cell_type" : "latex_view", "source" : "The following is a valid expression for a spinor bilinear," } ], "hidden" : true, "source" : "The following is a valid expression for a spinor bilinear," }, { "cell_origin" : "client", "cell_type" : "input", "cells" : [ { "cell_origin" : "server", "cell_type" : "latex_view", "cells" : [ { "cell_origin" : "server", "cell_type" : "input_form", "source" : "\\psi \\sigma^{m} \\sigma^{n} \\chi" } ], "source" : "\\begin{dmath*}{}\\psi \\sigma^{m} \\sigma^{n} \\chi\\end{dmath*}" } ], "source" : "ex:= \\psi \\sigma^{m} \\sigma^{n} \\chi;" }, { "cell_origin" : "client", "cell_type" : "latex", "cells" : [ { "cell_origin" : "client", "cell_type" : "latex_view", "source" : "We can now make the indices explicit using" } ], "hidden" : true, "source" : "We can now make the indices explicit using" }, { "cell_origin" : "client", "cell_type" : "input", "cells" : [ { "cell_origin" : "server", "cell_type" : "latex_view", "cells" : [ { "cell_origin" : "server", "cell_type" : "input_form", "source" : "\\psi_{a} \\sigma^{m a}_{b} \\sigma^{n b}_{c} \\chi^{c}" } ], "source" : "\\begin{dmath*}{}\\psi_{a} \\sigma^{m a}\\,_{b} \\sigma^{n b}\\,_{c} \\chi^{c}\\end{dmath*}" } ], "source" : "explicit_indices(ex);" }, { "cell_origin" : "client", "cell_type" : "latex", "cells" : [ { "cell_origin" : "client", "cell_type" : "latex_view", "source" : "This also works when there are trace operators, as is illustrated in the following \nexample." } ], "hidden" : true, "source" : "This also works when there are trace operators, as is illustrated in the following \nexample." }, { "cell_origin" : "client", "cell_type" : "input", "cells" : [ { "cell_origin" : "server", "cell_type" : "latex_view", "source" : "\\begin{dmath*}{}\\text{Attached property Trace to~}{\\rm Tr}\\left(\\#\\right).\\end{dmath*}" }, { "cell_origin" : "server", "cell_type" : "latex_view", "cells" : [ { "cell_origin" : "server", "cell_type" : "input_form", "source" : "Tr(\\sigma^{m} \\sigma^{n} + \\sigma^{n} \\sigma^{m})" } ], "source" : "\\begin{dmath*}{}{\\rm Tr}\\left(\\sigma^{m} \\sigma^{n}+\\sigma^{n} \\sigma^{m}\\right)\\end{dmath*}" } ], "source" : "Tr{#}::LaTeXForm(\"{\\rm Tr}\").\nTr{#}::Trace(indices=spinor);\nex:= Tr(\\sigma^{m} \\sigma^{n} + \\sigma^{n} \\sigma^{m});" }, { "cell_origin" : "client", "cell_type" : "input", "cells" : [ { "cell_origin" : "server", "cell_type" : "latex_view", "cells" : [ { "cell_origin" : "server", "cell_type" : "input_form", "source" : "\\sigma^{m a}_{b} \\sigma^{n b}_{a} + \\sigma^{n a}_{b} \\sigma^{m b}_{a}" } ], "source" : "\\begin{dmath*}{}\\sigma^{m a}\\,_{b} \\sigma^{n b}\\,_{a}+\\sigma^{n a}\\,_{b} \\sigma^{m b}\\,_{a}\\end{dmath*}" } ], "source" : "explicit_indices(_);" }, { "cell_origin" : "client", "cell_type" : "input", "source" : "" } ], "description" : "Cadabra JSON notebook format", "version" : 1 }