neuralqx.lqx.wcl.abstract_lqx_wcl_model module

class LqxWclModel(hilbert, graph, gauge_group, *, computational=True, spacetime_dimensions=4, model_name='AbstractLqxModel')

Bases: AbstractLqxModel

abstractmethod volume(vertex, *, computational=None, jax=None)

Returns the volume operator of the underlying wrapped model.

Parameters:
  • vertex (int) – the vertex the volume operator should act on

  • computational (Optional[bool]) – if True, the volume operator is implemented as a computational operator

  • jax (Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator

Returns:

abstractmethod area(surface, *, computational=None, jax=None)

Returns the area operator of the underlying wrapped model.

Parameters:
  • surface (list) – the surface the area operator acts on. This should be a list composed of edges in their raw representation as provided from the AbstractGraph.edges property

  • computational (Optional[bool]) – if True, the area operator is implemented as a computational operator

  • jax (Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator

Returns:

abstractmethod minimal_loop_holonomy(minimal_loop, vertex_index=None, adjoint=0, *, computational=None, jax=None, dimension=1)

Returns the minimal loop holonomy operator of the underlying wrapped model.

Parameters:
  • minimal_loop (list) – the loop the operator should act on. This should be one of the loops provided by the AbstractGraph.dressed_minimal_loops()

  • vertex_index (int) – the current vertex index in te minimal loop (used for recursion)

  • adjoint (int) – a flag which identifies if the adjoint is requested (1 or 0)

  • computational (Optional[bool]) – if True, the operator is implemented as a computational operator

  • jax (Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator

  • dimension (Optional[int]) – This controls the dimension on which the minimal loop holonomy is implemented in (e.g. call dimensions = 1 in a 3-d model to get the U(1) operator)

Returns:

abstractmethod holonomy(edge, adjoint=False, *, computational=None, jax=None, dimension=1)

Returns the minimal loop holonomy operator of the underlying wrapped model.

Parameters:
  • edge (Union[list, tuple]) – the edge the operator should act on. This should be one of the loops provided by the AbstractGraph.edges

  • computational (Optional[bool]) – if True, the operator is implemented as a computational operator

  • adjoint (bool) – if True, the operator acts as a lowering operator, otherwise a raising operator on the U(1) DOFs

  • jax (Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator

  • dimension (Optional[int]) – This controls the dimension on which the holonomy operator is implemented in (e.g. call dimensions = 1 in a 3-d model to get the U(1) operator)

Returns:

abstractmethod number(edge, *, computational=None, jax=None, dimension=1, kwargs=None)

Returns the number operator acting on the specified edge

Parameters:
  • edge (tuple) – the edge the operator should act on. This should be one of the loops provided by the AbstractGraph.edges

  • computational (Optional[bool]) – if True, the operator is implemented as a computational operator

  • adjoint – if True, the operator acts as a lowering operator, otherwise a raising operator on the U(1) DOFs

  • jax (Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator

  • dimension (Optional[int]) – This controls the dimension on which the holonomy operator is implemented in (e.g. call dimensions = 1 in a 3-d model to get the U(1) operator)

  • kwargs (Optional[dict]) – and additional information to be passed to the LocalOperator implementation

Returns:

abstractmethod curvature_constraint(*, computational=None, jax=True)

Implements the curvature constraint on the graph by imposing flatness over the minimal loops. The constraint takes the form

\[\hat{F} = \sum_{a \in L({\gamma})} ( \hat{h}_{a} - 1 ) ( \hat{h}_{a}^\dagger - 1 )\]

for every minimal loop \(a\) in the graph. Here \(\hat{h}_{a}\) is a minimal loop holonomy.

abstractmethod thiemann_quadratic_constraint(*, computational=None, jax=True, **kwargs)

For appropriate models, any subclass should implement a quadratic constraint implemented using the Thiemann regularised quantum Hamilton constraint