Zulip Chat Archive

Stream: new members

Topic: Enumerate the factors of a small constant


AlumKal (Jul 24 2025 at 01:48):

example {n : } (hn : n  6) : n = 1  n = 2  n = 3  n = 6 := sorry

How to elegantly prove this?

Weiyi Wang (Jul 24 2025 at 02:02):

oops one moment (edited

Weiyi Wang (Jul 24 2025 at 02:05):

example {n : } (hn : n  6) : n = 1  n = 2  n = 3  n = 6 := by
  have h : n  Finset.Iic 6 := by simpa using Nat.le_of_dvd (by simp) hn
  fin_cases h <;> simp_all

Kenny Lau (Jul 24 2025 at 06:32):

Solution 1:

import Mathlib

lemma Nat.mem_divisors_iff {n m : } (hm : m  0) :
    n  m.divisors  n  m :=
  (Nat.mem_divisors.1 · |>.1), (Nat.mem_divisors.2 ⟨·, hm)

example {n : } (hn : n  6) : n = 1  n = 2  n = 3  n = 6 := by
  rw [ Nat.mem_divisors_iff (by norm_num), show Nat.divisors 6 = {1, 2, 3, 6} from rfl] at hn
  simpa using hn

Kenny Lau (Jul 24 2025 at 06:33):

Solution 2:

import Mathlib

lemma Nat.mem_divisors_iff {n m : } (hm : m  0) :
    n  m.divisors  n  m :=
  (Nat.mem_divisors.1 · |>.1), (Nat.mem_divisors.2 ⟨·, hm)

example {n : } (hn : n  6) : n = 1  n = 2  n = 3  n = 6 := by
  rw [ Nat.mem_divisors_iff (by norm_num)] at hn
  decide +revert

Kenny Lau (Jul 24 2025 at 06:35):

Solution 3:

import Mathlib

lemma Nat.mem_divisors_iff {n m : } (hm : m  0) :
    n  m.divisors  n  m :=
  (Nat.mem_divisors.1 · |>.1), (Nat.mem_divisors.2 ⟨·, hm)

instance (p :   Prop) [DecidablePred p] (m : ) : Decidable ( n, n  m.succ  p n) :=
  decidable_of_iff ( n  m.succ.divisors, p n)
    (by simp_rw [ Nat.mem_divisors_iff (Nat.succ_ne_zero m)])

example {n : } (hn : n  6) : n = 1  n = 2  n = 3  n = 6 := by
  decide +revert

Eric Wieser (Jul 24 2025 at 08:05):

There is now a simproc that can compute the factors for you

Aaron Liu (Jul 24 2025 at 08:09):

file#Tactic/Simproc/Divisors

Aaron Liu (Jul 24 2025 at 08:14):

import Mathlib

example {n : } (hn : n  6) : n = 1  n = 2  n = 3  n = 6 := by
  apply and_iff_left (show 6  0 by norm_num) |>.mpr at hn
  rw [ Nat.mem_divisors] at hn
  dsimp [Nat.divisors_ofNat] at hn
  simpa using hn

Last updated: Dec 20 2025 at 21:32 UTC