Theorem: FunctionField.ringOfIntegers.algebraMap_injective
File: Mathlib/NumberTheory/FunctionField.lean

Proof steps:
state_before: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
⊢ Function.Injective ⇑(algebraMap Fq[X] ↥(ringOfIntegers Fq F))
state_after: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : Function.Injective ⇑(algebraMap Fq[X] F)
⊢ Function.Injective ⇑(algebraMap Fq[X] ↥(ringOfIntegers Fq F))
tactic: have hinj : Function.Injective (⇑(algebraMap Fq[X] F)) := by
    rw [IsScalarTower.algebraMap_eq Fq[X] (RatFunc Fq) F]
    exact (algebraMap (RatFunc Fq) F).injective.comp (IsFractionRing.injective Fq[X] (RatFunc Fq))
state_before: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : Function.Injective ⇑(algebraMap Fq[X] F)
⊢ Function.Injective ⇑(algebraMap Fq[X] ↥(ringOfIntegers Fq F))
state_after: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : Function.Injective ⇑(algebraMap Fq[X] F)
⊢ ∀ (a : Fq[X]), (algebraMap Fq[X] ↥(ringOfIntegers Fq F)) a = 0 → a = 0
tactic: rw [injective_iff_map_eq_zero (algebraMap Fq[X] (↥(ringOfIntegers Fq F)))]
state_before: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : Function.Injective ⇑(algebraMap Fq[X] F)
⊢ ∀ (a : Fq[X]), (algebraMap Fq[X] ↥(ringOfIntegers Fq F)) a = 0 → a = 0
state_after: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : Function.Injective ⇑(algebraMap Fq[X] F)
p : Fq[X]
hp : (algebraMap Fq[X] ↥(ringOfIntegers Fq F)) p = 0
⊢ p = 0
tactic: intro p hp
state_before: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : Function.Injective ⇑(algebraMap Fq[X] F)
p : Fq[X]
hp : (algebraMap Fq[X] ↥(ringOfIntegers Fq F)) p = 0
⊢ p = 0
state_after: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : Function.Injective ⇑(algebraMap Fq[X] F)
p : Fq[X]
hp : ↑((algebraMap Fq[X] ↥(ringOfIntegers Fq F)) p) = 0
⊢ p = 0
tactic: rw [← Subtype.coe_inj, Subalgebra.coe_zero] at hp
state_before: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : Function.Injective ⇑(algebraMap Fq[X] F)
p : Fq[X]
hp : ↑((algebraMap Fq[X] ↥(ringOfIntegers Fq F)) p) = 0
⊢ p = 0
state_after: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : ∀ (a : Fq[X]), (algebraMap Fq[X] F) a = 0 → a = 0
p : Fq[X]
hp : ↑((algebraMap Fq[X] ↥(ringOfIntegers Fq F)) p) = 0
⊢ p = 0
tactic: rw [injective_iff_map_eq_zero (algebraMap Fq[X] F)] at hinj
state_before: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
hinj : ∀ (a : Fq[X]), (algebraMap Fq[X] F) a = 0 → a = 0
p : Fq[X]
hp : ↑((algebraMap Fq[X] ↥(ringOfIntegers Fq F)) p) = 0
⊢ p = 0
state_after: no goals
tactic: exact hinj p hp