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

Proof steps:
state_before: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : DirectSum ι G
H : Submodule.Quotient.mk x = 0
⊢ Nonempty ι
state_after: no goals
tactic: infer_instance
state_before: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝¹ : DirectSum ι G
H : Submodule.Quotient.mk x✝¹ = 0
ind : ι
x : DirectSum ι G
x✝ : x ∈ {a | ∃ i j, ∃ (H : i ≤ j), ∃ x, (DirectSum.lof R ι G i) x - (DirectSum.lof R ι G j) ((f i j H) x) = a}
i j : ι
hij : i ≤ j
y : G i
hxy : (DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y) = x
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ (∀ k_1 ∈ DFinsupp.support x, k_1 ≤ k) ∧ (DirectSum.toModule R ι (G k) fun i => totalize G f i k) x = 0
state_after: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : DirectSum ι G
H : Submodule.Quotient.mk x = 0
ind i j : ι
hij : i ≤ j
y : G i
k : ι
hik : i ≤ k
hjk : j ≤ k
x✝ :
  (DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y) ∈
    {a | ∃ i j, ∃ (H : i ≤ j), ∃ x, (DirectSum.lof R ι G i) x - (DirectSum.lof R ι G j) ((f i j H) x) = a}
⊢ (∀ k_1 ∈ DFinsupp.support ((DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y)), k_1 ≤ k) ∧
    (DirectSum.toModule R ι (G k) fun i => totalize G f i k)
        ((DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y)) =
      0
tactic: subst hxy
state_before: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : DirectSum ι G
H : Submodule.Quotient.mk x = 0
ind i j : ι
hij : i ≤ j
y : G i
k : ι
hik : i ≤ k
hjk : j ≤ k
x✝ :
  (DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y) ∈
    {a | ∃ i j, ∃ (H : i ≤ j), ∃ x, (DirectSum.lof R ι G i) x - (DirectSum.lof R ι G j) ((f i j H) x) = a}
⊢ (∀ k_1 ∈ DFinsupp.support ((DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y)), k_1 ≤ k) ∧
    (DirectSum.toModule R ι (G k) fun i => totalize G f i k)
        ((DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y)) =
      0
state_after: case left
R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : DirectSum ι G
H : Submodule.Quotient.mk x = 0
ind i j : ι
hij : i ≤ j
y : G i
k : ι
hik : i ≤ k
hjk : j ≤ k
x✝ :
  (DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y) ∈
    {a | ∃ i j, ∃ (H : i ≤ j), ∃ x, (DirectSum.lof R ι G i) x - (DirectSum.lof R ι G j) ((f i j H) x) = a}
⊢ ∀ k_1 ∈ DFinsupp.support ((DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y)), k_1 ≤ k

case right
R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : DirectSum ι G
H : Submodule.Quotient.mk x = 0
ind i j : ι
hij : i ≤ j
y : G i
k : ι
hik : i ≤ k
hjk : j ≤ k
x✝ :
  (DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y) ∈
    {a | ∃ i j, ∃ (H : i ≤ j), ∃ x, (DirectSum.lof R ι G i) x - (DirectSum.lof R ι G j) ((f i j H) x) = a}
⊢ (DirectSum.toModule R ι (G k) fun i => totalize G f i k)
      ((DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y)) =
    0
tactic: constructor
state_before: case right
R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x : DirectSum ι G
H : Submodule.Quotient.mk x = 0
ind i j : ι
hij : i ≤ j
y : G i
k : ι
hik : i ≤ k
hjk : j ≤ k
x✝ :
  (DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y) ∈
    {a | ∃ i j, ∃ (H : i ≤ j), ∃ x, (DirectSum.lof R ι G i) x - (DirectSum.lof R ι G j) ((f i j H) x) = a}
⊢ (DirectSum.toModule R ι (G k) fun i => totalize G f i k)
      ((DirectSum.lof R ι G i) y - (DirectSum.lof R ι G j) ((f i j hij) y)) =
    0
state_after: no goals
tactic: simp [LinearMap.map_sub, totalize_of_le, hik, hjk, DirectedSystem.map_map,
            DirectSum.apply_eq_component, DirectSum.component.of]
state_before: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝² : DirectSum ι G
H : Submodule.Quotient.mk x✝² = 0
ind : ι
x y : DirectSum ι G
x✝¹ : ∃ j, (∀ k ∈ DFinsupp.support x, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) x = 0
x✝ : ∃ j, (∀ k ∈ DFinsupp.support y, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
i : ι
hi : ∀ k ∈ DFinsupp.support x, k ≤ i
hxi : (DirectSum.toModule R ι (G i) fun i_1 => totalize G f i_1 i) x = 0
j : ι
hj : ∀ k ∈ DFinsupp.support y, k ≤ j
hyj : (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ (DirectSum.toModule R ι (G k) fun i => totalize G f i k) (x + y) = 0
state_after: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝² : DirectSum ι G
H : Submodule.Quotient.mk x✝² = 0
ind : ι
x y : DirectSum ι G
x✝¹ : ∃ j, (∀ k ∈ DFinsupp.support x, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) x = 0
x✝ : ∃ j, (∀ k ∈ DFinsupp.support y, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
i : ι
hi : ∀ k ∈ DFinsupp.support x, k ≤ i
hxi : (DirectSum.toModule R ι (G i) fun i_1 => totalize G f i_1 i) x = 0
j : ι
hj : ∀ k ∈ DFinsupp.support y, k ≤ j
hyj : (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ (DirectSum.toModule R ι (G k) fun i => totalize G f i k) x +
      (DirectSum.toModule R ι (G k) fun i => totalize G f i k) y =
    0
tactic: simp only [map_add]
state_before: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝² : DirectSum ι G
H : Submodule.Quotient.mk x✝² = 0
ind : ι
x y : DirectSum ι G
x✝¹ : ∃ j, (∀ k ∈ DFinsupp.support x, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) x = 0
x✝ : ∃ j, (∀ k ∈ DFinsupp.support y, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
i : ι
hi : ∀ k ∈ DFinsupp.support x, k ≤ i
hxi : (DirectSum.toModule R ι (G i) fun i_1 => totalize G f i_1 i) x = 0
j : ι
hj : ∀ k ∈ DFinsupp.support y, k ≤ j
hyj : (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ (DirectSum.toModule R ι (G k) fun i => totalize G f i k) x +
      (DirectSum.toModule R ι (G k) fun i => totalize G f i k) y =
    0
state_after: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝² : DirectSum ι G
H : Submodule.Quotient.mk x✝² = 0
ind : ι
x y : DirectSum ι G
x✝¹ : ∃ j, (∀ k ∈ DFinsupp.support x, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) x = 0
x✝ : ∃ j, (∀ k ∈ DFinsupp.support y, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
i : ι
hi : ∀ k ∈ DFinsupp.support x, k ≤ i
hxi : (DirectSum.toModule R ι (G i) fun i_1 => totalize G f i_1 i) x = 0
j : ι
hj : ∀ k ∈ DFinsupp.support y, k ≤ j
hyj : (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ (f i k hik) ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) x) +
      (f j k hjk) ((DirectSum.toModule R ι (G j) fun k => totalize G f k j) y) =
    0
tactic: rw [toModule_totalize_of_le hik hi, toModule_totalize_of_le hjk hj]
state_before: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝² : DirectSum ι G
H : Submodule.Quotient.mk x✝² = 0
ind : ι
x y : DirectSum ι G
x✝¹ : ∃ j, (∀ k ∈ DFinsupp.support x, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) x = 0
x✝ : ∃ j, (∀ k ∈ DFinsupp.support y, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
i : ι
hi : ∀ k ∈ DFinsupp.support x, k ≤ i
hxi : (DirectSum.toModule R ι (G i) fun i_1 => totalize G f i_1 i) x = 0
j : ι
hj : ∀ k ∈ DFinsupp.support y, k ≤ j
hyj : (DirectSum.toModule R ι (G j) fun i => totalize G f i j) y = 0
k : ι
hik : i ≤ k
hjk : j ≤ k
⊢ (f i k hik) ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) x) +
      (f j k hjk) ((DirectSum.toModule R ι (G j) fun k => totalize G f k j) y) =
    0
state_after: no goals
tactic: simp [hxi, hyj]
state_before: R : Type u
inst✝¹⁰ : Ring R
ι : Type v
inst✝⁹ : Preorder ι
G : ι → Type w
inst✝⁸ : (i : ι) → AddCommGroup (G i)
inst✝⁷ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
inst✝⁶ : DecidableEq ι
P : Type u₁
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R P
g : (i : ι) → G i →ₗ[R] P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝³ : DirectedSystem G fun i j h => ⇑(f i j h)
inst✝² : (i : ι) → (k : G i) → Decidable (k ≠ 0)
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
x✝¹ : DirectSum ι G
H : Submodule.Quotient.mk x✝¹ = 0
ind : ι
a : R
x : DirectSum ι G
x✝ : ∃ j, (∀ k ∈ DFinsupp.support x, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => totalize G f i j) x = 0
i : ι
hi : ∀ k ∈ DFinsupp.support x, k ≤ i
hxi : (DirectSum.toModule R ι (G i) fun i_1 => totalize G f i_1 i) x = 0
⊢ (DirectSum.toModule R ι (G i) fun i_1 => totalize G f i_1 i) (a • x) = 0
state_after: no goals
tactic: simp [LinearMap.map_smul, hxi]