comch.surjection: The surjection operad

comch.surjection.SurjectionElement([data, ...])

Element in the surjection operad.

comch.surjection.Surjection()

Produces surjection elements of interest.

class comch.surjection.SurjectionElement(data=None, torsion=None, convention=None)[source]

Element in the surjection operad.

For a positive integer \(r\) let \(\mathcal X(r)_d\) be the free \(R\)-module generated by all functions \(s : \{1, \dots, d+r\} \to \{1, \dots, r\}\) modulo the \(R\)-submodule generated by degenerate functions, i.e., those which are either non-surjective or have a pair of equal consecutive values. There is a left action of \(\mathrm S_r\) on \(\mathcal X(r)\) which is up to signs defined on basis elements by \(\pi \cdot s = \pi \circ s\). We represent a surjection \(s\) as the sequence of its values \(\big( s(1), \dots, s(n+r) \big)\). The boundary map in this complex is defined up to signs by

\[\partial s = \sum_{i=1}^{r+d} \pm \big(s(1),\dots,\widehat{s(i)},\dots,s(n+r)\big).\]

We refer to [McS] and [BF], where this operad was introduced, for their corresponding sign conventions, and to the corresponding methods below for the operadic composition and complexity filtration.

References

[McS]: J. McClure, and J. Smith. “Multivariable cochain operations and little n-cubes.” Journal of the American Mathematical Society 16.3 (2003): 681-704.

[BF]: C. Berger, and B. Fresse. “Combinatorial operad actions on cochains.” Mathematical Proceedings of the Cambridge Philosophical Society. Vol. 137. No. 1. Cambridge University Press, 2004.

convention

The sign convention used.

Type:

string ‘Berger-Fresse’ or ‘McClure-Smith’.

default_convention = 'Berger-Fresse'

Used if convention is None during initialization.

Type:

Class attribute

__init__(data=None, torsion=None, convention=None)[source]
Parameters:
  • data (dict or None, default: None) – Dictionary representing a linear combination of basis elements. Items in the dictionary correspond to basis_element: coefficient pairs. Each basis_element must create a tuple of int and coefficient must be an int.

  • torsion (int) – The non-neg int \(n\) of the ring \(\mathbb Z/n \mathbb Z\).

Examples

>>> s = SurjectionElement()
>>> print(s)
0
>>> s = SurjectionElement({(1,2,1,3,1,3): 1})
>>> print(s)
(1,2,1,3,1,3)
property arity

Arity of self.

Defined as None if self is not homogeneous. The arity of a basis surjection element agrees with the maximum value it attains.

Returns:

The arity of self.

Return type:

int

Example

>>> SurjectionElement({(1,2,1,3,1): 1}).arity
3
property degree

Degree of self.

Defined as None if self is not homogeneous. The degree of a basis surjection agrees with the cardinality of its domain minus its arity.

Returns:

The degree of self.

Return type:

int

Example

>>> SurjectionElement({(1,2,1,3,1): 1}).arity
3
property complexity

Complexity of self.

Defined as None if self is not homogeneous. The complexity of a finite binary sequence (i.e. a sequence of two distinct values) is defined as the number of consecutive distinct elements in it. For example, (1,2,2,1) and (1,1,1,2) have complexities 2 and 1 respectively. The complexity of a basis surjection element is defined as the maximum value of the complexities of its binary subsequences. Notice that for arity 2, the complexity of an element is equal to its degree plus 1. It is proven in [McCS] that the subcomplex generated by basis surjection elements of complexity at most \(n\) define a suboperad of \(\mathcal X\) modeling an \(E_{n+1}\)-operad.

Returns:

The complexity of self.

Return type:

int

Example

>>> SurjectionElement({(1,2,1,3,1): 1}).complexity
2
property filtration

Filtration by sum of all pairwise complexities.

Returns:

The filtration level of self.

Return type:

int

Example

>>> SurjectionElement({(1,2,1,3,2): 1}).filtration
6
boundary()[source]

Boundary of self.

Up to signs, it is defined by taking the sum of all elements obtained by removing one entry at the time. Explicitly, for basis surjection elements we have

\[\partial s = \sum_{i=1}^{r+d} \pm s \circ \delta_i = \sum_{i=1}^{r+d} \pm \big(s(1),\dots,\widehat{s(i)},\dots,s(n+r)\big).\]
Returns:

The boundary of self with the corresponiding sign convention.

Return type:

comch.surjection.SurjectionElement

Example

>>> s = SurjectionElement({(3,2,1,3,1,3): 1})
>>> s.convention = 'Berger-Fresse'
>>> print(s.boundary())
(2,1,3,1,3) - (3,2,3,1,3) - (3,2,1,3,1)
>>> s.convention = 'McClure-Smith'
>>> print(s.boundary())
(3,2,3,1,3) - (2,1,3,1,3) - (3,2,1,3,1)
__rmul__(other)[source]

Left action: other * self

Left multiplication by a symmetric group element or an integer. Defined up to signs on basis elements by applying the permutation to the values of the surjection.

Parameters:

other (int or comch.symmetric.SymmetricRingElement.) – The element to left act on self with.

Returns:

The product: other * self, with the given sign convention.

Return type:

comch.surjection.SurjectionElement

Example

>>> surj = SurjectionElement({(1,2,3,1,2): 1})
>>> print(- surj)
- (1,2,3,1,2)
>>> rho = SymmetricRingElement({(2,3,1): 1})
>>> print(rho * surj)
(2,3,1,2,3)
orbit(representation='trivial')[source]

The preferred representative of the symmetric orbit of self.

The preferred representative in the orbit of basis surjections element is the one satisfying that the first occurence of each integer appear in increasing order.

The representation used can be either ‘trivial’ or ‘sign’.

Returns:

The preferred element in the symmetric orbit of self.

Return type:

comch.surjection.SurjectionElement

Example

>>> s = SurjectionElement({(1,3,2): 1})
>>> print(s.orbit(representation='trivial'))
(1,2,3)
>>> print(s.orbit(representation='sign'))
- (1,2,3)
__call__(other, coord=1)[source]

The action: self*(*other).

The action of self on the tensor factor specified by coord on an element in the tensor product of normalized chains of a standard simplex or of a standard cube.

Parameters:
Returns:

The action of self on other at coord.

Return type:

comch.simplicial.SimplicialElement or comch.cubical.CubicalElement

compose(other, position)[source]

Operadic compositions: self \(\circ_{position}\) other.

The \(i\)-th composition \(x \circ_i y\) of \(x \in \mathcal X(r)\) and \(y \in \mathcal X(s)\) is defined by the following procedure: let \(w\) be the cardinality of \(x^{-1}(i)\), for every collection of ordered indices

\[1 = j_0 \leq j_1 \leq j_2 \leq \cdots \leq j_{w-1} \leq j_w = s\]

we construct an associated splitting of \(y\)

\[(y(j_0), \dots, y(j_1));\ (y(j_1), \dots, y(j_2));\ \cdots \ ;\ (y(j_{w-1}), \dots, y(j_w)).\]

The element \(x \circ_i y \in \mathcal(r+s-1)\) is represented, up to signs, as the sum over all possible collections of order indices of the sequence obtained in the following two steps: 1) replace each occurrence of \(i\) in \(x\) by the corresponding sequence in the associated splitting having its values shifted up by \(i-1\), and 2) shift up by \(s-1\) the values of \(x\) greater than \(i\).

Parameters:
Returns:

The operadic composition of self and other.

Return type:

comch.surjection.SurjectionElement

Example

>>> x = SurjectionElement({(1,2,1,3): 1}, convention='Berger-Fresse')
>>> y = SurjectionElement({(1,2,1): 1}, convention='Berger-Fresse')
>>> print(x.compose(y, 1))
(1,3,1,2,1,4) - (1,2,3,2,1,4) - (1,2,1,3,1,4)
suspension()[source]

Image of self in the suspension of the surjection operad.

Given a basis element \(u\) in arity \(r\) and degree \(d\) the suspension is in degree \(d-r+1\) and is \(0\) if \((u(1),\dots,u(r))\) is not a permutation and \(sgn(u(1),\dots,u(r)) (u(r),\dots,u(r+d))\) otherwise.

Returns:

The image of self in the suspension of the operad.

Return type:

comch.surjection.SurjectionElement

Example

>>> x = SurjectionElement({(1,3,2,1,2):1}, convention='Berger-Fresse')
>>> print(x.suspension())
- (2,1,2)
preferred_rep()[source]

Preferred representative of self.

Removes pairs basis_element: coefficient which satisfy either of: 1) the basis element has equal consecutive values, 2) the basis element does not represent a surjection, or 3) the coefficient is 0.

Returns:

The preferred representative of self.

Return type:

comch.surjection.SurjectionElement

Example

>>> print(SurjectionElement({(1,1,2):1, (1,3):1, (1,2):0}))
0
class comch.surjection.Surjection[source]

Produces surjection elements of interest.

static may_steenrod_structure(arity, degree, torsion=None, convention=None)[source]

Representative of the requested Steenrod product.

Let \(\mathrm{C}_n\) be the cyclic group of order \(n\) thought of as the subgroup of \(\mathrm{S}_n\) generated by an element \(\rho\). We denote this inclusion by \(\iota : \mathrm C_r \to \mathrm S_r\). The elements

\[T = \rho-1 \quad \text{ and } \quad N = 1+\rho+\cdots+\rho^{r-1}\]

in \(R[C_r]\) define a minimal resolution \(W(r)\)

\[R[C_r] \stackrel{T}{\longleftarrow} R[C_r] \stackrel{N}{\longleftarrow} R[C_r] \stackrel{T}{\longleftarrow} \cdots\]

of \(R\) by a free differential graded \(R[C_r]\)-module. We denote a preferred basis element of \(W(r)_i\) by \(e_i\).

A May-Steenrod structure on an operad \(\mathcal O\) is a morphism of \(\mathrm{C}\)-modules \(\mathcal W \stackrel{\psi}{\longrightarrow} \mathcal O\) for which there exists a factorization through an \(E_\infty\)-operad

\[\mathcal W \stackrel{\iota}{\longrightarrow} \mathcal R \stackrel{\phi}{\longrightarrow} \mathcal O\]

such that \(\iota\) is a weak equivalence and \(\phi\) a morphism of operads.

This method returns the image under the May-Steenrod structure constructed in [KMM] of the preferred basis element of \(W(r)_i\).

Parameters:
  • arity (int) – The arity considered.

  • degree (int) – The degree considered.

  • torsion (int or None, default None) – The non-neg int \(n\) of the ring \(\mathbb Z/n \mathbb Z\).

  • convention (string or None, default None) – The sign convention of the surjection operad.

Returns:

The image of the basis element under the May-Steenrod structure.

Return type:

comch.surjection.SurjectionElement

References

[KMM]: Kaufmann, R. M., & Medina-Mardones, A. M. (2020). Chain level Steenrod operations. arXiv preprint arXiv:2010.02571.

static steenrod_operation(p, s, q, bockstein=False, convention='McClure-Smith')[source]

Chain level representative of \(P_s\) or \(\beta P_s\).

Let \(A\) be such that \(\mathrm{End}_A\) is equipped with a May-Steenrod structure

\[\psi : W \to \mathrm{End}_A.\]

For any prime \(p\), define the linear map \(D_d : A \otimes \mathbb F_p \to A \otimes \mathbb F_p\) by

\[\begin{split}D_d(a) = \begin{cases} \psi(e_d)(a^{\otimes p})& d \geq 0 \\ 0 & d < 0. \end{cases}\end{split}\]

For any integer \(s\), the Steenrod operations

\[P_s : H_\bullet(A; \mathbb F_2) \to H_{\bullet + s}(A; \mathbb F_2)\]

and, for \(p > 2\),

\[P_s : H_\bullet(A; \mathbb F_p) \to H_{\bullet + 2s(p-1)}(A; \mathbb F_p) \qquad \beta P_s : H_\bullet(A; \mathbb F_p) \to H_{\bullet+2s(p-1)-1}(A; \mathbb F_p)\]

are defined for a class \([a]\) of degree \(q\) respectively by

\[P_s\big([a]\big) = \big[D_{s-q}(a)\big] \qquad\]

and

\[P_s\big([a]\big) = \big[(-1)^s \nu(q) D_{(2s-q)(p-1)}(a)\big] \qquad \beta P_s\big([a]\big) = \big[(-1)^s \nu(q)D_{(2s-q)(p-1)-1}(a)\big]\]

where \(\nu(q) = (-1)^{q(q-1)m/2}(m!)^q\) and \(m = (p-1)/2\).

Parameters:
  • p (int) – The prime considered.

  • s (int) – The subscript of the Steenrod operation.

  • q (int) – The degree of the class acted on.

  • bockstein (bool, default False) – Determines the use of the Bockstein homomorphism.

  • convention (string default ‘McClure-Smith’) – The sign convention used.

Returns:

The surjection element representing the given Steenrod operation.

Return type:

comch.surjection.SurjectionElement

References

[May]: May, J. Peter. “A general algebraic approach to Steenrod operations.” The Steenrod Algebra and its Applications: a conference to celebrate NE Steenrod’s sixtieth birthday. Springer, Berlin, Heidelberg, 1970.

static steenrod_chain(p, s, q, bockstein=False, shape='simplex')[source]

Chain representative of a Steenrod operation.

Given the parameters of a Steenrod operation: prime p, subindex s, and cochain degree q, and bockstein, it returns the chain in the tensor product of a standard simplex on which the iterated tensor product of the cochain acts defining a cochain representative of its image under the operation.

Parameters:
  • p (int) – The prime considered.

  • s (int) – The subscript of the Steenrod operation.

  • q (int) – The degree of the class acted on.

  • bockstein (bool, default False) – Determines the use of the bockstein homomorphism.

  • shape (string, ‘simplex’ or ‘cube’) – Action on the standard simplex or cube

Returns:

The tensor product elment obtained by applying the representative of the specified Steenrod operation.

Return type:

comch.simplicial.SimplicialElement or comch.cubical.CubicalElement

Examples

>>> print(Surjection.steenrod_chain(2, -1, -2))
((0,2,3),(0,1,2)) + ((0,1,3),(1,2,3))
static basis(arity, degree, complexity=None)[source]

Basis of the chain complex.

Basis of \(\mathcal X\) In the given arity, degree and complexity.

Parameters:
  • arity (int) – The arity considered.

  • degree (int) – The degree considered.

  • complexity (int, default None) – The complexity considered.

Returns:

The basis for the complex of surjection in the given arity, degree and complexity.

Return type:

list of tuple of int

Examples

>>> Surjection.basis(2,1)
[(1, 2, 1), (2, 1, 2)]