Theorem: _private.Mathlib.FieldTheory.PurelyInseparable.0.LinearIndependent.map_pow_expChar_pow_of_fd_isSeparable
File: Mathlib/FieldTheory/PurelyInseparable.lean

Proof steps:
state_before: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
⊢ LinearIndependent F fun x => v x ^ q ^ n
state_after: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
⊢ LinearIndependent F fun x => v x ^ q ^ n
tactic: have h' := h.coe_range
state_before: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
⊢ LinearIndependent F fun x => v x ^ q ^ n
state_after: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
⊢ LinearIndependent F fun x => v x ^ q ^ n
tactic: let ι' := h'.extend (Set.range v).subset_univ
state_before: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
⊢ LinearIndependent F fun x => v x ^ q ^ n
state_after: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
⊢ LinearIndependent F fun x => v x ^ q ^ n
tactic: let b : Basis ι' F E := Basis.extend h'
state_before: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
⊢ LinearIndependent F fun x => v x ^ q ^ n
state_after: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
this : Fintype ↑ι' := fintypeBasisIndex b
⊢ LinearIndependent F fun x => v x ^ q ^ n
tactic: letI : Fintype ι' := fintypeBasisIndex b
state_before: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
this : Fintype ↑ι' := fintypeBasisIndex b
⊢ LinearIndependent F fun x => v x ^ q ^ n
state_after: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
this : Fintype ↑ι' := fintypeBasisIndex b
H : LinearIndependent F fun (x : ↑ι') => b x ^ q ^ n
⊢ LinearIndependent F fun x => v x ^ q ^ n
tactic: have H := linearIndependent_of_top_le_span_of_card_eq_finrank
    (span_map_pow_expChar_pow_eq_top_of_isSeparable q n b.span_eq).ge
    (finrank_eq_card_basis b).symm
state_before: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
this : Fintype ↑ι' := fintypeBasisIndex b
H : LinearIndependent F fun (x : ↑ι') => b x ^ q ^ n
⊢ LinearIndependent F fun x => v x ^ q ^ n
state_after: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
this : Fintype ↑ι' := fintypeBasisIndex b
H : LinearIndependent F fun (x : ↑ι') => b x ^ q ^ n
f : ι → ↑ι' := fun i => ⟨v i, ⋯⟩
⊢ LinearIndependent F fun x => v x ^ q ^ n
tactic: let f (i : ι) : ι' := ⟨v i, h'.subset_extend _ ⟨i, rfl⟩⟩
state_before: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
this : Fintype ↑ι' := fintypeBasisIndex b
H : LinearIndependent F fun (x : ↑ι') => b x ^ q ^ n
f : ι → ↑ι' := fun i => ⟨v i, ⋯⟩
⊢ LinearIndependent F fun x => v x ^ q ^ n
state_after: case h.e'_4.h
F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
this : Fintype ↑ι' := fintypeBasisIndex b
H : LinearIndependent F fun (x : ↑ι') => b x ^ q ^ n
f : ι → ↑ι' := fun i => ⟨v i, ⋯⟩
x✝ : ι
⊢ v x✝ ^ q ^ n = ((fun x => b x ^ q ^ n) ∘ f) x✝
tactic: convert H.comp f fun _ _ heq ↦ h.injective (by simpa only [f, Subtype.mk.injEq] using heq)
state_before: case h.e'_4.h
F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
q n : ℕ
hF : ExpChar F q
ι : Type u_1
v : ι → E
inst✝¹ : FiniteDimensional F E
inst✝ : Algebra.IsSeparable F E
h : LinearIndependent F v
h' : LinearIndependent (ι := { x // x ∈ Set.range v }) F Subtype.val
ι' : Set E := h'.extend ⋯
b : Basis (↑ι') F E := Basis.extend h'
this : Fintype ↑ι' := fintypeBasisIndex b
H : LinearIndependent F fun (x : ↑ι') => b x ^ q ^ n
f : ι → ↑ι' := fun i => ⟨v i, ⋯⟩
x✝ : ι
⊢ v x✝ ^ q ^ n = ((fun x => b x ^ q ^ n) ∘ f) x✝
state_after: no goals
tactic: simp_rw [Function.comp_apply, b, Basis.extend_apply_self]