Theorem: CoxeterSystem.prod_alternatingWord_eq_mul_pow
File: Mathlib/GroupTheory/Coxeter/Basic.lean

tactic: induction' m with m ih
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
m : ℕ
⊢ cs.wordProd (alternatingWord i i' m) = (if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)
state_after: case zero
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
⊢ cs.wordProd (alternatingWord i i' 0) = (if Even 0 then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (0 / 2)

case succ
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
m : ℕ
ih :
  cs.wordProd (alternatingWord i i' m) = (if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)
⊢ cs.wordProd (alternatingWord i i' (m + 1)) =
    (if Even (m + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((m + 1) / 2)

tactic: simp [alternatingWord]
state_before: case zero
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
⊢ cs.wordProd (alternatingWord i i' 0) = (if Even 0 then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (0 / 2)
state_after: no goals

tactic: rw [alternatingWord_succ', wordProd_cons, ih]
state_before: case succ
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
m : ℕ
ih :
  cs.wordProd (alternatingWord i i' m) = (if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)
⊢ cs.wordProd (alternatingWord i i' (m + 1)) =
    (if Even (m + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((m + 1) / 2)
state_after: case succ
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
m : ℕ
ih :
  cs.wordProd (alternatingWord i i' m) = (if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)
⊢ cs.simple (if Even m then i' else i) *
      ((if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)) =
    (if Even (m + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((m + 1) / 2)

tactic: rcases Nat.even_or_odd m with even | odd
state_before: case succ
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
m : ℕ
ih :
  cs.wordProd (alternatingWord i i' m) = (if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)
⊢ cs.simple (if Even m then i' else i) *
      ((if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)) =
    (if Even (m + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((m + 1) / 2)
state_after: case succ.inl
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
m : ℕ
ih :
  cs.wordProd (alternatingWord i i' m) = (if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)
even : Even m
⊢ cs.simple (if Even m then i' else i) *
      ((if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)) =
    (if Even (m + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((m + 1) / 2)

case succ.inr
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
m : ℕ
ih :
  cs.wordProd (alternatingWord i i' m) = (if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)
odd : Odd m
⊢ cs.simple (if Even m then i' else i) *
      ((if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)) =
    (if Even (m + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((m + 1) / 2)

tactic: rcases even with ⟨k, rfl⟩
state_before: case succ.inl
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
m : ℕ
ih :
  cs.wordProd (alternatingWord i i' m) = (if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)
even : Even m
⊢ cs.simple (if Even m then i' else i) *
      ((if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)) =
    (if Even (m + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((m + 1) / 2)
state_after: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
⊢ cs.simple (if Even (k + k) then i' else i) *
      ((if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)) =
    (if Even (k + k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k + 1) / 2)

tactic: ring_nf
state_before: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
⊢ cs.simple (if Even (k + k) then i' else i) *
      ((if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)) =
    (if Even (k + k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k + 1) / 2)
state_after: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
⊢ cs.simple (if Even (k * 2) then i' else i) *
      ((if Even (k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (k * 2 / 2)) =
    (if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)

tactic: have : Odd (1 + k * 2) := by use k; ring
state_before: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
⊢ cs.simple (if Even (k * 2) then i' else i) *
      ((if Even (k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (k * 2 / 2)) =
    (if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)
state_after: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
this : Odd (1 + k * 2)
⊢ cs.simple (if Even (k * 2) then i' else i) *
      ((if Even (k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (k * 2 / 2)) =
    (if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)

tactic: simp [← two_mul, Nat.odd_iff_not_even.mp this]
state_before: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
this : Odd (1 + k * 2)
⊢ cs.simple (if Even (k * 2) then i' else i) *
      ((if Even (k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (k * 2 / 2)) =
    (if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)
state_after: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
this : Odd (1 + k * 2)
⊢ (cs.simple i * cs.simple i') ^ k = (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)

tactic: rw [Nat.add_mul_div_right _ _ (by norm_num : 0 < 2)]
state_before: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
this : Odd (1 + k * 2)
⊢ (cs.simple i * cs.simple i') ^ k = (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)
state_after: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
this : Odd (1 + k * 2)
⊢ (cs.simple i * cs.simple i') ^ k = (cs.simple i * cs.simple i') ^ (1 / 2 + k)

tactic: norm_num
state_before: case succ.inl.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
this : Odd (1 + k * 2)
⊢ (cs.simple i * cs.simple i') ^ k = (cs.simple i * cs.simple i') ^ (1 / 2 + k)
state_after: no goals

tactic: use k
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
⊢ Odd (1 + k * 2)
state_after: case h
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
⊢ 1 + k * 2 = 2 * k + 1

tactic: ring
state_before: case h
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
⊢ 1 + k * 2 = 2 * k + 1
state_after: no goals

tactic: norm_num
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (k + k)) =
    (if Even (k + k) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((k + k) / 2)
this : Odd (1 + k * 2)
⊢ 0 < 2
state_after: no goals

tactic: rcases odd with ⟨k, rfl⟩
state_before: case succ.inr
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
m : ℕ
ih :
  cs.wordProd (alternatingWord i i' m) = (if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)
odd : Odd m
⊢ cs.simple (if Even m then i' else i) *
      ((if Even m then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ (m / 2)) =
    (if Even (m + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((m + 1) / 2)
state_after: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
⊢ cs.simple (if Even (2 * k + 1) then i' else i) *
      ((if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)) =
    (if Even (2 * k + 1 + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1 + 1) / 2)

tactic: ring_nf
state_before: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
⊢ cs.simple (if Even (2 * k + 1) then i' else i) *
      ((if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)) =
    (if Even (2 * k + 1 + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1 + 1) / 2)
state_after: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
⊢ cs.simple (if Even (1 + k * 2) then i' else i) *
      ((if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)) =
    (if Even (2 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 + k * 2) / 2)

tactic: have h₁ : Odd (1 + k * 2) := by use k; ring
state_before: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
⊢ cs.simple (if Even (1 + k * 2) then i' else i) *
      ((if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)) =
    (if Even (2 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 + k * 2) / 2)
state_after: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
⊢ cs.simple (if Even (1 + k * 2) then i' else i) *
      ((if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)) =
    (if Even (2 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 + k * 2) / 2)

tactic: have h₂ : Even (2 + k * 2) := by use (k + 1); ring
state_before: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
⊢ cs.simple (if Even (1 + k * 2) then i' else i) *
      ((if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)) =
    (if Even (2 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 + k * 2) / 2)
state_after: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
h₂ : Even (2 + k * 2)
⊢ cs.simple (if Even (1 + k * 2) then i' else i) *
      ((if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)) =
    (if Even (2 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 + k * 2) / 2)

tactic: simp [Nat.odd_iff_not_even.mp h₁, h₂]
state_before: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
h₂ : Even (2 + k * 2)
⊢ cs.simple (if Even (1 + k * 2) then i' else i) *
      ((if Even (1 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)) =
    (if Even (2 + k * 2) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 + k * 2) / 2)
state_after: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
h₂ : Even (2 + k * 2)
⊢ cs.simple i * (cs.simple i' * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)) =
    (cs.simple i * cs.simple i') ^ (k + 1)

tactic: rw [Nat.add_mul_div_right _ _ (by norm_num : 0 < 2)]
state_before: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
h₂ : Even (2 + k * 2)
⊢ cs.simple i * (cs.simple i' * (cs.simple i * cs.simple i') ^ ((1 + k * 2) / 2)) =
    (cs.simple i * cs.simple i') ^ (k + 1)
state_after: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
h₂ : Even (2 + k * 2)
⊢ cs.simple i * (cs.simple i' * (cs.simple i * cs.simple i') ^ (1 / 2 + k)) = (cs.simple i * cs.simple i') ^ (k + 1)

tactic: norm_num
state_before: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
h₂ : Even (2 + k * 2)
⊢ cs.simple i * (cs.simple i' * (cs.simple i * cs.simple i') ^ (1 / 2 + k)) = (cs.simple i * cs.simple i') ^ (k + 1)
state_after: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
h₂ : Even (2 + k * 2)
⊢ cs.simple i * (cs.simple i' * (cs.simple i * cs.simple i') ^ k) = (cs.simple i * cs.simple i') ^ (k + 1)

tactic: rw [pow_succ', mul_assoc]
state_before: case succ.inr.intro
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
h₂ : Even (2 + k * 2)
⊢ cs.simple i * (cs.simple i' * (cs.simple i * cs.simple i') ^ k) = (cs.simple i * cs.simple i') ^ (k + 1)
state_after: no goals

tactic: use k
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
⊢ Odd (1 + k * 2)
state_after: case h
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
⊢ 1 + k * 2 = 2 * k + 1

tactic: ring
state_before: case h
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
⊢ 1 + k * 2 = 2 * k + 1
state_after: no goals

tactic: use (k + 1)
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
⊢ Even (2 + k * 2)
state_after: case h
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
⊢ 2 + k * 2 = k + 1 + (k + 1)

tactic: ring
state_before: case h
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
⊢ 2 + k * 2 = k + 1 + (k + 1)
state_after: no goals

tactic: norm_num
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
k : ℕ
ih :
  cs.wordProd (alternatingWord i i' (2 * k + 1)) =
    (if Even (2 * k + 1) then 1 else cs.simple i') * (cs.simple i * cs.simple i') ^ ((2 * k + 1) / 2)
h₁ : Odd (1 + k * 2)
h₂ : Even (2 + k * 2)
⊢ 0 < 2
state_after: no goals