[ANN] SymBasis.jl: Symmetry-conserving bases for Julia

SymBasis.jl is a Julia package for generating bases that conserve symmetries in systems with a discrete number of degrees of freedom, with a focus on quantum many-body applications.

Key features

  • Simple API to generate bases with one or multiple symmetries
  • Custom symmetries (and predefined ones)
  • Supports any discrete DoF: spins, fermions, bosons, or custom objects
  • Custom base positional numbering for basis states

Predefined symmetries

  • Total magnetization (spins)
  • Spatial reflection
  • Translational symmetry
    (Planned: spin inversion, particle number conservation, etc.)

Installation (Julia ≥ 1.11)

pkg> add SymBasis

Quick example (spin-1/2, N=4, Sz=0)

using SymBasis.DoFObjects
using SymBasis.SymGroups
using SymBasis.Bases

N = 4
Sz = 0//1

dofo = dof_object(:Spin, 1 // 2)
sg = sym(:TotalMagnetization, dofo, Sz, N)

basis(dofo, N, sg)

Project status: active development; please benchmark for your use case. Issues/feedback:
https://github.com/cevenkadir/SymBasis.jl/issues/new