Draft — mutable and not usable as a dependency; its citation marks the draft state.

Proof of `Regular languages are MSO-definable`

groundedproofs/Lax314295Proofs/Results.lean · lax-314295

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

A regular language is mso-definable (Theorem C.4.1, Büchi's theorem, the converse implication): the sentence guessing an accepting run of a dfa as a tuple of sets of positions (Transducers.regulariffmsoDefinableTransducers.regular_iff_msoDefinable, left to right).

Proof strategy

The source writes down the sentence "there are sets XqX_q, one per state, partitioning the positions, consistent with the transition function at every step and accepting at the end" (PartC/MSOBuchi.leanPartC/MSOBuchi.lean); the bridge transports MSODefinableMSODefinable along ofSrcofSrc (msoDefinableiffmsoDefinable_iff).

Attribution

Theorem C.4.1 of Transducers, Part C; formalised by Aristotle (Harmonic), PartC/MSOBuchi.leanPartC/MSOBuchi.lean, PartC/MSO.leanPartC/MSO.lean.