Proof of Theorem 1, first paragraph — an alternating chain between two neutral points augments the matching
ProvedBergeMatching.Core.theorem_1_only_ifLet be a finite simple graph and a matching, with neutral points (vertices met by no edge of ). Suppose is an alternating chain (a walk that uses no edge twice and whose consecutive edges alternate between edges of and edges not in ) connecting a neutral point to a neutral point . Then the symmetric difference
is a matching of with ; in particular is not a maximum matching.
This is the "only if" half of Theorem 1: an alternating chain joining two distinct neutral points is an augmenting chain.
Formalization Note is identified with the set of edges of the walk. The conclusion asserts the existence of a matching subgraph whose edge set is exactly this symmetric difference, that it has strictly more edges, and that the original matching is not maximum.
import Mathlib import Definitions.Def_BergeMatching_Core_AlternatingChain
namespace BergeMatching.Core
/-- Berge (1957), p. 843, proof of Theorem 1, first paragraph: if an alternating chain `W`
connects a neutral point `a` to a neutral point `a' ≠ a`, then `(V - W) ∪ (W - V)` is a matching
with more elements than `V`, and `V` is not maximum. -/
theorem theorem_1_only_if {V : Type} [Fintype V] [DecidableEq V] (G : SimpleGraph V)
[DecidableRel G.Adj] (M : G.Subgraph) (hM : M.IsMatching) {a a' : V} (p : G.Walk a a')
(haa' : a ≠ a') (ha : IsNeutral M a) (ha' : IsNeutral M a') (hp : IsAlternatingChain M p) :
∃ M' : G.Subgraph, M'.IsMatching ∧
M'.edgeSet = symmDiff M.edgeSet {e | e ∈ p.edges} ∧
M.edgeSet.ncard < M'.edgeSet.ncard ∧ ¬ IsMaximumMatching M := by sorry
end BergeMatching.Core
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.