theorem ext {P : Type u} [Preorder P] {p : P} {S T : Sieve p} (h : S.carrier = T.carrier) : S = T := by
cases SmkP : Type u
p : P
bounded✝ : ∀ {q : P}, q ∈ carrier✝ → p ≤ q upward_closed✝ : ∀ {q r : P}, r ∈ carrier✝ → r ≤ q → q ∈ carrier✝ ; cases Tmk.mkP : Type u
p : P
bounded✝¹ : ∀ {q : P}, q ∈ carrier✝ → p ≤ q upward_closed✝¹ : ∀ {q r : P}, r ∈ carrier✝ → r ≤ q → q ∈ carrier✝ bounded✝ : ∀ {q : P}, q ∈ carrier✝ → p ≤ q upward_closed✝ : ∀ {q r : P}, r ∈ carrier✝ → r ≤ q → q ∈ carrier✝ ; simp at hmk.mkP : Type u
p : P
bounded✝¹ : ∀ {q : P}, q ∈ carrier✝ → p ≤ q upward_closed✝¹ : ∀ {q r : P}, r ∈ carrier✝ → r ≤ q → q ∈ carrier✝ bounded✝ : ∀ {q : P}, q ∈ carrier✝ → p ≤ q upward_closed✝ : ∀ {q r : P}, r ∈ carrier✝ → r ≤ q → q ∈ carrier✝ ; subst hmk.mkP : Type u
p : P
bounded✝¹ : ∀ {q : P}, q ∈ carrier✝ → p ≤ q upward_closed✝¹ : ∀ {q r : P}, r ∈ carrier✝ → r ≤ q → q ∈ carrier✝ bounded✝ : ∀ {q : P}, q ∈ carrier✝ → p ≤ q upward_closed✝ : ∀ {q r : P}, r ∈ carrier✝ → r ≤ q → q ∈ carrier✝ ; rfl
def maximal_sieve [Preorder.{u} P] (p : P) : Sieve p := by
refine {carrier := ?_, bounded := ?_, upward_closed := ?_}refine_2⊢ ∀ {
q :
P},
q ∈ ?refine_1 →
p ≤ q refine_3⊢ ∀ {
q r :
P},
r ∈ ?refine_1 →
r ≤ q →
q ∈ ?refine_1
· exact {q | p ≤ q}
·refine_2⊢ ∀ {
q :
P},
q ∈ ?refine_1 →
p ≤ q intro q h; exact h
·refine_3⊢ ∀ {
q r :
P},
r ∈ ?refine_1 →
r ≤ q →
q ∈ ?refine_1
intro q rrefine_3P : Type u
p : P
q : P
r : P
hgrrefine_3P : Type u
p : P
q : P
r : P
hqrrefine_3P : Type u
p : P
q : P
r : P
exact le_trans hgr hqr
theorem pullback_maximal (W : Type u) [Preorder W] (c : Coverage W)
(w v : W) (w_le_v : w ≤ v) :
(pullback w_le_v (maximal_sieve w)).carrier = (maximal_sieve v).carrier := by
simp [pullback, maximal_sieve]
ext shW : Type u
w : W
v : W
s : W
constructorh.mpW : Type u
w : W
v : W
s : W
h.mprW : Type u
w : W
v : W
s : W
·h.mpW : Type u
w : W
v : W
s : W
intro s_in_pullbackh.mpW : Type u
w : W
v : W
s : W
s_in_pullback : s ∈ {r | w ≤ r ∧ v ≤ r}
simp at s_in_pullbackh.mpW : Type u
w : W
v : W
s : W
s_in_pullback : w ≤ s ∧ v ≤ s
simph.mpW : Type u
w : W
v : W
s : W
s_in_pullback : w ≤ s ∧ v ≤ s
apply s_in_pullback.2
·h.mprW : Type u
w : W
v : W
s : W
intro s_in_maximalh.mprW : Type u
w : W
v : W
s : W
s_in_maximal : s ∈ {q | v ≤ q}
simph.mprW : Type u
w : W
v : W
s : W
s_in_maximal : s ∈ {q | v ≤ q}
simp at s_in_maximalh.mprW : Type u
w : W
v : W
s : W
constructorh.mpr.leftW : Type u
w : W
v : W
s : W
h.mpr.rightW : Type u
w : W
v : W
s : W
·h.mpr.leftW : Type u
w : W
v : W
s : W
apply le_transh.mpr.left.aW : Type u
w : W
v : W
s : W
h.mpr.left.aW : Type u
w : W
v : W
s : W
h.mpr.left.bW : Type u
w : W
v : W
s : W
⊢ W
·h.mpr.left.aW : Type u
w : W
v : W
s : W
exact w_le_v
·h.mpr.left.aW : Type u
w : W
v : W
s : W
assumption
·h.mpr.rightW : Type u
w : W
v : W
s : W
assumption
def maximalSieveCoverage (W : Type u) [Preorder W] : Coverage W where
covers w S := S.carrier = (maximal_sieve w).carrier
maximal _w := rfl
transitive := by
intro p UP : Type u
W : Type u
p : W
VP : Type u
W : Type u
p : W
hUP : Type u
W : Type u
p : W
hVP : Type u
W : Type u
p : W
have p_in_U : p ∈ U.carrier := by rw [hU]P : Type u
W : Type u
p : W
; exact le_refl p
have pullback_maximal := hV ⟨p, p_in_U⟩P : Type u
W : Type u
p : W
ext shP : Type u
W : Type u
p : W
s : W
simp only [maximal_sieve, Set.mem_setOf_eq]hP : Type u
W : Type u
p : W
s : W
constructorh.mpP : Type u
W : Type u
p : W
s : W
h.mprP : Type u
W : Type u
p : W
s : W
·h.mpP : Type u
W : Type u
p : W
s : W
intro hrh.mpP : Type u
W : Type u
p : W
s : W
; exact V.bounded hr
·h.mprP : Type u
W : Type u
p : W
s : W
intro hrh.mprP : Type u
W : Type u
p : W
s : W
have hmem : s ∈ (pullback (U.bounded p_in_U) V).carrier := by
rw [pullback_maximal]P : Type u
W : Type u
p : W
s : W
; assumption
simp only [pullback, Set.mem_setOf_eq] at hmemh.mprP : Type u
W : Type u
p : W
s : W
exact hmem.1
stability := by
intro p qP : Type u
W : Type u
p : W
q : W
UP : Type u
W : Type u
p : W
q : W
hUP : Type u
W : Type u
p : W
q : W
hP : Type u
W : Type u
p : W
q : W
ext rhP : Type u
W : Type u
p : W
q : W
r : W
simp only [pullback, maximal_sieve, Set.mem_setOf_eq]hP : Type u
W : Type u
p : W
q : W
r : W
constructorh.mpP : Type u
W : Type u
p : W
q : W
r : W
h.mprP : Type u
W : Type u
p : W
q : W
r : W
·h.mpP : Type u
W : Type u
p : W
q : W
r : W
rintro ⟨_, hr⟩h.mpP : Type u
W : Type u
p : W
q : W
r : W
; exact hr
·h.mprP : Type u
W : Type u
p : W
q : W
r : W
intro hrh.mprP : Type u
W : Type u
p : W
q : W
r : W
exact ⟨byP : Type u
W : Type u
p : W
q : W
r : W
rw [hU]P : Type u
W : Type u
p : W
q : W
r : W
; exact le_trans h hr, hr⟩