Source code for sft_wick.indices

"""Index management for Wick contractions.

Generates fresh component indices and spatial variables for vertex instantiation.
"""

from __future__ import annotations


[docs] class IndexContext: """Generates fresh, unique index names for vertex instantiation. When multiple copies of vertices are created during perturbative expansion, each copy needs non-overlapping internal indices. """ def __init__(self) -> None: self._component_counter = 0 self._spatial_counter = 0
[docs] def fresh_component_index(self, prefix: str = "i") -> str: """Generate a fresh component index name like i_0, i_1, ...""" name = f"{prefix}_{self._component_counter}" self._component_counter += 1 return name
[docs] def fresh_spatial_variable(self, prefix: str = "y") -> str: """Generate a fresh spatial variable name like y_0, y_1, ...""" name = f"{prefix}_{self._spatial_counter}" self._spatial_counter += 1 return name