Theorem: CoxeterSystem.length_mul_simple
File: Mathlib/GroupTheory/Coxeter/Length.lean

tactic: rcases Nat.lt_or_gt_of_ne (cs.length_mul_simple_ne w i) with lt | gt
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length (w * cs.simple i) = cs.length w + 1 ∨ cs.length (w * cs.simple i) + 1 = cs.length w
state_after: case inl
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
lt : cs.length (w * cs.simple i) < cs.length w
⊢ cs.length (w * cs.simple i) = cs.length w + 1 ∨ cs.length (w * cs.simple i) + 1 = cs.length w

case inr
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
gt : cs.length (w * cs.simple i) > cs.length w
⊢ cs.length (w * cs.simple i) = cs.length w + 1 ∨ cs.length (w * cs.simple i) + 1 = cs.length w

tactic: right
state_before: case inl
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
lt : cs.length (w * cs.simple i) < cs.length w
⊢ cs.length (w * cs.simple i) = cs.length w + 1 ∨ cs.length (w * cs.simple i) + 1 = cs.length w
state_after: case inl.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
lt : cs.length (w * cs.simple i) < cs.length w
⊢ cs.length (w * cs.simple i) + 1 = cs.length w

tactic: have length_ge := cs.length_mul_ge_length_sub_length w (s i)
state_before: case inl.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
lt : cs.length (w * cs.simple i) < cs.length w
⊢ cs.length (w * cs.simple i) + 1 = cs.length w
state_after: case inl.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
lt : cs.length (w * cs.simple i) < cs.length w
length_ge : cs.length w - cs.length (cs.simple i) ≤ cs.length (w * cs.simple i)
⊢ cs.length (w * cs.simple i) + 1 = cs.length w

tactic: simp only [length_simple, tsub_le_iff_right] at length_ge
state_before: case inl.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
lt : cs.length (w * cs.simple i) < cs.length w
length_ge : cs.length w - cs.length (cs.simple i) ≤ cs.length (w * cs.simple i)
⊢ cs.length (w * cs.simple i) + 1 = cs.length w
state_after: case inl.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
lt : cs.length (w * cs.simple i) < cs.length w
length_ge : cs.length w ≤ cs.length (w * cs.simple i) + 1
⊢ cs.length (w * cs.simple i) + 1 = cs.length w

tactic: linarith
state_before: case inl.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
lt : cs.length (w * cs.simple i) < cs.length w
length_ge : cs.length w ≤ cs.length (w * cs.simple i) + 1
⊢ cs.length (w * cs.simple i) + 1 = cs.length w
state_after: no goals

tactic: left
state_before: case inr
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
gt : cs.length (w * cs.simple i) > cs.length w
⊢ cs.length (w * cs.simple i) = cs.length w + 1 ∨ cs.length (w * cs.simple i) + 1 = cs.length w
state_after: case inr.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
gt : cs.length (w * cs.simple i) > cs.length w
⊢ cs.length (w * cs.simple i) = cs.length w + 1

tactic: have length_le := cs.length_mul_le w (s i)
state_before: case inr.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
gt : cs.length (w * cs.simple i) > cs.length w
⊢ cs.length (w * cs.simple i) = cs.length w + 1
state_after: case inr.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
gt : cs.length (w * cs.simple i) > cs.length w
length_le : cs.length (w * cs.simple i) ≤ cs.length w + cs.length (cs.simple i)
⊢ cs.length (w * cs.simple i) = cs.length w + 1

tactic: simp only [length_simple] at length_le
state_before: case inr.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
gt : cs.length (w * cs.simple i) > cs.length w
length_le : cs.length (w * cs.simple i) ≤ cs.length w + cs.length (cs.simple i)
⊢ cs.length (w * cs.simple i) = cs.length w + 1
state_after: case inr.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
gt : cs.length (w * cs.simple i) > cs.length w
length_le : cs.length (w * cs.simple i) ≤ cs.length w + 1
⊢ cs.length (w * cs.simple i) = cs.length w + 1

tactic: linarith
state_before: case inr.h
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
gt : cs.length (w * cs.simple i) > cs.length w
length_le : cs.length (w * cs.simple i) ≤ cs.length w + 1
⊢ cs.length (w * cs.simple i) = cs.length w + 1
state_after: no goals