Jutho/TensorKit.jl

Not understand the tutorial about symmetry part

Nellatur opened this issue · 4 comments

Hello TensorKit Developers,

I saw
https://jutho.github.io/TensorKit.jl/stable/man/tutorial/#Symmetries
about
"julia> V1 = ℤ₂Space(0=>3,1=>2)
Rep[ℤ₂](0=>3, 1=>2)

julia> dim(V1)
5"
Got difficulty to understand it.

What does "0=>3,1=>2" mean? And why the dim(V1)=5? I posted on https://discourse.julialang.org/t/why-the-dimension-of-v1-space-0-3-1-2-is-5/59960 as well

Thank you very much. I am not sure if here is the right place to ask this question.

Jutho commented

The tutorial can probably use some work. This notation means, build a vector space which carries a representation of ℤ₂ where irrep 0 (the trivial irrep) appears 3 times, and irrep 1 (the only non-trivial irrep) appears 2 times. As both irreps are themselves one-dimensional (as any irrep of any abelian group), the total dimension is 3 * 1 + 2 * 1 = 5.

Thank you so much for your explanation! I have more stupid questions:

  1. In

-0.09457075521998622 -0.6716990765558435
-0.008819557643842874 -0.20943669152145974

how can I see this matrix belongs to the non-trivial irrep of Z2? Since [:, :, 1] is block diagonal?

  1. If I want to realize a tensor contraction,C[a,c,d] = A[a,b] * B[b,c,d](sum over b) with a symmetry B[b,c,d] = B[b,d,c],
    what kind of symmetry should I input? Will it get faster by utilizing this symmetry?

  2. Does tensorkit support antisymmetry properties in permuting fermions? by some graded symmetry? Is there any example?

Thank you very much!

Jutho commented

Regarding 1, I will need more context to be able to answer your question.

For 2, symmetries under index permutations are currently not supported. In general, it's quite hard to take them into account, in particular in a way that leads to a large speedup.

I assume 3 is related to this. TensorKit.jl supports fermions, though this is not yet well documented, as it is only recent. It does so by using tensors over Z2-graded vector spaces, i.e. super vector spaces, with the Koszul sign rule when permuting indices. For clarity though, this is not the same as the antisymmetry of a fermionic wave function in a first quantized description. It is of course related, but the tensors in TensorKit.jl are rather associated with a second quantized description.

Thank you very much for your answers!

About 1, it is in https://jutho.github.io/TensorKit.jl/stable/man/tutorial/#Symmetries
about ~10 lines below

julia> dim(V1)
5

as the output of

julia> A = Tensor(randn, V1V1V2')