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

tactic: rw [← sub_eq_zero]
state_before: R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
⊢ ∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) = X ^ r
state_after: R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
⊢ ∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r = 0

tactic: have : Function.Injective (fun σ : L →ₐ[K] E ↦ σ x) := fun _ _ h =>
  AlgHom.ext_of_adjoin_eq_top hxL (fun _ hx ↦ hx ▸ h)
state_before: R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
⊢ ∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r = 0
state_after: R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ ∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r = 0

tactic: apply Polynomial.eq_zero_of_natDegree_lt_card_of_eval_eq_zero _ this
state_before: R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ ∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r = 0
state_after: case heval
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ ∀ (i : L →ₐ[K] E),
    eval (i x) (∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r) = 0

case hcard
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ (∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r).natDegree <
    Fintype.card (L →ₐ[K] E)

tactic: intro σ
state_before: case heval
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ ∀ (i : L →ₐ[K] E),
    eval (i x) (∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r) = 0
state_after: case heval
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ eval (σ x) (∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r) = 0

tactic: simp only [Polynomial.map_smul, map_div₀, map_pow, RingHom.coe_coe, eval_sub, eval_finset_sum,
  eval_smul, eval_map, eval₂_minpolyDiv_self, this.eq_iff, smul_eq_mul, mul_ite, mul_zero,
  Finset.sum_ite_eq', Finset.mem_univ, ite_true, eval_pow, eval_X]
state_before: case heval
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ eval (σ x) (∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r) = 0
state_after: case heval
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ σ x ^ r / σ ((aeval x) (derivative (minpoly K x))) * σ ((aeval x) (derivative (minpoly K x))) - σ x ^ r = 0

tactic: rw [sub_eq_zero, div_mul_cancel₀]
state_before: case heval
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ σ x ^ r / σ ((aeval x) (derivative (minpoly K x))) * σ ((aeval x) (derivative (minpoly K x))) - σ x ^ r = 0
state_after: case heval.h
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ σ ((aeval x) (derivative (minpoly K x))) ≠ 0

tactic: rw [ne_eq, map_eq_zero_iff σ σ.toRingHom.injective]
state_before: case heval.h
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ σ ((aeval x) (derivative (minpoly K x))) ≠ 0
state_after: case heval.h
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ ¬(aeval x) (derivative (minpoly K x)) = 0

tactic: exact (IsSeparable.separable _ _).aeval_derivative_ne_zero (minpoly.aeval _ _)
state_before: case heval.h
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ ¬(aeval x) (derivative (minpoly K x)) = 0
state_after: no goals

tactic: refine (Polynomial.natDegree_sub_le _ _).trans_lt
  (max_lt ((Polynomial.natDegree_sum_le _ _).trans_lt ?_) ?_)
state_before: case hcard
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ (∑ σ : L →ₐ[K] E, map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x) - X ^ r).natDegree <
    Fintype.card (L →ₐ[K] E)
state_after: case hcard.refine_1
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ Finset.fold max 0 (natDegree ∘ fun σ => map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x))
      Finset.univ <
    Fintype.card (L →ₐ[K] E)

case hcard.refine_2
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ (X ^ r).natDegree < Fintype.card (L →ₐ[K] E)

tactic: simp only [AlgEquiv.toAlgHom_eq_coe, Polynomial.map_smul,
  map_div₀, map_pow, RingHom.coe_coe, AlgHom.coe_coe, Function.comp_apply,
  Finset.mem_univ, forall_true_left, true_and, Finset.fold_max_lt, AlgHom.card]
state_before: case hcard.refine_1
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ Finset.fold max 0 (natDegree ∘ fun σ => map (↑σ) ((x ^ r / (aeval x) (derivative (minpoly K x))) • minpolyDiv K x))
      Finset.univ <
    Fintype.card (L →ₐ[K] E)
state_after: case hcard.refine_1
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ 0 < finrank K L ∧
    ∀ (x_1 : L →ₐ[K] E),
      ((x_1 x ^ r / x_1 ((aeval x) (derivative (minpoly K x)))) • map (↑x_1) (minpolyDiv K x)).natDegree < finrank K L

tactic: refine ⟨finrank_pos, ?_⟩
state_before: case hcard.refine_1
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ 0 < finrank K L ∧
    ∀ (x_1 : L →ₐ[K] E),
      ((x_1 x ^ r / x_1 ((aeval x) (derivative (minpoly K x)))) • map (↑x_1) (minpolyDiv K x)).natDegree < finrank K L
state_after: case hcard.refine_1
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ ∀ (x_1 : L →ₐ[K] E),
    ((x_1 x ^ r / x_1 ((aeval x) (derivative (minpoly K x)))) • map (↑x_1) (minpolyDiv K x)).natDegree < finrank K L

tactic: intro σ
state_before: case hcard.refine_1
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ ∀ (x_1 : L →ₐ[K] E),
    ((x_1 x ^ r / x_1 ((aeval x) (derivative (minpoly K x)))) • map (↑x_1) (minpolyDiv K x)).natDegree < finrank K L
state_after: case hcard.refine_1
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ ((σ x ^ r / σ ((aeval x) (derivative (minpoly K x)))) • map (↑σ) (minpolyDiv K x)).natDegree < finrank K L

tactic: exact ((Polynomial.natDegree_smul_le _ _).trans (natDegree_map_le _ _)).trans_lt
  ((natDegree_minpolyDiv_lt (Algebra.IsIntegral.isIntegral x)).trans_le
    (minpoly.natDegree_le _))
state_before: case hcard.refine_1
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
σ : L →ₐ[K] E
⊢ ((σ x ^ r / σ ((aeval x) (derivative (minpoly K x)))) • map (↑σ) (minpolyDiv K x)).natDegree < finrank K L
state_after: no goals

tactic: rwa [natDegree_pow, natDegree_X, mul_one, AlgHom.card]
state_before: case hcard.refine_2
R : Type ?u.102597
K : Type u_2
L : Type u_3
S : Type ?u.102606
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✝
E : Type u_1
inst✝⁴ : Field E
inst✝³ : Algebra K E
inst✝² : IsAlgClosed E
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
hxL : Algebra.adjoin K {x} = ⊤
r : ℕ
hr : r < finrank K L
this : Function.Injective fun σ => σ x
⊢ (X ^ r).natDegree < Fintype.card (L →ₐ[K] E)
state_after: no goals