ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Subgroup.MemRightTransversals.finite_iff
@[to_additive "A right transversal is finite iff the subgroup has finite index"]
theorem finite_iff
    (h : S ∈ Subgroup.rightTransversals (H : Set G)) :
    Finite S ↔ H.FiniteIndex 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (h : S ∈ Subgroup.rightTransversals ↑H)
Goal: Finite ↑S ↔ H.FiniteIndex
-- AddSubgroup.MemRightTransversals.finite_iff
@[to_additive "A right transversal is finite iff the subgroup has finite index"]
theorem finite_iff
    (h : S ∈ Subgroup.rightTransversals (H : Set G)) :
    Finite S ↔ H.FiniteIndex 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (h : S ∈ AddSubgroup.rightTransversals ↑H)
Goal: Finite ↑S ↔ H.FiniteIndex
-- AddSubgroup.MemRightTransversals.mk''_toEquiv
@[to_additive]
theorem mk''_toEquiv (hS : S ∈ Subgroup.rightTransversals (H : Set G))
    (q : Quotient (QuotientGroup.rightRel H)) : Quotient.mk'' (toEquiv hS q : G) = q 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (hS : S ∈ AddSubgroup.rightTransversals ↑H) (q : Quotient (QuotientAddGroup.rightRel H))
Goal: Quotient.mk'' ↑((AddSubgroup.MemRightTransversals.toEquiv hS) q) = q
-- Subgroup.MemRightTransversals.mk''_toEquiv
@[to_additive]
theorem mk''_toEquiv (hS : S ∈ Subgroup.rightTransversals (H : Set G))
    (q : Quotient (QuotientGroup.rightRel H)) : Quotient.mk'' (toEquiv hS q : G) = q 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (hS : S ∈ Subgroup.rightTransversals ↑H) (q : Quotient (QuotientGroup.rightRel H))
Goal: Quotient.mk'' ↑((Subgroup.MemRightTransversals.toEquiv hS) q) = q
-- AddSubgroup.MemRightTransversals.toEquiv_apply
@[to_additive]
theorem toEquiv_apply {f : Quotient (QuotientGroup.rightRel H) → G}
    (hf : ∀ q, Quotient.mk'' (f q) = q) (q : Quotient (QuotientGroup.rightRel H)) :
    (toEquiv (range_mem_rightTransversals hf) q : G) = f q 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {f : Quotient (QuotientAddGroup.rightRel H) → G} (hf : ∀ (q : Quotient (QuotientAddGroup.rightRel H)), Quotient.mk'' (f q) = q) (q : Quotient (QuotientAddGroup.rightRel H))
Goal: ↑((AddSubgroup.MemRightTransversals.toEquiv ⋯) q) = f q
-- Subgroup.MemRightTransversals.toEquiv_apply
@[to_additive]
theorem toEquiv_apply {f : Quotient (QuotientGroup.rightRel H) → G}
    (hf : ∀ q, Quotient.mk'' (f q) = q) (q : Quotient (QuotientGroup.rightRel H)) :
    (toEquiv (range_mem_rightTransversals hf) q : G) = f q 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {f : Quotient (QuotientGroup.rightRel H) → G} (hf : ∀ (q : Quotient (QuotientGroup.rightRel H)), Quotient.mk'' (f q) = q) (q : Quotient (QuotientGroup.rightRel H))
Goal: ↑((Subgroup.MemRightTransversals.toEquiv ⋯) q) = f q
-- AddSubgroup.MemRightTransversals.add_neg_toFun_mem
@[to_additive]
theorem mul_inv_toFun_mem (hS : S ∈ Subgroup.rightTransversals (H : Set G)) (g : G) :
    g * (toFun hS g : G)⁻¹ ∈ H 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (hS : S ∈ AddSubgroup.rightTransversals ↑H) (g : G)
Goal: g + -↑(AddSubgroup.MemRightTransversals.toFun hS g) ∈ H
-- Subgroup.MemRightTransversals.mul_inv_toFun_mem
@[to_additive]
theorem mul_inv_toFun_mem (hS : S ∈ Subgroup.rightTransversals (H : Set G)) (g : G) :
    g * (toFun hS g : G)⁻¹ ∈ H 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (hS : S ∈ Subgroup.rightTransversals ↑H) (g : G)
Goal: g * (↑(Subgroup.MemRightTransversals.toFun hS g))⁻¹ ∈ H
-- AddSubgroup.MemRightTransversals.toFun_add_neg_mem
@[to_additive]
theorem toFun_mul_inv_mem (hS : S ∈ Subgroup.rightTransversals (H : Set G)) (g : G) :
    (toFun hS g : G) * g⁻¹ ∈ H 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (hS : S ∈ AddSubgroup.rightTransversals ↑H) (g : G)
Goal: ↑(AddSubgroup.MemRightTransversals.toFun hS g) + -g ∈ H
-- Subgroup.MemRightTransversals.toFun_mul_inv_mem
@[to_additive]
theorem toFun_mul_inv_mem (hS : S ∈ Subgroup.rightTransversals (H : Set G)) (g : G) :
    (toFun hS g : G) * g⁻¹ ∈ H 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (hS : S ∈ Subgroup.rightTransversals ↑H) (g : G)
Goal: ↑(Subgroup.MemRightTransversals.toFun hS g) * g⁻¹ ∈ H
-- Subgroup.smul_toFun
@[to_additive]
theorem smul_toFun (f : F) (T : leftTransversals (H : Set G)) (g : G) :
    (f • (toFun T.2 g : G)) = toFun (f • T).2 (f • g) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {F : Type u_2} [Group F] [MulAction F G] [MulAction.QuotientAction F H] (f : F) (T : ↑(Subgroup.leftTransversals ↑H)) (g : G)
Goal: f • ↑(Subgroup.MemLeftTransversals.toFun ⋯ g) = ↑(Subgroup.MemLeftTransversals.toFun ⋯ (f • g))
-- AddSubgroup.vadd_toFun
@[to_additive]
theorem smul_toFun (f : F) (T : leftTransversals (H : Set G)) (g : G) :
    (f • (toFun T.2 g : G)) = toFun (f • T).2 (f • g) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {F : Type u_2} [AddGroup F] [AddAction F G] [AddAction.QuotientAction F H] (f : F) (T : ↑(AddSubgroup.leftTransversals ↑H)) (g : G)
Goal: f +ᵥ ↑(AddSubgroup.MemLeftTransversals.toFun ⋯ g) = ↑(AddSubgroup.MemLeftTransversals.toFun ⋯ (f +ᵥ g))
-- AddSubgroup.vadd_toEquiv
@[to_additive]
theorem smul_toEquiv (f : F) (T : leftTransversals (H : Set G)) (q : G ⧸ H) :
    f • (toEquiv T.2 q : G) = toEquiv (f • T).2 (f • q) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {F : Type u_2} [AddGroup F] [AddAction F G] [AddAction.QuotientAction F H] (f : F) (T : ↑(AddSubgroup.leftTransversals ↑H)) (q : G ⧸ H)
Goal: f +ᵥ ↑((AddSubgroup.MemLeftTransversals.toEquiv ⋯) q) = ↑((AddSubgroup.MemLeftTransversals.toEquiv ⋯) (f +ᵥ q))
-- Subgroup.smul_toEquiv
@[to_additive]
theorem smul_toEquiv (f : F) (T : leftTransversals (H : Set G)) (q : G ⧸ H) :
    f • (toEquiv T.2 q : G) = toEquiv (f • T).2 (f • q) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {F : Type u_2} [Group F] [MulAction F G] [MulAction.QuotientAction F H] (f : F) (T : ↑(Subgroup.leftTransversals ↑H)) (q : G ⧸ H)
Goal: f • ↑((Subgroup.MemLeftTransversals.toEquiv ⋯) q) = ↑((Subgroup.MemLeftTransversals.toEquiv ⋯) (f • q))
-- Subgroup.smul_apply_eq_smul_apply_inv_smul
@[to_additive]
theorem smul_apply_eq_smul_apply_inv_smul (f : F) (T : leftTransversals (H : Set G)) (q : G ⧸ H) :
    (toEquiv (f • T).2 q : G) = f • (toEquiv T.2 (f⁻¹ • q) : G) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {F : Type u_2} [Group F] [MulAction F G] [MulAction.QuotientAction F H] (f : F) (T : ↑(Subgroup.leftTransversals ↑H)) (q : G ⧸ H)
Goal: ↑((Subgroup.MemLeftTransversals.toEquiv ⋯) q) = f • ↑((Subgroup.MemLeftTransversals.toEquiv ⋯) (f⁻¹ • q))
-- AddSubgroup.vadd_apply_eq_vadd_apply_neg_vadd
@[to_additive]
theorem smul_apply_eq_smul_apply_inv_smul (f : F) (T : leftTransversals (H : Set G)) (q : G ⧸ H) :
    (toEquiv (f • T).2 q : G) = f • (toEquiv T.2 (f⁻¹ • q) : G) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {F : Type u_2} [AddGroup F] [AddAction F G] [AddAction.QuotientAction F H] (f : F) (T : ↑(AddSubgroup.leftTransversals ↑H)) (q : G ⧸ H)
Goal: ↑((AddSubgroup.MemLeftTransversals.toEquiv ⋯) q) = f +ᵥ ↑((AddSubgroup.MemLeftTransversals.toEquiv ⋯) (-f +ᵥ q))
-- Subgroup.IsComplement'.isCompl
theorem IsComplement'.isCompl (h : IsComplement' H K) : IsCompl H K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H.IsComplement' K)
Goal: IsCompl H K
-- Subgroup.IsComplement'.sup_eq_top
theorem IsComplement'.sup_eq_top (h : IsComplement' H K) : H ⊔ K = ⊤ 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H.IsComplement' K)
Goal: H ⊔ K = ⊤
-- Subgroup.IsComplement'.disjoint
theorem IsComplement'.disjoint (h : IsComplement' H K) : Disjoint H K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H.IsComplement' K)
Goal: Disjoint H K
-- Subgroup.IsComplement'.index_eq_card
theorem IsComplement'.index_eq_card (h : IsComplement' H K) : K.index = Nat.card H 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H.IsComplement' K)
Goal: K.index = Nat.card ↥H
-- Subgroup.IsComplement.card_mul
theorem IsComplement.card_mul (h : IsComplement S T) :
    Nat.card S * Nat.card T = Nat.card G 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (h : Subgroup.IsComplement S T)
Goal: Nat.card ↑S * Nat.card ↑T = Nat.card G
-- Subgroup.IsComplement'.card_mul
theorem IsComplement'.card_mul (h : IsComplement' H K) :
    Nat.card H * Nat.card K = Nat.card G 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H.IsComplement' K)
Goal: Nat.card ↥H * Nat.card ↥K = Nat.card G
-- Subgroup.isComplement'_of_disjoint_and_mul_eq_univ
theorem isComplement'_of_disjoint_and_mul_eq_univ (h1 : Disjoint H K)
    (h2 : ↑H * ↑K = (Set.univ : Set G)) : IsComplement' H K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h1 : Disjoint H K) (h2 : ↑H * ↑K = Set.univ)
Goal: H.IsComplement' K
-- Subgroup.isComplement'_of_card_mul_and_disjoint
theorem isComplement'_of_card_mul_and_disjoint [Finite G]
    (h1 : Nat.card H * Nat.card K = Nat.card G) (h2 : Disjoint H K) :
    IsComplement' H K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} [Finite G] (h1 : Nat.card ↥H * Nat.card ↥K = Nat.card G) (h2 : Disjoint H K)
Goal: H.IsComplement' K
-- Subgroup.isComplement'_iff_card_mul_and_disjoint
theorem isComplement'_iff_card_mul_and_disjoint [Finite G] :
    IsComplement' H K ↔ Nat.card H * Nat.card K = Nat.card G ∧ Disjoint H K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} [Finite G]
Goal: H.IsComplement' K ↔ Nat.card ↥H * Nat.card ↥K = Nat.card G ∧ Disjoint H K
-- Subgroup.isComplement'_of_coprime
theorem isComplement'_of_coprime [Finite G]
    (h1 : Nat.card H * Nat.card K = Nat.card G)
    (h2 : Nat.Coprime (Nat.card H) (Nat.card K)) : IsComplement' H K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} [Finite G] (h1 : Nat.card ↥H * Nat.card ↥K = Nat.card G) (h2 : (Nat.card ↥H).Coprime (Nat.card ↥K))
Goal: H.IsComplement' K
-- Subgroup.isComplement'_stabilizer
theorem isComplement'_stabilizer {α : Type*} [MulAction G α] (a : α)
    (h1 : ∀ h : H, h • a = a → h = 1) (h2 : ∀ g : G, ∃ h : H, h • g • a = a) :
    IsComplement' H (MulAction.stabilizer G a) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {α : Type u_2} [MulAction G α] (a : α) (h1 : ∀ (h : ↥H), h • a = a → h = 1) (h2 : ∀ (g : G), ∃ h, h • g • a = a)
Goal: H.IsComplement' (MulAction.stabilizer G a)
-- Subgroup.quotientEquivSigmaZMod_symm_apply
theorem quotientEquivSigmaZMod_symm_apply (q : orbitRel.Quotient (zpowers g) (G ⧸ H))
    (k : ZMod (minimalPeriod (g • ·) q.out')) :
    (quotientEquivSigmaZMod H g).symm ⟨q, k⟩ = g ^ (cast k : ℤ) • q.out' 
Arguments: {G : Type u} [Group G] (H : Subgroup G) (g : G) (q : MulAction.orbitRel.Quotient (↥(Subgroup.zpowers g)) (G ⧸ H)) (k : ZMod (Function.minimalPeriod (fun x => g • x) (Quotient.out' q)))
Goal: (H.quotientEquivSigmaZMod g).symm ⟨q, k⟩ = g ^ k.cast • Quotient.out' q
-- Subgroup.quotientEquivSigmaZMod_apply
theorem quotientEquivSigmaZMod_apply (q : orbitRel.Quotient (zpowers g) (G ⧸ H)) (k : ℤ) :
    quotientEquivSigmaZMod H g (g ^ k • q.out') = ⟨q, k⟩ 
Arguments: {G : Type u} [Group G] (H : Subgroup G) (g : G) (q : MulAction.orbitRel.Quotient (↥(Subgroup.zpowers g)) (G ⧸ H)) (k : ℤ)
Goal: (H.quotientEquivSigmaZMod g) (g ^ k • Quotient.out' q) = ⟨q, ↑k⟩
-- Subgroup.transferFunction_apply
theorem transferFunction_apply (q : G ⧸ H) :
    transferFunction H g q =
      g ^ (cast (quotientEquivSigmaZMod H g q).2 : ℤ) *
        (quotientEquivSigmaZMod H g q).1.out'.out' 
Arguments: {G : Type u} [Group G] (H : Subgroup G) (g : G) (q : G ⧸ H)
Goal: H.transferFunction g q =
  g ^ ((H.quotientEquivSigmaZMod g) q).snd.cast * Quotient.out' (Quotient.out' ((H.quotientEquivSigmaZMod g) q).fst)
-- Subgroup.coe_transferFunction
theorem coe_transferFunction (q : G ⧸ H) : ↑(transferFunction H g q) = q 
Arguments: {G : Type u} [Group G] (H : Subgroup G) (g : G) (q : G ⧸ H)
Goal: ↑(H.transferFunction g q) = q
-- Subgroup.mem_transferSet
theorem mem_transferSet (q : G ⧸ H) : transferFunction H g q ∈ transferSet H g 
Arguments: {G : Type u} [Group G] (H : Subgroup G) (g : G) (q : G ⧸ H)
Goal: H.transferFunction g q ∈ H.transferSet g
-- Subgroup.transferTransversal_apply
theorem transferTransversal_apply (q : G ⧸ H) :
    ↑(toEquiv (transferTransversal H g).2 q) = transferFunction H g q 
Arguments: {G : Type u} [Group G] (H : Subgroup G) (g : G) (q : G ⧸ H)
Goal: ↑((Subgroup.MemLeftTransversals.toEquiv ⋯) q) = H.transferFunction g q
-- Subgroup.transferTransversal_apply'
theorem transferTransversal_apply' (q : orbitRel.Quotient (zpowers g) (G ⧸ H))
    (k : ZMod (minimalPeriod (g • ·) q.out')) :
    ↑(toEquiv (transferTransversal H g).2 (g ^ (cast k : ℤ) • q.out')) =
      g ^ (cast k : ℤ) * q.out'.out' 
Arguments: {G : Type u} [Group G] (H : Subgroup G) (g : G) (q : MulAction.orbitRel.Quotient (↥(Subgroup.zpowers g)) (G ⧸ H)) (k : ZMod (Function.minimalPeriod (fun x => g • x) (Quotient.out' q)))
Goal: ↑((Subgroup.MemLeftTransversals.toEquiv ⋯) (g ^ k.cast • Quotient.out' q)) =
  g ^ k.cast * Quotient.out' (Quotient.out' q)
-- Subgroup.transferTransversal_apply''
theorem transferTransversal_apply'' (q : orbitRel.Quotient (zpowers g) (G ⧸ H))
    (k : ZMod (minimalPeriod (g • ·) q.out')) :
    ↑(toEquiv (g • transferTransversal H g).2 (g ^ (cast k : ℤ) • q.out')) =
      if k = 0 then g ^ minimalPeriod (g • ·) q.out' * q.out'.out'
      else g ^ (cast k : ℤ) * q.out'.out' 
Arguments: {G : Type u} [Group G] (H : Subgroup G) (g : G) (q : MulAction.orbitRel.Quotient (↥(Subgroup.zpowers g)) (G ⧸ H)) (k : ZMod (Function.minimalPeriod (fun x => g • x) (Quotient.out' q)))
Goal: ↑((Subgroup.MemLeftTransversals.toEquiv ⋯) (g ^ k.cast • Quotient.out' q)) =
  if k = 0 then g ^ Function.minimalPeriod (fun x => g • x) (Quotient.out' q) * Quotient.out' (Quotient.out' q)
  else g ^ k.cast * Quotient.out' (Quotient.out' q)
-- DomMulAct.mem_stabilizer_iff
lemma mem_stabilizer_iff {g : (Perm α)ᵈᵐᵃ} :
    g ∈ stabilizer (Perm α)ᵈᵐᵃ f ↔ f ∘ (mk.symm g :) = f 
Arguments: {α : Type u_1} {ι : Type u_2} {f : α → ι} {g : (Equiv.Perm α)ᵈᵐᵃ}
Goal: g ∈ MulAction.stabilizer (Equiv.Perm α)ᵈᵐᵃ f ↔ f ∘ ⇑(DomMulAct.mk.symm g) = f
-- DomMulAct.stabilizerEquiv_invFun_eq
lemma stabilizerEquiv_invFun_eq (g : ∀ i, Perm {a // f a = i}) {a : α} {i : ι} (h : f a = i) :
    stabilizerEquiv_invFun g a = g i ⟨a, h⟩ 
Arguments: {α : Type u_1} {ι : Type u_2} {f : α → ι} (g : (i : ι) → Equiv.Perm { a // f a = i }) {a : α} {i : ι} (h : f a = i)
Goal: DomMulAct.stabilizerEquiv_invFun g a = ↑((g i) ⟨a, h⟩)
-- DomMulAct.comp_stabilizerEquiv_invFun
lemma comp_stabilizerEquiv_invFun (g : ∀ i, Perm {a // f a = i}) (a : α) :
    f (stabilizerEquiv_invFun g a) = f a 
Arguments: {α : Type u_1} {ι : Type u_2} {f : α → ι} (g : (i : ι) → Equiv.Perm { a // f a = i }) (a : α)
Goal: f (DomMulAct.stabilizerEquiv_invFun g a) = f a
-- DomMulAct.stabilizerMulEquiv_apply
lemma stabilizerMulEquiv_apply (g : (stabilizer (Perm α)ᵈᵐᵃ f)ᵐᵒᵖ) {a : α} {i : ι} (h : f a = i) :
    ((stabilizerMulEquiv f)) g i ⟨a, h⟩ = (mk.symm g.unop : Equiv.Perm α) a 
Arguments: {α : Type u_1} {ι : Type u_2} {f : α → ι} (g : (↥(MulAction.stabilizer (Equiv.Perm α)ᵈᵐᵃ f))ᵐᵒᵖ) {a : α} {i : ι} (h : f a = i)
Goal: ↑(((DomMulAct.stabilizerMulEquiv f) g i) ⟨a, h⟩) = (DomMulAct.mk.symm ↑(MulOpposite.unop g)) a
-- DomMulAct.stabilizer_card
theorem stabilizer_card :
    Fintype.card {g : Perm α // f ∘ g = f} = ∏ i, (Fintype.card {a // f a = i})! 
Arguments: {α : Type u_1} {ι : Type u_2} (f : α → ι) [Fintype α] [Fintype ι] [DecidableEq α] [DecidableEq ι]
Goal: Fintype.card { g // f ∘ ⇑g = f } = ∏ i : ι, (Fintype.card { a // f a = i }).factorial
-- _private.Mathlib.GroupTheory.Coxeter.Length.0.CoxeterSystem.exists_word_with_prod
private theorem exists_word_with_prod (w : W) : ∃ n ω, ω.length = n ∧ π ω = w 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w : W)
Goal: ∃ n ω, ω.length = n ∧ cs.wordProd ω = w
-- CoxeterSystem.exists_reduced_word
theorem exists_reduced_word (w : W) : ∃ ω, ω.length = ℓ w ∧ w = π ω 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w : W)
Goal: ∃ ω, ω.length = cs.length w ∧ w = cs.wordProd ω
-- CoxeterSystem.length_wordProd_le
theorem length_wordProd_le (ω : List B) : ℓ (π ω) ≤ ω.length 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (ω : List B)
Goal: cs.length (cs.wordProd ω) ≤ ω.length
-- CoxeterSystem.length_one
@[simp] theorem length_one : ℓ (1 : W) = 0 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W)
Goal: cs.length 1 = 0
-- CoxeterSystem.length_eq_zero_iff
@[simp]
theorem length_eq_zero_iff {w : W} : ℓ w = 0 ↔ w = 1 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) {w : W}
Goal: cs.length w = 0 ↔ w = 1
-- CoxeterSystem.length_inv
@[simp]
theorem length_inv (w : W) : ℓ (w⁻¹) = ℓ w 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w : W)
Goal: cs.length w⁻¹ = cs.length w
-- CoxeterSystem.length_mul_le
theorem length_mul_le (w₁ w₂ : W) :
    ℓ (w₁ * w₂) ≤ ℓ w₁ + ℓ w₂ 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w₁ w₂ : W)
Goal: cs.length (w₁ * w₂) ≤ cs.length w₁ + cs.length w₂
-- CoxeterSystem.length_mul_ge_length_sub_length
theorem length_mul_ge_length_sub_length (w₁ w₂ : W) :
    ℓ w₁ - ℓ w₂ ≤ ℓ (w₁ * w₂) 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w₁ w₂ : W)
Goal: cs.length w₁ - cs.length w₂ ≤ cs.length (w₁ * w₂)
-- CoxeterSystem.length_mul_ge_length_sub_length'
theorem length_mul_ge_length_sub_length' (w₁ w₂ : W) :
    ℓ w₂ - ℓ w₁ ≤ ℓ (w₁ * w₂) 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w₁ w₂ : W)
Goal: cs.length w₂ - cs.length w₁ ≤ cs.length (w₁ * w₂)
-- CoxeterSystem.length_mul_ge_max
theorem length_mul_ge_max (w₁ w₂ : W) :
    max (ℓ w₁ - ℓ w₂) (ℓ w₂ - ℓ w₁) ≤ ℓ (w₁ * w₂) 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w₁ w₂ : W)
Goal: max (cs.length w₁ - cs.length w₂) (cs.length w₂ - cs.length w₁) ≤ cs.length (w₁ * w₂)
-- CoxeterSystem.lengthParity_simple
theorem lengthParity_simple (i : B) :
    cs.lengthParity (s i) = Multiplicative.ofAdd 1 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (i : B)
Goal: cs.lengthParity (cs.simple i) = Multiplicative.ofAdd 1
-- CoxeterSystem.lengthParity_comp_simple
theorem lengthParity_comp_simple :
    cs.lengthParity ∘ cs.simple = fun _ ↦ Multiplicative.ofAdd 1 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W)
Goal: ⇑cs.lengthParity ∘ cs.simple = fun x => Multiplicative.ofAdd 1
-- CoxeterSystem.lengthParity_eq_ofAdd_length
theorem lengthParity_eq_ofAdd_length (w : W) :
    cs.lengthParity w = Multiplicative.ofAdd (↑(ℓ w)) 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w : W)
Goal: cs.lengthParity w = Multiplicative.ofAdd ↑(cs.length w)
-- CoxeterSystem.length_mul_mod_two
theorem length_mul_mod_two (w₁ w₂ : W) : ℓ (w₁ * w₂) % 2 = (ℓ w₁ + ℓ w₂) % 2 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w₁ w₂ : W)
Goal: cs.length (w₁ * w₂) % 2 = (cs.length w₁ + cs.length w₂) % 2
-- CoxeterSystem.length_simple
@[simp]
theorem length_simple (i : B) : ℓ (s i) = 1 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (i : B)
Goal: cs.length (cs.simple i) = 1
-- CoxeterSystem.length_eq_one_iff
theorem length_eq_one_iff {w : W} : ℓ w = 1 ↔ ∃ i : B, w = s i 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) {w : W}
Goal: cs.length w = 1 ↔ ∃ i, w = cs.simple i
-- CoxeterSystem.length_mul_simple_ne
theorem length_mul_simple_ne (w : W) (i : B) : ℓ (w * s i) ≠ ℓ w 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w : W) (i : B)
Goal: cs.length (w * cs.simple i) ≠ cs.length w
-- CoxeterSystem.length_simple_mul_ne
theorem length_simple_mul_ne (w : W) (i : B) : ℓ (s i * w) ≠ ℓ w 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w : W) (i : B)
Goal: cs.length (cs.simple i * w) ≠ cs.length w
-- CoxeterSystem.length_mul_simple
theorem length_mul_simple (w : W) (i : B) :
    ℓ (w * s i) = ℓ w + 1 ∨ ℓ (w * s i) + 1 = ℓ w 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w : W) (i : B)
Goal: cs.length (w * cs.simple i) = cs.length w + 1 ∨ cs.length (w * cs.simple i) + 1 = cs.length w
-- CoxeterSystem.length_simple_mul
theorem length_simple_mul (w : W) (i : B) :
    ℓ (s i * w) = ℓ w + 1 ∨ ℓ (s i * w) + 1 = ℓ w 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w : W) (i : B)
Goal: cs.length (cs.simple i * w) = cs.length w + 1 ∨ cs.length (cs.simple i * w) + 1 = cs.length w
-- CoxeterSystem.isReduced_reverse
@[simp]
theorem isReduced_reverse (ω : List B) : cs.IsReduced (ω.reverse) ↔ cs.IsReduced ω 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (ω : List B)
Goal: cs.IsReduced ω.reverse ↔ cs.IsReduced ω
-- CoxeterSystem.exists_reduced_word'
theorem exists_reduced_word' (w : W) : ∃ ω : List B, cs.IsReduced ω ∧ w = π ω 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (w : W)
Goal: ∃ ω, cs.IsReduced ω ∧ w = cs.wordProd ω
-- _private.Mathlib.GroupTheory.Coxeter.Length.0.CoxeterSystem.isReduced_take_and_drop
private theorem isReduced_take_and_drop {ω : List B} (hω : cs.IsReduced ω) (j : ℕ) :
    cs.IsReduced (ω.take j) ∧ cs.IsReduced (ω.drop j) 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) {ω : List B} (hω : cs.IsReduced ω) (j : ℕ)
Goal: cs.IsReduced (List.take j ω) ∧ cs.IsReduced (List.drop j ω)
-- CoxeterSystem.isReduced_take
theorem isReduced_take {ω : List B} (hω : cs.IsReduced ω) (j : ℕ) : cs.IsReduced (ω.take j) 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) {ω : List B} (hω : cs.IsReduced ω) (j : ℕ)
Goal: cs.IsReduced (List.take j ω)
-- CoxeterSystem.isReduced_drop
theorem isReduced_drop {ω : List B} (hω : cs.IsReduced ω) (j : ℕ) : cs.IsReduced (ω.drop j) 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) {ω : List B} (hω : cs.IsReduced ω) (j : ℕ)
Goal: cs.IsReduced (List.drop j ω)
-- CoxeterSystem.not_isReduced_alternatingWord
theorem not_isReduced_alternatingWord (i i' : B) {m : ℕ} (hM : M i i' ≠ 0) (hm : m > M i i') :
    ¬cs.IsReduced (alternatingWord i i' m) 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (i i' : B) {m : ℕ} (hM : M.M i i' ≠ 0) (hm : m > M.M i i')
Goal: ¬cs.IsReduced (CoxeterSystem.alternatingWord i i' m)
-- CoxeterSystem.not_isLeftDescent_one
theorem not_isLeftDescent_one (i : B) : ¬cs.IsLeftDescent 1 i 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (i : B)
Goal: ¬cs.IsLeftDescent 1 i
-- CoxeterSystem.not_isRightDescent_one
theorem not_isRightDescent_one (i : B) : ¬cs.IsRightDescent 1 i 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (i : B)
Goal: ¬cs.IsRightDescent 1 i
-- CoxeterSystem.isLeftDescent_inv_iff
theorem isLeftDescent_inv_iff {w : W} {i : B} :
    cs.IsLeftDescent w⁻¹ i ↔ cs.IsRightDescent w i 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) {w : W} {i : B}
Goal: cs.IsLeftDescent w⁻¹ i ↔ cs.IsRightDescent w i
-- CoxeterSystem.isRightDescent_inv_iff
theorem isRightDescent_inv_iff {w : W} {i : B} :
    cs.IsRightDescent w⁻¹ i ↔ cs.IsLeftDescent w i 
Arguments: {B : Type u_1} {W : Type u_2} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) {w : W} {i : B}
Goal: cs.IsRightDescent w⁻¹ i ↔ cs.IsLeftDescent w i