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

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
⊢ 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: 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)
⊢ 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: 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)
⊢ ∀ (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: 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 : Function.Injective ⇑(algebraMap Fq[X] F)
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 : 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: exact hinj 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 : ∀ (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: rw [IsScalarTower.algebraMap_eq Fq[X] (RatFunc 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
⊢ Function.Injective ⇑(algebraMap Fq[X] 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
⊢ Function.Injective ⇑((algebraMap (RatFunc Fq) F).comp (algebraMap Fq[X] (RatFunc Fq)))

tactic: 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
⊢ Function.Injective ⇑((algebraMap (RatFunc Fq) F).comp (algebraMap Fq[X] (RatFunc Fq)))
state_after: no goals