convergence
quiverlab.specseq.convergence ¶
ConvergenceReport + the standing self-certificate.
The load-bearing arbiter of the whole engine: on EVERY :class:SpectralSequence
construction, certify_convergence asserts
sum_{p+q=n} dim E_inf^{p,q} == dim H_n(Tot) for every total degree n
-- a rank identity that must hold by construction (a bounded filtration of a
bounded complex converges strongly, Weibel 5.5.1 / metaplan section-2 SS brief). A
mismatch can only be a page / filtration bookkeeping bug, and it raises
:class:~quiverlab.errors.QuiverlabError loudly -- never a silent wrong page. No
floats (src/ AST gate).
ConvergenceReport
dataclass
¶
ConvergenceReport(e_infinity_page: int, degenerates_at: int | None, abutment: dict)
The convergence data attached to every :class:SpectralSequence.
collapse ¶
collapse()
The sequence collapses early (degenerates at E_1 or E_2).
Source code in src/quiverlab/specseq/convergence.py
26 27 28 | |
prose ¶
prose()
A human sentence for the worked-steps report.
Source code in src/quiverlab/specseq/convergence.py
30 31 32 33 34 35 36 37 38 39 40 41 42 43 | |
certify_convergence ¶
certify_convergence(ss)
Run the standing self-certificate and return the :class:ConvergenceReport.
e_infinity_page = max(width, height) + 1 (E_r stabilizes by the p-extent, so
this bound is generous). Asserts the E_inf totals equal the total-complex
homology per degree; raises loudly on any mismatch. degenerates_at is the
least r >= 1 whose per-cell page dims already equal E_inf's (page dims
are monotone non-increasing per cell, so this is exactly the degeneration
page).
Source code in src/quiverlab/specseq/convergence.py
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | |