Theorem: not_isCyclic_iff_exponent_eq_prime
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

tactic: let _inst : Fintype α := @Fintype.ofFinite α <| Nat.finite_of_card_ne_zero <| by aesop
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
⊢ ¬IsCyclic α ↔ exponent α = p
state_after: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
⊢ ¬IsCyclic α ↔ exponent α = p

tactic: have hα' : Fintype.card α = p ^ 2 := by simpa using hα
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
⊢ ¬IsCyclic α ↔ exponent α = p
state_after: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
⊢ ¬IsCyclic α ↔ exponent α = p

tactic: have := (Fintype.one_lt_card_iff_nontrivial (α := α)).mp <|
  hα' ▸ one_lt_pow hp.one_lt two_ne_zero
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
⊢ ¬IsCyclic α ↔ exponent α = p
state_after: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
⊢ ¬IsCyclic α ↔ exponent α = p

tactic: have := (Nat.mem_divisors (m := p ^ 2)).mpr ⟨hα' ▸ orderOf_dvd_card (x := g), by aesop⟩
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
⊢ orderOf g = p
state_after: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this✝ : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
this : orderOf g ∈ (p ^ 2).divisors
⊢ orderOf g = p

tactic: simp? [Nat.divisors_prime_pow hp 2] at this says
  simp only [Nat.divisors_prime_pow hp 2, Nat.reduceAdd, Finset.mem_map, Finset.mem_range,
    Function.Embedding.coeFn_mk] at this
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this✝ : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
this : orderOf g ∈ (p ^ 2).divisors
⊢ orderOf g = p
state_after: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this✝ : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
this : ∃ a < 3, p ^ a = orderOf g
⊢ orderOf g = p

tactic: obtain ⟨a, ha, ha'⟩ := this
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this✝ : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
this : ∃ a < 3, p ^ a = orderOf g
⊢ orderOf g = p
state_after: case intro.intro
α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : a < 3
ha' : p ^ a = orderOf g
⊢ orderOf g = p

tactic: interval_cases a
state_before: case intro.intro
α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : a < 3
ha' : p ^ a = orderOf g
⊢ orderOf g = p
state_after: case intro.intro.«0»
α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : 0 < 3
ha' : p ^ 0 = orderOf g
⊢ orderOf g = p

case intro.intro.«1»
α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : 1 < 3
ha' : p ^ 1 = orderOf g
⊢ orderOf g = p

case intro.intro.«2»
α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : 2 < 3
ha' : p ^ 2 = orderOf g
⊢ orderOf g = p

tactic: aesop
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
⊢ Nat.card α ≠ 0
state_after: no goals

tactic: simpa using hα
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
⊢ Fintype.card α = p ^ 2
state_after: no goals

tactic: obtain (rfl|rfl) := eq_zero_or_one_of_sq_eq_self <| hα' ▸ h_exp ▸ (h_cyc.exponent_eq_card).symm
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_exp : exponent α = p
h_cyc : IsCyclic α
⊢ False
state_after: case inl
α : Type u
a : α
inst✝ : Group α
this : Nontrivial α
h_cyc : IsCyclic α
hp : Nat.Prime 0
hα : Nat.card α = 0 ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = 0 ^ 2
h_exp : exponent α = 0
⊢ False

case inr
α : Type u
a : α
inst✝ : Group α
this : Nontrivial α
h_cyc : IsCyclic α
hp : Nat.Prime 1
hα : Nat.card α = 1 ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = 1 ^ 2
h_exp : exponent α = 1
⊢ False

tactic: exact Nat.not_prime_zero hp
state_before: case inl
α : Type u
a : α
inst✝ : Group α
this : Nontrivial α
h_cyc : IsCyclic α
hp : Nat.Prime 0
hα : Nat.card α = 0 ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = 0 ^ 2
h_exp : exponent α = 0
⊢ False
state_after: no goals

tactic: exact Nat.not_prime_one hp
state_before: case inr
α : Type u
a : α
inst✝ : Group α
this : Nontrivial α
h_cyc : IsCyclic α
hp : Nat.Prime 1
hα : Nat.card α = 1 ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = 1 ^ 2
h_exp : exponent α = 1
⊢ False
state_after: no goals

tactic: aesop
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
⊢ p ^ 2 ≠ 0
state_after: no goals

tactic: simp only [Nat.divisors_prime_pow hp 2, Nat.reduceAdd, Finset.mem_map, Finset.mem_range,
  Function.Embedding.coeFn_mk] at this
state_before: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this✝ : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
this : orderOf g ∈ (p ^ 2).divisors
⊢ orderOf g = p
state_after: α : Type u
a : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this✝ : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
this : ∃ a < 3, p ^ a = orderOf g
⊢ orderOf g = p

tactic: exact False.elim <| hg <| orderOf_eq_one_iff.mp <| by aesop
state_before: case intro.intro.«0»
α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : 0 < 3
ha' : p ^ 0 = orderOf g
⊢ orderOf g = p
state_after: no goals

tactic: aesop
state_before: α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : 0 < 3
ha' : p ^ 0 = orderOf g
⊢ orderOf g = 1
state_after: no goals

tactic: aesop
state_before: case intro.intro.«1»
α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : 1 < 3
ha' : p ^ 1 = orderOf g
⊢ orderOf g = p
state_after: no goals

tactic: exact False.elim <| h_cyc <| isCyclic_of_orderOf_eq_card g <| by aesop
state_before: case intro.intro.«2»
α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : 2 < 3
ha' : p ^ 2 = orderOf g
⊢ orderOf g = p
state_after: no goals

tactic: aesop
state_before: α : Type u
a✝ : α
inst✝ : Group α
p : ℕ
hp : Nat.Prime p
hα : Nat.card α = p ^ 2
_inst : Fintype α := Fintype.ofFinite α
hα' : Fintype.card α = p ^ 2
this : Nontrivial α
h_cyc : ¬IsCyclic α
g : α
hg : g ≠ 1
a : ℕ
ha : 2 < 3
ha' : p ^ 2 = orderOf g
⊢ orderOf g = Fintype.card α
state_after: no goals