Theorem: Ring.DirectLimit.of.zero_exact_aux
File: Mathlib/Algebra/DirectLimit.lean

tactic: refine' span_induction (Ideal.Quotient.eq_zero_iff_mem.1 H) _ _ _ _
state_before: R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
⊢ ∃ j s H, IsSupported x s ∧ ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) x) = 0

tactic: rintro x (⟨i, j, hij, x, rfl⟩ | ⟨i, rfl⟩ | ⟨i, x, y, rfl⟩ | ⟨i, x, y, rfl⟩)
state_before: case refine'_1
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
⊢ ∀ (x : FreeCommRing ((i : ι) × G i)),
    x ∈
        {a |
          (∃ i j H x,
              FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                  FreeCommRing.of { fst := i, snd := x } =
                a) ∨
            (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
              (∃ i x y,
                  FreeCommRing.of { fst := i, snd := x + y } -
                      (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                    a) ∨
                ∃ i x y,
                  FreeCommRing.of { fst := i, snd := x * y } -
                      FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                    a} →
      ∃ j s H,
        IsSupported x s ∧ ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) x) = 0

tactic: refine'
  ⟨j, {⟨i, x⟩, ⟨j, f' i j hij x⟩}, _,
    isSupported_sub (isSupported_of.2 <| Or.inr rfl) (isSupported_of.2 <| Or.inl rfl), _⟩
state_before: case refine'_1.inl.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ ∃ j_1 s H,
    IsSupported
        (FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } -
          FreeCommRing.of { fst := i, snd := x })
        s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j_1 (_ : (↑ix).fst ≤ j_1)) (↑ix).snd)
          (↑(restriction s)
            (FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } -
              FreeCommRing.of { fst := i, snd := x })) =
        0

tactic: rintro k (rfl | ⟨rfl | _⟩)
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_1
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ ∀ (k : (i : ι) × G i),
    k ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }} → k.fst ≤ j

tactic: exact hij
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_1.inl
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x }.fst ≤ j

case refine'_1.inl.intro.intro.intro.intro.refine'_1.inr.refl
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }.fst ≤ j

tactic: rfl
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_1.inr.refl
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }.fst ≤ j

tactic: rw [(restriction _).map_sub, RingHom.map_sub, restriction_of, dif_pos,
  restriction_of, dif_pos, lift_of, lift_of]
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd)
      (↑(restriction {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }})
        (FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } -
          FreeCommRing.of { fst := i, snd := x })) =
    0

tactic: dsimp only
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ ↑(f'
            (↑{ val := { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x },
                  property := ?refine'_1.inl.intro.intro.intro.intro.refine'_2.hc }).fst
            j
            (_ :
              (↑{ val := { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x },
                      property := ?refine'_1.inl.intro.intro.intro.intro.refine'_2.hc }).fst ≤
                j))
        (↑{ val := { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x },
              property := ?refine'_1.inl.intro.intro.intro.intro.refine'_2.hc }).snd -
      ↑(f' (↑{ val := { fst := i, snd := x }, property := ?refine'_1.inl.intro.intro.intro.intro.refine'_2.hc }).fst j
            (_ :
              (↑{ val := { fst := i, snd := x },
                      property := ?refine'_1.inl.intro.intro.intro.intro.refine'_2.hc }).fst ≤
                j))
        (↑{ val := { fst := i, snd := x }, property := ?refine'_1.inl.intro.intro.intro.intro.refine'_2.hc }).snd =
    0

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

tactic: have := DirectedSystem.map_map (fun i j h => f' i j h) hij (le_refl j : j ≤ j)
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ ↑(f' j j (_ : j ≤ j)) (↑(f' i j hij) x) - ↑(f' i j (_ : i ≤ j)) x = 0

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

tactic: dsimp only at this
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
this : ∀ (x : G i), ↑(f' j j (_ : j ≤ j)) (↑(f' i j hij) x) = ↑(f' i j (_ : i ≤ j)) x
⊢ ↑(f' j j (_ : j ≤ j)) (↑(f' i j hij) x) - ↑(f' i j (_ : i ≤ j)) x = 0

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

tactic: rw [this]
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
this : ∀ (x : G i), ↑(f' j j (_ : j ≤ j)) (↑(f' i j hij) x) = ↑(f' i j (_ : i ≤ j)) x
⊢ ↑(f' j j (_ : j ≤ j)) (↑(f' i j hij) x) - ↑(f' i j (_ : i ≤ j)) x = 0

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

tactic: exact sub_self _
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
this : ∀ (x : G i), ↑(f' j j (_ : j ≤ j)) (↑(f' i j hij) x) = ↑(f' i j (_ : i ≤ j)) x
⊢ ↑(f' i j (_ : i ≤ j)) x - ↑(f' i j (_ : i ≤ j)) x = 0

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

tactic: exacts [Or.inr rfl, Or.inl rfl]
state_before: case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

case refine'_1.inl.intro.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i j : ι
hij : i ≤ j
x : G i
⊢ { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x } ∈
    {{ fst := i, snd := x }, { fst := j, snd := (fun i j h => ↑(f' i j h)) i j hij x }}

tactic: refine' ⟨i, {⟨i, 1⟩}, _, isSupported_sub (isSupported_of.2 rfl) isSupported_one, _⟩
state_before: case refine'_1.inr.inl.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
i : ι
⊢ ∃ j s H,
    IsSupported (FreeCommRing.of { fst := i, snd := 1 } - 1) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd)
          (↑(restriction s) (FreeCommRing.of { fst := i, snd := 1 } - 1)) =
        0

tactic: rintro k (rfl | h)
state_before: case refine'_1.inr.inl.intro.refine'_1
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
i : ι
⊢ ∀ (k : (i : ι) × G i), k ∈ {{ fst := i, snd := 1 }} → k.fst ≤ i

tactic: rfl
state_before: case refine'_1.inr.inl.intro.refine'_1.refl
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
i : ι
⊢ { fst := i, snd := 1 }.fst ≤ i

tactic: rw [RingHom.map_sub, RingHom.map_sub]
state_before: case refine'_1.inr.inl.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
i : ι
⊢ ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd)
      (↑(restriction {{ fst := i, snd := 1 }}) (FreeCommRing.of { fst := i, snd := 1 } - 1)) =
    0

tactic: erw [lift_of, dif_pos rfl, RingHom.map_one, RingHom.map_one, lift_of,
  RingHom.map_one, sub_self]
state_before: case refine'_1.inr.inl.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
i : ι
⊢ ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd)
        (↑(restriction {{ fst := i, snd := 1 }}) (FreeCommRing.of { fst := i, snd := 1 })) -
      ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd) (↑(restriction {{ fst := i, snd := 1 }}) 1) =
    0

tactic: refine'
  ⟨i, {⟨i, x + y⟩, ⟨i, x⟩, ⟨i, y⟩}, _,
    isSupported_sub (isSupported_of.2 <| Or.inl rfl)
      (isSupported_add (isSupported_of.2 <| Or.inr <| Or.inl rfl)
        (isSupported_of.2 <| Or.inr <| Or.inr rfl)),
    _⟩
state_before: case refine'_1.inr.inr.inl.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ∃ j s H,
    IsSupported
        (FreeCommRing.of { fst := i, snd := x + y } -
          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }))
        s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd)
          (↑(restriction s)
            (FreeCommRing.of { fst := i, snd := x + y } -
              (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }))) =
        0

tactic: rintro k (rfl | ⟨rfl | ⟨rfl | hk⟩⟩) <;> rfl
state_before: case refine'_1.inr.inr.inl.intro.intro.intro.refine'_1
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ∀ (k : (i : ι) × G i), k ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }} → k.fst ≤ i

tactic: rw [(restriction _).map_sub, (restriction _).map_add, restriction_of, restriction_of,
  restriction_of, dif_pos, dif_pos, dif_pos, RingHom.map_sub,
  (FreeCommRing.lift _).map_add, lift_of, lift_of, lift_of]
state_before: case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd)
      (↑(restriction {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }})
        (FreeCommRing.of { fst := i, snd := x + y } -
          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }))) =
    0

tactic: dsimp only
state_before: case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ↑(f' (↑{ val := { fst := i, snd := x + y }, property := ?refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc }).fst i
            (_ :
              (↑{ val := { fst := i, snd := x + y },
                      property := ?refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc }).fst ≤
                i))
        (↑{ val := { fst := i, snd := x + y },
              property := ?refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc }).snd -
      (↑(f' (↑{ val := { fst := i, snd := x }, property := ?refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc }).fst
              i
              (_ :
                (↑{ val := { fst := i, snd := x },
                        property := ?refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc }).fst ≤
                  i))
          (↑{ val := { fst := i, snd := x }, property := ?refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc }).snd +
        ↑(f' (↑{ val := { fst := i, snd := y }, property := ?refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc }).fst
              i
              (_ :
                (↑{ val := { fst := i, snd := y },
                        property := ?refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc }).fst ≤
                  i))
          (↑{ val := { fst := i, snd := y }, property := ?refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc }).snd) =
    0

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: rw [(f' i i _).map_add]
state_before: case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ↑(f' i i (_ : i ≤ i)) (x + y) - (↑(f' i i (_ : i ≤ i)) x + ↑(f' i i (_ : i ≤ i)) y) = 0

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: exact sub_self _
state_before: case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ↑(f' i i (_ : i ≤ i)) x + ↑(f' i i (_ : i ≤ i)) y - (↑(f' i i (_ : i ≤ i)) x + ↑(f' i i (_ : i ≤ i)) y) = 0

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: all_goals tauto
state_before: case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x + y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: tauto
state_before: case refine'_1.inr.inr.inl.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x + y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: refine'
  ⟨i, {⟨i, x * y⟩, ⟨i, x⟩, ⟨i, y⟩}, _,
    isSupported_sub (isSupported_of.2 <| Or.inl rfl)
      (isSupported_mul (isSupported_of.2 <| Or.inr <| Or.inl rfl)
        (isSupported_of.2 <| Or.inr <| Or.inr rfl)), _⟩
state_before: case refine'_1.inr.inr.inr.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ∃ j s H,
    IsSupported
        (FreeCommRing.of { fst := i, snd := x * y } -
          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y })
        s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd)
          (↑(restriction s)
            (FreeCommRing.of { fst := i, snd := x * y } -
              FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y })) =
        0

tactic: rintro k (rfl | ⟨rfl | ⟨rfl | hk⟩⟩) <;> rfl
state_before: case refine'_1.inr.inr.inr.intro.intro.intro.refine'_1
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ∀ (k : (i : ι) × G i), k ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }} → k.fst ≤ i

tactic: rw [(restriction _).map_sub, (restriction _).map_mul, restriction_of, restriction_of,
  restriction_of, dif_pos, dif_pos, dif_pos, RingHom.map_sub,
  (FreeCommRing.lift _).map_mul, lift_of, lift_of, lift_of]
state_before: case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd)
      (↑(restriction {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }})
        (FreeCommRing.of { fst := i, snd := x * y } -
          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y })) =
    0

tactic: dsimp only
state_before: case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ↑(f' (↑{ val := { fst := i, snd := x * y }, property := ?refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc }).fst i
            (_ :
              (↑{ val := { fst := i, snd := x * y },
                      property := ?refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc }).fst ≤
                i))
        (↑{ val := { fst := i, snd := x * y },
              property := ?refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc }).snd -
      ↑(f' (↑{ val := { fst := i, snd := x }, property := ?refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc }).fst i
              (_ :
                (↑{ val := { fst := i, snd := x },
                        property := ?refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc }).fst ≤
                  i))
          (↑{ val := { fst := i, snd := x }, property := ?refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc }).snd *
        ↑(f' (↑{ val := { fst := i, snd := y }, property := ?refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc }).fst
              i
              (_ :
                (↑{ val := { fst := i, snd := y },
                        property := ?refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc }).fst ≤
                  i))
          (↑{ val := { fst := i, snd := y }, property := ?refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc }).snd =
    0

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: rw [(f' i i _).map_mul]
state_before: case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ↑(f' i i (_ : i ≤ i)) (x * y) - ↑(f' i i (_ : i ≤ i)) x * ↑(f' i i (_ : i ≤ i)) y = 0

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: exact sub_self _
state_before: case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ ↑(f' i i (_ : i ≤ i)) x * ↑(f' i i (_ : i ≤ i)) y - ↑(f' i i (_ : i ≤ i)) x * ↑(f' i i (_ : i ≤ i)) y = 0

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: all_goals tauto
state_before: case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := x * y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: tauto
state_before: case refine'_1.inr.inr.inr.intro.intro.intro.refine'_2.hc
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
i : ι
x y : G i
⊢ { fst := i, snd := y } ∈ {{ fst := i, snd := x * y }, { fst := i, snd := x }, { fst := i, snd := y }}

tactic: refine' Nonempty.elim (by infer_instance) fun ind : ι => _
state_before: case refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
⊢ ∃ j s H, IsSupported 0 s ∧ ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) 0) = 0

tactic: refine' ⟨ind, ∅, fun _ => False.elim, isSupported_zero, _⟩
state_before: case refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
ind : ι
⊢ ∃ j s H, IsSupported 0 s ∧ ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) 0) = 0

tactic: rw [RingHom.map_zero, (FreeCommRing.lift _).map_zero]
state_before: case refine'_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
ind : ι
⊢ ↑(↑lift fun ix => ↑(f' (↑ix).fst ind (_ : (↑ix).fst ≤ ind)) (↑ix).snd) (↑(restriction ∅) 0) = 0

tactic: infer_instance
state_before: R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
⊢ Nonempty ι

tactic: rintro x y ⟨i, s, hi, hxs, ihs⟩ ⟨j, t, hj, hyt, iht⟩
state_before: case refine'_3
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
⊢ ∀ (x y : FreeCommRing ((i : ι) × G i)),
    (∃ j s H,
        IsSupported x s ∧ ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) x) = 0) →
      (∃ j s H,
          IsSupported y s ∧
            ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) y) = 0) →
        ∃ j s H,
          IsSupported (x + y) s ∧
            ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x + y)) = 0

tactic: obtain ⟨k, hik, hjk⟩ := exists_ge_ge i j
state_before: case refine'_3.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
i : ι
s : Set ((i : ι) × G i)
hi : ∀ (k : (i : ι) × G i), k ∈ s → k.fst ≤ i
hxs : IsSupported x s
ihs : ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd) (↑(restriction s) x) = 0
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
⊢ ∃ j s H,
    IsSupported (x + y) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x + y)) = 0

tactic: have : ∀ z : Σi, G i, z ∈ s ∪ t → z.1 ≤ k := by
  rintro z (hz | hz)
  exact le_trans (hi z hz) hik
  exact le_trans (hj z hz) hjk
state_before: case refine'_3.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
i : ι
s : Set ((i : ι) × G i)
hi : ∀ (k : (i : ι) × G i), k ∈ s → k.fst ≤ i
hxs : IsSupported x s
ihs : ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd) (↑(restriction s) x) = 0
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ ∃ j s H,
    IsSupported (x + y) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x + y)) = 0

tactic: refine'
  ⟨k, s ∪ t, this,
    isSupported_add (isSupported_upwards hxs <| Set.subset_union_left s t)
      (isSupported_upwards hyt <| Set.subset_union_right s t), _⟩
state_before: case refine'_3.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
i : ι
s : Set ((i : ι) × G i)
hi : ∀ (k : (i : ι) × G i), k ∈ s → k.fst ≤ i
hxs : IsSupported x s
ihs : ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd) (↑(restriction s) x) = 0
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
this : ∀ (z : (i : ι) × G i), z ∈ s ∪ t → z.fst ≤ k
⊢ ∃ j s H,
    IsSupported (x + y) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x + y)) = 0

tactic: rintro z (hz | hz)
state_before: R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
i : ι
s : Set ((i : ι) × G i)
hi : ∀ (k : (i : ι) × G i), k ∈ s → k.fst ≤ i
hxs : IsSupported x s
ihs : ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd) (↑(restriction s) x) = 0
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ ∀ (z : (i : ι) × G i), z ∈ s ∪ t → z.fst ≤ k

tactic: exact le_trans (hi z hz) hik
state_before: case inl
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
i : ι
s : Set ((i : ι) × G i)
hi : ∀ (k : (i : ι) × G i), k ∈ s → k.fst ≤ i
hxs : IsSupported x s
ihs : ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd) (↑(restriction s) x) = 0
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
z : (i : ι) × G i
hz : z ∈ s
⊢ z.fst ≤ k

case inr
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
i : ι
s : Set ((i : ι) × G i)
hi : ∀ (k : (i : ι) × G i), k ∈ s → k.fst ≤ i
hxs : IsSupported x s
ihs : ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd) (↑(restriction s) x) = 0
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
z : (i : ι) × G i
hz : z ∈ t
⊢ z.fst ≤ k

tactic: exact le_trans (hj z hz) hjk
state_before: case inr
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
i : ι
s : Set ((i : ι) × G i)
hi : ∀ (k : (i : ι) × G i), k ∈ s → k.fst ≤ i
hxs : IsSupported x s
ihs : ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd) (↑(restriction s) x) = 0
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
z : (i : ι) × G i
hz : z ∈ t
⊢ z.fst ≤ k

tactic: rw [RingHom.map_add, (FreeCommRing.lift _).map_add, ←
  of.zero_exact_aux2 G f' hxs hi this hik (Set.subset_union_left s t), ←
  of.zero_exact_aux2 G f' hyt hj this hjk (Set.subset_union_right s t), ihs,
  (f' i k hik).map_zero, iht, (f' j k hjk).map_zero, zero_add]
state_before: case refine'_3.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
i : ι
s : Set ((i : ι) × G i)
hi : ∀ (k : (i : ι) × G i), k ∈ s → k.fst ≤ i
hxs : IsSupported x s
ihs : ↑(↑lift fun ix => ↑(f' (↑ix).fst i (_ : (↑ix).fst ≤ i)) (↑ix).snd) (↑(restriction s) x) = 0
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
this : ∀ (z : (i : ι) × G i), z ∈ s ∪ t → z.fst ≤ k
⊢ ↑(↑lift fun ix => ↑(f' (↑ix).fst k (_ : (↑ix).fst ≤ k)) (↑ix).snd) (↑(restriction (s ∪ t)) (x + y)) = 0

tactic: rintro x y ⟨j, t, hj, hyt, iht⟩
state_before: case refine'_4
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x =
    0
⊢ ∀ (a x : FreeCommRing ((i : ι) × G i)),
    (∃ j s H,
        IsSupported x s ∧ ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) x) = 0) →
      ∃ j s H,
        IsSupported (a • x) s ∧
          ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (a • x)) = 0

tactic: rw [smul_eq_mul]
state_before: case refine'_4.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
⊢ ∃ j s H,
    IsSupported (x • y) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x • y)) = 0

tactic: rcases exists_finset_support x with ⟨s, hxs⟩
state_before: case refine'_4.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
⊢ ∃ j s H,
    IsSupported (x * y) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x * y)) = 0

tactic: rcases(s.image Sigma.fst).exists_le with ⟨i, hi⟩
state_before: case refine'_4.intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
s : Finset ((i : ι) × G i)
hxs : IsSupported x ↑s
⊢ ∃ j s H,
    IsSupported (x * y) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x * y)) = 0

tactic: obtain ⟨k, hik, hjk⟩ := exists_ge_ge i j
state_before: case refine'_4.intro.intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
s : Finset ((i : ι) × G i)
hxs : IsSupported x ↑s
i : ι
hi : ∀ (i_1 : ι), i_1 ∈ Finset.image Sigma.fst s → i_1 ≤ i
⊢ ∃ j s H,
    IsSupported (x * y) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x * y)) = 0

tactic: have : ∀ z : Σi, G i, z ∈ ↑s ∪ t → z.1 ≤ k := by
  rintro z (hz | hz)
  exacts [(hi z.1 <| Finset.mem_image.2 ⟨z, hz, rfl⟩).trans hik, (hj z hz).trans hjk]
state_before: case refine'_4.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
s : Finset ((i : ι) × G i)
hxs : IsSupported x ↑s
i : ι
hi : ∀ (i_1 : ι), i_1 ∈ Finset.image Sigma.fst s → i_1 ≤ i
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ ∃ j s H,
    IsSupported (x * y) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x * y)) = 0

tactic: refine'
  ⟨k, ↑s ∪ t, this,
    isSupported_mul (isSupported_upwards hxs <| Set.subset_union_left (↑s) t)
      (isSupported_upwards hyt <| Set.subset_union_right (↑s) t), _⟩
state_before: case refine'_4.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
s : Finset ((i : ι) × G i)
hxs : IsSupported x ↑s
i : ι
hi : ∀ (i_1 : ι), i_1 ∈ Finset.image Sigma.fst s → i_1 ≤ i
k : ι
hik : i ≤ k
hjk : j ≤ k
this : ∀ (z : (i : ι) × G i), z ∈ ↑s ∪ t → z.fst ≤ k
⊢ ∃ j s H,
    IsSupported (x * y) s ∧
      ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction s) (x * y)) = 0

tactic: rw [RingHom.map_mul, (FreeCommRing.lift _).map_mul, ←
  of.zero_exact_aux2 G f' hyt hj this hjk (Set.subset_union_right (↑s) t), iht,
  (f' j k hjk).map_zero, MulZeroClass.mul_zero]
state_before: case refine'_4.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
s : Finset ((i : ι) × G i)
hxs : IsSupported x ↑s
i : ι
hi : ∀ (i_1 : ι), i_1 ∈ Finset.image Sigma.fst s → i_1 ≤ i
k : ι
hik : i ≤ k
hjk : j ≤ k
this : ∀ (z : (i : ι) × G i), z ∈ ↑s ∪ t → z.fst ≤ k
⊢ ↑(↑lift fun ix => ↑(f' (↑ix).fst k (_ : (↑ix).fst ≤ k)) (↑ix).snd) (↑(restriction (↑s ∪ t)) (x * y)) = 0

tactic: rintro z (hz | hz)
state_before: R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
s : Finset ((i : ι) × G i)
hxs : IsSupported x ↑s
i : ι
hi : ∀ (i_1 : ι), i_1 ∈ Finset.image Sigma.fst s → i_1 ≤ i
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ ∀ (z : (i : ι) × G i), z ∈ ↑s ∪ t → z.fst ≤ k

tactic: exacts [(hi z.1 <| Finset.mem_image.2 ⟨z, hz, rfl⟩).trans hik, (hj z hz).trans hjk]
state_before: case inl
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
s : Finset ((i : ι) × G i)
hxs : IsSupported x ↑s
i : ι
hi : ∀ (i_1 : ι), i_1 ∈ Finset.image Sigma.fst s → i_1 ≤ i
k : ι
hik : i ≤ k
hjk : j ≤ k
z : (i : ι) × G i
hz : z ∈ ↑s
⊢ z.fst ≤ k

case inr
R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ↑(f' i j h)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝ : FreeCommRing ((i : ι) × G i)
H :
  ↑(Ideal.Quotient.mk
          (Ideal.span
            {a |
              (∃ i j H x,
                  FreeCommRing.of { fst := j, snd := (fun i j h => ↑(f' i j h)) i j H x } -
                      FreeCommRing.of { fst := i, snd := x } =
                    a) ∨
                (∃ i, FreeCommRing.of { fst := i, snd := 1 } - 1 = a) ∨
                  (∃ i x y,
                      FreeCommRing.of { fst := i, snd := x + y } -
                          (FreeCommRing.of { fst := i, snd := x } + FreeCommRing.of { fst := i, snd := y }) =
                        a) ∨
                    ∃ i x y,
                      FreeCommRing.of { fst := i, snd := x * y } -
                          FreeCommRing.of { fst := i, snd := x } * FreeCommRing.of { fst := i, snd := y } =
                        a}))
      x✝ =
    0
x y : FreeCommRing ((i : ι) × G i)
j : ι
t : Set ((i : ι) × G i)
hj : ∀ (k : (i : ι) × G i), k ∈ t → k.fst ≤ j
hyt : IsSupported y t
iht : ↑(↑lift fun ix => ↑(f' (↑ix).fst j (_ : (↑ix).fst ≤ j)) (↑ix).snd) (↑(restriction t) y) = 0
s : Finset ((i : ι) × G i)
hxs : IsSupported x ↑s
i : ι
hi : ∀ (i_1 : ι), i_1 ∈ Finset.image Sigma.fst s → i_1 ≤ i
k : ι
hik : i ≤ k
hjk : j ≤ k
z : (i : ι) × G i
hz : z ∈ t
⊢ z.fst ≤ k