Zigzag engine: cubical/string-diagram constructions in Rust. Reference for topolei.
Find a file
Maximus Gorog 02d23cf554 Implement normalisation algorithm (Construction 17)
Complete implementation of the zigzag normalisation algorithm from the
LICS 2022 paper "Zigzag normalisation for associative n-categories".

Key changes:
- diagram.rs: Add DiagramMap composition, singular_map extraction
- degeneracy.rs: Add extract_singular_map() and height checking functions
- normalise.rs: Complete Construction 17 with essential identity detection

The algorithm:
1. Recursively normalise at each regular height
2. Recursively normalise at each singular height with cospan leg composites
3. Assemble into intermediate diagram P
4. Remove trivial cospans (ONLY if identity AND not in sink image)
5. Compose degeneracies: d = dP ∘ dS

Critical: In dimension >= 4, some identity cospans are ESSENTIAL and must
be preserved if they are in the image of any sink map.

All 57 tests pass.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-07 03:24:30 -06:00
src Implement normalisation algorithm (Construction 17) 2026-04-07 03:24:30 -06:00
.gitignore Scaffold zigzag-engine library 2026-04-07 02:42:06 -06:00
Cargo.lock Scaffold zigzag-engine library 2026-04-07 02:42:06 -06:00
Cargo.toml Scaffold zigzag-engine library 2026-04-07 02:42:06 -06:00