Zulip Chat Archive

Stream: Is there code for X?

Topic: primes associated of dvd


Julien Marquet (Feb 09 2021 at 14:46):

I'm searching for a lemma with like this :

lemma associated_of_dvd {α} [comm_monoid_with_zero α] {p q: α}
  (p_prime: prime p) (q_prime: prime q) (dvd: p  q): associated p q := sorry

I did not find it in mathlib, and I was wondering what was the best way to prove it
(maybe using associated_of_dvd_dvd and the definition of primes ?

Kevin Buzzard (Feb 09 2021 at 15:16):

associated_of_dvd_dvd needs something stronger than a comm_monoid_with_zero, it needs some cancellation property. I have no immediate feeling for whether what you're asking is true in the generality in which it can be stated :-)

Kevin Buzzard (Feb 09 2021 at 15:19):

I have these vague nightmare memories from undergraduate times about p dividing q and q dividing p but p and q not being associated because the cofactors weren't units...

Kevin Buzzard (Feb 09 2021 at 15:25):

Let X be the free comm monoid with 0 generated by four variables p q a b, subject to the relations p * a = q and q * b = p. Is this a counterexample?

Kevin Buzzard (Feb 09 2021 at 15:29):

My memory from UG is that one can even do this with commutative rings. Consider R[a,b,p]/(pabp)\R[a,b,p]/(pab-p). This is not an integral domain so nobody in their right mind would be trying to factor stuff, but it might be the case that p and pa are both prime. I might be wrong though, I'm just talking from a vague memory.

Kevin Buzzard (Feb 09 2021 at 15:31):

One thing is for sure though -- Lean keeps you honest :-)

Julien Marquet (Feb 09 2021 at 15:31):

I just stated the lemma in the largest class of structure that could hold the statement :sweat_smile:
Actually I only need it in a principal ideal domain

Kevin Buzzard (Feb 09 2021 at 15:37):

lol :-) It's true for comm_cancel_monoid_with_zero, which is "integral domain but without the addition".

Kevin Buzzard (Feb 09 2021 at 15:37):

You should prove it and make a PR! Do you have a github userid?

Kevin Buzzard (Feb 09 2021 at 15:38):

And you should construct a counterexample without the hypothesis of cancellation and add to the evidence that we should have a dictionary of counterexamples in mathlib (this came up in the ordered semiring fiasco).

Kevin Buzzard (Feb 09 2021 at 15:38):

because my vague undergrad memory won't be around forever.

Julien Marquet (Feb 09 2021 at 15:39):

Kevin Buzzard said:

You should prove it and make a PR! Do you have a github userid?

Yes, I got one :)
I was just wondering what was the most elegant way to prove this, I'll figure out something :)

Julien Marquet (Feb 09 2021 at 15:40):

Kevin Buzzard said:

And you should construct a counterexample without the hypothesis of cancellation and add to the evidence that we should have a dictionary of counterexamples in mathlib (this came up in the ordered semiring fiasco).

I'm searching for a counterexample :)

Riccardo Brasca (Feb 09 2021 at 15:50):

Note that there is exists_associated_mem_of_dvd_prod that is a small generalization of what you want.

Kevin Buzzard (Feb 09 2021 at 16:15):

docs#exists_associated_mem_of_dvd_prod

Kevin Buzzard (Feb 09 2021 at 16:17):

I still think that there's an argument for putting in this special case, it's still a slight kerfuffle to get it from that

Julien Marquet (Feb 09 2021 at 16:34):

Kevin Buzzard said:

Let X be the free comm monoid with 0 generated by four variables p q a b, subject to the relations p * a = q and q * b = p. Is this a counterexample?

I thing have a counterexample but in the non-commutative case -- I might be mistaken, I do not know monoids very well.
Let's consider finite and "left-infinite" words : a; b and p = ...ababab; q = ...bababa
To compute u * v : if v is finite, then we just concatenate, else we say that u * v = v.
We get then get a monoid where pa = q and qb = p, but p and w aren't associated (the only unit being the empty word).

Kevin Buzzard (Feb 09 2021 at 16:46):

Who knows -- you'll have to check the axioms. It might well work though!

Julien Marquet (Feb 10 2021 at 14:42):

Done.
I took inspiration from exists_associated_mem_of_dvd_prod.

import algebra.associated

lemma associated_of_dvd {α} [comm_cancel_monoid_with_zero α] {p q: α}
  (p_prime: prime p) (q_prime: prime q) (dvd: p  q): associated p q :=
begin
  cases dvd with c hc,
  cases ((irreducible_of_prime q_prime).is_unit_or_is_unit hc)
    .resolve_left p_prime.not_unit with u hu,
  exact  u, by rw [hu, hc] ⟩,
end

I'll PR this to mathlib :)

Kevin Buzzard (Feb 10 2021 at 19:33):

Nice proof! It's about half the length of the one I knocked up the other day. Yes definitely PR!


Last updated: Dec 20 2023 at 11:08 UTC