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

Proof of `Regular terms define regular functions`

groundedproofs/Lax709149Proofs/Results.lean · lax-709149

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

Every function defined by a regular term is regular under string representation (Theorem C.5.4, the implication from terms to regular functions): induction on the term, every atomic term being computed on representations by a rational or regular function that parses the representation with a capped bracket counter, and the combinators preserving regularity under representation (Transducers.regularTermisRegularTransducers.regularTerm_isRegular).

Proof strategy

The concept's terms are moved to the source's by toSrcTermtoSrcTerm, the elements of a type along eltEquiveltEquiv, and the semantics commute (evaltoSrcTermeval_toSrcTerm), so the transported function is defined by a source term (isRegularTermFuntoSrcisRegularTermFun_toSrc). The source theorem makes it regular under the source's representation, and isRegularUnderRepriffisRegularUnderRepr_iff brings it back: the representations agree up to the renaming of the alphabets (reprtoSrcrepr_toSrc), and a regular function conjugated by that renaming is regular, through Part C §1–3's bridge for the regular functions.

Attribution

Theorem C.5.4 of Transducers, Part C; formalised by Aristotle (Harmonic), PartC/CombStatements.leanPartC/CombStatements.lean.