Theorem: ModuleCat.directLimitDiagram_obj
File: Mathlib/Algebra/Category/ModuleCat/Limits.lean

Proof steps:
state_before: R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
i : ι
⊢ { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (𝟙 i) =
    𝟙 ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj i)
state_after: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
i : ι
⊢ ∀ (x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj i)),
    ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (𝟙 i)) x =
      (𝟙 ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj i)) x
tactic: apply LinearMap.ext
state_before: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
i : ι
⊢ ∀ (x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj i)),
    ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (𝟙 i)) x =
      (𝟙 ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj i)) x
state_after: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
i : ι
x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj i)
⊢ ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (𝟙 i)) x =
    (𝟙 ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj i)) x
tactic: intro x
state_before: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
i : ι
x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj i)
⊢ ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (𝟙 i)) x =
    (𝟙 ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj i)) x
state_after: no goals
tactic: apply Module.DirectedSystem.map_self
state_before: R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
X✝ Y✝ Z✝ : ι
hij : X✝ ⟶ Y✝
hjk : Y✝ ⟶ Z✝
⊢ { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (hij ≫ hjk) =
    { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hij ≫
      { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hjk
state_after: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
X✝ Y✝ Z✝ : ι
hij : X✝ ⟶ Y✝
hjk : Y✝ ⟶ Z✝
⊢ ∀ (x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj X✝)),
    ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (hij ≫ hjk)) x =
      ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hij ≫
          { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hjk)
        x
tactic: apply LinearMap.ext
state_before: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
X✝ Y✝ Z✝ : ι
hij : X✝ ⟶ Y✝
hjk : Y✝ ⟶ Z✝
⊢ ∀ (x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj X✝)),
    ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (hij ≫ hjk)) x =
      ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hij ≫
          { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hjk)
        x
state_after: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
X✝ Y✝ Z✝ : ι
hij : X✝ ⟶ Y✝
hjk : Y✝ ⟶ Z✝
x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj X✝)
⊢ ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (hij ≫ hjk)) x =
    ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hij ≫
        { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hjk)
      x
tactic: intro x
state_before: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
X✝ Y✝ Z✝ : ι
hij : X✝ ⟶ Y✝
hjk : Y✝ ⟶ Z✝
x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj X✝)
⊢ ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (hij ≫ hjk)) x =
    ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hij ≫
        { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hjk)
      x
state_after: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
X✝ Y✝ Z✝ : ι
hij : X✝ ⟶ Y✝
hjk : Y✝ ⟶ Z✝
x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj X✝)
⊢ ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hij ≫
        { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hjk)
      x =
    ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (hij ≫ hjk)) x
tactic: symm
state_before: case h
R : Type u
inst✝⁵ : Ring R
J : Type v
inst✝⁴ : Category.{t, v} J
F : J ⥤ ModuleCat R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type v
inst✝² : (i : ι) → AddCommGroup (G i)
inst✝¹ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
X✝ Y✝ Z✝ : ι
hij : X✝ ⟶ Y✝
hjk : Y✝ ⟶ Z✝
x : ↑({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.obj X✝)
⊢ ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hij ≫
        { obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map hjk)
      x =
    ({ obj := fun i => of R (G i), map := fun {X Y} hij => f X Y ⋯ }.map (hij ≫ hjk)) x
state_after: no goals
tactic: apply Module.DirectedSystem.map_map