From ab2e6732379c39cfd6b0dc309c5d02eea1b6cd4f Mon Sep 17 00:00:00 2001 From: leburgel Date: Mon, 7 Jul 2025 17:23:37 +0200 Subject: [PATCH 1/2] Add color inversion for docs images --- .github/workflows/DocumentationCleanup.yml | 33 ++++++++ docs/make.jl | 2 +- docs/src/assets/custom.css | 24 ++++++ docs/src/man/categories.md | 88 ++++++++++++++++------ docs/src/man/sectors.md | 44 ++++++++--- docs/src/man/tensors.md | 20 +++-- 6 files changed, 172 insertions(+), 39 deletions(-) create mode 100644 .github/workflows/DocumentationCleanup.yml create mode 100644 docs/src/assets/custom.css diff --git a/.github/workflows/DocumentationCleanup.yml b/.github/workflows/DocumentationCleanup.yml new file mode 100644 index 000000000..5be23b964 --- /dev/null +++ b/.github/workflows/DocumentationCleanup.yml @@ -0,0 +1,33 @@ +name: Doc Preview Cleanup + +on: + pull_request: + types: [closed] + +# Ensure that only one "Doc Preview Cleanup" workflow is force pushing at a time +concurrency: + group: doc-preview-cleanup + cancel-in-progress: false + +jobs: + doc-preview-cleanup: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout gh-pages branch + uses: actions/checkout@v4 + with: + ref: gh-pages + - name: Delete preview and history + push changes + run: | + if [ -d "${preview_dir}" ]; then + git config user.name "Documenter.jl" + git config user.email "documenter@juliadocs.github.io" + git rm -rf "${preview_dir}" + git commit -m "delete preview" + git branch gh-pages-new $(echo "delete history" | git commit-tree HEAD^{tree}) + git push --force origin gh-pages-new:gh-pages + fi + env: + preview_dir: previews/PR${{ github.event.number }} diff --git a/docs/make.jl b/docs/make.jl index 20b1200b9..12650983b 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -13,7 +13,7 @@ makedocs(; modules=[TensorKit, TensorKitSectors], authors="Jutho Haegeman", warnonly=[:missing_docs, :cross_references], format=Documenter.HTML(; prettyurls=get(ENV, "CI", nothing) == "true", - mathengine=MathJax()), + mathengine=MathJax(), assets=["assets/custom.css"]), pages=pages, pagesonly=true) diff --git a/docs/src/assets/custom.css b/docs/src/assets/custom.css new file mode 100644 index 000000000..2bb5597a8 --- /dev/null +++ b/docs/src/assets/custom.css @@ -0,0 +1,24 @@ +/* set fixed non-trivial inversion and hue rotation */ +:root { + --inversionFraction: 100%; + --hueRotation: -180deg; +} + +/* color-invert images */ +.color-invertible { + filter: invert(var(--inversionFraction)) hue-rotate(var(--hueRotation)) !important; + -ms-filter: invert(var(--inversionFraction)) !important; + -webkit-filter: invert(var(--inversionFraction)) hue-rotate(var(--hueRotation)) !important; +} + +/* but disable for the two light themes */ +.theme--documenter-light .color-invertible { + filter: invert(0%) hue-rotate(0deg) !important; + -ms-filter: invert(var(0%)) !important; + -webkit-filter: invert(var(0%)) hue-rotate(0deg) !important; +} +.theme--catppuccin-latte .color-invertible { + filter: invert(0%) hue-rotate(0deg) !important; + -ms-filter: invert(var(0%)) !important; + -webkit-filter: invert(var(0%)) hue-rotate(0deg) !important; +} diff --git a/docs/src/man/categories.md b/docs/src/man/categories.md index a6efcc85c..4d779b9b2 100644 --- a/docs/src/man/categories.md +++ b/docs/src/man/categories.md @@ -46,7 +46,9 @@ matrix product), bottom to top (quantum field theory convention) or top to botto circuit convention). Throughout this manual, we stick to this latter convention (which is not very common in manuscripts on category theory): -![composition](img/diagram_morphism.svg) +```@raw html +composition +``` The direction of the arrows, which become important once we introduce duals, are also subject to convention, and are here chosen to follow the arrow in ``f:W→V``, i.e. the @@ -168,7 +170,9 @@ this gives rise to the following graphical notation for the tensor product of tw morphisms, and for a general morphism ``t`` between a tensor product of objects in source and target: -![tensorproduct](img/diagram-tensorproduct.svg) +```@raw html +tensorproduct +``` Another relevant example is the category ``\mathbf{SVect}_𝕜``, which has as objects *super vector spaces* over ``𝕜``, which are vector spaces with a ``ℤ₂`` grading, i.e. @@ -258,7 +262,9 @@ coevaluation of ``V`` and ``W``, such that ``{}^{∨}W ⊗ {}^{∨}V`` is at lea Graphically, we represent the exact pairing and snake rules as -![left dual](img/diagram-leftdual.svg) +```@raw html +left dual +``` Note that we denote the dual objects ``{}^{∨}V`` as a line ``V`` with arrows pointing in the opposite (i.e. upward) direction. This notation is related to quantum field theory, where @@ -269,7 +275,9 @@ the left dual of ``V``. Likewise, we can also define a right dual ``V^{∨}`` of associated pairings, the right evaluation ``\tilde{ϵ}_V: V ⊗ V^{∨} → I`` and coevaluation ``\tilde{η}_V: I → V^{∨} ⊗ V``, satisfying -![right dual](img/diagram-rightdual.svg) +```@raw html +right dual +``` In particular, one could choose ``\tilde{ϵ}_{{}^{∨}V} = ϵ_V`` and thus define ``V`` as the right dual of ``{}^{∨}V``. While there might be other choices, this choice must at least be @@ -278,7 +286,9 @@ isomorphic, such that ``({}^{∨}V)^{∨} ≂ V``. If objects ``V`` and ``W`` have left (respectively right) duals, than for a morphism ``f ∈ \mathrm{Hom}(W,V)``, we furthermore define the left (respectively right) *transpose* ``{}^{∨}f ∈ \mathrm{Hom}({}^{∨}V, {}^{∨}W)`` (respectively ``f^{∨} ∈ \mathrm{Hom}(V^{∨}, W^{∨})``) as -![transpose](img/diagram-transpose.svg) +```@raw html +transpose +``` where on the right we also illustrate the mapping from ``t ∈ \mathrm{Hom}(W_1 ⊗ W_2 ⊗ W_3, V_1 ⊗ V_2)`` to a morphism in @@ -339,7 +349,9 @@ and a right trace as They are graphically represented as -![trace](img/diagram-trace.svg) +```@raw html +trace +``` and they do not need to coincide. Note that ``\mathrm{tr}_{\mathrm{l}}(f) = \mathrm{tr}_{\mathrm{r}}(f*)`` and that @@ -391,11 +403,15 @@ has been omitted). We also have ``λ_V ∘ τ_{V,I} = ρ_{V,I}``, ``ρ_V ∘ τ_ The braiding isomorphism ``τ_{V,W}`` and its inverse are graphically represented as the lines ``V`` and ``W`` crossing over and under each other: -![braiding](img/diagram-braiding.svg) +```@raw html +braiding +``` such that we have -![braiding relations](img/diagram-braiding2.svg) +```@raw html +braiding relations +``` where the expression on the right hand side, ``τ_{W,V}∘τ_{V,W}`` can generically not be simplified. Hence, for general braidings, there is no unique choice to identify a tensor in @@ -420,7 +436,9 @@ of ``\mathbf{SVect}``, which will again be studied in detail at the end of this The braiding of a space and a dual space also follows naturally, it is given by ``τ_{V^*,W} = λ_{W ⊗ V^*} ∘ (ϵ_V ⊗ \mathrm{id}_{W ⊗ V^*}) ∘ (\mathrm{id}_{V^*} ⊗ τ_{V,W}^{-1} ⊗ \mathrm{id}_{V^*}) ∘ (\mathrm{id}_{V^*⊗ W} ⊗ η_V) ∘ ρ_{V^* ⊗ W}^{-1}``, i.e. -![braiding dual](img/diagram-braidingdual.svg) +```@raw html +braiding dual +``` **Balanced categories** ``C`` are braided categories that come with a **twist** ``θ``, a natural transformation from the identity functor ``1_C`` to itself, such that @@ -441,7 +459,9 @@ and where we omitted the necessary left and right unitors and associators. Graphically, the twists and their inverse (for which we refer to [^turaev]) are then represented as -![twists](img/diagram-twists.svg) +```@raw html +twists +``` The graphical representation also makes it straightforward to verify that ``(θ^{\mathrm{l}}_V)^* = θ^{\mathrm{r}}_{V^*}``, @@ -465,7 +485,9 @@ structure, or, to define the exact pairing for the right dual functor as or graphically -![pivotal from twist](img/diagram-pivotalfromtwist.svg) +```@raw html +pivotal from twist +``` where we have drawn ``θ`` as ``θ^{\mathrm{l}}`` on the left and as ``θ^{\mathrm{r}}`` on the right, but in this case the starting assumption was that they are one and the same, and @@ -520,7 +542,9 @@ In the graphical representation, the dagger of a morphism can be represented by the morphism around a horizontal axis, and then reversing all arrows (bringing them back to their original orientation before the mirror operation): -![dagger](img/diagram-dagger.svg) +```@raw html +dagger +``` where for completeness we have also depicted the graphical representation of the transpose, which is a very different operation. In particular, the dagger does not reverse the order @@ -704,7 +728,9 @@ fusion category, on which we now focus, the corresponding projection maps are Graphically, we represent these relations as -![fusion](img/diagram-fusion.svg) +```@raw html +fusion +``` and also refer to the inclusion and projection maps as splitting and fusion tensor, respectively. @@ -744,7 +770,9 @@ thus represent a unitary basis transform between the basis of inclusion maps ``X_{d,(eμν)}^{abc}`` and ``\tilde{X}_{d,(fκλ)}^{abc}``, which is also called an F-move, i.e. graphically: -![Fmove](img/diagram-Fmove.svg) +```@raw html +Fmove +``` The matrix ``F^{abc}_d`` is thus a unitary matrix. The pentagon coherence equation can also be rewritten in terms of these matrix elements, and as such yields the celebrated pentagon @@ -757,7 +785,9 @@ triangle equation and its collaries imply that ``[F^{1ab}_{c}]_{(11μ)}^{(cν1)} = δ^{ν}_{μ}``, and similar relations for ``F^{a1b}_c`` and ``F^{ab1}_c``, which are graphically represented as -![Fmove1](img/diagram-Fmove1.svg) +```@raw html +Fmove1 +``` In the case of group representations, i.e. the category ``\mathbf{Rep}_{\mathsf{G}}``, the splitting and fusion tensors are known as the Clebsch-Gordan coefficients, especially in @@ -803,7 +833,9 @@ for ``a=\bar{a}``, the value of ``χ_a`` cannot be changed, but must satisfy `` or thus ``χ_a = ±1``. This value is a topological invariant known as the *Frobenius-Schur indicator*. Graphically, we represent this isomorphism and its relations as -![Zisomorphism](img/diagram-Zisomorphism.svg) +```@raw html +Zisomorphism +``` We can now discuss the relation between the exact pairing and the fusion and splitting tensors. Given that the (left) coevaluation ``η_a ∈ \mathrm{Hom}(1, a⊗a^*)``, we can define the @@ -822,12 +854,16 @@ snake rules. Hence, both the quantum dimensions and the Frobenius-Schur indicato encoded in the F-symbol. Hence, they do not represent new independent data. Again, the graphical representation is more enlightning: -![ZtoF](img/diagram-ZtoF.svg) +```@raw html +ZtoF +``` With these definitions, we can now also evaluate the action of the evaluation map on the splitting tensors, namely -![splittingfusionrelation](img/diagram-splittingfusionrelation.svg) +```@raw html +splittingfusionrelation +``` where again bar denotes complex conjugation in the second line, and we introduced two new families of matrices ``A^{ab}_c`` and ``B^{ab}_c``, whose entries are composed out of @@ -843,7 +879,9 @@ Composing the left hand side of first graphical equation with its dagger, and no the resulting element ``f ∈ \mathrm{End}(a)`` must satisfy ``f = d_a^{-1} \mathrm{tr}(f) \mathrm{id}_a``, i.e. -![Brelation](img/diagram-Brelation.svg) +```@raw html +Brelation +``` allows to conclude that ``∑_ν [B^{ab}_c]^{ν}_{μ} \overline{[B^{ab}_c]^{ν}_{μ′}} = \delta_{μ,μ′}``, i.e. ``B^{ab}_c`` @@ -893,7 +931,9 @@ the simple objects. We can then express ``τ_{a,b}`` in terms of its matrix elem or graphically -![braidingR](img/diagram-braidingR.svg) +```@raw html +braidingR +``` The hexagon coherence axiom for the braiding and the associator can then be reexpressed in terms of the F-symbols and R-symbols. @@ -905,7 +945,9 @@ complex phases because of unitarity) multiplying the identity morphism, i.e. or graphically -![simpletwist](img/diagram-simpletwist.svg) +```@raw html +simpletwist +``` Henceforth, we reserve ``θ_a`` for the scalar value itself. Note that ``θ_a = θ_{\bar{a}}`` as our category is spherical and thus a ribbon category, and that the defining relation of @@ -916,7 +958,9 @@ a twist implies If ``a = \bar{a}``, we can furthermore relate the twist, the braiding and the Frobenius- Schur indicator via ``θ_a χ_a R^{aa}_1 =1``, because of -![twistfrobeniusschur](img/diagram-twistfrobeniusschur.svg) +```@raw html +twistfrobeniusschur +``` For the recurring example of ``\mathbf{Rep}_{\mathsf{G}}``, the braiding acts simply as the swap of the two vector spaces on which the representations are acting and is thus symmetric, diff --git a/docs/src/man/sectors.md b/docs/src/man/sectors.md index 81dbfd35d..4f0d09f15 100644 --- a/docs/src/man/sectors.md +++ b/docs/src/man/sectors.md @@ -107,7 +107,9 @@ in that particular F-symbol as ``N^{a\bar{a}}_u = 1``. There is a graphical representation associated with the fusion tensors and their manipulations, which we summarize here: -![summary](img/tree-summary.svg) +```@raw html +summary +``` As always, we refer to the subsection on [topological data of a unitary fusion category](@ref ss_topologicalfusion) for further @@ -888,7 +890,9 @@ R_b`` and their adjoints. This amounts to the canonical choice of our tensor pro for a given tensor mapping from ``(((W_1 ⊗ W_2) ⊗ W_3) ⊗ … )⊗ W_{N_2})`` to ``(((V_1 ⊗ V_2) ⊗ V_3) ⊗ … )⊗ V_{N_1})``, the corresponding fusion and splitting trees take the form -![double fusion tree](img/tree-simple.svg) +```@raw html +double fusion tree +``` for the specific case ``N_1=4`` and ``N_2=3``. We can separate this tree into the fusing part ``(b_1⊗b_2)⊗b_3 → c`` and the splitting part ``c→(((a_1⊗a_2)⊗a_3)⊗a_4)``. Given that @@ -921,7 +925,9 @@ into account. Hence, in the previous example, if e.g. the first and third space codomain and the second space in the domain of the tensor were dual spaces, the actual pair of splitting and fusion tree would look as -![extended double fusion tree](img/tree-extended.svg) +```@raw html +extended double fusion tree +``` The presence of these isomorphisms will be important when we start to bend lines, to move uncoupled sectors from the incoming to the outgoing part of the fusion-splitting tree. Note @@ -1004,7 +1010,9 @@ these two sectors do not appear on the same fusion vertex, some recoupling is ne The following represents two different ways to compute the result of such a braid as a linear combination of new fusion trees in canonical order: -![artin braid](img/tree-artinbraid.svg) +```@raw html +artin braid +``` While the upper path is the most intuitive, it requires two recouplings or F-moves (one forward and one reverse). On the other hand, the lower path requires only one (reverse) F- @@ -1040,7 +1048,9 @@ but can be used as a more general building block for arbitrary braids than the e Artin generators. A graphical example makes this probably more clear, i.e for `levels=(1,2,3,4,5)` and `permutation=(5,3,1,4,2)`, the corresponding braid is given by -![braid interface](img/tree-braidinterface.svg) +```@raw html +braid interface +``` that is, the first sector or space goes to position 3, and crosses over all other lines, because it has the lowest level (i.e. think of level as depth in the third dimension), and @@ -1063,7 +1073,9 @@ Other manipulations which are sometimes needed are `f1`), and recouple this into a linear combination of trees in canonical order, with `N₁+N₂-1` uncoupled sectors, i.e. diagrammatically for `i=3` - ![insertat](img/tree-insertat.svg) + ```@raw html + insertat + ``` * [split(f::FusionTree{I,N}, M::Int)](@ref TensorKit.split) : splits a fusion tree `f` into two trees `f1` and `f2`, such that `f1` has the first `M` @@ -1073,7 +1085,9 @@ Other manipulations which are sometimes needed are should return a dictionary with a single key-value pair `f=>1`. Diagrammatically, for `M=4`, the function `split` returns - ![split](img/tree-split.svg) + ```@raw html + split + ``` * [merge(f1::FusionTree{I,N₁}, f2::FusionTree{I,N₂}, c::I, μ=nothing)](@ref TensorKit.merge) : merges two fusion trees `f1` and `f2` by fusing the coupled sectors of `f1` and `f2` @@ -1082,7 +1096,9 @@ Other manipulations which are sometimes needed are uncoupled sectors in canonical order. This is a simple application of `insertat`. Diagrammatically, this operation is represented as: - ![merge](img/tree-merge.svg) + ```@raw html + merge + ``` ### Manipulations on a splitting - fusion tree pair @@ -1112,7 +1128,9 @@ between the (co)evaluation (exact pairing) and the fusion tensors, discussed in [topological data of a fusion category](@ref ss_topologicalfusion). The main ingredient that we need is summarized in -![line bending](img/tree-linebending.svg) +```@raw html +line bending +``` We will only need the B-symbol and not the A-symbol. Applying the left evaluation on the second sector of a splitting tensor thus yields a linear combination of fusion tensors @@ -1125,7 +1143,9 @@ However, we have to be careful if we bend a line on which a ``Z`` isomorphism (o adjoint) is already present. Indeed, it is exactly for this operation that we explicitly need to take the presence of these isomorphisms into account. Indeed, we obtain the relation -![dual line bending](img/tree-linebending2.svg) +```@raw html +dual line bending +``` Hence, bending an `isdual` sector from the splitting tree to the fusion tree yields an additional Frobenius-Schur factor, and of course leads to a normal sector (which is no @@ -1147,7 +1167,9 @@ This return values are correctly inferred if `N` is a compile time constant. Graphically, for `N₁ = 4`, `N₂ = 3`, `N = 2` and some particular choice of `isdual` in both the fusion and splitting tree: -![repartition](img/tree-repartition.svg) +```@raw html +repartition +``` The result is returned as a dictionary with keys `(f1′, f2′)` and the corresponding `coeff` as value. Note that the summation is only over the ``κ_j`` labels, such that, in the case diff --git a/docs/src/man/tensors.md b/docs/src/man/tensors.md index 8b4458ff4..fdbbfcdec 100644 --- a/docs/src/man/tensors.md +++ b/docs/src/man/tensors.md @@ -148,7 +148,9 @@ fusiontrees((a1, …, aN₁), c)` as ``X^{a_1, …, a_{N₁}}_{c,α}`` where `e` and the vertex degeneracy labels `μ` of a generic fusion tree, as discussed in the [corresponding section](@ref ss_fusiontrees). The tensor is then represented as -![tensor storage](img/tensor-storage.svg) +```@raw html +tensor storage +``` In this diagram, we have indicated how the tensor map can be rewritten in terms of a block diagonal matrix with a unitary matrix on its left and another unitary matrix (if domain and @@ -169,7 +171,9 @@ to `c`, either because of different sectors ``(b_1 … b_{N₂})`` or a differen To understand this better, we need to understand the basis transform, e.g. on the left (codomain) side. In more detail, it is given by -![tensor unitary](img/tensor-unitary.svg) +```@raw html +tensor unitary +``` Indeed, remembering that ``V_i = ⨁_{a_i} R_{a_i} ⊗ ℂ^{n_{a_i}}`` with ``R_{a_i}`` the representation space on which irrep ``a_i`` acts (with dimension ``\mathrm{dim}(a_i)``), we @@ -797,7 +801,9 @@ the graphical representation (where we draw the codomain and domain as a single makes clear that this introduces an additional (inverse) twist, which is then compensated in the `transpose` implementation. -![transpose](img/tensor-transpose.svg) +```@raw html +transpose +``` In categorical language, the reason for this extra twist is that we use the left coevaluation ``η``, but the right evaluation ``\tilde{ϵ}``, when repartitioning the indices @@ -1152,7 +1158,9 @@ morphism. If we also compose the resulting morphisms with coevaluations so that trivial domain, we just have one type of unconnected lines, henceforth called open indices. We sketch such a rearrangement in the following picture -![tensor unitary](img/tensor-bosoniccontraction.svg) +```@raw html +tensor unitary +``` Hence, we can now specify such a tensor diagram, henceforth called a tensor contraction or also tensor network, using a one-dimensional syntax that mimicks @@ -1220,7 +1228,9 @@ graphical calculus, which yields some crossings and a twist. As the latter is tr can be omitted, and we just use the same rules to evaluate the newly ordered tensor network. For the particular case of matrix matrix multiplication, which also captures more general settings by appropriotely combining spaces into a single line, we indeed find -![tensor contraction reorder](img/tensor-contractionreorder.svg) +```@raw html +tensor contraction reorder +``` or thus, the following to lines of code yield the same result ```julia From 5fea1dcde5b4737d3f9144d01b0f8fdf54a91aee Mon Sep 17 00:00:00 2001 From: leburgel Date: Mon, 7 Jul 2025 18:28:42 +0200 Subject: [PATCH 2/2] Fix image location for prettyurls --- docs/make.jl | 4 ++-- docs/src/man/categories.md | 44 +++++++++++++++++++------------------- docs/src/man/sectors.md | 16 +++++++------- docs/src/man/tensors.md | 10 ++++----- 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index 12650983b..0c2e0a35a 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -12,8 +12,8 @@ makedocs(; modules=[TensorKit, TensorKitSectors], sitename="TensorKit.jl", authors="Jutho Haegeman", warnonly=[:missing_docs, :cross_references], - format=Documenter.HTML(; prettyurls=get(ENV, "CI", nothing) == "true", - mathengine=MathJax(), assets=["assets/custom.css"]), + format=Documenter.HTML(; prettyurls=true, mathengine=MathJax(), + assets=["assets/custom.css"]), pages=pages, pagesonly=true) diff --git a/docs/src/man/categories.md b/docs/src/man/categories.md index 4d779b9b2..4689ac46e 100644 --- a/docs/src/man/categories.md +++ b/docs/src/man/categories.md @@ -47,7 +47,7 @@ circuit convention). Throughout this manual, we stick to this latter convention not very common in manuscripts on category theory): ```@raw html -composition +composition ``` The direction of the arrows, which become important once we introduce duals, are also @@ -171,7 +171,7 @@ morphisms, and for a general morphism ``t`` between a tensor product of objects and target: ```@raw html -tensorproduct +tensorproduct ``` Another relevant example is the category ``\mathbf{SVect}_𝕜``, which has as objects *super @@ -263,7 +263,7 @@ coevaluation of ``V`` and ``W``, such that ``{}^{∨}W ⊗ {}^{∨}V`` is at lea Graphically, we represent the exact pairing and snake rules as ```@raw html -left dual +left dual ``` Note that we denote the dual objects ``{}^{∨}V`` as a line ``V`` with arrows pointing in the @@ -276,7 +276,7 @@ associated pairings, the right evaluation ``\tilde{ϵ}_V: V ⊗ V^{∨} → I`` ``\tilde{η}_V: I → V^{∨} ⊗ V``, satisfying ```@raw html -right dual +right dual ``` In particular, one could choose ``\tilde{ϵ}_{{}^{∨}V} = ϵ_V`` and thus define ``V`` as the @@ -287,7 +287,7 @@ If objects ``V`` and ``W`` have left (respectively right) duals, than for a morp *transpose* ``{}^{∨}f ∈ \mathrm{Hom}({}^{∨}V, {}^{∨}W)`` (respectively ``f^{∨} ∈ \mathrm{Hom}(V^{∨}, W^{∨})``) as ```@raw html -transpose +transpose ``` where on the right we also illustrate the mapping from @@ -350,7 +350,7 @@ and a right trace as They are graphically represented as ```@raw html -trace +trace ``` and they do not need to coincide. Note that @@ -404,13 +404,13 @@ The braiding isomorphism ``τ_{V,W}`` and its inverse are graphically represente lines ``V`` and ``W`` crossing over and under each other: ```@raw html -braiding +braiding ``` such that we have ```@raw html -braiding relations +braiding relations ``` where the expression on the right hand side, ``τ_{W,V}∘τ_{V,W}`` can generically not be @@ -437,7 +437,7 @@ The braiding of a space and a dual space also follows naturally, it is given by ``τ_{V^*,W} = λ_{W ⊗ V^*} ∘ (ϵ_V ⊗ \mathrm{id}_{W ⊗ V^*}) ∘ (\mathrm{id}_{V^*} ⊗ τ_{V,W}^{-1} ⊗ \mathrm{id}_{V^*}) ∘ (\mathrm{id}_{V^*⊗ W} ⊗ η_V) ∘ ρ_{V^* ⊗ W}^{-1}``, i.e. ```@raw html -braiding dual +braiding dual ``` **Balanced categories** ``C`` are braided categories that come with a **twist** ``θ``, a @@ -460,7 +460,7 @@ where we omitted the necessary left and right unitors and associators. Graphical twists and their inverse (for which we refer to [^turaev]) are then represented as ```@raw html -twists +twists ``` The graphical representation also makes it straightforward to verify that @@ -486,7 +486,7 @@ structure, or, to define the exact pairing for the right dual functor as or graphically ```@raw html -pivotal from twist +pivotal from twist ``` where we have drawn ``θ`` as ``θ^{\mathrm{l}}`` on the left and as ``θ^{\mathrm{r}}`` on @@ -543,7 +543,7 @@ the morphism around a horizontal axis, and then reversing all arrows (bringing t their original orientation before the mirror operation): ```@raw html -dagger +dagger ``` where for completeness we have also depicted the graphical representation of the transpose, @@ -729,7 +729,7 @@ fusion category, on which we now focus, the corresponding projection maps are Graphically, we represent these relations as ```@raw html -fusion +fusion ``` and also refer to the inclusion and projection maps as splitting and fusion tensor, @@ -771,7 +771,7 @@ thus represent a unitary basis transform between the basis of inclusion maps i.e. graphically: ```@raw html -Fmove +Fmove ``` The matrix ``F^{abc}_d`` is thus a unitary matrix. The pentagon coherence equation can also @@ -786,7 +786,7 @@ triangle equation and its collaries imply that ``F^{ab1}_c``, which are graphically represented as ```@raw html -Fmove1 +Fmove1 ``` In the case of group representations, i.e. the category ``\mathbf{Rep}_{\mathsf{G}}``, the @@ -834,7 +834,7 @@ or thus ``χ_a = ±1``. This value is a topological invariant known as the *Frobenius-Schur indicator*. Graphically, we represent this isomorphism and its relations as ```@raw html -Zisomorphism +Zisomorphism ``` We can now discuss the relation between the exact pairing and the fusion and splitting @@ -855,14 +855,14 @@ encoded in the F-symbol. Hence, they do not represent new independent data. Agai graphical representation is more enlightning: ```@raw html -ZtoF +ZtoF ``` With these definitions, we can now also evaluate the action of the evaluation map on the splitting tensors, namely ```@raw html -splittingfusionrelation +splittingfusionrelation ``` where again bar denotes complex conjugation in the second line, and we introduced two new @@ -880,7 +880,7 @@ the resulting element ``f ∈ \mathrm{End}(a)`` must satisfy ``f = d_a^{-1} \mathrm{tr}(f) \mathrm{id}_a``, i.e. ```@raw html -Brelation +Brelation ``` allows to conclude that @@ -932,7 +932,7 @@ the simple objects. We can then express ``τ_{a,b}`` in terms of its matrix elem or graphically ```@raw html -braidingR +braidingR ``` The hexagon coherence axiom for the braiding and the associator can then be reexpressed in @@ -946,7 +946,7 @@ complex phases because of unitarity) multiplying the identity morphism, i.e. or graphically ```@raw html -simpletwist +simpletwist ``` Henceforth, we reserve ``θ_a`` for the scalar value itself. Note that ``θ_a = θ_{\bar{a}}`` @@ -959,7 +959,7 @@ If ``a = \bar{a}``, we can furthermore relate the twist, the braiding and the Fr Schur indicator via ``θ_a χ_a R^{aa}_1 =1``, because of ```@raw html -twistfrobeniusschur +twistfrobeniusschur ``` For the recurring example of ``\mathbf{Rep}_{\mathsf{G}}``, the braiding acts simply as the diff --git a/docs/src/man/sectors.md b/docs/src/man/sectors.md index 4f0d09f15..4998c7f4f 100644 --- a/docs/src/man/sectors.md +++ b/docs/src/man/sectors.md @@ -108,7 +108,7 @@ There is a graphical representation associated with the fusion tensors and their manipulations, which we summarize here: ```@raw html -summary +summary ``` As always, we refer to the subsection on @@ -891,7 +891,7 @@ for a given tensor mapping from ``(((W_1 ⊗ W_2) ⊗ W_3) ⊗ … )⊗ W_{N_2}) ⊗ V_3) ⊗ … )⊗ V_{N_1})``, the corresponding fusion and splitting trees take the form ```@raw html -double fusion tree +double fusion tree ``` for the specific case ``N_1=4`` and ``N_2=3``. We can separate this tree into the fusing @@ -926,7 +926,7 @@ codomain and the second space in the domain of the tensor were dual spaces, the of splitting and fusion tree would look as ```@raw html -extended double fusion tree +extended double fusion tree ``` The presence of these isomorphisms will be important when we start to bend lines, to move @@ -1011,7 +1011,7 @@ The following represents two different ways to compute the result of such a brai linear combination of new fusion trees in canonical order: ```@raw html -artin braid +artin braid ``` While the upper path is the most intuitive, it requires two recouplings or F-moves (one @@ -1049,7 +1049,7 @@ Artin generators. A graphical example makes this probably more clear, i.e for `levels=(1,2,3,4,5)` and `permutation=(5,3,1,4,2)`, the corresponding braid is given by ```@raw html -braid interface +braid interface ``` that is, the first sector or space goes to position 3, and crosses over all other lines, @@ -1129,7 +1129,7 @@ between the (co)evaluation (exact pairing) and the fusion tensors, discussed in that we need is summarized in ```@raw html -line bending +line bending ``` We will only need the B-symbol and not the A-symbol. Applying the left evaluation on the @@ -1144,7 +1144,7 @@ adjoint) is already present. Indeed, it is exactly for this operation that we ex need to take the presence of these isomorphisms into account. Indeed, we obtain the relation ```@raw html -dual line bending +dual line bending ``` Hence, bending an `isdual` sector from the splitting tree to the fusion tree yields an @@ -1168,7 +1168,7 @@ Graphically, for `N₁ = 4`, `N₂ = 3`, `N = 2` and some particular choice of ` the fusion and splitting tree: ```@raw html -repartition +repartition ``` The result is returned as a dictionary with keys `(f1′, f2′)` and the corresponding `coeff` diff --git a/docs/src/man/tensors.md b/docs/src/man/tensors.md index fdbbfcdec..d80ce4ba9 100644 --- a/docs/src/man/tensors.md +++ b/docs/src/man/tensors.md @@ -149,7 +149,7 @@ fusiontrees((a1, …, aN₁), c)` as ``X^{a_1, …, a_{N₁}}_{c,α}`` where [corresponding section](@ref ss_fusiontrees). The tensor is then represented as ```@raw html -tensor storage +tensor storage ``` In this diagram, we have indicated how the tensor map can be rewritten in terms of a block @@ -172,7 +172,7 @@ To understand this better, we need to understand the basis transform, e.g. on th (codomain) side. In more detail, it is given by ```@raw html -tensor unitary +tensor unitary ``` Indeed, remembering that ``V_i = ⨁_{a_i} R_{a_i} ⊗ ℂ^{n_{a_i}}`` with ``R_{a_i}`` the @@ -802,7 +802,7 @@ makes clear that this introduces an additional (inverse) twist, which is then co in the `transpose` implementation. ```@raw html -transpose +transpose ``` In categorical language, the reason for this extra twist is that we use the left @@ -1159,7 +1159,7 @@ trivial domain, we just have one type of unconnected lines, henceforth called op We sketch such a rearrangement in the following picture ```@raw html -tensor unitary +tensor unitary ``` Hence, we can now specify such a tensor diagram, henceforth called a tensor contraction or @@ -1229,7 +1229,7 @@ can be omitted, and we just use the same rules to evaluate the newly ordered ten network. For the particular case of matrix matrix multiplication, which also captures more general settings by appropriotely combining spaces into a single line, we indeed find ```@raw html -tensor contraction reorder +tensor contraction reorder ``` or thus, the following to lines of code yield the same result