Contracting edges

Lax871432.Contractions · concepts/Lax871432/Contractions.lean · lax-871432

definition

Loading review…

Sign in with ORCID

Community review

Flags

Each flag is tied to a public ORCID identity and explains why this concept may be incorrect.

No flags have been submitted.

    Community review

    Flag this concept

    State precisely what appears incorrect. This explanation will be public under your ORCID name.

    No source line selected.

    Natural Language Statement

    Definition

    A graph KK is obtained from a simple graph FF by contracting edges when the vertices of KK are the classes of a partition R\mathcal{R} of V(F)V(F) into parts inducing connected subgraphs, two distinct classes being adjacent in KK exactly when FF joins a vertex of one to a vertex of the other. In the notation of the paper, KF/RK \cong F/\mathcal{R}.

    Concept map
    1 concept; 6 descendants hidden
    100%
    Proven claimOpen claimDefinitionThis conceptRelated conceptA → B: B builds on A

    In the paper

    • page 4 of this submission's paper

    Lean source view on GitHub

    1import Mathlib.Combinatorics.SimpleGraph.Connectivity.Connected
    2
    3/-!
    4---
    5title: Contracting edges
    6type: definition
    7---
    8A graph KK is *obtained from a simple graph FF by contracting edges* when the vertices of
    9KK are the classes of a partition R\mathcal{R} of V(F)V(F) into parts inducing connected
    10subgraphs, two distinct classes being adjacent in KK exactly when FF joins a vertex of one
    11to a vertex of the other. In the notation of the paper, KF/RK \cong F/\mathcal{R}.
    12
    13# Implementation notes
    14
    15The partition is presented by the map sending a vertex of FF to its class, rather than as a
    16quotient type, so that KK may be any graph isomorphic to F/RF/\mathcal{R} and no transport
    17along a quotient is needed. Surjectivity of that map is not assumed: it follows, since a
    18connected graph is nonempty.
    19
    20Contracting edges differs from taking minors, `Lax68.GraphMinors.IsMinor`, in two ways: the
    21classes must cover all of V(F)V(F), and every adjacency of FF between distinct classes must be
    22present in KK, not merely permitted.
    23-/
    24
    25namespace Lax871432.Contractions
    26
    27/-- A presentation of `K` as the graph obtained from `F` by contracting the edges inside the
    28classes of a partition of `V(F)` into connected parts. -/
    29structure Contraction {V W : Type*} (K : SimpleGraph W) (F : SimpleGraph V) where
    30 /-- The vertex of `K` a vertex of `F` is contracted to. -/
    31 proj : V → W
    32 /-- Each class induces a connected — in particular nonempty — subgraph of `F`. -/
    33 connected : ∀ w, (F.induce {v | proj v = w}).Connected
    34 /-- Distinct classes are adjacent in `K` exactly when `F` joins them. -/
    35 adj_iff : ∀ a b, K.Adj a b ↔ a ≠ b ∧ ∃ x y, F.Adj x y ∧ proj x = a ∧ proj y = b
    36
    37/-- `K` is *obtained from `F` by contracting edges*. -/
    38def IsContraction {V W : Type*} (K : SimpleGraph W) (F : SimpleGraph V) : Prop :=
    39 Nonempty (Contraction K F)
    40
    41end Lax871432.Contractions
    42

    Implementation notes

    The partition is presented by the map sending a vertex of FF to its class, rather than as a quotient type, so that KK may be any graph isomorphic to F/RF/\mathcal{R} and no transport along a quotient is needed. Surjectivity of that map is not assumed: it follows, since a connected graph is nonempty.

    Contracting edges differs from taking minors, Lax68.GraphMinors.IsMinorLax68.GraphMinors.IsMinor, in two ways: the classes must cover all of V(F)V(F), and every adjacency of FF between distinct classes must be present in KK, not merely permitted.

    Discussion

    Ask a question or add context. Endorsements and structured flags are kept in the review panel above.

    Loading discussion…