Theorem: LinearIndependent.map_pow_expChar_pow_of_isSeparable
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: classical
have halg := IsSeparable.isAlgebraic F E
rw [linearIndependent_iff_finset_linearIndependent] at h ⊢
intro s
let E' := adjoin F (s.image v : Set E)
haveI : FiniteDimensional F E' := finiteDimensional_adjoin
  fun x _ ↦ Algebra.IsIntegral.isIntegral x
haveI : IsSeparable F E' := isSeparable_tower_bot_of_isSeparable F E' E
let v' (i : s) : E' := ⟨v i.1, subset_adjoin F _ (Finset.mem_image.2 ⟨i.1, i.2, rfl⟩)⟩
have h' : LinearIndependent F v' := (h s).of_comp E'.val.toLinearMap
exact (h'.map_pow_expChar_pow_of_fd_isSeparable q n).map'
  E'.val.toLinearMap (LinearMap.ker_eq_bot_of_injective E'.val.injective)
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✝ : IsSeparable F E
h : LinearIndependent F v
⊢ LinearIndependent F fun x => v x ^ q ^ n
state_after: no goals

tactic: have halg := IsSeparable.isAlgebraic F E
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✝ : 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✝ : IsSeparable F E
h : LinearIndependent F v
halg : Algebra.IsAlgebraic F E
⊢ LinearIndependent F fun x => v x ^ q ^ n

tactic: rw [linearIndependent_iff_finset_linearIndependent] at 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✝ : IsSeparable F E
h : LinearIndependent F v
halg : Algebra.IsAlgebraic F E
⊢ 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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
⊢ ∀ (s : Finset ι), LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)

tactic: intro s
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
⊢ ∀ (s : Finset ι), LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)

tactic: let E' := adjoin F (s.image v : Set E)
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)

tactic: haveI : FiniteDimensional F E' := finiteDimensional_adjoin
  fun x _ ↦ Algebra.IsIntegral.isIntegral x
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
this : FiniteDimensional F ↥E'
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)

tactic: haveI : IsSeparable F E' := isSeparable_tower_bot_of_isSeparable F E' E
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
this : FiniteDimensional F ↥E'
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
this✝ : FiniteDimensional F ↥E'
this : IsSeparable F ↥E'
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)

tactic: let v' (i : s) : E' := ⟨v i.1, subset_adjoin F _ (Finset.mem_image.2 ⟨i.1, i.2, 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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
this✝ : FiniteDimensional F ↥E'
this : IsSeparable F ↥E'
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
this✝ : FiniteDimensional F ↥E'
this : IsSeparable F ↥E'
v' : { x // x ∈ s } → ↥E' := fun i => ⟨v ↑i, ⋯⟩
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)

tactic: have h' : LinearIndependent F v' := (h s).of_comp E'.val.toLinearMap
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
this✝ : FiniteDimensional F ↥E'
this : IsSeparable F ↥E'
v' : { x // x ∈ s } → ↥E' := fun i => ⟨v ↑i, ⋯⟩
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
this✝ : FiniteDimensional F ↥E'
this : IsSeparable F ↥E'
v' : { x // x ∈ s } → ↥E' := fun i => ⟨v ↑i, ⋯⟩
h' : LinearIndependent F v'
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)

tactic: exact (h'.map_pow_expChar_pow_of_fd_isSeparable q n).map'
  E'.val.toLinearMap (LinearMap.ker_eq_bot_of_injective E'.val.injective)
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✝ : IsSeparable F E
h : ∀ (s : Finset ι), LinearIndependent F (v ∘ Subtype.val)
halg : Algebra.IsAlgebraic F E
s : Finset ι
E' : IntermediateField F E := adjoin F ↑(Finset.image v s)
this✝ : FiniteDimensional F ↥E'
this : IsSeparable F ↥E'
v' : { x // x ∈ s } → ↥E' := fun i => ⟨v ↑i, ⋯⟩
h' : LinearIndependent F v'
⊢ LinearIndependent F ((fun x => v x ^ q ^ n) ∘ Subtype.val)
state_after: no goals