Documentation

TauCeti.Combinatorics.Young.Corner

Corners of a Young diagram #

A corner of a Young diagram μ is a cell of μ with neither the cell to its right nor the cell below it in μ. Equivalently, the corners are the maximal cells of μ (YoungDiagram.IsCorner.eq_of_le): they are exactly the cells c for which removing c alone leaves a set of cells that is still a Young diagram. So they index the ways of building μ one cell at a time, and hence the recursions that count standard Young tableaux. The corners are also exactly the cells of hook length 1, which is YoungDiagram.isCorner_iff_hookLength_eq_one in TauCeti.Combinatorics.Young.HookLength.Basic, downstream of this file.

Deletion is YoungDiagram.erase. It is defined without any hypothesis on the cell — it removes the whole principal upper set of c, that is c together with every cell weakly below and to the right of it — so that it can be summed over the corners of μ with no dependent index. At a corner, and only at a cell of μ that is a corner, nothing but c itself is removed (YoungDiagram.IsCorner.cells_erase), and at a cell outside μ nothing is removed at all.

Main definitions #

Main results #

References #

Corners #

A corner of a Young diagram: a cell of μ with neither the cell to its right nor the cell below it in μ. These are exactly the maximal cells of μ (YoungDiagram.IsCorner.eq_of_le), equivalently the cells whose removal on its own leaves a set of cells that is still a Young diagram.

Equations
Instances For
    theorem YoungDiagram.isCorner_def (μ : YoungDiagram) (c : ℕ × ℕ) :
    μ.IsCorner c ↔ c ∈ μ ∧ (c.1, c.2 + 1) ∉ μ ∧ (c.1 + 1, c.2) ∉ μ

    The defining conjunction of YoungDiagram.IsCorner, for introducing and eliminating the predicate.

    @[instance_reducible]
    Equations
    theorem YoungDiagram.IsCorner.mem {μ : YoungDiagram} {c : ℕ × ℕ} (h : μ.IsCorner c) :
    c ∈ μ
    theorem YoungDiagram.IsCorner.right_notMem {μ : YoungDiagram} {c : ℕ × ℕ} (h : μ.IsCorner c) :
    (c.1, c.2 + 1) ∉ μ
    theorem YoungDiagram.IsCorner.below_notMem {μ : YoungDiagram} {c : ℕ × ℕ} (h : μ.IsCorner c) :
    (c.1 + 1, c.2) ∉ μ
    theorem YoungDiagram.IsCorner.eq_of_le {μ : YoungDiagram} {c d : ℕ × ℕ} (h : μ.IsCorner c) (hd : d ∈ μ) (hcd : c ≤ d) :
    d = c

    A corner is a maximal cell: the only cell of μ weakly below and to the right of a corner is the corner itself.

    theorem YoungDiagram.IsCorner.le_iff {μ : YoungDiagram} {c d : ℕ × ℕ} (h : μ.IsCorner c) (hd : d ∈ μ) :
    c ≤ d ↔ d = c

    The corners of a Young diagram, as a finite set of cells.

    Equations
    Instances For
      @[simp]
      theorem YoungDiagram.exists_isCorner {μ : YoungDiagram} (hμ : 0 < μ.card) :
      ∃ (c : ℕ × ℕ), μ.IsCorner c

      A nonempty Young diagram has a corner: a cell maximizing i + j has neither the cell to its right nor the cell below it in the diagram.

      Deleting a corner #

      The Young diagram obtained from μ by deleting the cell c together with every cell weakly below and to the right of it.

      The definition is total, so that it can be summed over the corners of μ without a dependent index. It is Finset.erase on cells exactly at a corner (YoungDiagram.IsCorner.cells_erase), and it leaves μ unchanged at a cell outside μ (YoungDiagram.erase_eq_self_of_notMem); at a cell of μ that is not a corner it deletes the entire principal upper set of c in μ, which is the price of totality.

      Equations
      Instances For
        @[simp]
        theorem YoungDiagram.mem_erase {μ : YoungDiagram} {c d : ℕ × ℕ} :
        d ∈ μ.erase c ↔ d ∈ μ ∧ ¬c ≤ d
        theorem YoungDiagram.mem_of_mem_erase {μ : YoungDiagram} {c d : ℕ × ℕ} (h : d ∈ μ.erase c) :
        d ∈ μ
        @[simp]
        theorem YoungDiagram.erase_eq_self_of_notMem {μ : YoungDiagram} {c : ℕ × ℕ} (h : c ∉ μ) :
        μ.erase c = μ
        theorem YoungDiagram.IsCorner.mem_erase_iff {μ : YoungDiagram} {c d : ℕ × ℕ} (h : μ.IsCorner c) :
        d ∈ μ.erase c ↔ d ∈ μ ∧ d ≠ c
        @[simp]
        theorem YoungDiagram.IsCorner.cells_erase {μ : YoungDiagram} {c : ℕ × ℕ} (h : μ.IsCorner c) :
        (μ.erase c).cells = μ.cells.erase c
        theorem YoungDiagram.IsCorner.notMem_erase {μ : YoungDiagram} {c : ℕ × ℕ} (h : μ.IsCorner c) :
        c ∉ μ.erase c
        @[simp]
        theorem YoungDiagram.IsCorner.card_erase {μ : YoungDiagram} {c : ℕ × ℕ} (h : μ.IsCorner c) :
        (μ.erase c).card + 1 = μ.card

        Erasing a corner drops the number of cells by exactly one.

        Rows and columns after erasure #

        @[simp]
        theorem YoungDiagram.IsCorner.row_erase {μ : YoungDiagram} {c : ℕ × ℕ} {i : ℕ} (h : μ.IsCorner c) :
        (μ.erase c).row i = (μ.row i).erase c

        Erasing a corner erases that cell from every row finset. Only its own row contains it.

        @[simp]
        theorem YoungDiagram.IsCorner.col_erase {μ : YoungDiagram} {c : ℕ × ℕ} {j : ℕ} (h : μ.IsCorner c) :
        (μ.erase c).col j = (μ.col j).erase c

        Erasing a corner erases that cell from every column finset. Only its own column contains it.

        @[simp]
        theorem YoungDiagram.IsCorner.rowLen_erase {μ : YoungDiagram} {c : ℕ × ℕ} {i : ℕ} (h : μ.IsCorner c) :
        (μ.erase c).rowLen i = if c.1 = i then μ.rowLen i - 1 else μ.rowLen i

        Erasing a corner shortens its row by one and leaves every other row unchanged.

        @[simp]
        theorem YoungDiagram.IsCorner.colLen_erase {μ : YoungDiagram} {c : ℕ × ℕ} {j : ℕ} (h : μ.IsCorner c) :
        (μ.erase c).colLen j = if c.2 = j then μ.colLen j - 1 else μ.colLen j

        Erasing a corner shortens its column by one and leaves every other column unchanged.

        theorem YoungDiagram.IsCorner.rowLen_eq_snd_add_one {μ : YoungDiagram} {c : ℕ × ℕ} (h : μ.IsCorner c) :
        μ.rowLen c.1 = c.2 + 1

        A corner is the final cell of its row.

        theorem YoungDiagram.IsCorner.colLen_eq_fst_add_one {μ : YoungDiagram} {c : ℕ × ℕ} (h : μ.IsCorner c) :
        μ.colLen c.2 = c.1 + 1

        A corner is the final cell of its column.

        theorem YoungDiagram.IsCorner.eq_of_fst_eq {μ : YoungDiagram} {c d : ℕ × ℕ} (hc : μ.IsCorner c) (hd : μ.IsCorner d) (h : c.1 = d.1) :
        c = d

        A corner is the final cell of its row, so it is determined by the row it lies in: the corners of a diagram sit in distinct rows.

        The row of a corner is one of the rows of the diagram.

        Transposition #