File: Mathlib/GroupTheory/Solvable.lean

full_name: derivedSeries
code: /-- The derived series of the group `G`, obtained by starting from the subgroup `⊤` and repeatedly
  taking the commutator of the previous subgroup with itself for `n` times. -/
def derivedSeries : ℕ → Subgroup G
  
goal: ℕ → Subgroup G

full_name: derivedSeries_zero
code: @[simp]
theorem derivedSeries_zero : derivedSeries G 0 = ⊤ 
goal: derivedSeries G 0 = ⊤

full_name: derivedSeries_succ
code: @[simp]
theorem derivedSeries_succ (n : ℕ) :
    derivedSeries G (n + 1) = ⁅derivedSeries G n, derivedSeries G n⁆ 
goal: derivedSeries G (n + 1) = ⁅derivedSeries G n, derivedSeries G n⁆

full_name: derivedSeries_normal
code: theorem derivedSeries_normal (n : ℕ) : (derivedSeries G n).Normal 
goal: (derivedSeries G n).Normal

full_name: derivedSeries_one
code: @[simp 1100]
theorem derivedSeries_one : derivedSeries G 1 = commutator G 
goal: derivedSeries G 1 = commutator G

full_name: map_derivedSeries_le_derivedSeries
code: theorem map_derivedSeries_le_derivedSeries (n : ℕ) :
    (derivedSeries G n).map f ≤ derivedSeries G' n 
goal: Subgroup.map f (derivedSeries G n) ≤ derivedSeries G' n

full_name: derivedSeries_le_map_derivedSeries
code: theorem derivedSeries_le_map_derivedSeries (hf : Function.Surjective f) (n : ℕ) :
    derivedSeries G' n ≤ (derivedSeries G n).map f 
goal: derivedSeries G' n ≤ Subgroup.map f (derivedSeries G n)

full_name: map_derivedSeries_eq
code: theorem map_derivedSeries_eq (hf : Function.Surjective f) (n : ℕ) :
    (derivedSeries G n).map f = derivedSeries G' n 
goal: Subgroup.map f (derivedSeries G n) = derivedSeries G' n

full_name: IsSolvable.solvable
code: /-- A group `G` is solvable if its derived series is eventually trivial. We use this definition
  because it's the most convenient one to work with. -/
@[mk_iff isSolvable_def]
class IsSolvable : Prop where
  /-- A group `G` is solvable if its derived series is eventually trivial. -/
  solvable : ∃ n : ℕ, derivedSeries G n = ⊥
goal: ∃ n, derivedSeries G n = ⊥

full_name: IsSolvable
code: /-- A group `G` is solvable if its derived series is eventually trivial. We use this definition
  because it's the most convenient one to work with. -/
@[mk_iff isSolvable_def]
class IsSolvable : Prop where
  /-- A group `G` is solvable if its derived series is eventually trivial. -/
  solvable : ∃ n : ℕ, derivedSeries G n = ⊥
goal: Prop

full_name: isSolvable_def
code: /-- A group `G` is solvable if its derived series is eventually trivial. We use this definition
  because it's the most convenient one to work with. -/
@[mk_iff isSolvable_def]
class IsSolvable : Prop where
  /-- A group `G` is solvable if its derived series is eventually trivial. -/
  solvable : ∃ n : ℕ, derivedSeries G n = ⊥
goal: IsSolvable G ↔ ∃ n, derivedSeries G n = ⊥

full_name: CommGroup.isSolvable
code: instance (priority := 100) CommGroup.isSolvable {G : Type*} [CommGroup G] : IsSolvable G 
goal: IsSolvable G

full_name: isSolvable_of_comm
code: theorem isSolvable_of_comm {G : Type*} [hG : Group G] (h : ∀ a b : G, a * b = b * a) :
    IsSolvable G 
goal: IsSolvable G

full_name: isSolvable_of_top_eq_bot
code: theorem isSolvable_of_top_eq_bot (h : (⊤ : Subgroup G) = ⊥) : IsSolvable G 
goal: IsSolvable G

full_name: isSolvable_of_subsingleton
code: instance (priority := 100) isSolvable_of_subsingleton [Subsingleton G] : IsSolvable G 
goal: IsSolvable G

full_name: solvable_of_ker_le_range
code: theorem solvable_of_ker_le_range {G' G'' : Type*} [Group G'] [Group G''] (f : G' →* G)
    (g : G →* G'') (hfg : g.ker ≤ f.range) [hG' : IsSolvable G'] [hG'' : IsSolvable G''] :
    IsSolvable G 
goal: IsSolvable G

full_name: solvable_of_solvable_injective
code: theorem solvable_of_solvable_injective (hf : Function.Injective f) [IsSolvable G'] :
    IsSolvable G 
goal: IsSolvable G

full_name: subgroup_solvable_of_solvable
code: instance subgroup_solvable_of_solvable (H : Subgroup G) [IsSolvable G] : IsSolvable H 
goal: IsSolvable ↥H

full_name: solvable_of_surjective
code: theorem solvable_of_surjective (hf : Function.Surjective f) [IsSolvable G] : IsSolvable G' 
goal: IsSolvable G'

full_name: solvable_quotient_of_solvable
code: instance solvable_quotient_of_solvable (H : Subgroup G) [H.Normal] [IsSolvable G] :
    IsSolvable (G ⧸ H) 
goal: IsSolvable (G ⧸ H)

full_name: solvable_prod
code: instance solvable_prod {G' : Type*} [Group G'] [IsSolvable G] [IsSolvable G'] :
    IsSolvable (G × G') 
goal: IsSolvable (G × G')

full_name: IsSimpleGroup.derivedSeries_succ
code: theorem IsSimpleGroup.derivedSeries_succ {n : ℕ} : derivedSeries G n.succ = commutator G 
goal: derivedSeries G n.succ = commutator G

full_name: IsSimpleGroup.comm_iff_isSolvable
code: theorem IsSimpleGroup.comm_iff_isSolvable : (∀ a b : G, a * b = b * a) ↔ IsSolvable G 
goal: (∀ (a b : G), a * b = b * a) ↔ IsSolvable G

full_name: not_solvable_of_mem_derivedSeries
code: theorem not_solvable_of_mem_derivedSeries {g : G} (h1 : g ≠ 1)
    (h2 : ∀ n : ℕ, g ∈ derivedSeries G n) : ¬IsSolvable G 
goal: ¬IsSolvable G

full_name: Equiv.Perm.fin_5_not_solvable
code: theorem Equiv.Perm.fin_5_not_solvable : ¬IsSolvable (Equiv.Perm (Fin 5)) 
goal: ¬IsSolvable (Equiv.Perm (Fin 5))

full_name: Equiv.Perm.not_solvable
code: theorem Equiv.Perm.not_solvable (X : Type*) (hX : 5 ≤ Cardinal.mk X) :
    ¬IsSolvable (Equiv.Perm X) 
goal: ¬IsSolvable (Equiv.Perm X)