Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

+++ title = “Module Definition Format” section = “technical” +++

Module Definition Format

htpy accepts module definitions in JSON format. A module definition specifies a module $M$ over the Steenrod algebra $A$, which htpy then resolves to compute $\operatorname{Ext}_A(M, \mathbb{F}_p)$.

Minimal example

A module with two generators and one Steenrod square action:

{
  "type": "finite dimensional module",
  "p": 2,
  "gens": { "x0": 0, "x1": 1 },
  "actions": ["Sq1 x0 = x1"]
}

Fields

Required

FieldTypeDescription
typestringModule type (see below)
pintegerThe prime (2, 3, 5, or 7)
gensobjectGenerator names mapped to degrees

Module types

  • "finite dimensional module": Explicitly specified generators and actions. Most common.
  • "finitely presented module": Generators plus relations (quotient of a free module).

Actions format

The actions field is an array of strings, each specifying one Steenrod operation:

"Sq<i> <gen> = <linear combination>"

At $p = 2$:

  • "Sq1 x0 = x1" means $\operatorname{Sq}^1(x_0) = x_1$
  • "Sq2 x0 = x1 + x2" means $\operatorname{Sq}^2(x_0) = x_1 + x_2$
  • "Sq4 x0 = 0" means $\operatorname{Sq}^4(x_0) = 0$

At odd primes:

  • "P1 x0 = x1" means $P^1(x_0) = x_1$
  • "b x0 = x1" means $\beta(x_0) = x_1$

Actions not listed are assumed to be zero. The Steenrod algebra relations (Adem relations) are checked automatically; specifying an action that violates the Adem relations will produce an error.

The v2 archive format

For interoperability, module definitions can also use the v2 archive format with structured actions:

{
  "htpy_archive": "module_definition",
  "version": 2,
  "algebra": { "type": "adem", "p": 2 },
  "generators": [
    { "name": "x0", "degree": 0 },
    { "name": "x1", "degree": 1 }
  ],
  "actions": [
    { "op": "Sq1", "input": "x0", "output": { "x1": 1 } }
  ]
}

See The Archive Format for the complete specification.

Examples

The mod-2 Moore spectrum

$C(2) = S^0 \cup_2 e^1$: a sphere with a cell attached via the degree-2 map.

{
  "type": "finite dimensional module",
  "p": 2,
  "gens": { "i": 0, "j": 1 },
  "actions": ["Sq1 i = j"]
}

The Joker

A 5-cell complex with specific Steenrod structure:

{
  "type": "finite dimensional module",
  "p": 2,
  "gens": { "x0": 0, "x1": 1, "x2": 2, "x3": 3, "x4": 4 },
  "actions": [
    "Sq1 x0 = x1",
    "Sq2 x0 = x2",
    "Sq1 x2 = x3",
    "Sq2 x2 = x4",
    "Sq4 x0 = x4"
  ]
}

Computation range

When importing a module definition, htpy prompts for the computation range:

  • max stem ($n_{\max}$): maximum value of $t - s$
  • max filtration ($s_{\max}$): maximum homological degree

Larger ranges produce more data but take longer to compute. The resolution time scales roughly as $O(n_{\max}^2 \cdot s_{\max})$ for typical modules.