Skip to content

feat: framed quiver moduli spaces, local structure, Proposition 6 fibres#43

Open
pbelmans wants to merge 1 commit into
bocklandtfrom
local-framed-quiver
Open

feat: framed quiver moduli spaces, local structure, Proposition 6 fibres#43
pbelmans wants to merge 1 commit into
bocklandtfrom
local-framed-quiver

Conversation

@pbelmans

Copy link
Copy Markdown
Member

Stacked on top of #33 (bocklandt). Adds framed quiver moduli spaces and the fibres of the
framed projection (Proposition 6 of arXiv:2607.12895,
https://arxiv.org/abs/2607.12895), together with the etale-local structure of Luna strata
(Proposition 5), and makes local_quiver_setting public (closes #41).

Projection-to-the-wall fibres (Proposition 8) are intentionally left to #33, which already
implements them functionally (fibre_dimension, is_flat, is_semismall).

What is added

Quiver-level framing (parity with the Python/Sage QuiverTools):

  • framed_quiver(Q, n): prepends a framing vertex with n[i] arrows i0 -> i.
  • coframed_quiver(Q, n): appends a coframing vertex with n[i] arrows i -> i0.

A framed quiver moduli space, encoded as a new type FramedQuiverModuliSpace storing the
base (Q, d, theta) and the framing datum n:

  • base(X): the base moduli space M^theta(Q, d), the codomain of the projection p.
  • total_space(X): X itself as an ordinary QuiverModuliSpace on the framed quiver.
  • framing_vector(X): the framing datum n.
  • fibre(X, tau): Proposition 6. The fibre of p over the Luna stratum S_tau, as a
    NilpotentLocus inside a framed moduli of the local quiver, with local framing datum
    n_tau = sum_k (n . d_k) i_k (using the summands key that feat: Bocklandt reduction and smoothness of quiver moduli #33 adds to
    local_quiver_setting).

NilpotentLocus(ambient) marks the nilpotent sublocus of a moduli space; ambient(N)
recovers the ambient. local_structure(M, tau) returns the etale-local model
M^0(Q_tau, d_tau) of the singularity along S_tau (Proposition 5). local_quiver_setting
is now exported (closes #41).

API note (deliberate deviation)

FramedQuiverModuliSpace and NilpotentLocus introduce an object-oriented flavour that
deviates from the current function-based API (e.g. local_quiver_setting returns a Dict).
Consequently fibre returns an object rather than a data dictionary. This was a deliberate
choice: a framed quiver moduli space carries data (base plus framing) that a plain
QuiverModuliSpace on the framed quiver would discard, and Proposition 6 states the fibre as
itself a framed moduli space.

Nilpotency caveat

The fibre is the nilpotent locus inside total_space(ambient(fibre(X, tau))); that
nilpotency is recorded, not computed. (#33's dimension_nullcone / nullcone_motive are the
natural way to compute it, which a follow-up can wire into NilpotentLocus.)

Testing

  • Reproduces the QM_1 example of arXiv:2607.12895: the framed affine-D4 quiver is a
    fourfold, and its five fibre types (Lemmas 18-22) have the local dimension vectors and
    local framing data stated in the paper.
  • Quiver-level framing/coframing adjacency, the accessors, local_structure, and the public
    local_quiver_setting.
  • Full test suite (including feat: Bocklandt reduction and smoothness of quiver moduli #33's testsets and the doctests) passes.

@pbelmans
pbelmans force-pushed the local-framed-quiver branch from 278a6ba to be214c8 Compare July 15, 2026 13:52
@pbelmans pbelmans changed the title Framed quiver moduli spaces, local structure, Proposition 6 fibres feat: framed quiver moduli spaces, local structure, Proposition 6 fibres Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant