minBasis

This submodule takes care of handling covariant derivatives, field strength tensors and overall derivatives in a common way to be able to work out a basis that is fully linearly independent and thus minimal.

_IBPbilinear(op: LinearComb) bool

Absorb one left-acting covariant derivative in a Bilinear into an overall derivative and a right-acting covariant derivative.

Parameters:

op (LinearComb) – Operator in which each Bilinear, carrying covariant derivatives acting to the left, is rewritten as total derivatives and right-acting covariant derivatives.

Returns:

Indicates whether a left-acting covariant derivative was encountered and replaced.

Return type:

bool

_IBPtrace(op: LinearComb)

Searches for a total derivative acting on a algebra-valued Trace and replaces it by an appropriate combination of covariant derivatives.

Parameters:

op (LinearComb) – Operator to be reexpressed.

Returns:

Indicates whether a total derivative was encountered and reexpressed.

Return type:

bool

class _dA(mu: sptIdx, derivatives: list[int] | None = None, factor: Complex = 1)

Bases: Block

Intended for internal use only to give gluon Trace a unique string representation in terms of monomials of the gluon field and its (higher order) derivatives.

Parameters:
  • mu (sptIdx) – Space-time index of the gluon.

  • derivatives (list[d]|None, optional) – Collection (space-time indices) of derivatives acting on the gluon. Defaults to None.

simplify()

Is expected to take care of any relations among different index permutations. => Has to be adapted for non-trivial cases!

_mapCoefficients(rep: list[tuple[str, Complex]], map_: dict[str, int])

Each unique term in the overcomplete basis can be identified as an eigenvector in a vector space spanned by all the terms. Using the factors corresponding to the different terms in a LinearComb, we can thus assign each operator a vector in this vector-space to establish a truly linearly independent and thus minimal basis.

Parameters:
  • rep (list[tuple[str,Complex]]) – String-representations of all the terms of an operator together with the correspodning factor.

  • map (dict[str,int]) – Table mapping each string-representation of a term into a component of the full #terms-dimensional vector.

Returns:

Eigenvector corresponding to rep in the full vector-space.

Return type:

tuple[complex]

_toRep(op: LinearComb)

Takes care of any total derivatives by applying the product rule and IBP relations. Afterwards, any _AlgebraBlock is written out explicitly and the resulting unique expression is prepared for being mapped in our vector-space.

Parameters:

op (LinearComb) – Operator to be processed.

Returns:

Returns the details needed to map the operator into our vector-space.

Return type:

list[tuple[str,Complex]] | None

_unmaskAlgebraBlock(op: LinearComb) bool

Looks for an instance of _AlgebraBlock and reexpresses it by the appropriate commutators of covariant derivitaves acting on the right-most algebra block, which can be a field strength tensor or Colour.

Parameters:

op (LinearComb) – Expression in which _AlgebraBlock are supposed to be reexpressed. The input argument will be changed!

Returns:

Indicating whether an instance of _AlgebraBlock was encountered.

Return type:

bool

findMinBases(bases: list[list[LinearComb]], gEOM: GluonEOM | None = None, fEOMs: list[LinearComb] | None = None, model: Model | None = None)

Takes the (various) overcomplete bases and identifies appropriate minimal bases while dropping linear dependent terms. The ordering of the sets of bases and within each basis determine which operators to keep. Operators with higher priority should come first.

Optionally allows to start from EOMs still being masked by D0, D0l, and DF.

In which case the appropriate EOMs must be provided: <= fEOMs & model or both None <= gEOM or None

If any are None, please make sure that all D0, D0l, and DF are unmasked!

Parameters:
  • bases (list[list[LinearComb]]) – Collection of operators that are still grouped to allow for keeping track of initially used templates.

  • gEOM (GluonEOM|None, optional) – Description of the gluon EOM, defaults to None.

  • fEOMs (list[LinearComb]|None, optional) – Collection of fermion EOMs, i.e., allows to have different EOMs for different flavours. Defaults to None.

  • model (Model) – Description of the theory currently considered. Only required for use with the fermion EOMs to track sets of flavours. Defaults to None.

Returns:

Collection of linearly independent operators keeping the original grouping intact while ensuring that earlier groups take precedence.

Return type:

list[list[LinearComb]]

Raises:

AssertionError – If fermion EOMs are provided but model is None.