-- Module: Mathlib.Algebra.Colimit.Ring
Goal:
ι : Type u_1
inst : Preorder ι
G : ι → Type u_2
inst_1 : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
i : ι
x : G i
⊢ Eq (α :=
    HasQuotient.Quotient (FreeCommRing ((i : ι) × G i)) (B := Ideal (FreeCommRing ((i : ι) × G i)))
      (Ideal.span
        {a : FreeCommRing ((i : ι) × G i) |
          (∃ (i : ι) (j : ι) (H : i ≤ j) (x : G i),
              FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) j (f i j H x)) -
                  FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x) =
                a) ∨
            (∃ (i : ι),
                HSub.hSub (α := FreeCommRing ((i : ι) × G i)) (FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i 1))
                    1 =
                  a) ∨
              (∃ (i : ι) (x : G i) (y : G i),
                  FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i (x + y)) -
                      (FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x) +
                        FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i y)) =
                    a) ∨
                ∃ (i : ι) (x : G i) (y : G i),
                  FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i (x * y)) -
                      FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x) *
                        FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i y) =
                    a}))
    ((Ideal.Quotient.mk
            (Ideal.span
              {a : FreeCommRing ((i : ι) × G i) |
                (∃ (i : ι) (j : ι) (H : i ≤ j) (x : G i),
                    FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) j (f i j H x)) -
                        FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x) =
                      a) ∨
                  (∃ (i : ι),
                      HSub.hSub (α := FreeCommRing ((i : ι) × G i))
                          (FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i 1)) 1 =
                        a) ∨
                    (∃ (i : ι) (x : G i) (y : G i),
                        FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i (x + y)) -
                            (FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x) +
                              FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i y)) =
                          a) ∨
                      ∃ (i : ι) (x : G i) (y : G i),
                        FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i (x * y)) -
                            FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x) *
                              FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i y) =
                          a}) :
          (a : FreeCommRing ((i : ι) × G i)) →
            FreeCommRing ((i : ι) × G i) ⧸
              Ideal.span
                {a : FreeCommRing ((i : ι) × G i) |
                  (∃ (i : ι) (j : ι) (H : i ≤ j) (x : G i),
                      FreeCommRing.of ⟨j, f i j H x⟩ - FreeCommRing.of ⟨i, x⟩ = a) ∨
                    (∃ (i : ι), FreeCommRing.of ⟨i, 1⟩ - 1 = a) ∨
                      (∃ (i : ι) (x : G i) (y : G i),
                          FreeCommRing.of ⟨i, x + y⟩ - (FreeCommRing.of ⟨i, x⟩ + FreeCommRing.of ⟨i, y⟩) = a) ∨
                        ∃ (i : ι) (x : G i) (y : G i),
                          FreeCommRing.of ⟨i, x * y⟩ - FreeCommRing.of ⟨i, x⟩ * FreeCommRing.of ⟨i, y⟩ = a})
        (FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x)) :
      HasQuotient.Quotient (FreeCommRing ((i : ι) × G i)) (B := Ideal (FreeCommRing ((i : ι) × G i)))
        (Ideal.span
          {a : FreeCommRing ((i : ι) × G i) |
            (∃ (i : ι) (j : ι) (H : i ≤ j) (x : G i),
                FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) j (f i j H x)) -
                    FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x) =
                  a) ∨
              (∃ (i : ι),
                  HSub.hSub (α := FreeCommRing ((i : ι) × G i))
                      (FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i 1)) 1 =
                    a) ∨
                (∃ (i : ι) (x : G i) (y : G i),
                    FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i (x + y)) -
                        (FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x) +
                          FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i y)) =
                      a) ∨
                  ∃ (i : ι) (x : G i) (y : G i),
                    FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i (x * y)) -
                        FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i x) *
                          FreeCommRing.of (Sigma.mk (β := fun (i : ι) ↦ G i) i y) =
                      a}))
    ((of G f i : (a : G i) → DirectLimit G f) x : DirectLimit G f)

Tactic:
rfl

Premises used: Submodule.Quotient.mk, rfl