Theorem: Module.DirectLimit.toModule_totalize_of_le
File: Mathlib/Algebra/DirectLimit.lean

tactic: rw [← @Dfinsupp.sum_single ι G _ _ _ x]
state_before: R : Type u
inst✝⁶ : Ring R
ι : Type v
dec_ι : DecidableEq ι
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
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ (k : ι), 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)

tactic: unfold Dfinsupp.sum
state_before: R : Type u
inst✝⁶ : Ring R
ι : Type v
dec_ι : DecidableEq ι
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
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ (k : ι), 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: simp only [LinearMap.map_sum]
state_before: R : Type u
inst✝⁶ : Ring R
ι : Type v
dec_ι : DecidableEq ι
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
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ (k : ι), k ∈ Dfinsupp.support x → k ≤ i
⊢ ↑(DirectSum.toModule R ι (G j) fun k => totalize G f k j)
      (Finset.sum (Dfinsupp.support x) fun i => Dfinsupp.single i (↑x i)) =
    ↑(f i j hij)
      (↑(DirectSum.toModule R ι (G i) fun k => totalize G f k i)
        (Finset.sum (Dfinsupp.support x) fun i => Dfinsupp.single i (↑x i)))

tactic: refine' Finset.sum_congr rfl fun k hk => _
state_before: R : Type u
inst✝⁶ : Ring R
ι : Type v
dec_ι : DecidableEq ι
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
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ (k : ι), k ∈ Dfinsupp.support x → k ≤ i
⊢ (Finset.sum (Dfinsupp.support x) fun x_1 =>
      ↑(DirectSum.toModule R ι (G j) fun k => totalize G f k j) (Dfinsupp.single x_1 (↑x x_1))) =
    Finset.sum (Dfinsupp.support x) fun x_1 =>
      ↑(f i j hij) (↑(DirectSum.toModule R ι (G i) fun k => totalize G f k i) (Dfinsupp.single x_1 (↑x x_1)))

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]
state_before: R : Type u
inst✝⁶ : Ring R
ι : Type v
dec_ι : DecidableEq ι
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
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)
x : DirectSum ι G
i j : ι
hij : i ≤ j
hx : ∀ (k : ι), 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)))