FactorProjector

Symbolica documentation for getting started, symbolic expressions, numerical evaluation, pattern matching, and APIs in Python and Rust.

FactorProjector

class FactorProjector

A 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
True

Methods

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.str

Show 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

  • FactorProjector Compact 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

  • FactorProjector Compact 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

  • FactorProjector Compact 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)