FormalConjectures/Wikipedia/CernyConjecture.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1
2 declarations, 2 contain sorry, 0 declared as axioms
Černý Conjecture
A synchronizing word (also called a reset word) for a deterministic finite automaton (DFA) $M = (Q, \Sigma, \delta)$ is a word $w \in \Sigma^\*$ such that reading $w$ from any state always leads to the same single state — formally, $\exists p \in Q, \forall q \in Q, \delta^\*(q, w) = p$.
A DFA is called synchronizing if it admits at least one synchronizing word.
The Černý conjecture asserts that every synchronizing DFA with $n$ states has a synchronizing word of length at most $(n - 1)^2$. This bound is sharp: the family of Černý automata $C_n$ witnesses it, requiring exactly $(n - 1)^2$ steps.
Status: Open. The best known upper bound is $\left(\frac{7}{48} + \frac{2 \cdot 15625}{1597536}\right) n^3 + o(n^3) \approx 0.1654\,n^3$ (Shitov, 2019). The bound $(n - 1)^2$ has been verified for small $n$ and for special classes of automata (e.g., Eulerian, aperiodic, cyclic automata).
We use Mathlib's DFA α σ (from Mathlib.Computability.DFA), together with the auxiliary
DFA.IsSynchronizingWord and DFA.IsSynchronizing predicates defined in
FormalConjecturesForMathlib.Computability.DFA.
References:
- Wikipedia: Synchronizing word
- J. Černý, Poznámka k homogénnym experimentom s konečnými automatmi, Matematicko-fyzikálny časopis, Vol. 14 (1964), No. 3, 208--216.
- Y. Shitov, An improvement to a recent upper bound for synchronizing words of finite automata, J. Autom. Lang. Comb. Vol. 24 (2019), 367--373.
Imports (1)
- theorem
CernyConjecture.cerny_conjectureČerný Conjecture: Every synchronizing DFA with $n$ states admits a synchronizing word of length at most $(n - 1)^2$ sorry line 60 sourceSource documentation
Černý Conjecture: Every synchronizing DFA with $n$ states admits a synchronizing word of length at most $(n - 1)^2$.
depends on sorry what this means
Statement uses:
Iff,True,Fintype,DFA, DFA.IsSynchronizing,Exists,List,And, DFA.IsSynchronizingWord,LE.le,Nat,List.length,HPow.hPow,HSub.hSub,Fintype.card,OfNat.ofNatProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous16 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem cerny_conjecture : answer(sorry) ↔ ∀ {α : Type*} {σ : Type*} [Fintype σ] (M : DFA α σ) (hM : M.IsSynchronizing) , ∃ w : List α, M.IsSynchronizingWord w ∧ w.length ≤ (Fintype.card σ - 1)^2 := by … - theorem
CernyConjecture.shitov_upper_boundDocumented declaration: shitov_upper_bound sorry line 71 sourceSource documentation
Shitov's bound (2019): Every synchronizing DFA with $n$ states admits a synchronizing word of length at most $\left(\frac{7}{48} + \frac{2 \cdot 15625}{1597536}\right) n^3 + o(n^3)$, where the $o(n^3)$ term is uniform over all alphabets. This is the best known upper bound towards the Černý conjecture.
depends on sorry what this means
Statement uses:
Exists,Real,And,Asymptotics.IsLittleO,Filter.atTop,HPow.hPow,Nat,OfNat.ofNat,Fintype,DFA, DFA.IsSynchronizing,List, DFA.IsSynchronizingWord,LE.le,List.length,HAdd.hAdd,HMul.hMul,HDiv.hDiv,Fintype.cardProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous40 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem shitov_upper_bound : ∃ f : ℝ → ℝ, f =o[atTop] (fun n : ℝ => n ^ 3) ∧ ∀ {α : Type*} {σ : Type*} [Fintype σ] (M : DFA α σ) (hM : M.IsSynchronizing) , ∃ w : List α, M.IsSynchronizingWord w ∧ (w.length : ℝ) ≤ (7 / 48 + 2 * 15625 / 1597536) * (Fintype.card σ : ℝ) ^ 3 + f (Fintype.card σ : ℝ) := by …