Skip to content

KT-2 extension: wire Jones + Conway + HOMFLY into quandle_descriptor #32

Description

@hyperpolymath

Source: PROOF-NARRATIVE.md §3 KT-2 (Alexander wired in PR #30), KT-7 (HOMFLY).

Context

PR #30 wired KnotTheory.alexander_polynomial into quandle_descriptor. The audit found three more polynomial invariants already in KnotTheory.jl:

Polynomial Signature LoC location
jones_polynomial(pd; wr=0) -> Dict{Int, Int} src/KnotTheory.jl:1557
conway_polynomial(pd) -> Dict{Int, Int} (likely) src/KnotTheory.jl:1445
homfly_polynomial(pd) -> Dict{Tuple{Int,Int}, Int} src/KnotTheory.jl:1683

Why valuable

  • Jones subsumes Alexander on many discrimination questions. Cheap to compute.
  • Conway generalises Alexander; substitution Δ(t) = ∇(t^{1/2} - t^{-1/2}).
  • HOMFLY subsumes both Alexander and Jones (P(1, z) ~ Δ(z), P(t, t^{1/2}-t^{-1/2}) ~ V(t)). Strongest of the four. Has a hard 15-crossing limit.

A descriptor with all four polynomials is dramatically more discriminating than colouring counts + Alexander alone.

Acceptance criteria

  • Wire jones_polynomial(pd) into quandle_descriptor. Serialise via existing _serialise_int_poly (same Laurent shape as Alexander).
  • Wire conway_polynomial(pd) into quandle_descriptor. Same serialisation.
  • Wire homfly_polynomial(pd) into quandle_descriptor. Add a new _serialise_int_poly_2var(poly::Dict{Tuple{Int,Int}, Int}) -> String helper using the form "a_exp,z_exp:coeff;a_exp,z_exp:coeff;..." (or mirror Skein.jl's format if it has one).
  • HOMFLY must guard n > MAX_CROSSINGS_FOR_HOMFLY (15) — return "deferred:too_many_crossings" rather than throw.
  • Extend quandle_key with the three new columns.
  • Property tests (mirror the Alexander tests added in PR feat(invariants): KT-2 Alexander polynomial + KT-11 image-size histogram #30):
    • Populated + non-trivial for the 3 test knots.
    • Pairwise distinguishability.
    • Determinism (same input → same output).

Effort

~4 hours. Each polynomial is a one-line wiring like Alexander. HOMFLY needs a different serialiser (tuple-keyed) but the structure is fixed.

Risk

  • HOMFLY is exponential. Above 15 crossings the guard kicks in — defer rather than fail. This means the descriptor field can be "deferred:..." for knots above the bound.
  • Larger quandle_key strings may break downstream consumers parsing on :. Audit server/serve.jl for key parsers before extending.

Cross-references

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions