R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
h : ↑C r = 0
⊢ 0 = ↑C 0
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
h : ↑C r = 0
⊢ r = 0
rw [← C_inj, h]
no goals
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
h : ↑C r = 0
⊢ 0 = ↑C 0
simp
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
h : IsUnit (↑C r)
⊢ IsUnit (↑constantCoeff (↑C r))

R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
h : IsUnit (↑C r)
⊢ Type ?u.531262
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
h : IsUnit (↑C r)
⊢ IsUnit r
rw [← constantCoeff_C _ r]
no goals
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
h : IsUnit (↑C r)
⊢ IsUnit (↑constantCoeff (↑C r))

R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
h : IsUnit (↑C r)
⊢ Type ?u.531262
exact h.map _
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑C r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
⊢ ↑C r ∣ ↑(rename Subtype.val) a' ∨ ↑C r ∣ ↑(rename Subtype.val) b'
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
a b : (fun x => MvPolynomial σ R) r
hd : ↑C r ∣ a * b
⊢ ↑C r ∣ a ∨ ↑C r ∣ b
obtain ⟨s, a', b', rfl, rfl⟩ := exists_finset_rename₂ a b
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
⊢ ↑C r ∣ ↑(rename Subtype.val) a' ∨ ↑C r ∣ ↑(rename Subtype.val) b'
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑C r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
⊢ ↑C r ∣ ↑(rename Subtype.val) a' ∨ ↑C r ∣ ↑(rename Subtype.val) b'
rw [← algebraMap_eq] at hd
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
this :
  ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(algebraMap R (MvPolynomial σ R)) r) ∣
    ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(rename Subtype.val) a' * ↑(rename Subtype.val) b')
⊢ ↑C r ∣ ↑(rename Subtype.val) a' ∨ ↑C r ∣ ↑(rename Subtype.val) b'
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
⊢ ↑C r ∣ ↑(rename Subtype.val) a' ∨ ↑C r ∣ ↑(rename Subtype.val) b'
have := (@killCompl s σ R _ ((↑) : s → σ) Subtype.coe_injective).toRingHom.map_dvd hd
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
this✝ :
  ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(algebraMap R (MvPolynomial σ R)) r) ∣
    ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(rename Subtype.val) a' * ↑(rename Subtype.val) b')
this : ↑(algebraMap R (MvPolynomial { x // x ∈ s } R)) r ∣ a' * b'
⊢ ↑C r ∣ ↑(rename Subtype.val) a' ∨ ↑C r ∣ ↑(rename Subtype.val) b'
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
this :
  ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(algebraMap R (MvPolynomial σ R)) r) ∣
    ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(rename Subtype.val) a' * ↑(rename Subtype.val) b')
⊢ ↑C r ∣ ↑(rename Subtype.val) a' ∨ ↑C r ∣ ↑(rename Subtype.val) b'
have : algebraMap R _ r ∣ a' * b' := by convert this <;> simp
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
this✝ :
  ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(algebraMap R (MvPolynomial σ R)) r) ∣
    ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(rename Subtype.val) a' * ↑(rename Subtype.val) b')
this : ↑(algebraMap R (MvPolynomial { x // x ∈ s } R)) r ∣ a' * b'
⊢ ↑(rename Subtype.val) (↑C r) ∣ ↑(rename Subtype.val) a' ∨ ↑(rename Subtype.val) (↑C r) ∣ ↑(rename Subtype.val) b'
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
this✝ :
  ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(algebraMap R (MvPolynomial σ R)) r) ∣
    ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(rename Subtype.val) a' * ↑(rename Subtype.val) b')
this : ↑(algebraMap R (MvPolynomial { x // x ∈ s } R)) r ∣ a' * b'
⊢ ↑C r ∣ ↑(rename Subtype.val) a' ∨ ↑C r ∣ ↑(rename Subtype.val) b'
rw [← rename_C ((↑) : s → σ)]
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
this✝ :
  ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(algebraMap R (MvPolynomial σ R)) r) ∣
    ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(rename Subtype.val) a' * ↑(rename Subtype.val) b')
this : ↑(algebraMap R (MvPolynomial { x // x ∈ s } R)) r ∣ a' * b'
f : MvPolynomial { x // x ∈ s } R →+* MvPolynomial σ R := ↑(rename Subtype.val)
⊢ ↑(rename Subtype.val) (↑C r) ∣ ↑(rename Subtype.val) a' ∨ ↑(rename Subtype.val) (↑C r) ∣ ↑(rename Subtype.val) b'
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
this✝ :
  ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(algebraMap R (MvPolynomial σ R)) r) ∣
    ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(rename Subtype.val) a' * ↑(rename Subtype.val) b')
this : ↑(algebraMap R (MvPolynomial { x // x ∈ s } R)) r ∣ a' * b'
⊢ ↑(rename Subtype.val) (↑C r) ∣ ↑(rename Subtype.val) a' ∨ ↑(rename Subtype.val) (↑C r) ∣ ↑(rename Subtype.val) b'
let f := @AlgHom.toRingHom R (MvPolynomial s R)
  (MvPolynomial σ R) _ _ _ _ _ (@rename _ _ R _ ((↑) : s → σ))
no goals
case intro.intro.intro.intro
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
this✝ :
  ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(algebraMap R (MvPolynomial σ R)) r) ∣
    ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(rename Subtype.val) a' * ↑(rename Subtype.val) b')
this : ↑(algebraMap R (MvPolynomial { x // x ∈ s } R)) r ∣ a' * b'
f : MvPolynomial { x // x ∈ s } R →+* MvPolynomial σ R := ↑(rename Subtype.val)
⊢ ↑(rename Subtype.val) (↑C r) ∣ ↑(rename Subtype.val) a' ∨ ↑(rename Subtype.val) (↑C r) ∣ ↑(rename Subtype.val) b'
exact (((prime_C_iff_of_fintype s).2 hr).2.2 a' b' this).imp f.map_dvd f.map_dvd
no goals
R : Type u
S : Type ?u.467790
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
s : Finset σ
a' b' : MvPolynomial { x // x ∈ s } R
hd : ↑(algebraMap R (MvPolynomial σ R)) r ∣ ↑(rename Subtype.val) a' * ↑(rename Subtype.val) b'
this :
  ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(algebraMap R (MvPolynomial σ R)) r) ∣
    ↑↑(killCompl (_ : Function.Injective fun a => ↑a)) (↑(rename Subtype.val) a' * ↑(rename Subtype.val) b')
⊢ ↑(algebraMap R (MvPolynomial { x // x ∈ s } R)) r ∣ a' * b'
convert this <;> simp