Zulip Chat Archive

Stream: new members

Topic: Set of Nats has minimum


Kent Van Vels (Nov 30 2024 at 02:29):

I want to prove that a nonempty set of nats has a (unique) minimum.

Do I have to do a compactness/topological proof? Is there a better/easier way? I am planning on using this to show that infinite descent of nats is impossible so I would like to avoid using an infinite descent argument. Also I would like any recommendations for a better theorem name.

theorem min_exists_of_nonempty
(S: Set ℕ) : S.Nonempty → ∃ (n_min : S), (∀ (k:S), n_min ≤ k) := by
  intro h0
  sorry

I couldn't find the correct theorem in mathlib. Is there something similar there?

Kent Van Vels (Nov 30 2024 at 03:21):

This is what I did, after using the strong induction_on, I more or less followed my nose.

theorem min_exists_of_nonempty (S: Set ℕ) :
S.Nonempty → ∃ (n_min : ℕ), n_min ∈ S ∧ (∀ (k:ℕ), k ∈ S → n_min ≤ k) := by
  rintro ⟨x,h0⟩
  by_contra h1
  push_neg at h1
  induction' x using Nat.strong_induction_on with k hk
  rcases h1 k h0 with ⟨α,h2,h3⟩
  exact hk α h3 h2

Daniel Weber (Nov 30 2024 at 03:25):

You can use sInf for the infimum of the set, and then use docs#csInf_mem and docs#csInf_le'

Kyle Miller (Nov 30 2024 at 03:27):

theorem min_exists_of_nonempty (S : Set ℕ) (h : S.Nonempty) :
    ∃ (n_min : S), (∀ (k:S), n_min ≤ k) := by
  use! sInf S
  · exact Nat.sInf_mem h
  · simp only [Subtype.forall, Subtype.mk_le_mk]
    intro _ hs
    exact Nat.sInf_le hs

Kyle Miller (Nov 30 2024 at 03:27):

(That's meant to be pointers into the library)

Kent Van Vels (Nov 30 2024 at 03:27):

@Kyle Miller and @Daniel Weber, thank you both, I will look into this. I appreciate it.

Kyle Miller (Nov 30 2024 at 03:29):

docs#Nat.find is another more algorithmic way to express the infimum.

theorem min_exists_of_nonempty (S : Set ℕ) (h : S.Nonempty) :
    ∃ (n_min : S), (∀ (k:S), n_min ≤ k) := by
  classical
  use! Nat.find h
  · apply Nat.find_spec
  · simp only [Subtype.forall, Subtype.mk_le_mk]
    intro _ hs
    exact Nat.find_min' _ hs

Last updated: Feb 28 2026 at 14:05 UTC