Zulip Chat Archive

Stream: general

Topic: Euclidean domain and GCD domain


AHan (Jul 05 2019 at 08:58):

While trying to understand the definition of euclidean_domain and gcd_domain in Lean,
since in abstract algebra, ED is contained in GCD domain,
I've been wondering if it's possible to prove that euclidean_domain is an instance of gcd_domain in Lean?

To prove that euclidean_domain is an instance of gcd_domain, we must prove that gcd is unique up to multiplication by units in euclidean_domain. To prove this, we need to first define fields such as norm_unit for euclidean_domain. And I can figure out a way to define the norm_unit such that I can prove that gcd is unique up to multiplication by units.

Am I missing something?

Kenny Lau (Jul 05 2019 at 09:02):

in Lean you need a euclidean domain and a normalization domain to form a GCD domain, I believe

Mario Carneiro (Jul 05 2019 at 09:02):

I don't think it's possible. I recall discussing this with @Kevin Buzzard - not every domain is a normalization_domain; even using choice, you can't necessarily define a coherent normalization across the whole ring

AHan (Jul 05 2019 at 09:03):

So is this contradict to the relation of ED and GCD domain in abstract algebra ?

Mario Carneiro (Jul 05 2019 at 09:03):

I think gcd_domain should actually be renamed, or it should lose its dependence on normalization_domain, because this constraint is not in the maths definition of the term, and indeed there are lots of examples of GCD domains that have no natural normalization

Mario Carneiro (Jul 05 2019 at 09:04):

int is a normalization domain but I think it is an exception in this regard

AHan (Jul 05 2019 at 09:07):

If both euclidean_domain and gcd_domain are not depend on normalization_domain,
then is gcd still unique up to something?

Mario Carneiro (Jul 05 2019 at 09:08):

if gcd_domain does not depend on normalization_domain, then gcd will not be a function, it will be an assertion that a gcd exists

Mario Carneiro (Jul 05 2019 at 09:09):

lean's gcd_domain is more like "a domain where you can say gcd a b and mean something"

Mario Carneiro (Jul 05 2019 at 09:09):

but the maths definition is more abstract than that

Mario Carneiro (Jul 05 2019 at 09:11):

One way to say it is "associates A is a lattice"

Chris Hughes (Jul 05 2019 at 09:12):

That has computational content

Mario Carneiro (Jul 05 2019 at 09:12):

I'm not sure whether to give it content

Mario Carneiro (Jul 05 2019 at 09:13):

I think we probably want those operations on associates, so that's one option

Mario Carneiro (Jul 05 2019 at 09:13):

it can also be written gcd : A -> A -> associates A

Mario Carneiro (Jul 05 2019 at 09:16):

But I think that gcd_domain was written for the more CSy goal of just unifying int.gcd and nat.gcd. I think this is a bad idea, I think we want these operations regardless and gcd_domain is not really generalizing these


Last updated: Dec 20 2023 at 11:08 UTC