Theorem: LinearIndependent.map
File: Mathlib/LinearAlgebra/LinearIndependent.lean

Proof steps:
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearIndependent R v
f : M →ₗ[R] M'
hf_inj : Disjoint (span R (range v)) (LinearMap.ker f)
⊢ LinearIndependent R (⇑f ∘ v)
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearIndependent R v
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) ≤ LinearMap.ker (Finsupp.total ι M R v)
⊢ LinearIndependent R (⇑f ∘ v)
tactic: rw [disjoint_iff_inf_le, ← Set.image_univ, Finsupp.span_image_eq_map_total,
    map_inf_eq_map_inf_comap, map_le_iff_le_comap, comap_bot, Finsupp.supported_univ, top_inf_eq]
      at hf_inj
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearIndependent R v
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) ≤ LinearMap.ker (Finsupp.total ι M R v)
⊢ LinearIndependent R (⇑f ∘ v)
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearMap.ker (Finsupp.total ι M R v) = ⊥
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) ≤ LinearMap.ker (Finsupp.total ι M R v)
⊢ LinearMap.ker (Finsupp.total ι M' R (⇑f ∘ v)) = ⊥
tactic: unfold LinearIndependent at hv ⊢
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearMap.ker (Finsupp.total ι M R v) = ⊥
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) ≤ LinearMap.ker (Finsupp.total ι M R v)
⊢ LinearMap.ker (Finsupp.total ι M' R (⇑f ∘ v)) = ⊥
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearMap.ker (Finsupp.total ι M R v) = ⊥
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) = ⊥
⊢ LinearMap.ker (Finsupp.total ι M' R (⇑f ∘ v)) = ⊥
tactic: rw [hv, le_bot_iff] at hf_inj
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearMap.ker (Finsupp.total ι M R v) = ⊥
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) = ⊥
⊢ LinearMap.ker (Finsupp.total ι M' R (⇑f ∘ v)) = ⊥
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearMap.ker (Finsupp.total ι M R v) = ⊥
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) = ⊥
this : Inhabited M
⊢ LinearMap.ker (Finsupp.total ι M' R (⇑f ∘ v)) = ⊥
tactic: haveI : Inhabited M := ⟨0⟩
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearMap.ker (Finsupp.total ι M R v) = ⊥
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) = ⊥
this : Inhabited M
⊢ LinearMap.ker (Finsupp.total ι M' R (⇑f ∘ v)) = ⊥
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearMap.ker (Finsupp.total ι M R v) = ⊥
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) = ⊥
this : Inhabited M
⊢ ∀ (i : ι), f (v i) = f (v i)
tactic: rw [Finsupp.total_comp, Finsupp.lmapDomain_total _ _ f, LinearMap.ker_comp,
    hf_inj]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv : LinearMap.ker (Finsupp.total ι M R v) = ⊥
f : M →ₗ[R] M'
hf_inj : comap (Finsupp.total ι M R v) (LinearMap.ker f) = ⊥
this : Inhabited M
⊢ ∀ (i : ι), f (v i) = f (v i)
state_after: no goals
tactic: exact fun _ => rfl