Zulip Chat Archive

Stream: mathlib4

Topic: Is this lemma in mathlib?


Jeremy Tan (Jul 07 2024 at 04:33):

While working on the Carleson project I had to prove this lemma from scratch, but intuitively it is so simple that it should be in mathlib already. Is it?

import Mathlib.Data.Fintype.Card
import Mathlib.Order.Minimal

variable {α : Type*} [PartialOrder α] [DecidableRel fun x y : α  x  y] (s : Finset α)

lemma exists_ge_in_maximals :  i  s,  j  maximals (·  ·) s, i  j := fun i hi  by
  let C : Finset α := s.filter (i  ·)
  have Cn : C.Nonempty := i, by simp only [C, Finset.mem_filter, hi, le_rfl, true_and]
  obtain j, hj, maxj := C.exists_maximal Cn
  simp_rw [C, Finset.mem_filter] at hj maxj 
  refine j, ?_, hj.2
  rw [mem_maximals_iff]
  refine hj.1, fun k hk lk  eq_of_le_of_not_lt lk (maxj k hk, hj.2.trans lk)

Yaël Dillies (Jul 07 2024 at 07:29):

Try to find this statement as s \subset lowerClosure (minimals s)

Jeremy Tan (Jul 08 2024 at 18:01):

Well, it doesn't exist

Peter Nelson (Jul 09 2024 at 11:07):

You can apply Finite.exists_maximal_wrt to the identity function and the Finite set of elements of s above i.

Peter Nelson (Jul 09 2024 at 11:27):

... I suppose this is no better than the proof you have above.

On this topic: maximals being a set rather than a predicate has always seemed wrong to me. It seems like a good candidate for dot notation, with lemmas like Maximal.eq_of_le, Maximal.not_lt, and specializations to Set/Finset like Maximal.not_ssubset etc.

This would also reflect informal usage better. Maximality really is a property rather than a collection: we say 'x is maximal with property P', not 'x belongs to the set of maximal elements with property P'.

Yaël Dillies (Jul 09 2024 at 14:11):

Yeah sure. I quickly put maximals together three years ago and I didn't spend that much time thinking about whether it should be a set or a predicate


Last updated: May 02 2025 at 03:31 UTC