neuralqx.gauge_groups.u1 package

class U1GaugeGroup(H, *, lazy=True, computational=True, jax=True)

Bases: AbstractGaugeGroup

Implements the Abelian gauge group \(U(1)^N\) acting on a HilbertU1.

Gauss constraint The Gauss law at each vertex \(v\) is enforced by a generator \(\hat G_v\). On an oriented graph it takes the form

\[\hat G_v = \sum_{\ell \in \mathrm{inc}(v)} \hat E_\ell \;-\; \sum_{\ell \in \mathrm{out}(v)} \hat E_\ell\]

and the constraint used for optimisation is the positive operator

\[\hat C = \sum_{v \in V} \hat G_v^2\]

For \(U(1)^N\), the full constraint is the sum of \(N\) independent copies. In the local operator backend this is realised by constructing one copy and shifting its support by a fixed site offset per copy.

Operator backends Depending on configuration, the constraint is instantiated as one of

Group composition This implementation supports a simple notion of composition in terms of the number of independent \(U(1)\) factors

\[U(1)^m \times U(1)^n \mapsto U(1)^{m+n}, \qquad \bigl(U(1)^m\bigr)^k \mapsto U(1)^{mk}\]
Parameters:
  • H (HilbertU1) – A \(U(1)\) compatible Hilbert space, must be an instance of HilbertU1.

  • lazy (Optional[bool]) – If True and a local operator backend is requested, delay building expensive local operator structures.

  • computational (Optional[bool]) – If True, prefer computational operator backends.

  • jax (Optional[bool]) – If True and computational is True, request a JAX compatible computational backend.

Raises:

IncompatibleHilbertSpaceError – If H is not a HilbertU1.

Submodules