Theorem: Polynomial.Gal.galActionHom_injective
File: Mathlib/FieldTheory/PolynomialGaloisGroup.lean

tactic: rw [injective_iff_map_eq_one]
state_before: F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
⊢ Function.Injective ⇑(galActionHom p E)
state_after: F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
⊢ ∀ (a : p.Gal), (galActionHom p E) a = 1 → a = 1

tactic: intro ϕ hϕ
state_before: F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
⊢ ∀ (a : p.Gal), (galActionHom p E) a = 1 → a = 1
state_after: F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
⊢ ϕ = 1

tactic: ext (x hx)
state_before: F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
⊢ ϕ = 1
state_after: case h
F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
x : p.SplittingField
hx : x ∈ p.rootSet p.SplittingField
⊢ ϕ x = 1 x

tactic: have key := Equiv.Perm.ext_iff.mp hϕ (rootsEquivRoots p E ⟨x, hx⟩)
state_before: case h
F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
x : p.SplittingField
hx : x ∈ p.rootSet p.SplittingField
⊢ ϕ x = 1 x
state_after: case h
F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
x : p.SplittingField
hx : x ∈ p.rootSet p.SplittingField
key : ((galActionHom p E) ϕ) ((rootsEquivRoots p E) ⟨x, hx⟩) = 1 ((rootsEquivRoots p E) ⟨x, hx⟩)
⊢ ϕ x = 1 x

tactic: change
  rootsEquivRoots p E (ϕ • (rootsEquivRoots p E).symm (rootsEquivRoots p E ⟨x, hx⟩)) =
    rootsEquivRoots p E ⟨x, hx⟩
  at key
state_before: case h
F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
x : p.SplittingField
hx : x ∈ p.rootSet p.SplittingField
key : ((galActionHom p E) ϕ) ((rootsEquivRoots p E) ⟨x, hx⟩) = 1 ((rootsEquivRoots p E) ⟨x, hx⟩)
⊢ ϕ x = 1 x
state_after: case h
F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
x : p.SplittingField
hx : x ∈ p.rootSet p.SplittingField
key :
  (rootsEquivRoots p E) (ϕ • (rootsEquivRoots p E).symm ((rootsEquivRoots p E) ⟨x, hx⟩)) = (rootsEquivRoots p E) ⟨x, hx⟩
⊢ ϕ x = 1 x

tactic: rw [Equiv.symm_apply_apply] at key
state_before: case h
F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
x : p.SplittingField
hx : x ∈ p.rootSet p.SplittingField
key :
  (rootsEquivRoots p E) (ϕ • (rootsEquivRoots p E).symm ((rootsEquivRoots p E) ⟨x, hx⟩)) = (rootsEquivRoots p E) ⟨x, hx⟩
⊢ ϕ x = 1 x
state_after: case h
F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
x : p.SplittingField
hx : x ∈ p.rootSet p.SplittingField
key : (rootsEquivRoots p E) (ϕ • ⟨x, hx⟩) = (rootsEquivRoots p E) ⟨x, hx⟩
⊢ ϕ x = 1 x

tactic: exact Subtype.ext_iff.mp (Equiv.injective (rootsEquivRoots p E) key)
state_before: case h
F : Type u_1
inst✝³ : Field F
p q : F[X]
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : Fact (Splits (algebraMap F E) p)
ϕ : p.Gal
hϕ : (galActionHom p E) ϕ = 1
x : p.SplittingField
hx : x ∈ p.rootSet p.SplittingField
key : (rootsEquivRoots p E) (ϕ • ⟨x, hx⟩) = (rootsEquivRoots p E) ⟨x, hx⟩
⊢ ϕ x = 1 x
state_after: no goals