Recent Changes - Search:




Pending changes to the QuantumNumber library

  1. Move the functions for coupling coefficients to be member functions (possibly static) of a class. For example we would have
class SU2

      typedef half_int value_type;

      static double degree(half_int x);

      static double coupling_3j_phase(half_int a, half_int b, half_int c);

      // ...

In the case of {$SU(2)$} the functions can be static because the symmetry group has no parameters. In the case of the Dihedral group {$D_n$} they cannot be static functions because the symmetry group depends on the parameter {$n$}. The representations of the dihedral group consist of two one-dimensional reps {$+$} and {$-$}; for {$n$} even there are also two one-dimensional reps {$+n$} and {$-n$}. The other reps {$j$} for {$0 < j < n$} are two dimensional. So a convenient representation is a 'signed' integer, where +0 and -0 are permissible values. (eg, this can be implemented using a sign bit or a 1's compliment representation.) We also allow half-integer (projective) representations. Note: the half-integer reps for odd {$n$} require complex coupling coefficients I think?!?!

class Dihedral
      Dihedral(int N_) : N(N_) {}

      typedef signed_half_int value_type;
      double degree(signed_half_int x) const;

      double coupling_3j_phase(signed_half_int a, signed_half_int b, signed_half_int c) const;

      // ...

      int N;
  1. To support non-abelian anyons the degree() function needs to return double, not int. All uses of the degree function need to be audited.
  2. Strip out the Projection mechanism. Instead replace it with a group chain mechanism for more general projections. For example, from {$SU(2)$} we can do the common decomposition {$U(1) \subset SU(2)$}, but we can also do {$D_\inf \subset SU(2)$}, or {$Z_3 \subset SU(2)$}. There might be more than one decomposition {$Z_2 \subset SU(2)$}. So we need to be able to define a (named?) projection from one group to another.
  3. Rationalize the number of different functions required for the coupling coefficients. We need:
    1. degree (quantum dimension)
    2. 3-j phase
    3. 6-j symbol
    4. 9-j symbol, but can have a default implementation
    5. adjoint
    6. Clebsch-Gordan expansion
    7. coupling coefficients for inner(), dot(), cross(), outer()
    8. Uni10 will require phase factors for changing the direction of legs, hopefully this can re-use the 3-j phase.
    9. many others .....
  4. Implement 'small string' optimization for QuantumNumber
  5. Not sure if uni-10 wil use the braid group representations. But the idea is that each symmetry has a set of allowed representations of the braid group. So a model can select a specific representation for the operators, which means that the {$R$} matrix and other objects associated with swap gates and braiding can be calculated algebraically.
Edit - History - Print - Recent Changes - Search
Page last modified on April 28, 2017, at 05:49 PM