Terminology¶
Nicole uses a precise vocabulary to describe tensor structure and operations. This page defines the key terms and distinguishes concepts that are often conflated in the broader tensor network literature.
Axis, Index, and Edge¶
These three terms all refer to "a index of a tensor" in colloquial usage, but they mean distinct things in Nicole.
- Axis
- An integer position or string tag (
itag) that designates where an index sits in a tensor. Axes are ordinal labels — they identify a slot, not the object occupying it. When you permute a tensor or refer to an index by number, you are working with axes. - Index (
Index) - The concrete object that occupies an axis. An
Indexcarries the full sector structure of the index: the symmetry group, the list of charge–dimension pairs, and the direction (incoming or outgoing). Two tensors can only be contracted along a pair of axes if theIndexobjects at those axes are compatible — same group, complementary sectors, opposite directions. - Edge
- The dedicated term for an index of a CG (Clebsch–Gordan) tensor, as used in the Yuzuha Protocol. An edge in the CG tensor network corresponds to an index labelled by irrep label \(j\) and the primal/dual property. The term "edge" is reserved for this graph-theoretic context and is not used for ordinary tensor axes.
Sector and Block¶
- Sector
- A single symmetry charge together with its multiplicity (dimension). For example, in a U(1) index, the pair
(charge=1, dim=4)is a sector — charge \(q = 1\) appearing with degeneracy 4. Sectors are the building blocks of anIndex. - Block
- A combination of sectors, one per axis of a tensor, that jointly satisfies the charge conservation constraint. A block identifies a dense sub-matrix (or sub-array) in the block-sparse representation of the tensor. While a sector lives on a single index, a block lives on the full tensor and corresponds to an actual data chunk stored in memory.
reverse, flip, and invert¶
These three words all suggest "turning something around", but they apply at different levels of the data hierarchy.
reverse— acts onDirection- Changes the direction of a
Directionvalue between incoming and outgoing. This is a low-level primitive on the enum itself. flip— acts onIndex- Returns a new
Indexwith the direction reversed. The sector structure is unchanged; only the arrow on the index is flipped. Used when constructing compatible pairs of indices for contraction. invert— acts onTensor- Flips the direction of one or more axes of a tensor by updating the associated
Indexobjects in place, and also reverses the corresponding direction in the intertwiner via theBridge. Acts on a single tensor in isolation and does not apply any phase correction. For inverting a bond between two tensors, usecapcupinstead, which applies the necessary Frobenius–Schur phase for SU(2).
fuse, combine, and merge¶
These three words all suggest "bringing things together", but they operate at different levels.
fuse— acts on charges- Combines two or more symmetry charges according to the group fusion rules to produce the resulting charge(s). For Abelian groups this yields a single charge (
fuse_unique); for non-Abelian groups it yields a set of allowed output charges (fuse_channels). Fusion is a property of the symmetry group, not of tensors. combine— acts onIndexobjects- Produces a single
Indexwhose charge content is the fusion product of two or more input indices. The result is a new index-level object — it has its own sector structure and an explicitly chosen direction, independent of the input directions.combineoperates purely on index structure without touching any tensor data. merge— acts on tensor axes- Collapses multiple axes of a tensor into one, physically restructuring the tensor data. Unlike
combine, which is a pure index operation,mergeacts on a live tensor and changes its shape. The inverse operation — splitting the merged axis back — is achieved by contracting with the Hermitian conjugate of the isometry used to perform the merge.