Theorem: CompositionSeries.mem_snoc
File: Mathlib/Order/JordanHolder.lean

tactic: simp only [snoc, mem_def]
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x y : X
hsat : IsMaximal (top s) x
⊢ y ∈ snoc s x hsat ↔ y ∈ s ∨ y = x

tactic: constructor
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x y : X
hsat : IsMaximal (top s) x
⊢ y ∈ range (Fin.snoc s.series x) ↔ y ∈ range s.series ∨ y = x

tactic: rintro ⟨i, rfl⟩
state_before: case mp
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x y : X
hsat : IsMaximal (top s) x
⊢ y ∈ range (Fin.snoc s.series x) → y ∈ range s.series ∨ y = x

tactic: refine' Fin.lastCases _ (fun i => _) i
state_before: case mp.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x : X
hsat : IsMaximal (top s) x
i : Fin (s.length + 1 + 1)
⊢ Fin.snoc s.series x i ∈ range s.series ∨ Fin.snoc s.series x i = x

tactic: right
state_before: case mp.intro.refine'_1
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x : X
hsat : IsMaximal (top s) x
i : Fin (s.length + 1 + 1)
⊢ Fin.snoc s.series x (Fin.last (s.length + 1)) ∈ range s.series ∨ Fin.snoc s.series x (Fin.last (s.length + 1)) = x

tactic: simp
state_before: case mp.intro.refine'_1.h
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x : X
hsat : IsMaximal (top s) x
i : Fin (s.length + 1 + 1)
⊢ Fin.snoc s.series x (Fin.last (s.length + 1)) = x

tactic: left
state_before: case mp.intro.refine'_2
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x : X
hsat : IsMaximal (top s) x
i✝ : Fin (s.length + 1 + 1)
i : Fin (s.length + 1)
⊢ Fin.snoc s.series x (↑Fin.castSucc i) ∈ range s.series ∨ Fin.snoc s.series x (↑Fin.castSucc i) = x

tactic: simp
state_before: case mp.intro.refine'_2.h
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x : X
hsat : IsMaximal (top s) x
i✝ : Fin (s.length + 1 + 1)
i : Fin (s.length + 1)
⊢ Fin.snoc s.series x (↑Fin.castSucc i) ∈ range s.series

tactic: intro h
state_before: case mpr
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x y : X
hsat : IsMaximal (top s) x
⊢ y ∈ range s.series ∨ y = x → y ∈ range (Fin.snoc s.series x)

tactic: rcases h with (⟨i, rfl⟩ | rfl)
state_before: case mpr
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x y : X
hsat : IsMaximal (top s) x
h : y ∈ range s.series ∨ y = x
⊢ y ∈ range (Fin.snoc s.series x)

tactic: use Fin.castSucc i
state_before: case mpr.inl.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x : X
hsat : IsMaximal (top s) x
i : Fin (s.length + 1)
⊢ series s i ∈ range (Fin.snoc s.series x)

tactic: simp
state_before: case mpr.inl.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x : X
hsat : IsMaximal (top s) x
i : Fin (s.length + 1)
⊢ Fin.snoc s.series x (↑Fin.castSucc i) = series s i

tactic: use Fin.last _
state_before: case mpr.inr
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
y : X
hsat : IsMaximal (top s) y
⊢ y ∈ range (Fin.snoc s.series y)

tactic: simp
state_before: case mpr.inr
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
y : X
hsat : IsMaximal (top s) y
⊢ Fin.snoc s.series y (Fin.last (s.length + 1)) = y