File: Mathlib/RingTheory/IntegralDomain.lean

full_name: mul_right_bijective_of_finite₀
code: theorem mul_right_bijective_of_finite₀ {a : M} (ha : a ≠ 0) : Bijective fun b => a * b 
goal: Function.Bijective fun b => a * b

full_name: mul_left_bijective_of_finite₀
code: theorem mul_left_bijective_of_finite₀ {a : M} (ha : a ≠ 0) : Bijective fun b => b * a 
goal: Function.Bijective fun b => b * a

full_name: Fintype.groupWithZeroOfCancel
code: /-- Every finite nontrivial cancel_monoid_with_zero is a group_with_zero. -/
def Fintype.groupWithZeroOfCancel (M : Type*) [CancelMonoidWithZero M] [DecidableEq M] [Fintype M]
    [Nontrivial M] : GroupWithZero M 
goal: GroupWithZero M

full_name: exists_eq_pow_of_mul_eq_pow_of_coprime
code: theorem exists_eq_pow_of_mul_eq_pow_of_coprime {R : Type*} [CommSemiring R] [IsDomain R]
    [GCDMonoid R] [Unique Rˣ] {a b c : R} {n : ℕ} (cp : IsCoprime a b) (h : a * b = c ^ n) :
    ∃ d : R, a = d ^ n 
goal: ∃ d, a = d ^ n

full_name: Finset.exists_eq_pow_of_mul_eq_pow_of_coprime
code: nonrec
theorem Finset.exists_eq_pow_of_mul_eq_pow_of_coprime {ι R : Type*} [CommSemiring R] [IsDomain R]
    [GCDMonoid R] [Unique Rˣ] {n : ℕ} {c : R} {s : Finset ι} {f : ι → R}
    (h : ∀ i ∈ s, ∀ j ∈ s, i ≠ j → IsCoprime (f i) (f j))
    (hprod : ∏ i ∈ s, f i = c ^ n) : ∀ i ∈ s, ∃ d : R, f i = d ^ n 
goal: i ∈ s → ∃ d, f i = d ^ n

full_name: Fintype.divisionRingOfIsDomain
code: /-- Every finite domain is a division ring. More generally, they are fields; this can be found in
`Mathlib.RingTheory.LittleWedderburn`. -/
def Fintype.divisionRingOfIsDomain (R : Type*) [Ring R] [IsDomain R] [DecidableEq R] [Fintype R] :
    DivisionRing R 
goal: DivisionRing R

full_name: Fintype.fieldOfDomain
code: /-- Every finite commutative domain is a field. More generally, commutativity is not required: this
can be found in `Mathlib.RingTheory.LittleWedderburn`. -/
def Fintype.fieldOfDomain (R) [CommRing R] [IsDomain R] [DecidableEq R] [Fintype R] : Field R 
goal: Field R

full_name: Finite.isField_of_domain
code: theorem Finite.isField_of_domain (R) [CommRing R] [IsDomain R] [Finite R] : IsField R 
goal: IsField R

full_name: card_nthRoots_subgroup_units
code: theorem card_nthRoots_subgroup_units [Fintype G] [DecidableEq G] (f : G →* R) (hf : Injective f)
    {n : ℕ} (hn : 0 < n) (g₀ : G) :
    Finset.card (Finset.univ.filter (fun g ↦ g^n = g₀)) ≤ Multiset.card (nthRoots n (f g₀)) 
goal: (Finset.filter (fun g => g ^ n = g₀) Finset.univ).card ≤ Multiset.card (Polynomial.nthRoots n (f g₀))

full_name: isCyclic_of_subgroup_isDomain
code: /-- A finite subgroup of the unit group of an integral domain is cyclic. -/
theorem isCyclic_of_subgroup_isDomain [Finite G] (f : G →* R) (hf : Injective f) : IsCyclic G 
goal: IsCyclic G

full_name: instIsCyclicUnitsOfFinite
code: /-- The unit group of a finite integral domain is cyclic.

To support `ℤˣ` and other infinite monoids with finite groups of units, this requires only
`Finite Rˣ` rather than deducing it from `Finite R`. -/
instance [Finite Rˣ] : IsCyclic Rˣ 
goal: IsCyclic Rˣ

full_name: subgroup_units_cyclic
code: /-- A finite subgroup of the units of an integral domain is cyclic. -/
instance subgroup_units_cyclic : IsCyclic S 
goal: IsCyclic ↥S

full_name: Polynomial.div_eq_quo_add_rem_div
code: theorem div_eq_quo_add_rem_div (f : R[X]) {g : R[X]} (hg : g.Monic) :
    ∃ q r : R[X], r.degree < g.degree ∧
      (algebraMap R[X] K f) / (algebraMap R[X] K g) =
        algebraMap R[X] K q + (algebraMap R[X] K r) / (algebraMap R[X] K g) 
goal: ∃ q r,
  r.degree < g.degree ∧
    (algebraMap (Polynomial R) K) f / (algebraMap (Polynomial R) K) g =
      (algebraMap (Polynomial R) K) q + (algebraMap (Polynomial R) K) r / (algebraMap (Polynomial R) K) g

full_name: sum_hom_units_eq_zero
code: /-- In an integral domain, a sum indexed by a nontrivial homomorphism from a finite group is zero.
-/
theorem sum_hom_units_eq_zero (f : G →* R) (hf : f ≠ 1) : ∑ g : G, f g = 0 
goal: ∑ g : G, f g = 0

full_name: sum_hom_units
code: /-- In an integral domain, a sum indexed by a homomorphism from a finite group is zero,
unless the homomorphism is trivial, in which case the sum is equal to the cardinality of the group.
-/
theorem sum_hom_units (f : G →* R) [Decidable (f = 1)] :
    ∑ g : G, f g = if f = 1 then Fintype.card G else 0 
goal: ∑ g : G, f g = ↑(if f = 1 then Fintype.card G else 0)