FactorProjector
FactorProjector
class FactorProjectorA normalized permutation group of matrix factors for a chain or trace.
Symmetric and antisymmetric groups average all permutations with weight 1/n!, with signs for the antisymmetric case. Cyclic groups average n cyclic rotations with weight 1/n. Groups may be nested and remain compact until expanded. They are factor groups, not standalone tensor expressions.
Symbolic factors stay symbolic. A group containing Tensor or TensorNetwork data produces a TensorNetwork when inserted in a chain or trace. Supply individual factors rather than a precomposed multi-factor chain.
Examples
from symbolica.community.tensor import Representation, TensorName, TensorExpression
space = Representation.euc(2)
A = TensorName("M")(space, space)
from symbolica.community.tensor import FactorProjector, trace
group = FactorProjector.symmetric(A, A)
trace(space, group).is_scalar
TrueMethods
| Name | Description |
|---|---|
__repr__ |
|
_repr_html_ |
Show the checked factor group using the tensor index printer. |
antisymmetric |
Average all signed permutations with weight 1/n!. |
cyclic |
Average cyclic rotations with weight 1/n. |
symmetric |
Average all permutations with weight 1/n!. |
__repr__
FactorProjector.__repr__() -> builtins.str_repr_html_
FactorProjector._repr_html_() -> builtins.strShow the checked factor group using the tensor index printer.
antisymmetric
FactorProjector.antisymmetric(*factors: TensorExpression | Expression | FactorProjector[TensorExpression]) -> FactorProjector[TensorExpression]
FactorProjector.antisymmetric(*factors: Unpack[tuple[Tensor | TensorNetwork | FactorProjector[TensorNetwork], Unpack[tuple[TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork], ...]]]]) -> FactorProjector[TensorNetwork]
FactorProjector.antisymmetric(*factors: Unpack[tuple[TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork], Tensor | TensorNetwork | FactorProjector[TensorNetwork], Unpack[tuple[TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork], ...]]]]) -> FactorProjector[TensorNetwork]
FactorProjector.antisymmetric(*factors: TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork]) -> FactorProjector[TensorExpression] | FactorProjector[TensorNetwork]Average all signed permutations with weight 1/n!.
Parameters
*factors(TensorExpression, Tensor, TensorNetwork, or FactorProjector) Individual matrix factors with compatible channels, or nested groups. Their order defines the starting permutation.
Returns
FactorProjectorCompact normalized group, retaining any supplied component data. Insert it with chain() or trace().
Examples
from symbolica.community.tensor import Representation, TensorName, TensorExpression
space = Representation.euc(2)
A = TensorName("M")(space, space)
from symbolica.community.tensor import FactorProjector, trace
group = FactorProjector.antisymmetric(A, A)
result = trace(space, group)cyclic
FactorProjector.cyclic(*factors: TensorExpression | Expression | FactorProjector[TensorExpression]) -> FactorProjector[TensorExpression]
FactorProjector.cyclic(*factors: Unpack[tuple[Tensor | TensorNetwork | FactorProjector[TensorNetwork], Unpack[tuple[TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork], ...]]]]) -> FactorProjector[TensorNetwork]
FactorProjector.cyclic(*factors: Unpack[tuple[TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork], Tensor | TensorNetwork | FactorProjector[TensorNetwork], Unpack[tuple[TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork], ...]]]]) -> FactorProjector[TensorNetwork]
FactorProjector.cyclic(*factors: TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork]) -> FactorProjector[TensorExpression] | FactorProjector[TensorNetwork]Average cyclic rotations with weight 1/n.
Parameters
*factors(TensorExpression, Tensor, TensorNetwork, or FactorProjector) Individual matrix factors with compatible channels, or nested groups. Their order defines the starting permutation.
Returns
FactorProjectorCompact normalized group, retaining any supplied component data. Insert it with chain() or trace().
Examples
from symbolica.community.tensor import Representation, TensorName, TensorExpression
space = Representation.euc(2)
A = TensorName("M")(space, space)
from symbolica.community.tensor import FactorProjector, trace
group = FactorProjector.cyclic(A, A)
result = trace(space, group)symmetric
FactorProjector.symmetric(*factors: TensorExpression | Expression | FactorProjector[TensorExpression]) -> FactorProjector[TensorExpression]
FactorProjector.symmetric(*factors: Unpack[tuple[Tensor | TensorNetwork | FactorProjector[TensorNetwork], Unpack[tuple[TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork], ...]]]]) -> FactorProjector[TensorNetwork]
FactorProjector.symmetric(*factors: Unpack[tuple[TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork], Tensor | TensorNetwork | FactorProjector[TensorNetwork], Unpack[tuple[TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork], ...]]]]) -> FactorProjector[TensorNetwork]
FactorProjector.symmetric(*factors: TensorExpression | _ScalarInput | Tensor | TensorNetwork | FactorProjector[TensorExpression] | FactorProjector[TensorNetwork]) -> FactorProjector[TensorExpression] | FactorProjector[TensorNetwork]Average all permutations with weight 1/n!.
Parameters
*factors(TensorExpression, Tensor, TensorNetwork, or FactorProjector) Individual matrix factors with compatible channels, or nested groups. Their order defines the starting permutation.
Returns
FactorProjectorCompact normalized group, retaining any supplied component data. Insert it with chain() or trace().
Examples
from symbolica.community.tensor import Representation, TensorName, TensorExpression
space = Representation.euc(2)
A = TensorName("M")(space, space)
from symbolica.community.tensor import FactorProjector, trace
group = FactorProjector.symmetric(A, A)
result = trace(space, group)