|
| 1 | +/- |
| 2 | +Copyright (c) 2026 Joël Riou. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Joël Riou |
| 5 | +-/ |
| 6 | +module |
| 7 | + |
| 8 | +public import Mathlib.Algebra.Homology.ComplexShape |
| 9 | + |
| 10 | +/-! |
| 11 | +# Complex shapes for pages of spectral sequences |
| 12 | +
|
| 13 | +In this file, we define complex shapes which correspond |
| 14 | +to pages of spectral sequences: |
| 15 | +* `ComplexShape.spectralSequenceNat`: for any `u : ℤ × ℤ`, this |
| 16 | +is the complex shape on `ℕ × ℕ` corresponding to differentials |
| 17 | +of `ComplexShape.up' u : ComplexShape (ℤ × ℤ)` with source |
| 18 | +and target in `ℕ × ℕ`. (With `u := (r, 1 - r)`, this will |
| 19 | +apply to the `r`th-page of first quadrant `E₂` cohomological |
| 20 | +spectral sequence). |
| 21 | +* `ComplexShape.spectralSequenceFin`: for any `u : ℤ × ℤ` and `l : ℕ`, |
| 22 | +this is a similar definition as `ComplexShape.spectralSequenceNat` |
| 23 | +but for `ℤ × Fin l` (identified as a subset of `ℤ × ℤ`). (This could |
| 24 | +be used for spectral sequences associated to a *finite* filtration.) |
| 25 | +
|
| 26 | +-/ |
| 27 | + |
| 28 | +@[expose] public section |
| 29 | + |
| 30 | +namespace ComplexShape |
| 31 | + |
| 32 | +/-- For `u : ℤ × ℤ`, this is the complex shape on `ℕ × ℕ`, which |
| 33 | +connects `a` to `b` when the equality `a + u = b` holds in `ℤ × ℤ`. -/ |
| 34 | +def spectralSequenceNat (u : ℤ × ℤ) : ComplexShape (ℕ × ℕ) where |
| 35 | + Rel a b := a.1 + u.1 = b.1 ∧ a.2 + u.2 = b.2 |
| 36 | + next_eq _ _ := by ext <;> lia |
| 37 | + prev_eq _ _ := by ext <;> lia |
| 38 | + |
| 39 | +@[simp] |
| 40 | +lemma spectralSequenceNat_rel_iff (u : ℤ × ℤ) (a b : ℕ × ℕ) : |
| 41 | + (spectralSequenceNat u).Rel a b ↔ a.1 + u.1 = b.1 ∧ a.2 + u.2 = b.2 := Iff.rfl |
| 42 | + |
| 43 | +/-- For `l : ℕ` and `u : ℤ × ℤ`, this is the complex shape on `ℤ × Fin l`, which |
| 44 | +connects `a` to `b` when the equality `a + u = b` holds in `ℤ × ℕ`. -/ |
| 45 | +def spectralSequenceFin (l : ℕ) (u : ℤ × ℤ) : ComplexShape (ℤ × Fin l) where |
| 46 | + Rel a b := a.1 + u.1 = b.1 ∧ a.2.1 + u.2 = b.2.1 |
| 47 | + next_eq _ _ := by ext <;> lia |
| 48 | + prev_eq _ _ := by ext <;> lia |
| 49 | + |
| 50 | +@[simp] |
| 51 | +lemma spectralSequenceFin_rel_iff {l : ℕ} (u : ℤ × ℤ) (a b : ℤ × Fin l) : |
| 52 | + (spectralSequenceFin l u).Rel a b ↔ a.1 + u.1 = b.1 ∧ a.2 + u.2 = b.2 := Iff.rfl |
| 53 | + |
| 54 | +end ComplexShape |
0 commit comments