@@ -11,7 +11,7 @@ public import Mathlib.Order.Zorn
1111/-!
1212# Separating prime filters and ideals
1313
14- In a bounded distributive lattice, if $F$ is a filter, $I$ is an ideal, and $F$ and $I$ are
14+ In a distributive lattice, if $F$ is a filter, $I$ is an ideal, and $F$ and $I$ are
1515disjoint, then there exists a prime ideal $J$ containing $I$ with $J$ still disjoint from $F$.
1616This theorem is a crucial ingredient to [ Stone's ] [Sto1938 ] duality for bounded distributive
1717lattices. The construction of the separator relies on Zorn's lemma.
@@ -28,31 +28,26 @@ ideal, filter, prime, distributive lattice
2828
2929public section
3030
31-
3231universe u
3332variable {α : Type *}
3433
3534open Order Ideal Set
3635
37- variable [DistribLattice α] [BoundedOrder α]
38-
39- variable {F : PFilter α} {I : Ideal α}
40-
41- namespace DistribLattice
42-
43-
44- lemma mem_ideal_sup_principal (a b : α) (J : Ideal α) : b ∈ J ⊔ principal a ↔ ∃ j ∈ J, b ≤ j ⊔ a :=
36+ lemma Lattice.mem_ideal_sup_principal [Lattice α] (a b : α) (J : Ideal α) :
37+ b ∈ J ⊔ principal a ↔ ∃ j ∈ J, b ≤ j ⊔ a :=
4538 ⟨fun ⟨j, ⟨jJ, _, ha', bja'⟩⟩ => ⟨j, jJ, le_trans bja' (sup_le_sup_left ha' j)⟩,
4639 fun ⟨j, hj, hbja⟩ => ⟨j, hj, a, le_refl a, hbja⟩⟩
4740
48- set_option linter.style.whitespace false in -- manual alignment is not recognised
49- theorem prime_ideal_of_disjoint_filter_ideal (hFI : Disjoint (F : Set α) (I : Set α)) :
41+ @ [deprecated (since := "2026-06-11" )] alias DistribLattice.mem_ideal_sup_principal :=
42+ Lattice.mem_ideal_sup_principal
43+
44+ theorem DistribLattice.prime_ideal_of_disjoint_filter_ideal [DistribLattice α]
45+ {F : PFilter α} {I : Ideal α} (hFI : Disjoint (F : Set α) (I : Set α)) :
5046 ∃ J : Ideal α, (IsPrime J) ∧ I ≤ J ∧ Disjoint (F : Set α) J := by
5147 -- Let S be the set of ideals containing I and disjoint from F.
5248 set S : Set (Set α) := { J : Set α | IsIdeal J ∧ I ≤ J ∧ Disjoint (F : Set α) J }
5349 -- Then I is in S...
54- have IinS : ↑I ∈ S := by
55- refine ⟨Order.Ideal.isIdeal I, by trivial⟩
50+ have IinS : ↑I ∈ S := ⟨Order.Ideal.isIdeal I, by trivial⟩
5651 -- ...and S contains upper bounds for any non-empty chains.
5752 have chainub : ∀ c ⊆ S, IsChain (· ⊆ ·) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub := by
5853 intro c hcS hcC hcNe
@@ -72,7 +67,7 @@ theorem prime_ideal_of_disjoint_filter_ideal (hFI : Disjoint (F : Set α) (I : S
7267 -- By construction, J contains I and is disjoint from F. It remains to prove that J is prime.
7368 refine ⟨?_, ⟨IJ, JF⟩⟩
7469 -- First note that J is proper: ⊤ ∈ F so ⊤ ∉ J because F and J are disjoint.
75- have Jpr : IsProper J := isProper_of_notMem (Set.disjoint_left.1 JF F.top_mem )
70+ have Jpr : IsProper J := isProper_of_notMem (Set.disjoint_left.1 JF F.nonempty.some_mem )
7671 -- Suppose that a₁ ∉ J, a₂ ∉ J. We need to prove that a₁ ⊔ a₂ ∉ J.
7772 rw [isPrime_iff_mem_or_mem]
7873 intro a₁ a₂
@@ -104,8 +99,8 @@ theorem prime_ideal_of_disjoint_filter_ideal (hFI : Disjoint (F : Set α) (I : S
10499 let ⟨c₁, ⟨c₁F, c₁J₁⟩⟩ := Set.not_disjoint_iff.1 J₁F
105100 let ⟨c₂, ⟨c₂F, c₂J₂⟩⟩ := Set.not_disjoint_iff.1 J₂F
106101 -- Using the definition of Jᵢ, we can pick bᵢ ∈ J such that cᵢ ≤ bᵢ ⊔ aᵢ.
107- let ⟨b₁, ⟨b₁J, cba₁⟩⟩ := (mem_ideal_sup_principal a₁ c₁ J).1 c₁J₁
108- let ⟨b₂, ⟨b₂J, cba₂⟩⟩ := (mem_ideal_sup_principal a₂ c₂ J).1 c₂J₂
102+ let ⟨b₁, ⟨b₁J, cba₁⟩⟩ := (Lattice. mem_ideal_sup_principal a₁ c₁ J).1 c₁J₁
103+ let ⟨b₂, ⟨b₂J, cba₂⟩⟩ := (Lattice. mem_ideal_sup_principal a₂ c₂ J).1 c₂J₂
109104 -- Since J is an ideal, we have b := b₁ ⊔ b₂ ∈ J.
110105 let b := b₁ ⊔ b₂
111106 have bJ : b ∈ J := sup_mem b₁J b₂J
@@ -128,5 +123,3 @@ theorem prime_ideal_of_disjoint_filter_ideal (hFI : Disjoint (F : Set α) (I : S
128123-- TODO: Define prime filters in Mathlib so that the following corollary can be stated and proved.
129124-- theorem prime_filter_of_disjoint_filter_ideal (hFI : Disjoint (F : Set α) (I : Set α)) :
130125-- ∃ G : PFilter α, (IsPrime G) ∧ F ≤ G ∧ Disjoint (G : Set α) I := by sorry
131-
132- end DistribLattice
0 commit comments