Zigzag engine (6802 lines, 184 tests):
- Construction 17 normalisation: working through dimension 3+
- Import from homotopy-rs JSON: working (scalar, two_scalars, half_braid)
- Piece extraction via Embedding/restrict_diagram: working
- Type checking pipeline: working (Eckmann-Hilton half_braid passes)
- Essential identity detection: validated with full 2-diagram test
Bugs found and fixed:
- assemble_factorisations losing cospan legs during reassembly
- RewriteN::slice() using source offsets instead of target indices
- singular_preimage() not handling passthrough heights
- restrict_rewrite() not accounting for accumulated cone offsets
- Embedding::preimage() using regular_preimage for Singular case
Added vis-engine-spec.md: visualization engine specification
- 6-layer architecture from math primitives to scene graph
- SVG renderer for 2D, WebGL2 for 3D, custom hit testing
- Spring constraint integration point for semiotic rendering
- No external dependencies - game engine approach
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>
Initial structure implementing the zigzag construction for associative
n-categories (LICS 2022 paper). Includes:
- monotone.rs: MonotoneMap with Wraith's R equivalence (complete)
- zigzag.rs: Zigzag<T>, ZigzagMap<S> with composition
- diagram.rs: Diagram, DiagramN, Cospan, Rewrite, Cone types
- signature.rs: Generator, Signature (complete)
- degeneracy.rs: Degeneracy detection stubs
- normalise.rs: Construction 17 algorithm structure
- typecheck.rs: Type checking against signatures
- explosion.rs: k-points and Poset for layout
- layout.rs: SpringConstraint API surface
All 33 unit tests pass.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>