One-way-liveness proof: Syntactic #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Combinatorics/Automata/Syntactic.lean
Module and namespace names, imports, and formatting are adapted to complexitylib.
The machine definitions are shared through Models.FiniteAutomaton.Defs.
theorem
Complexity.FiniteAutomaton.matching_recognition_degree
{H A : Type}
[Fintype H]
[Fintype A]
(η : BRel H → Pairing (A ⊕ A))
(test : Pairing (A ⊕ A) → Prop)
(hη : ∀ (w : List (BRel H)), test (List.map η w).prod ↔ BRel.Live w)
(x y : H)
(hxy : x ≠ y)
:
Any matching recognition of liveness induces the full relation divisor. The recognizer predicate may in particular sandwich the fixed endmarkers and inspect the designated test ports.