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 = “Working with Differentials” section = “features” +++

Working with Differentials

The differential workflow is htpy’s core interactive feature. You can enter known differentials, mark unknowns, propagate consequences via the Leibniz rule, and run the deduction engine to automatically derive all consequences.

Three-state differential tracking

htpy tracks differentials in three states:

  • Nonzero: $d_r(x) = y$ for a specific nonzero target $y$. Displayed as a colored arrow from source to target in the chart.
  • Zero: $d_r(x) = 0$, meaning $x$ survives page $r$. Recorded internally but not drawn (the class remains on the chart).
  • Unknown: $d_r(x) = {?}$, meaning the differential is deliberately marked as unresolved. Displayed as an orange “?” marker. Unknown differentials block the deduction engine at that source/page pair, preventing it from making assumptions.

Adding a nonzero differential

  1. In the viewer, ensure you are on a Playground module (not an archive module).
  2. Click the source class to select it.
  3. In the detail panel, click “Add differential” (or use the keyboard shortcut).
  4. Click the target class. The viewer will determine the page $r$ from the bidegree shift.
  5. If the source or target has dimension $> 1$, you will be prompted to choose specific basis vectors.
  6. Choose whether to propagate via Leibniz rule: if checked, htpy will automatically compute all consequences through the product structure.

Marking $d_r = 0$

Click a class and use the “$d_r = 0$” button in the detail panel. This records that the class survives page $r$. If Leibniz propagation is enabled, htpy will propagate: $d_r(h \cdot x) = 0$ for all products $h$ where $h \cdot x$ is nonzero and survives to $E_r$.

Marking $d_r = {?}$ (unknown)

Click a class and use the “$d_r = {?}$” button. This flags the differential as deliberately unresolved. The deduction engine will not attempt to determine $d_r(x)$ at this bidegree/page until the unknown marker is removed.

This is useful when you know a differential exists but don’t yet know the exact target — it prevents the deduction engine from incorrectly concluding $d_r = 0$ via the degree argument.

Deleting a differential

Click on a differential line (or find it in the detail panel) and click “Delete”. htpy will:

  1. Remove the differential and all its Leibniz-propagated consequences.
  2. Replay all remaining user differentials from scratch to ensure consistency.

This replay-from-scratch approach guarantees that deleting one differential never leaves the spectral sequence in an inconsistent state.

Leibniz propagation

When you add a differential with Leibniz propagation enabled, htpy applies the Leibniz rule:

$$d_r(h \cdot x) = d_r(h) \cdot x + (-1)^{|h|}, h \cdot d_r(x)$$

For product generators $h$ from $E_2$ (where $d_r(h) = 0$ for structural reasons):

  • Nonzero propagation: $d_r(x) = y \implies d_r(h \cdot x) = \pm h \cdot y$
  • Zero propagation: $d_r(x) = 0 \implies d_r(h \cdot x) = 0$

The propagation uses a BFS through the product graph, discovering all transitive consequences. Propagated differentials are marked with a propagated flag and are automatically removed when the source differential is deleted.

Contradiction detection

If you enter a differential that contradicts existing data (e.g., $d_r(x) = y$ when $d_r(x) = 0$ is already established), htpy will reject the entry with an error message. The viewer also prevents entering $d_r(x)$ when $d_s(x) = {?}$ is marked for any $s < r$ (the unknown must be resolved first).

For research exploration with the deduction engine:

  1. Enter vanishing lines first. These give the deduction engine the most leverage for the degree argument.
  2. Mark known permanent cycles (or let the engine detect them automatically via the sparsity argument).
  3. Enter known differentials from the literature, with Leibniz propagation enabled.
  4. Run the deduction engine (“Deduce” button) to propagate all consequences.
  5. Review the deduction report to see what was derived and why.
  6. Iterate: enter newly discovered information and re-run.