Theorem: ModuleCat.FilteredColimits.colimitSMulAux_eq_of_rel
File: Mathlib/Algebra/Category/ModuleCat/FilteredColimits.lean

Proof steps:
state_before: R : Type u
inst✝² : Ring R
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ ModuleCatMax R
r : R
x y : (j : J) × ↑(F.obj j)
h : Types.FilteredColimit.Rel (F ⋙ forget (ModuleCat R)) x y
⊢ colimitSMulAux F r x = colimitSMulAux F r y
state_after: case h
R : Type u
inst✝² : Ring R
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ ModuleCatMax R
r : R
x y : (j : J) × ↑(F.obj j)
h : Types.FilteredColimit.Rel (F ⋙ forget (ModuleCat R)) x y
⊢ ∃ k f g, (F.map f) ⟨x.fst, r • x.snd⟩.snd = (F.map g) ⟨y.fst, r • y.snd⟩.snd
tactic: apply M.mk_eq
state_before: case h
R : Type u
inst✝² : Ring R
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ ModuleCatMax R
r : R
x y : (j : J) × ↑(F.obj j)
h : Types.FilteredColimit.Rel (F ⋙ forget (ModuleCat R)) x y
⊢ ∃ k f g, (F.map f) ⟨x.fst, r • x.snd⟩.snd = (F.map g) ⟨y.fst, r • y.snd⟩.snd
state_after: case h.intro.intro.intro
R : Type u
inst✝² : Ring R
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ ModuleCatMax R
r : R
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget (ModuleCat R)).map f x.snd = (F ⋙ forget (ModuleCat R)).map g y.snd
⊢ ∃ k f g, (F.map f) ⟨x.fst, r • x.snd⟩.snd = (F.map g) ⟨y.fst, r • y.snd⟩.snd
tactic: obtain ⟨k, f, g, hfg⟩ := h
state_before: case h.intro.intro.intro
R : Type u
inst✝² : Ring R
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ ModuleCatMax R
r : R
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget (ModuleCat R)).map f x.snd = (F ⋙ forget (ModuleCat R)).map g y.snd
⊢ ∃ k f g, (F.map f) ⟨x.fst, r • x.snd⟩.snd = (F.map g) ⟨y.fst, r • y.snd⟩.snd
state_after: case h
R : Type u
inst✝² : Ring R
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ ModuleCatMax R
r : R
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget (ModuleCat R)).map f x.snd = (F ⋙ forget (ModuleCat R)).map g y.snd
⊢ (F.map f) ⟨x.fst, r • x.snd⟩.snd = (F.map g) ⟨y.fst, r • y.snd⟩.snd
tactic: use k, f, g
state_before: case h
R : Type u
inst✝² : Ring R
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ ModuleCatMax R
r : R
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget (ModuleCat R)).map f x.snd = (F ⋙ forget (ModuleCat R)).map g y.snd
⊢ (F.map f) ⟨x.fst, r • x.snd⟩.snd = (F.map g) ⟨y.fst, r • y.snd⟩.snd
state_after: case h
R : Type u
inst✝² : Ring R
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ ModuleCatMax R
r : R
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F.map f) x.snd = (F.map g) y.snd
⊢ (F.map f) ⟨x.fst, r • x.snd⟩.snd = (F.map g) ⟨y.fst, r • y.snd⟩.snd
tactic: simp only [Functor.comp_obj, Functor.comp_map, forget_map] at hfg
state_before: case h
R : Type u
inst✝² : Ring R
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ ModuleCatMax R
r : R
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F.map f) x.snd = (F.map g) y.snd
⊢ (F.map f) ⟨x.fst, r • x.snd⟩.snd = (F.map g) ⟨y.fst, r • y.snd⟩.snd
state_after: no goals
tactic: simp [hfg]