File: Mathlib/Analysis/Complex/Polynomial/Basic.lean

full_name: Complex.exists_root
code: /-- **Fundamental theorem of algebra**: every non constant complex polynomial
  has a root -/
theorem exists_root {f : ℂ[X]} (hf : 0 < degree f) : ∃ z : ℂ, IsRoot f z 
goal: ∃ z, f.IsRoot z

full_name: Complex.isAlgClosed
code: instance isAlgClosed : IsAlgClosed ℂ 
goal: IsAlgClosed ℂ

full_name: Polynomial.Gal.splits_ℚ_ℂ
code: theorem splits_ℚ_ℂ {p : ℚ[X]} : Fact (p.Splits (algebraMap ℚ ℂ)) 
goal: Fact (Polynomial.Splits (algebraMap ℚ ℂ) p)

full_name: Polynomial.Gal.card_complex_roots_eq_card_real_add_card_not_gal_inv
code: /-- The number of complex roots equals the number of real roots plus
    the number of roots not fixed by complex conjugation (i.e. with some imaginary component). -/
theorem card_complex_roots_eq_card_real_add_card_not_gal_inv (p : ℚ[X]) :
    (p.rootSet ℂ).toFinset.card =
      (p.rootSet ℝ).toFinset.card +
        (galActionHom p ℂ (restrict p ℂ
        (AlgEquiv.restrictScalars ℚ Complex.conjAe))).support.card 
goal: (p.rootSet ℂ).toFinset.card =
  (p.rootSet ℝ).toFinset.card +
    ((Polynomial.Gal.galActionHom p ℂ)
          ((Polynomial.Gal.restrict p ℂ) (AlgEquiv.restrictScalars ℚ Complex.conjAe))).support.card

full_name: Polynomial.Gal.galActionHom_bijective_of_prime_degree
code: /-- An irreducible polynomial of prime degree with two non-real roots has full Galois group. -/
theorem galActionHom_bijective_of_prime_degree {p : ℚ[X]} (p_irr : Irreducible p)
    (p_deg : p.natDegree.Prime)
    (p_roots : Fintype.card (p.rootSet ℂ) = Fintype.card (p.rootSet ℝ) + 2) :
    Function.Bijective (galActionHom p ℂ) 
goal: Function.Bijective ⇑(Polynomial.Gal.galActionHom p ℂ)

full_name: Polynomial.Gal.galActionHom_bijective_of_prime_degree'
code: /-- An irreducible polynomial of prime degree with 1-3 non-real roots has full Galois group. -/
theorem galActionHom_bijective_of_prime_degree' {p : ℚ[X]} (p_irr : Irreducible p)
    (p_deg : p.natDegree.Prime)
    (p_roots1 : Fintype.card (p.rootSet ℝ) + 1 ≤ Fintype.card (p.rootSet ℂ))
    (p_roots2 : Fintype.card (p.rootSet ℂ) ≤ Fintype.card (p.rootSet ℝ) + 3) :
    Function.Bijective (galActionHom p ℂ) 
goal: Function.Bijective ⇑(Polynomial.Gal.galActionHom p ℂ)

full_name: Polynomial.mul_star_dvd_of_aeval_eq_zero_im_ne_zero
code: lemma Polynomial.mul_star_dvd_of_aeval_eq_zero_im_ne_zero (p : ℝ[X]) {z : ℂ} (h0 : aeval z p = 0)
    (hz : z.im ≠ 0) : (X - C ((starRingEnd ℂ) z)) * (X - C z) ∣ map (algebraMap ℝ ℂ) p 
goal: (Polynomial.X - Polynomial.C ((starRingEnd ℂ) z)) * (Polynomial.X - Polynomial.C z) ∣ Polynomial.map (algebraMap ℝ ℂ) p

full_name: Polynomial.quadratic_dvd_of_aeval_eq_zero_im_ne_zero
code: /-- If `z` is a non-real complex root of a real polynomial,
then `p` is divisible by a quadratic polynomial. -/
lemma Polynomial.quadratic_dvd_of_aeval_eq_zero_im_ne_zero (p : ℝ[X]) {z : ℂ} (h0 : aeval z p = 0)
    (hz : z.im ≠ 0) : X ^ 2 - C (2 * z.re) * X + C (‖z‖ ^ 2) ∣ p 
goal: Polynomial.X ^ 2 - Polynomial.C (2 * z.re) * Polynomial.X + Polynomial.C (‖z‖ ^ 2) ∣ p

full_name: Irreducible.degree_le_two
code: /-- An irreducible real polynomial has degree at most two. -/
lemma Irreducible.degree_le_two {p : ℝ[X]} (hp : Irreducible p) : degree p ≤ 2 
goal: p.degree ≤ 2

full_name: Irreducible.natDegree_le_two
code: /-- An irreducible real polynomial has natural degree at most two. -/
lemma Irreducible.natDegree_le_two {p : ℝ[X]} (hp : Irreducible p) : natDegree p ≤ 2 
goal: p.natDegree ≤ 2