Skip to content

isometry

Create a 3-index fusion tensor for combining indices.

isometry

isometry(
    first: Index,
    second: Index,
    *,
    dtype: dtype = torch.float64,
    device: Optional[device] = None,
    itags: Optional[Tuple[str, str, str]] = None,
    fused_direction: Optional[Direction] = None,
) -> Tensor

Return a 3rd order tensor that fuses first ⊗ second into a fused index.

For Abelian groups, creates a single block per charge combination. For generic groups (e.g., SU(2)), creates multiple blocks corresponding to different fusion channels, with intertwiner (Bridge) handling Clebsch-Gordan coefficients and proper normalization.

Parameters:

Name Type Description Default
first Index

Input indices to be fused. They must share a symmetry group.

required
second Index

Input indices to be fused. They must share a symmetry group.

required
dtype dtype

Data type for the emitted fusion blocks.

float64
device Optional[device]

Device for the tensor blocks. If None, defaults to torch.get_default_device().

None
itags Optional[Tuple[str, str, str]]

Optional tuple of tags for the three tensor indices. Defaults to ("_init_", "_init_", "_init_").

None
fused_direction Optional[Direction]

Optional direction for the fused index. Defaults to the dual of first.

None

Returns:

Type Description
Tensor

Third order tensor whose third index represents the fusion of the first two. For generic groups, includes intertwiner (intw) field with Bridge objects containing CG specifications and normalization weights.

Raises:

Type Description
ValueError

If the incoming indices do not belong to the same symmetry group.

RuntimeError

If internal bookkeeping detects a fusion shape mismatch.

Description

Returns a tensor that fuses two indices into a combined index. The fusion follows the symmetry group's charge combination rules (e.g., addition for U(1), XOR for Z(2)).

Structure

  • Indices 1 & 2: Input indices to be fused
  • Index 3: Fused index with combined sectors

Charges are fused: q_fused = group.fuse_unique(q₁, q₂)

See Also

Notes

Both input indices must share the same symmetry group. The fused index dimension is the product of input dimensions for matching charge combinations.