Documentation

TauCeti.AlgebraicGeometry.Curves.DualGraph.Clutching

Clutching dual graphs #

Pointed nodal curves are glued along markings by the two clutching operations of Knudsen. In external clutching, two pointed curves with marking sets I ⊔ {a} and J ⊔ {b} are glued by identifying the points a and b, which become a new node; the result carries the markings I ⊔ J. In self-clutching, one pointed curve with marking set I ⊔ {a, b} is glued to itself by identifying a with b; the result carries the markings I.

This file describes the effect of both operations on dual graphs.

Main results #

Implementation notes #

The glued markings are singled out by the shape of the marking type, Option ι for external clutching and ι ⊕ Fin 2 for self-clutching, so that the new edge none is determined by them. Both constructions are abbreviations, so that their vertex and edge types reduce to G₁.Vertex ⊕ G₂.Vertex and Option (G₁.Edge ⊕ G₂.Edge), respectively G.Vertex and Option G.Edge, and vertices of an externally clutched graph can be written as Sum.inl v and Sum.inr v.

References #

External clutching #

@[reducible, inline]
abbrev TauCeti.DualGraph.clutch {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) :
DualGraph (ι ⊕ κ)

External clutching: the dual graph obtained by gluing a curve with dual graph G₁ to a curve with dual graph G₂ along their markings none. It is the disjoint union of G₁ and G₂ with a new edge, the edge none, joining the components carrying those two markings.

Instances For
    @[simp]
    theorem TauCeti.DualGraph.endpoint_clutch_none {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) :
    @[simp]
    theorem TauCeti.DualGraph.endpoint_clutch_some_inl {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) (e : G₁.Edge) (i : Fin 2) :
    (G₁.clutch G₂).endpoint (some (Sum.inl e)) i = Sum.inl (G₁.endpoint e i)
    @[simp]
    theorem TauCeti.DualGraph.endpoint_clutch_some_inr {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) (e : G₂.Edge) (i : Fin 2) :
    (G₁.clutch G₂).endpoint (some (Sum.inr e)) i = Sum.inr (G₂.endpoint e i)
    @[simp]
    theorem TauCeti.DualGraph.genus_clutch_inl {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) (v : G₁.Vertex) :
    (G₁.clutch G₂).genus (Sum.inl v) = G₁.genus v
    @[simp]
    theorem TauCeti.DualGraph.genus_clutch_inr {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) (v : G₂.Vertex) :
    (G₁.clutch G₂).genus (Sum.inr v) = G₂.genus v
    @[simp]
    theorem TauCeti.DualGraph.marking_clutch_inl {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) (i : ι) :
    (G₁.clutch G₂).marking (Sum.inl i) = Sum.inl (G₁.marking (some i))
    @[simp]
    theorem TauCeti.DualGraph.marking_clutch_inr {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) (j : κ) :
    (G₁.clutch G₂).marking (Sum.inr j) = Sum.inr (G₂.marking (some j))
    theorem TauCeti.DualGraph.card_edge_clutch {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) :

    External clutching adds exactly one edge, the new node.

    @[simp]
    theorem TauCeti.DualGraph.firstBetti_clutch {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) :
    (G₁.clutch G₂).firstBetti = G₁.firstBetti + G₂.firstBetti

    External clutching adds the first Betti numbers: the new edge joins two components that were not connected before, so it creates no cycle.

    @[simp]
    theorem TauCeti.DualGraph.arithmeticGenus_clutch {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) :

    External clutching adds the arithmetic genera.

    theorem TauCeti.DualGraph.valence_clutch_inl {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) (v : G₁.Vertex) :
    (G₁.clutch G₂).valence (Sum.inl v) = G₁.valence v + if G₁.marking none = v then 1 else 0

    A component of G₁ gains one branch of the new node exactly when it carries the glued marking.

    theorem TauCeti.DualGraph.valence_clutch_inr {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) (v : G₂.Vertex) :
    (G₁.clutch G₂).valence (Sum.inr v) = G₂.valence v + if G₂.marking none = v then 1 else 0

    A component of G₂ gains one branch of the new node exactly when it carries the glued marking.

    theorem TauCeti.DualGraph.numMarkings_clutch_inl {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) [Fintype ι] [Fintype κ] (v : G₁.Vertex) :
    ((G₁.clutch G₂).numMarkings (Sum.inl v) + if G₁.marking none = v then 1 else 0) = G₁.numMarkings v

    A component of G₁ loses the glued marking exactly when it carries it.

    theorem TauCeti.DualGraph.numMarkings_clutch_inr {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) [Fintype ι] [Fintype κ] (v : G₂.Vertex) :
    ((G₁.clutch G₂).numMarkings (Sum.inr v) + if G₂.marking none = v then 1 else 0) = G₂.numMarkings v

    A component of G₂ loses the glued marking exactly when it carries it.

    @[simp]
    theorem TauCeti.DualGraph.logCanonicalDegree_clutch_inl {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) [Fintype ι] [Fintype κ] (v : G₁.Vertex) :

    External clutching preserves the log-canonical degree of every component of G₁: the glued marking becomes a branch of the new node.

    @[simp]
    theorem TauCeti.DualGraph.logCanonicalDegree_clutch_inr {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) [Fintype ι] [Fintype κ] (v : G₂.Vertex) :

    External clutching preserves the log-canonical degree of every component of G₂: the glued marking becomes a branch of the new node.

    @[simp]
    theorem TauCeti.DualGraph.isStable_clutch_iff {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) [Fintype ι] [Fintype κ] :
    (G₁.clutch G₂).IsStable ↔ G₁.IsStable ∧ G₂.IsStable

    An externally clutched graph is stable exactly when both of its inputs are.

    @[simp]
    theorem TauCeti.DualGraph.isSemistable_clutch_iff {ι : Type v} {κ : Type w} (G₁ : DualGraph (Option ι)) (G₂ : DualGraph (Option κ)) [Fintype ι] [Fintype κ] :

    An externally clutched graph is semistable exactly when both of its inputs are.

    Self-clutching #

    @[reducible, inline]
    abbrev TauCeti.DualGraph.selfClutch {ι : Type v} (G : DualGraph (ι ⊕ Fin 2)) :

    Self-clutching: the dual graph obtained from a curve with dual graph G by gluing its markings Sum.inr 0 and Sum.inr 1. It is G with a new edge, the edge none, joining the components carrying those two markings; the edge is a loop when they lie on one component.

    Instances For
      @[simp]
      theorem TauCeti.DualGraph.endpoint_selfClutch_some {ι : Type v} (G : DualGraph (ι ⊕ Fin 2)) (e : G.Edge) (i : Fin 2) :
      @[simp]
      theorem TauCeti.DualGraph.genus_selfClutch {ι : Type v} (G : DualGraph (ι ⊕ Fin 2)) (v : G.Vertex) :
      @[simp]
      theorem TauCeti.DualGraph.marking_selfClutch {ι : Type v} (G : DualGraph (ι ⊕ Fin 2)) (i : ι) :

      Self-clutching adds exactly one edge, the new node.

      @[simp]

      Self-clutching raises the first Betti number by one: the new edge closes a cycle.

      @[simp]

      Self-clutching raises the arithmetic genus by one.

      theorem TauCeti.DualGraph.valence_selfClutch {ι : Type v} (G : DualGraph (ι ⊕ Fin 2)) (v : G.Vertex) :
      G.selfClutch.valence v = G.valence v + {i : Fin 2 | G.marking (Sum.inr i) = v}.card

      A component gains one branch of the new node for each glued marking it carries.

      theorem TauCeti.DualGraph.numMarkings_selfClutch {ι : Type v} (G : DualGraph (ι ⊕ Fin 2)) [Fintype ι] (v : G.Vertex) :

      A component loses each glued marking it carries.

      @[simp]

      Self-clutching preserves every log-canonical degree: the two glued markings become the two branches of the new node.

      @[simp]

      A self-clutched graph is stable exactly when its input is.

      @[simp]

      A self-clutched graph is semistable exactly when its input is.