Theorem: natDegree_minpolyDiv
File: Mathlib/FieldTheory/Minpoly/MinpolyDiv.lean

tactic: nontriviality S
state_before: R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx : IsIntegral R x
⊢ (minpolyDiv R x).natDegree = (minpoly R x).natDegree - 1
state_after: R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx : IsIntegral R x
a✝ : Nontrivial S
⊢ (minpolyDiv R x).natDegree = (minpoly R x).natDegree - 1

tactic: by_cases hx : IsIntegral R x
state_before: R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx : IsIntegral R x
a✝ : Nontrivial S
⊢ (minpolyDiv R x).natDegree = (minpoly R x).natDegree - 1
state_after: case pos
R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx✝ : IsIntegral R x
a✝ : Nontrivial S
hx : IsIntegral R x
⊢ (minpolyDiv R x).natDegree = (minpoly R x).natDegree - 1

case neg
R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx✝ : IsIntegral R x
a✝ : Nontrivial S
hx : ¬IsIntegral R x
⊢ (minpolyDiv R x).natDegree = (minpoly R x).natDegree - 1

tactic: rw [← natDegree_minpolyDiv_succ hx]
state_before: case pos
R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx✝ : IsIntegral R x
a✝ : Nontrivial S
hx : IsIntegral R x
⊢ (minpolyDiv R x).natDegree = (minpoly R x).natDegree - 1
state_after: case pos
R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx✝ : IsIntegral R x
a✝ : Nontrivial S
hx : IsIntegral R x
⊢ (minpolyDiv R x).natDegree = (minpolyDiv R x).natDegree + 1 - 1

tactic: rfl
state_before: case pos
R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx✝ : IsIntegral R x
a✝ : Nontrivial S
hx : IsIntegral R x
⊢ (minpolyDiv R x).natDegree = (minpolyDiv R x).natDegree + 1 - 1
state_after: no goals

tactic: rw [minpolyDiv_eq_zero hx, minpoly.eq_zero hx]
state_before: case neg
R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx✝ : IsIntegral R x
a✝ : Nontrivial S
hx : ¬IsIntegral R x
⊢ (minpolyDiv R x).natDegree = (minpoly R x).natDegree - 1
state_after: case neg
R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx✝ : IsIntegral R x
a✝ : Nontrivial S
hx : ¬IsIntegral R x
⊢ natDegree 0 = natDegree 0 - 1

tactic: rfl
state_before: case neg
R : Type u_2
K : Type ?u.63032
L : Type ?u.63035
S : Type u_1
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : CommRing S
inst✝¹ : Algebra R S
inst✝ : Algebra K L
x : S
hx✝ : IsIntegral R x
a✝ : Nontrivial S
hx : ¬IsIntegral R x
⊢ natDegree 0 = natDegree 0 - 1
state_after: no goals