Theorem: Module.DirectLimit.toModule_totalize_of_le
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ k ∈ DFinsupp.support x, k ≤ i
⊢ (DirectSum.toModule R ι (G j) fun k => totalize G f k j) x =
    (f i j hij) ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) x)
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ k ∈ DFinsupp.support x, k ≤ i
⊢ (DirectSum.toModule R ι (G j) fun k => totalize G f k j) (DFinsupp.sum x DFinsupp.single) =
    (f i j hij) ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) (DFinsupp.sum x DFinsupp.single))
tactic: rw [← @DFinsupp.sum_single ι G _ _ _ x]
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ k ∈ DFinsupp.support x, k ≤ i
⊢ (DirectSum.toModule R ι (G j) fun k => totalize G f k j) (DFinsupp.sum x DFinsupp.single) =
    (f i j hij) ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) (DFinsupp.sum x DFinsupp.single))
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ k ∈ DFinsupp.support x, k ≤ i
⊢ (DirectSum.toModule R ι (G j) fun k => totalize G f k j) (∑ i ∈ DFinsupp.support x, DFinsupp.single i (x i)) =
    (f i j hij)
      ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) (∑ i ∈ DFinsupp.support x, DFinsupp.single i (x i)))
tactic: unfold DFinsupp.sum
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ k ∈ DFinsupp.support x, k ≤ i
⊢ (DirectSum.toModule R ι (G j) fun k => totalize G f k j) (∑ i ∈ DFinsupp.support x, DFinsupp.single i (x i)) =
    (f i j hij)
      ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) (∑ i ∈ DFinsupp.support x, DFinsupp.single i (x i)))
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ k ∈ DFinsupp.support x, k ≤ i
⊢ ∑ x_1 ∈ DFinsupp.support x, (DirectSum.toModule R ι (G j) fun k => totalize G f k j) (DFinsupp.single x_1 (x x_1)) =
    ∑ x_1 ∈ DFinsupp.support x,
      (f i j hij) ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) (DFinsupp.single x_1 (x x_1)))
tactic: simp only [map_sum]
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ k ∈ DFinsupp.support x, k ≤ i
⊢ ∑ x_1 ∈ DFinsupp.support x, (DirectSum.toModule R ι (G j) fun k => totalize G f k j) (DFinsupp.single x_1 (x x_1)) =
    ∑ x_1 ∈ DFinsupp.support x,
      (f i j hij) ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) (DFinsupp.single x_1 (x x_1)))
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ k ∈ DFinsupp.support x, k ≤ i
k : ι
hk : k ∈ DFinsupp.support x
⊢ (DirectSum.toModule R ι (G j) fun k => totalize G f k j) (DFinsupp.single k (x k)) =
    (f i j hij) ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) (DFinsupp.single k (x k)))
tactic: refine Finset.sum_congr rfl fun k hk => ?_
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ k ∈ DFinsupp.support x, k ≤ i
k : ι
hk : k ∈ DFinsupp.support x
⊢ (DirectSum.toModule R ι (G j) fun k => totalize G f k j) (DFinsupp.single k (x k)) =
    (f i j hij) ((DirectSum.toModule R ι (G i) fun k => totalize G f k i) (DFinsupp.single k (x k)))
state_after: no goals
tactic: rw [DirectSum.single_eq_lof R k (x k), DirectSum.toModule_lof, DirectSum.toModule_lof,
    totalize_of_le (hx k hk), totalize_of_le (le_trans (hx k hk) hij), DirectedSystem.map_map]