# Reproduce Ordinary finite-chain Morse handles and the exhaustion bound

Read the complete current learner and formal argument. Every worked example and all six complete solutions are retained.

## Exact original files and useful complete alternatives

The current thirteen-file packet retains all complete mathematical proof, formula and exercise bodies, coordinates and geometry. The formal and learner provider-credit notices are revised to describe the current source qualifications accurately, and their exact current byte counts and hashes are listed below. The full thirteen-file original alternative is unchanged. The previously corrected renderer’s two label positions and block PNG/SVG remain as supplied.

- [DejaVu-font-license.txt](../reproduce/L125/DejaVu-font-license.txt) — 4816 bytes; SHA256 `D75938DEC098F06F0AC3C00853065D94F020BE1C3C62EF1DC2975BA15B4D9B0E`.
- [figures/block-and-stopping-flow.png](../reproduce/L125/figures/block-and-stopping-flow.png) — 190216 bytes; SHA256 `A19272A49207A13A57FF4A5BCFB22AC53244969DE688DA9D3E45B9F6DB9434E4`.
- [figures/block-and-stopping-flow.svg](../reproduce/L125/figures/block-and-stopping-flow.svg) — 206084 bytes; SHA256 `51E3CFC11EC996778FCA96D319BE29C00168CE7B3BE321D4D4CA8517E01DA30C`.
- [figures/cylinder-sublevels-and-open-stages.png](../reproduce/L125/figures/cylinder-sublevels-and-open-stages.png) — 174268 bytes; SHA256 `953513FE0F5F9CFE99628A9C220465DD7A04224C54CC93544625BBA82BF76139`.
- [figures/cylinder-sublevels-and-open-stages.svg](../reproduce/L125/figures/cylinder-sublevels-and-open-stages.svg) — 177823 bytes; SHA256 `4297FC96521F85D7FAA20C1A7A6338CC94841E809859B2F2B11C0EFE9112CA02`.
- [figures/geometry.json](../reproduce/L125/figures/geometry.json) — 3226 bytes; SHA256 `4AE146C6036878EC77A8E08340A7E90726CC9E2A920499C957B1525AA433F496`.
- [figures/relative-pairs-and-generators.png](../reproduce/L125/figures/relative-pairs-and-generators.png) — 124231 bytes; SHA256 `C018601A9F7FFEEA47F7867118B4F6368D853398DA2BFC97626AA691722F400A`.
- [figures/relative-pairs-and-generators.svg](../reproduce/L125/figures/relative-pairs-and-generators.svg) — 67224 bytes; SHA256 `EBB3DB839D70EAB1B87AB669528DD533FD0B00B31E7878EDDEAFF47CA7528759`.
- LICENSE.txt — 501 bytes; SHA256 `372E5C267AA321EFAEAC822369EAEC62C2801706E18478887817A2F43A4928D2`.
- [make_figures.py](../reproduce/L125/make_figures.py) — 10605 bytes; SHA256 `12AAE5E44DEAD25ED3BB9337C00C7ACDC02E736BC608D3D3E043FCB296AFF4F0`.
- [morse-finite-chain-handles-formal.md](../reproduce/L125/morse-finite-chain-handles-formal.md) — 35642 bytes; SHA256 `EBD10CB578E9E30B5A92BBA7353A9007AFA4019483C7BE259183BC5DD42EB1A6`.
- [morse-finite-chain-handles-learner.md](../reproduce/L125/morse-finite-chain-handles-learner.md) — 56934 bytes; SHA256 `FD3379CF6C8FA0E27B1A7DE0A9E421DF2D9C70AC6EE947E9DB6A64C6C89731DD`.
- [README-reproduce.md](../reproduce/L125/README-reproduce.md) — 1567 bytes; SHA256 `5EBCCC68DF2554B664A761333585E2D3117659D484EE716855DB0DA68D7E953D`.
- [original-alternative/DejaVu-font-license.txt](../reproduce/L125/original-alternative/DejaVu-font-license.txt) — 4816 bytes; SHA256 `D75938DEC098F06F0AC3C00853065D94F020BE1C3C62EF1DC2975BA15B4D9B0E`.
- [original-alternative/figures/block-and-stopping-flow.png](../reproduce/L125/original-alternative/figures/block-and-stopping-flow.png) — 180974 bytes; SHA256 `87213A2EA05239376954C5E20D4EBCD8A4B66ACA6FD9680D8426EEABD5403252`.
- [original-alternative/figures/block-and-stopping-flow.svg](../reproduce/L125/original-alternative/figures/block-and-stopping-flow.svg) — 206082 bytes; SHA256 `3F3556A3DABFAA15FED430E865AAF39E71082E1A53B258E9BE5BBDA58A9D0C47`.
- [original-alternative/figures/cylinder-sublevels-and-open-stages.png](../reproduce/L125/original-alternative/figures/cylinder-sublevels-and-open-stages.png) — 174268 bytes; SHA256 `953513FE0F5F9CFE99628A9C220465DD7A04224C54CC93544625BBA82BF76139`.
- [original-alternative/figures/cylinder-sublevels-and-open-stages.svg](../reproduce/L125/original-alternative/figures/cylinder-sublevels-and-open-stages.svg) — 177823 bytes; SHA256 `4297FC96521F85D7FAA20C1A7A6338CC94841E809859B2F2B11C0EFE9112CA02`.
- [original-alternative/figures/geometry.json](../reproduce/L125/original-alternative/figures/geometry.json) — 3226 bytes; SHA256 `4AE146C6036878EC77A8E08340A7E90726CC9E2A920499C957B1525AA433F496`.
- [original-alternative/figures/relative-pairs-and-generators.png](../reproduce/L125/original-alternative/figures/relative-pairs-and-generators.png) — 124231 bytes; SHA256 `C018601A9F7FFEEA47F7867118B4F6368D853398DA2BFC97626AA691722F400A`.
- [original-alternative/figures/relative-pairs-and-generators.svg](../reproduce/L125/original-alternative/figures/relative-pairs-and-generators.svg) — 67224 bytes; SHA256 `EBB3DB839D70EAB1B87AB669528DD533FD0B00B31E7878EDDEAFF47CA7528759`.
- original-alternative/LICENSE.txt — 501 bytes; SHA256 `372E5C267AA321EFAEAC822369EAEC62C2801706E18478887817A2F43A4928D2`.
- [original-alternative/make_figures.py](../reproduce/L125/original-alternative/make_figures.py) — 10469 bytes; SHA256 `3626B57D00C64BA11EC20A89DF4658BFEFB6A51325A9A6344F8A53E76C94BD71`.
- [original-alternative/morse-finite-chain-handles-formal.md](../reproduce/L125/original-alternative/morse-finite-chain-handles-formal.md) — 35414 bytes; SHA256 `EE24CA916B4A5E156CE31D249C53C3DE1173D5CBAE2E18CF138AE16E0F7D0BB0`.
- [original-alternative/morse-finite-chain-handles-learner.md](../reproduce/L125/original-alternative/morse-finite-chain-handles-learner.md) — 56706 bytes; SHA256 `24D3C2AA49AD69BAE5A8387B6838C04263B62096A0322265678B28FC87551DFC`.
- [original-alternative/README-reproduce.md](../reproduce/L125/original-alternative/README-reproduce.md) — 1567 bytes; SHA256 `5EBCCC68DF2554B664A761333585E2D3117659D484EE716855DB0DA68D7E953D`.

## Fresh native reproduction

Use Python, NumPy and Matplotlib in a fresh scratch directory. Keep the renderer with its supplied README and licence.

```text
python -B -X utf8 make_figures.py --output-dir fresh-figures
```

Compare every PNG, SVG and geometry.json with the exact supplied outputs. Different library or font versions can alter bytes; exact coordinates, constants, signs, identifications and proof locators remain in geometry.json and the full captions. The figures are explanatory objects, not substitutes for the complete proof.

## Credits and scope

Original TP041 and MH043 proof, diagrams and renderer: GPT-6.1 Sol (OpenAI), Ultra, October 2026, CC0-1.0. Original programme sources retain their precise Claude Opus5.5 or GPT-6.1 Sol credits and CC0 notices. Added orientation, current qualification and reader presentation: GPT-6.1 Sol (OpenAI), Ultra, October 2026, CC0-1.0. Valid human mathematical credits remain with the current sources. They do not license an external book body or establish proof closure. MathJax retains Apache-2.0; DejaVu and STIX retain their original font notices.

Geometric H is at the proper Morse, finite-chain and declared index entries. The selected Thom/tubular proofs retain their exact coefficient and manifold hypotheses. Lower analytic regularity, smooth perturbation, Sard, whole Stein/sheaf courses, rational form completeness and spanning, affine C8, full component constancy and recursive course closure are separate. L124 preserves the original conditional compact-support alternative and records the real comparison. L125 supplies the complete finite-chain handle proof.
