Theorem: Ideal.inertiaDeg_algebraMap
File: Mathlib/NumberTheory/RamificationInertia.lean

tactic: nontriviality S ⧸ P using inertiaDeg_of_subsingleton, finrank_zero_of_subsingleton
state_before: R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
⊢ inertiaDeg (algebraMap R S) p P = finrank (R ⧸ p) (S ⧸ P)
state_after: R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
⊢ inertiaDeg (algebraMap R S) p P = finrank (R ⧸ p) (S ⧸ P)

tactic: have := comap_eq_of_scalar_tower_quotient (algebraMap (R ⧸ p) (S ⧸ P)).injective
state_before: R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
⊢ inertiaDeg (algebraMap R S) p P = finrank (R ⧸ p) (S ⧸ P)
state_after: R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
⊢ inertiaDeg (algebraMap R S) p P = finrank (R ⧸ p) (S ⧸ P)

tactic: rw [inertiaDeg, dif_pos this]
state_before: R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
⊢ inertiaDeg (algebraMap R S) p P = finrank (R ⧸ p) (S ⧸ P)
state_after: R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
⊢ finrank (R ⧸ p) (S ⧸ P) = finrank (R ⧸ p) (S ⧸ P)

tactic: congr
state_before: R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
⊢ finrank (R ⧸ p) (S ⧸ P) = finrank (R ⧸ p) (S ⧸ P)
state_after: case h.e_5.h.h.e_5.h
R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
⊢ (Quotient.lift p ((Quotient.mk P).comp (algebraMap R S)) ⋯).toAlgebra = inst✝¹

tactic: refine Algebra.algebra_ext _ _ fun x' => Quotient.inductionOn' x' fun x => ?_
state_before: case h.e_5.h.h.e_5.h
R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
⊢ (Quotient.lift p ((Quotient.mk P).comp (algebraMap R S)) ⋯).toAlgebra = inst✝¹
state_after: case h.e_5.h.h.e_5.h
R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
x' : R ⧸ p
x : R
⊢ (algebraMap (R ⧸ p) (S ⧸ P)) (Quotient.mk'' x) = (algebraMap (R ⧸ p) (S ⧸ P)) (Quotient.mk'' x)

tactic: change Ideal.Quotient.lift p _ _ (Ideal.Quotient.mk p x) = algebraMap _ _ (Ideal.Quotient.mk p x)
state_before: case h.e_5.h.h.e_5.h
R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
x' : R ⧸ p
x : R
⊢ (algebraMap (R ⧸ p) (S ⧸ P)) (Quotient.mk'' x) = (algebraMap (R ⧸ p) (S ⧸ P)) (Quotient.mk'' x)
state_after: case h.e_5.h.h.e_5.h
R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
x' : R ⧸ p
x : R
⊢ (Quotient.lift p ((Quotient.mk P).comp (algebraMap R S)) ⋯) ((Quotient.mk p) x) =
    (algebraMap (R ⧸ p) (S ⧸ P)) ((Quotient.mk p) x)

tactic: rw [Ideal.Quotient.lift_mk, ← Ideal.Quotient.algebraMap_eq P, ← IsScalarTower.algebraMap_eq,
  ← Ideal.Quotient.algebraMap_eq, ← IsScalarTower.algebraMap_apply]
state_before: case h.e_5.h.h.e_5.h
R : Type u
inst✝⁴ : CommRing R
S : Type v
inst✝³ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
inst✝² : Algebra R S
inst✝¹ : Algebra (R ⧸ p) (S ⧸ P)
inst✝ : IsScalarTower R (R ⧸ p) (S ⧸ P)
hp : p.IsMaximal
a✝ : Nontrivial (S ⧸ P)
this : comap (algebraMap R S) P = p
x' : R ⧸ p
x : R
⊢ (Quotient.lift p ((Quotient.mk P).comp (algebraMap R S)) ⋯) ((Quotient.mk p) x) =
    (algebraMap (R ⧸ p) (S ⧸ P)) ((Quotient.mk p) x)
state_after: no goals