α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
⊢ ∀ (q : α), q ∣ p ^ i p → q ∣ ∏ p' in s, p' ^ i p' → IsUnit q
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
⊢ ∀ (q : α), q ∣ p ^ i p → q ∣ ∏ p' in s, p' ^ i p' → IsUnit q
have hp := is_prime _ (Finset.mem_insert_self _ _)
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ : α
⊢ ∀ {d : α}, d ∣ p ^ i p → d ∣ ∏ p' in s, p' ^ i p' → ¬Prime d
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
⊢ ∀ (q : α), q ∣ p ^ i p → q ∣ ∏ p' in s, p' ^ i p' → IsUnit q
refine' fun _ => no_factors_of_no_prime_factors (pow_ne_zero _ hp.ne_zero) _
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdp : d ∣ p ^ i p
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
⊢ False
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ : α
⊢ ∀ {d : α}, d ∣ p ^ i p → d ∣ ∏ p' in s, p' ^ i p' → ¬Prime d
intro d hdp hdprod hd
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdp : d ∣ p ^ i p
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
⊢ p ∈ s
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdp : d ∣ p ^ i p
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
⊢ False
apply hps
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
⊢ p ∈ s
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdp : d ∣ p ^ i p
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
⊢ p ∈ s
replace hdp := hd.dvd_of_dvd_pow hdp
case intro.intro
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem' : q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q
⊢ p ∈ s
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
⊢ p ∈ s
obtain ⟨q, q_mem', hdq⟩ := hd.exists_mem_multiset_dvd hdprod
case intro.intro.intro.intro
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem : q ∈ s.val
q_mem' : q ^ i q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q ^ i q
⊢ p ∈ s
case intro.intro
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem' : q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q
⊢ p ∈ s
obtain ⟨q, q_mem, rfl⟩ := Multiset.mem_map.mp q_mem'
case intro.intro.intro.intro
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem : q ∈ s.val
q_mem' : q ^ i q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q
⊢ p ∈ s
case intro.intro.intro.intro
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem : q ∈ s.val
q_mem' : q ^ i q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q ^ i q
⊢ p ∈ s
replace hdq := hd.dvd_of_dvd_pow hdq
case intro.intro.intro.intro
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem : q ∈ s.val
q_mem' : q ^ i q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q
this : p ∣ q
⊢ p ∈ s
case intro.intro.intro.intro
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem : q ∈ s.val
q_mem' : q ^ i q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q
⊢ p ∈ s
have : p ∣ q := dvd_trans (hd.irreducible.dvd_symm hp.irreducible hdp) hdq
case a
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem : q ∈ s.val
q_mem' : q ^ i q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q
this : p ∣ q
⊢ p ∈ s ↔ q ∈ s.val
case intro.intro.intro.intro
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem : q ∈ s.val
q_mem' : q ^ i q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q
this : p ∣ q
⊢ p ∈ s
convert q_mem
no goals
case a
α : Type u_1
R : Type ?u.1372972
inst✝⁵ : CancelCommMonoidWithZero R
inst✝⁴ : UniqueFactorizationMonoid R
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
β : Type ?u.1372999
inst✝¹ : CancelCommMonoidWithZero β
inst✝ : DecidableEq α
s : Finset α
i : α → ℕ
p : α
hps : ¬p ∈ s
is_prime : ∀ (q : α), q ∈ insert p s → Prime q
is_coprime : ∀ (q : α), q ∈ insert p s → ∀ (q' : α), q' ∈ insert p s → q ∣ q' → q = q'
hp : Prime p
x✝ d : α
hdprod : d ∣ ∏ p' in s, p' ^ i p'
hd : Prime d
hdp : d ∣ p
q : α
q_mem : q ∈ s.val
q_mem' : q ^ i q ∈ Multiset.map (fun p' => p' ^ i p') s.val
hdq : d ∣ q
this : p ∣ q
⊢ p ∈ s ↔ q ∈ s.val
rw [Finset.mem_val,
  is_coprime _ (Finset.mem_insert_self p s) _ (Finset.mem_insert_of_mem q_mem) this]