[1]:
import os
import sys
sys.path.insert(0, os.path.abspath('../..'))
import sympy as sp
import numpy as np
import itertools as it
import pysymmpol as sy
import pysymmpol.utils as ut
from IPython.display import display, Latex
Class: State
In two dimensions, there is a isomorphism between the bosonic and fermionic Fock spaces known as the Fermion-Boson correspondence. The bosonic states are represented in terms of conjugacy classes \(\lambda = (1^{k_1} 2^{k_2}\cdots)\), and the fermionic states \(\lambda = (\lambda_1, \lambda_2, \dots, \lambda_N)\) are represented in terms of partition states that we have discussed above. These states are not equivalent, but since the Fock space is decomposed in terms of the number of boxes, that we call level, therefore, we have an expansion of the form
\(|1^{k_1} 2^{k_2}\cdots\rangle = \sum_{\lambda} C_{\lambda} |\lambda_1, \lambda_2, \dots, \lambda_N\rangle\qquad \left(n = \sum_i\lambda_i = \sum_j j k_j\right)\)
and the sum is over all partitions with \(n\) boxes, and the coefficients above are written in terms of Schur polynomials.
Therefore, this module consider a given level \(n\), number of boxes, and build all possible bosonic and fermionic states. From the mathematical viewpoint, we determine the partitions of the integers \(n\) and write these partitions in both forms \(\lambda = (1^{k_1} 2^{k_2}\cdots) = (\lambda_1, \lambda_2, \dots, \lambda_N)\).
As before, we represent conjugacy classes as dictionaries and partitions as tuples.
Before we start, it is important to undertand that the empty state at level zero (no boxes) is the quantum vacuum, and is represented by the absence of bosonic or fermionic operators. It is represented as an empty tuple.
Conjugacy States
[2]:
# Given the level n, we can build the class states:
state = sy.State(3)
[8]:
state.conjugacy_states() # and with this method, we see the possible states in this level. 3 states. This number is equal the partition of the n, in our case, n=3
[8]:
({1: 3, 2: 0, 3: 0}, {1: 1, 2: 1, 3: 0}, {1: 0, 2: 0, 3: 1})
[4]:
state._conjugacy_states() # There is also a nonpublic method that returns these states as tuples.
[4]:
((3, 0, 0), (1, 1, 0), (0, 0, 1))
Now one can see that we can build the corresponding Young diagrams using the previous module.
[5]:
state_level3 = sy.State(3)
[9]:
len(state_level3._conjugacy_states()) # There are 3 states, of course.
[9]:
3
[11]:
# We can use the ConjugacyClass to write the diagrams
for a in state_level3.conjugacy_states():
print(40*"--")
print(f"Bosonic state {state_level3.conjugacy_states().index(a)+1}: |{a}>")
sy.ConjugacyClass(a).draw_diagram()
print(40*"--")
--------------------------------------------------------------------------------
Bosonic state 1: |{1: 3, 2: 0, 3: 0}>
■
■
■
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Bosonic state 2: |{1: 1, 2: 1, 3: 0}>
■
■ ■
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Bosonic state 3: |{1: 0, 2: 0, 3: 1}>
■ ■ ■
--------------------------------------------------------------------------------
Partition State
Using the same examples, we can build the ‘’fermionic’’ states.
[12]:
len(state_level3.partition_states())
[12]:
3
[14]:
for a in state_level3.partition_states():
print(40*"--")
print(f"Fermionic representation {state_level3.partition_states().index(a)+1}: |{a}>")
sy.YoungDiagram(a).draw_diagram()
print(40*"--")
--------------------------------------------------------------------------------
Fermionic representation 1: |(1, 1, 1)>
■
■
■
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Fermionic representation 2: |(2, 1, 0)>
■
■ ■
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Fermionic representation 3: |(3, 0, 0)>
■ ■ ■
--------------------------------------------------------------------------------
[ ]: