Theorem: LinearMap.iInf_ker_proj_le_iSup_range_stdBasis
File: Mathlib/LinearAlgebra/StdBasis.lean

tactic: intro b hb
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
⊢ ∀ ⦃x : (i : ι) → φ i⦄, x ∈ ⨅ i ∈ J, ker (proj i) → x ∈ ⨆ i ∈ I, range (stdBasis R φ i)
state_after: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : b ∈ ⨅ i ∈ J, ker (proj i)
⊢ b ∈ ⨆ i ∈ I, range (stdBasis R φ i)

tactic: simp only [mem_iInf, mem_ker, proj_apply] at hb
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : b ∈ ⨅ i ∈ J, ker (proj i)
⊢ b ∈ ⨆ i ∈ I, range (stdBasis R φ i)
state_after: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
⊢ b ∈ ⨆ i ∈ I, range (stdBasis R φ i)

tactic: rw [←
  show (∑ i ∈ I, stdBasis R φ i (b i)) = b by
    ext i
    rw [Finset.sum_apply, ← stdBasis_same R φ i (b i)]
    refine Finset.sum_eq_single i (fun j _ ne => stdBasis_ne _ _ _ _ ne.symm _) ?_
    intro hiI
    rw [stdBasis_same]
    exact hb _ ((hu trivial).resolve_left hiI)]
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
⊢ b ∈ ⨆ i ∈ I, range (stdBasis R φ i)
state_after: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
⊢ ∑ i ∈ I, (stdBasis R φ i) (b i) ∈ ⨆ i ∈ I, range (stdBasis R φ i)

tactic: exact sum_mem_biSup fun i _ => mem_range_self (stdBasis R φ i) (b i)
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
⊢ ∑ i ∈ I, (stdBasis R φ i) (b i) ∈ ⨆ i ∈ I, range (stdBasis R φ i)
state_after: no goals

tactic: ext i
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
⊢ ∑ i ∈ I, (stdBasis R φ i) (b i) = b
state_after: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
⊢ (∑ i ∈ I, (stdBasis R φ i) (b i)) i = b i

tactic: rw [Finset.sum_apply, ← stdBasis_same R φ i (b i)]
state_before: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
⊢ (∑ i ∈ I, (stdBasis R φ i) (b i)) i = b i
state_after: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
⊢ ∑ c ∈ I, (stdBasis R φ c) (b c) i = (stdBasis R φ i) (b i) i

tactic: refine Finset.sum_eq_single i (fun j _ ne => stdBasis_ne _ _ _ _ ne.symm _) ?_
state_before: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
⊢ ∑ c ∈ I, (stdBasis R φ c) (b c) i = (stdBasis R φ i) (b i) i
state_after: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
⊢ i ∉ I → (stdBasis R φ i) (b i) i = 0

tactic: intro hiI
state_before: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
⊢ i ∉ I → (stdBasis R φ i) (b i) i = 0
state_after: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
hiI : i ∉ I
⊢ (stdBasis R φ i) (b i) i = 0

tactic: rw [stdBasis_same]
state_before: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
hiI : i ∉ I
⊢ (stdBasis R φ i) (b i) i = 0
state_after: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
hiI : i ∉ I
⊢ b i = 0

tactic: exact hb _ ((hu trivial).resolve_left hiI)
state_before: case h
R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I : Finset ι
J : Set ι
hu : univ ⊆ ↑I ∪ J
b : (i : ι) → φ i
hb : ∀ i ∈ J, b i = 0
i : ι
hiI : i ∉ I
⊢ b i = 0
state_after: no goals