Ear decompositions of simple graphs #
An open ear over a subgraph H : G.Subgraph of a simple graph G is a path in G whose two
distinct endpoints lie in H, whose internal vertices lie outside H, and whose edges lie outside
H (in particular, a single unused edge between two vertices already in H is an open ear). A
closed ear over H is a cycle in G meeting H solely at its base vertex; in a simple graph,
the unused-edge property follows automatically because every edge of the cycle has at least one
endpoint different from the base vertex (SimpleGraph.Ear.closed_edges_notMem_edgeSet).
An ear decomposition d : G.EarDecomposition H is data recording an initial subgraph (either a
single vertex or a cycle), a finite sequence of open or closed ears, and the prefix subgraph after
each step, ending at H. An ear decomposition is open (SimpleGraph.EarDecomposition.IsOpen)
when it starts from a cycle and every ear is open.
This file defines ears, initial subgraphs, and ear decompositions of subgraphs of a simple graph,
establishes their extensionality, prefix, and induction API, shows that the initial subgraph and the
ears partition the edges of H, and proves without finiteness hypotheses that every ear
decomposition builds connected, 2-edge-connected subgraphs (so a decomposition of ⊤ certifies
that G is connected and 2-edge-connected). Preservation of 2-vertex-connectivity by open ears
and Whitney's open ear characterization are proved in
TauCeti.Combinatorics.SimpleGraph.Connectivity.Ear.Open.
Main definitions #
SimpleGraph.EarKind: whether an ear isopenorclosed.SimpleGraph.Ear G H: an open or closed ear inGoverH : G.Subgraph.SimpleGraph.EarStart G H: witness thatHis a singleton subgraph or traced by a cycle.SimpleGraph.EarDecomposition G H: a finite ear decomposition inGwith final subgraphH.SimpleGraph.EarDecomposition.IsOpen: predicate that a decomposition starts from a cycle and adds only open ears.
Main results #
SimpleGraph.Ear.edges_notMem_edgeSet: no edge of an open or closed ear belongs toH.edgeSet.SimpleGraph.Ear.lt_adjoin: adjoining an ear strictly enlarges the subgraph.SimpleGraph.Ear.isEdgeConnected_two_adjoin: adjoining an ear to a2-edge-connected subgraph preserves2-edge-connectivity.SimpleGraph.EarDecomposition.ext: an ear decomposition is determined by its length, initial subgraph and witness, and displayed ear walks.SimpleGraph.EarDecomposition.subgraphAfter_strictMono: prefix subgraphs grow strictly.SimpleGraph.EarDecomposition.mem_edgeSet_initial_or_existsUnique_walkAt: in an ear decomposition of⊤, every edge outside the initial subgraph belongs to a unique ear.SimpleGraph.EarDecomposition.connected,SimpleGraph.EarDecomposition.isEdgeConnected_two: a simple graph admitting an ear decomposition of⊤is connected and2-edge-connected, with no finiteness assumption.
Implementation notes #
All projection and predicate bodies (Ear.kind, Ear.toWalk, Ear.toSubgraph, Ear.adjoin,
EarStart.IsCycle, EarDecomposition.initial, EarDecomposition.kindAt,
EarDecomposition.walkAt, EarDecomposition.IsOpen) remain unexposed, with characteristic
@[simp] lemmas proved via := (rfl) so downstream consumers do not rely on definitional
unfolding. Only the three length-transforming combinators EarDecomposition.copy,
EarDecomposition.snoc, and EarDecomposition.prefix carry @[expose] so dependent Fin indices
over .length compute in types.
References #
- H. Whitney, Congruent graphs and the connectivity of graphs, Amer. J. Math. 54 (1932), 150–168.
- R. Diestel, Graph Theory, 5th ed., Graduate Texts in Mathematics 173, Springer, 2017, Section 3.1.
Whether an ear is open (a path between two distinct vertices) or closed (a cycle at one base vertex).
Instances For
An ear in G over a subgraph H: either an open ear (a path with distinct endpoints in H,
internal vertices outside H, and edges outside H) or a closed ear (a cycle meeting H only at
its base vertex). Single-edge open ears are permitted.
- open {V : Type u} {G : SimpleGraph V} {H : G.Subgraph} {u v : V} (p : G.Walk u v) (hp : p.IsPath) (hu : u ∈ H.verts) (hv : v ∈ H.verts) (huv : u ≠ v) (hint : ∀ w ∈ p.support, w ≠ u → w ≠ v → w ∉ H.verts) (hedge : ∀ e ∈ p.edges, e ∉ H.edgeSet) : G.Ear H
- closed {V : Type u} {G : SimpleGraph V} {H : G.Subgraph} {u : V} (c : G.Walk u u) (hc : c.IsCycle) (hu : u ∈ H.verts) (hint : ∀ w ∈ c.support, w ≠ u → w ∉ H.verts) : G.Ear H
Instances For
Whether an ear is open or closed.
Instances For
The underlying walk of an ear, packaged with its endpoints.
Instances For
Ears over H are determined by their underlying walk; distinctness vs. equality of the walk's
endpoints distinguishes open ears from closed ears.
The subgraph traced by the vertices and edges of an ear.
Instances For
The subgraph obtained by adjoining an ear e to H.
Instances For
Transport an ear along an equality of base subgraphs without altering its walk data.
Instances For
The starting vertex of an ear lies in H.
Every ear is a trail (its edges are pairwise distinct).
Closed-ear unused-edge property. In a simple graph, a cycle meeting H only at its base
vertex uses no edge of H.
Adjoining an ear strictly enlarges H.
Adjoining any open or closed ear to a preconnected subgraph yields a connected subgraph.
Adjoining any open or closed ear to a 2-edge-connected subgraph preserves
2-edge-connectivity, with no finiteness assumption.
Initial subgraphs #
Witness that an initial subgraph H : G.Subgraph of an ear decomposition is either a single
vertex or traced by a cycle.
- vertex {V : Type u} {G : SimpleGraph V} (v : V) : G.EarStart (G.singletonSubgraph v)
- cycle {V : Type u} {G : SimpleGraph V} {u : V} (c : G.Walk u u) (hc : c.IsCycle) : G.EarStart c.toSubgraph
Instances For
Whether the initial subgraph is a cycle rather than a single vertex.
Instances For
Every valid initial subgraph is connected.
Every valid initial subgraph of an ear decomposition is 2-edge-connected.
Ear decompositions #
A finite ear decomposition in G with final subgraph H, storing the prefix subgraphs, the
initial vertex or cycle witness, and the ear added at each step.
- length : ℕ
The number of ears added after the initial subgraph.
- start : G.EarStart (self.subgraphAfter 0)
Witness that
subgraphAfter 0is a singleton subgraph or traced by a cycle. - earAt (i : Fin self.length) : G.Ear (self.subgraphAfter i.castSucc)
The ear added at step
ioversubgraphAfter i.castSucc. Each successor prefix adjoins its displayed ear.
The last prefix equals the indexed target subgraph
H.
Instances For
The initial subgraph (subgraphAfter 0) of an ear decomposition.
Instances For
The kind (open or closed) of the i-th ear.
Instances For
The underlying walk (with endpoints) of the i-th ear.
Instances For
An ear decomposition is determined by its length, initial subgraph and witness, and displayed ear walks; the intermediate prefix subgraphs and ear records are uniquely forced.
An ear decomposition is open if it starts from a cycle and every added ear is open.
Instances For
Reindex the target subgraph of an ear decomposition along H = H' without changing any data
fields.
Instances For
The zero-ear decomposition starting at a single vertex v.
Instances For
The zero-ear decomposition starting at a cycle c.
Instances For
Append one ear e : G.Ear H to the end of an ear decomposition d : G.EarDecomposition H.
Instances For
The initial segment of d consisting of its first k ears, forming an ear decomposition of
d.subgraphAfter k.
Instances For
Prefix monotonicity and induction #
Prefix subgraphs of an ear decomposition are strictly increasing.
Prefix subgraphs of an ear decomposition are monotone.
Induction along the prefix subgraphs of an ear decomposition in construction order.
Induction in construction order proving a property of the final subgraph H.
Induction along the prefix ear decompositions d.prefix k.
Edge partition and coverage #
Every edge of H belongs either to d.initial or to one of the added ears.
An ear decomposition of ⊤ partitions every edge of G outside d.initial into a unique
added ear.
Preservation of connectedness and 2-edge-connectivity #
Every prefix subgraph of an ear decomposition is connected.
The final subgraph of an ear decomposition is connected.
A simple graph with an ear decomposition of ⊤ is connected, with no finiteness assumption.
Every prefix subgraph of an ear decomposition is 2-edge-connected.
The final subgraph of an ear decomposition is 2-edge-connected.
A simple graph with an ear decomposition of ⊤ is 2-edge-connected, with no finiteness
assumption.