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

Proof steps:
state_before: R : Type u
inst✝⁵ : Ring R
ι : Type v
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ⇑(f' i j h)
x : FreeCommRing ((i : ι) × G i)
s t : Set ((i : ι) × G i)
inst✝¹ : DecidablePred fun x => x ∈ s
inst✝ : DecidablePred fun x => x ∈ t
hxs : x.IsSupported s
j k : ι
hj : ∀ z ∈ s, z.fst ≤ j
hk : ∀ z ∈ t, z.fst ≤ k
hjk : j ≤ k
hst : s ⊆ t
⊢ (f' j k hjk) ((lift fun ix => (f' (↑ix).fst j ⋯) (↑ix).snd) ((restriction s) x)) =
    (lift fun ix => (f' (↑ix).fst k ⋯) (↑ix).snd) ((restriction t) x)
state_after: case refine_1
R : Type u
inst✝⁵ : Ring R
ι : Type v
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ⇑(f' i j h)
x : FreeCommRing ((i : ι) × G i)
s t : Set ((i : ι) × G i)
inst✝¹ : DecidablePred fun x => x ∈ s
inst✝ : DecidablePred fun x => x ∈ t
hxs : x.IsSupported s
j k : ι
hj : ∀ z ∈ s, z.fst ≤ j
hk : ∀ z ∈ t, z.fst ≤ k
hjk : j ≤ k
hst : s ⊆ t
⊢ (f' j k hjk) ((lift fun ix => (f' (↑ix).fst j ⋯) (↑ix).snd) ((restriction s) 1)) =
    (lift fun ix => (f' (↑ix).fst k ⋯) (↑ix).snd) ((restriction t) 1)

case refine_2
R : Type u
inst✝⁵ : Ring R
ι : Type v
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ⇑(f' i j h)
x : FreeCommRing ((i : ι) × G i)
s t : Set ((i : ι) × G i)
inst✝¹ : DecidablePred fun x => x ∈ s
inst✝ : DecidablePred fun x => x ∈ t
hxs : x.IsSupported s
j k : ι
hj : ∀ z ∈ s, z.fst ≤ j
hk : ∀ z ∈ t, z.fst ≤ k
hjk : j ≤ k
hst : s ⊆ t
⊢ (f' j k hjk) ((lift fun ix => (f' (↑ix).fst j ⋯) (↑ix).snd) ((restriction s) (-1))) =
    (lift fun ix => (f' (↑ix).fst k ⋯) (↑ix).snd) ((restriction t) (-1))

case refine_3
R : Type u
inst✝⁵ : Ring R
ι : Type v
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ⇑(f' i j h)
x : FreeCommRing ((i : ι) × G i)
s t : Set ((i : ι) × G i)
inst✝¹ : DecidablePred fun x => x ∈ s
inst✝ : DecidablePred fun x => x ∈ t
hxs : x.IsSupported s
j k : ι
hj : ∀ z ∈ s, z.fst ≤ j
hk : ∀ z ∈ t, z.fst ≤ k
hjk : j ≤ k
hst : s ⊆ t
⊢ ∀ z ∈ FreeCommRing.of '' s,
    ∀ (n : FreeCommRing ((i : ι) × G i)),
      (f' j k hjk) ((lift fun ix => (f' (↑ix).fst j ⋯) (↑ix).snd) ((restriction s) n)) =
          (lift fun ix => (f' (↑ix).fst k ⋯) (↑ix).snd) ((restriction t) n) →
        (f' j k hjk) ((lift fun ix => (f' (↑ix).fst j ⋯) (↑ix).snd) ((restriction s) (z * n))) =
          (lift fun ix => (f' (↑ix).fst k ⋯) (↑ix).snd) ((restriction t) (z * n))

case refine_4
R : Type u
inst✝⁵ : Ring R
ι : Type v
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
inst✝² : DirectedSystem G fun i j h => ⇑(f' i j h)
x : FreeCommRing ((i : ι) × G i)
s t : Set ((i : ι) × G i)
inst✝¹ : DecidablePred fun x => x ∈ s
inst✝ : DecidablePred fun x => x ∈ t
hxs : x.IsSupported s
j k : ι
hj : ∀ z ∈ s, z.fst ≤ j
hk : ∀ z ∈ t, z.fst ≤ k
hjk : j ≤ k
hst : s ⊆ t
⊢ ∀ {x y : FreeCommRing ((i : ι) × G i)},
    (f' j k hjk) ((lift fun ix => (f' (↑ix).fst j ⋯) (↑ix).snd) ((restriction s) x)) =
        (lift fun ix => (f' (↑ix).fst k ⋯) (↑ix).snd) ((restriction t) x) →
      (f' j k hjk) ((lift fun ix => (f' (↑ix).fst j ⋯) (↑ix).snd) ((restriction s) y)) =
          (lift fun ix => (f' (↑ix).fst k ⋯) (↑ix).snd) ((restriction t) y) →
        (f' j k hjk) ((lift fun ix => (f' (↑ix).fst j ⋯) (↑ix).snd) ((restriction s) (x + y))) =
          (lift fun ix => (f' (↑ix).fst k ⋯) (↑ix).snd) ((restriction t) (x + y))
tactic: refine Subring.InClosure.recOn hxs ?_ ?_ ?_ ?_