Module: Mathlib.Algebra.Category.Ring.FilteredColimits

Goal state before:
pp: J : Type v
inst✝¹ : SmallCategory J
F : J ⥤ SemiRingCat
inst✝ : IsFiltered J
j₁ : J
x : ((F ⋙ forget₂ SemiRingCat MonCat) ⋙ forget MonCat).obj j₁
j₂ : J
y : ((F ⋙ forget₂ SemiRingCat MonCat) ⋙ forget MonCat).obj j₂
j₃ : J
z : ((F ⋙ forget₂ SemiRingCat MonCat) ⋙ forget MonCat).obj j₃
k : J := IsFiltered.max₃ j₁ j₂ j₃
f : j₁ ⟶ IsFiltered.max₃ j₁ j₂ j₃ := IsFiltered.firstToMax₃ j₁ j₂ j₃
g : j₂ ⟶ IsFiltered.max₃ j₁ j₂ j₃ := IsFiltered.secondToMax₃ j₁ j₂ j₃
h : j₃ ⟶ IsFiltered.max₃ j₁ j₂ j₃ := IsFiltered.thirdToMax₃ j₁ j₂ j₃
⊢ MonCat.FilteredColimits.M.mk (F ⋙ forget₂ SemiRingCat MonCat)
      ⟨k,
        (ConcreteCategory.hom ((F ⋙ forget₂ SemiRingCat MonCat).map f)) x *
          (ConcreteCategory.hom (𝟙 ((F ⋙ forget₂ SemiRingCat MonCat).obj k)))
            ((ConcreteCategory.hom (((F ⋙ forget₂ SemiRingCat AddCommMonCat) ⋙ forget₂ AddCommMonCat AddMonCat).map g))
                y +
              (ConcreteCategory.hom (((F ⋙ forget₂ SemiRingCat AddCommMonCat) ⋙ forget₂ AddCommMonCat AddMonCat).map h))
                z)⟩ =
    AddMonCat.FilteredColimits.M.mk ((F ⋙ forget₂ SemiRingCat AddCommMonCat) ⋙ forget₂ AddCommMonCat AddMonCat)
      ⟨k,
        (ConcreteCategory.hom (𝟙 (((F ⋙ forget₂ SemiRingCat AddCommMonCat) ⋙ forget₂ AddCommMonCat AddMonCat).obj k)))
            ((ConcreteCategory.hom ((F ⋙ forget₂ SemiRingCat MonCat).map f)) x *
              (ConcreteCategory.hom ((F ⋙ forget₂ SemiRingCat MonCat).map g)) y) +
          (ConcreteCategory.hom (𝟙 (((F ⋙ forget₂ SemiRingCat AddCommMonCat) ⋙ forget₂ AddCommMonCat AddMonCat).obj k)))
            ((ConcreteCategory.hom ((F ⋙ forget₂ SemiRingCat MonCat).map f)) x *
              (ConcreteCategory.hom ((F ⋙ forget₂ SemiRingCat MonCat).map h)) z)⟩

Tactic:
left_distrib (F.map f x) (F.map g y) (F.map h z)

Goal state after:
J : Type v
inst✝¹ : SmallCategory J
F : J ⥤ SemiRingCat
inst✝ : IsFiltered J
j₁ : J
x : ((F ⋙ forget₂ SemiRingCat MonCat) ⋙ forget MonCat).obj j₁
j₂ : J
y : ((F ⋙ forget₂ SemiRingCat MonCat) ⋙ forget MonCat).obj j₂
j₃ : J
z : ((F ⋙ forget₂ SemiRingCat MonCat) ⋙ forget MonCat).obj j₃
k : J := IsFiltered.max₃ j₁ j₂ j₃
f : j₁ ⟶ IsFiltered.max₃ j₁ j₂ j₃ := IsFiltered.firstToMax₃ j₁ j₂ j₃
g : j₂ ⟶ IsFiltered.max₃ j₁ j₂ j₃ := IsFiltered.secondToMax₃ j₁ j₂ j₃
h : j₃ ⟶ IsFiltered.max₃ j₁ j₂ j₃ := IsFiltered.thirdToMax₃ j₁ j₂ j₃
⊢ MonCat.FilteredColimits.M.mk (F ⋙ forget₂ SemiRingCat MonCat)
      ⟨k,
        (ConcreteCategory.hom (F.map f)) x * (ConcreteCategory.hom (F.map g)) y +
          (ConcreteCategory.hom (F.map f)) x * (ConcreteCategory.hom (F.map h)) z⟩ =
    AddMonCat.FilteredColimits.M.mk ((F ⋙ forget₂ SemiRingCat AddCommMonCat) ⋙ forget₂ AddCommMonCat AddMonCat)
      ⟨k,
        (ConcreteCategory.hom (𝟙 (((F ⋙ forget₂ SemiRingCat AddCommMonCat) ⋙ forget₂ AddCommMonCat AddMonCat).obj k)))
            ((ConcreteCategory.hom ((F ⋙ forget₂ SemiRingCat MonCat).map f)) x *
              (ConcreteCategory.hom ((F ⋙ forget₂ SemiRingCat MonCat).map g)) y) +
          (ConcreteCategory.hom (𝟙 (((F ⋙ forget₂ SemiRingCat AddCommMonCat) ⋙ forget₂ AddCommMonCat AddMonCat).obj k)))
            ((ConcreteCategory.hom ((F ⋙ forget₂ SemiRingCat MonCat).map f)) x *
              (ConcreteCategory.hom ((F ⋙ forget₂ SemiRingCat MonCat).map h)) z)⟩