Theorem 1 — a matching is maximum iff no alternating chain connects two neutral points
ProvedBergeMatching.Core.theorem_1Let be a finite simple graph and a matching. Call the edges of strong and the other edges weak; a vertex met by no strong edge is neutral, and an alternating chain is a walk that does not use the same edge twice and in which, of any two consecutive edges, one is strong and the other weak. Then
Here "maximum" means that no matching of has more edges than .
This is Berge's characterization of maximum matchings by augmenting chains. It turns the global optimality of a matching into a local, checkable condition, and it is the basis of the augmenting-path algorithms for maximum matching in general graphs, notably Edmonds' blossom algorithm.
Formalization Note The graph is a finite Mathlib SimpleGraph, the matching is a subgraph with IsMatching, and its size is the number of its edges. Alternating chains are trails (no repeated edge; vertices may repeat), and alternation is required of consecutive edges only. The endpoints are required to be distinct, as in the paper's proof ("a neutral point different from "); otherwise the one-vertex chain at any neutral point would count. No connectedness or nonemptiness hypothesis is assumed.
import Mathlib import Definitions.Def_BergeMatching_Core_AlternatingChain
namespace BergeMatching.Core
/-- Berge (1957), p. 843, Theorem 1: a matching is maximum if and only if there does not exist
an alternating chain connecting a neutral point to another neutral point. -/
theorem theorem_1 {V : Type} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj]
(M : G.Subgraph) (hM : M.IsMatching) :
IsMaximumMatching M ↔
¬ ∃ (a a' : V) (p : G.Walk a a'),
a ≠ a' ∧ IsNeutral M a ∧ IsNeutral M a' ∧ IsAlternatingChain M p := by sorry
end BergeMatching.Core
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.