While this submission is a draft, it cannot be used by other submissions.

Proof of `The Matching Number of a Bipartite Graph in Time O(n · |x|)`

groundedproofs/Lax117284Proofs/Bipartite/Machine.lean · lax-117284

What this proof establishes

no assumptions

Assuming the claims on the left, the claim on the right holds — checked by the archive's pipeline. Proof code is not displayed here.

Read the Lean proof on GitHub

Description

Kuhn's algorithm as a word RAM program. The program stores the input length, reads the word into an array, and runs one augmenting search per left vertex in the order of the word, each scanning the compressed sparse rows it reaches at most once and visiting each right vertex at most once, paid for by a potential linear in the word; it then counts the matched right vertices and writes the count, which is the size of Kuhn's matching of the adjacency across the split (Ram2.OuterMath.MatchInv.sizeeqkuhnRam2.OuterMath.MatchInv.size_eq_kuhn), hence the matching number of the graph (GraphBridge.kuhnmatchingNumberGraphBridge.kuhn_matchingNumber), with c=5000c = 5000.