Zulip Chat Archive

Stream: new members

Topic: How to prove that in a cyclic group, an element satisfying a


Aina Sahalim (Jul 20 2025 at 04:01):

I've formalized this in Lean (see below), but need help completing the proof:

theorem cyclic_subgroup_element {G : Type*} [group G] [is_cyclic G]
  (H : subgroup G) [fintype H] (n : ) (hH : fintype.card H = n)
  (a : G) (ha : a ^ n = 1) : a  H :=
sorry

I thought it would be a theorem in the mathlib, but I failed to find it. Can you provide a close thm to me or tell me how to proof:sob:

Kevin Buzzard (Jul 20 2025 at 05:31):

This doesn't compile. Are you sure you're using lean 4?

Aina Sahalim (Jul 20 2025 at 05:38):

sorry but what I actually want to proof is the sorry of the code below

theorem finite_field_power_iff {F : Type*} {k : } [Field F] [Fintype F] [DecidableEq F] {a : Fˣ}:
  ( x : Fˣ, x ^ k = a)  a ^ ((Fintype.card F - 1) / (Nat.gcd (Fintype.card F - 1) k)) = 1 := by
  let m := Fintype.card F - 1
  let d := Nat.gcd m k
  let G := Fˣ
  haveI : IsCyclic G := instIsCyclicUnitsOfFinite
  have hd : d  m := Nat.gcd_dvd_left m k
  let n := m / d
  have hn : n  m := by
    rw [ Nat.mul_div_cancel' hd]
    exact dvd_mul_left n d
  have hgen :  g : G,  x, x  zpowers g := IsCyclic.exists_generator
  rcases hgen with g, hg
  have order_g : orderOf g = m := by
    rw [orderOf_eq_card_of_forall_mem_zpowers hg]
    rw [Nat.card_eq_fintype_card]
    rw [Fintype.card_units]
  let b := g ^ k
  have order_b : orderOf b = n := by
    rw [orderOf_pow, order_g]
  let H := zpowers b
  have card_H : Fintype.card H = n := by
    rw [Fintype.card_zpowers]
    exact order_b
  have mem_H_iff_power : a  H   x : G, x ^ k = a := by
    constructor
    · intro ha
      rw [mem_zpowers_iff] at ha
      obtain j, hj := ha
      use g ^ j
      rw [ hj]
      unfold b
      group
    · rintro x, rfl
      obtain j, hj := hg x
      rw [ hj]
      group
      rw [mul_comm]
      rw [zpow_mul]
      simp only [zpow_natCast]
      use j
  rw [ mem_H_iff_power]
  have : a  H  a ^ n = 1 := by
    sorry
  rw [this]

I try to simplyfy the problem but I failed. I am using lean 4 for sure . Would you do me a favor?

Aina Sahalim (Jul 20 2025 at 06:17):

The natural language of the problem is "How to prove that in a cyclic group, an element satisfying a^n=1 must belong to a finite subgroup of order n?" and the lean code is

theorem cyclic_subgroup_element {G : Type*} [Group G] [IsCyclic G]
    (H : Subgroup G) [Fintype H] (n : ) (hH : Fintype.card H = n)
    (a : G) (ha : a ^ n = 1) : a  H :=
  sorry

Aaron Liu (Jul 20 2025 at 06:59):

What you have actually stated is "in every cyclic group, every element satisfying a ^ n = 1 must belong to every finite subgroup of order n", and this is false.

Aaron Liu (Jul 20 2025 at 07:00):

To get an exists statement, you need an existential quantifier.

Yaël Dillies (Jul 20 2025 at 07:03):

Aaron Liu said:

What you have actually stated is "in every cyclic group, every element satisfying a ^ n = 1 must belong to every finite subgroup of order n", and this is false.

What's a counterexample?

Aaron Liu (Jul 20 2025 at 07:04):

Oh I thought I had a counterexample but HMMMM I must have lost it

Aaron Liu (Jul 20 2025 at 07:04):

Ok maybe it's true

Aaron Liu (Jul 20 2025 at 07:07):

But you have still written a different theorem, and I think the original statement is actually the false one since you can set n = 0 and get an empty subgroup.

Aaron Liu (Jul 20 2025 at 07:08):

I'll just pretend I was referring to the informal statement all along

Yaël Dillies (Jul 20 2025 at 07:09):

What if you replace the informal statement by "How to prove that in a cyclic group, an element satisfying a^n=1 must belong to a given finite subgroup of order n?"? I feel like you simply misread the informal statement

Aaron Liu (Jul 20 2025 at 07:17):

really?

Aaron Liu (Jul 20 2025 at 07:17):

maybe

Aaron Liu (Jul 20 2025 at 07:18):

I guess that's the problem with natural language, sometimes it can be misinterpreted


Last updated: Dec 20 2025 at 21:32 UTC