Zulip Chat Archive

Stream: maths

Topic: algebraic closure construction


Chris Hughes (Jan 23 2019 at 20:27):

So I'm trying out Tom Hales' construction of algebraic closure. The argument is to use zorn on this type ordered by subset, such that the inclusion map is a field hom.

def extensions : set (Σ s : set (big_type K), discrete_field s) :=
{s |  h : set.range (embedding K)  s.1,
  by letI := s.2; exact is_field_hom (inclusion h) 
     x : s.1, in_algebraic_closure _ (inclusion h) x}

This involves putting a field structure on the Union of a chain within this type. This is very messy. All the operations are noncomputable, and to prove add_assoc, I end up with four different definitions of addition, with a tactic state like this.

K : Type u,
c : set (extensions K),
hc : chain (λ (m a : (extensions K)), m  a) c,
x y z : ↥⋃ (s : c), ((s.val).val).fst
 (z, _⟩ + (x, _⟩ + y, _⟩).val, _⟩).val =
    (x, _⟩ + (y, _⟩ + z, _⟩).val, _⟩).val

Is there a nicer approach?

Johannes Hölzl (Jan 23 2019 at 21:26):

Just to understand how you need to continue: since hc tells you that c forms a chain it is enough to select a maximal element and know that x, y, or z are all in this maximal field.

Chris Hughes (Jan 23 2019 at 21:27):

Yes, but that's quite a messy argument.

Johannes Hölzl (Jan 23 2019 at 21:27):

it is

Kenny Lau (Jan 23 2019 at 21:28):

I just realized today that Artin's construction does not require splitting fields.

Kevin Buzzard (Jan 23 2019 at 21:29):

Wasn't I telling you this last Thursday?

Kenny Lau (Jan 23 2019 at 21:29):

maybe I wasn't listening :P

Kevin Buzzard (Jan 23 2019 at 21:29):

I think you convinced me it did, and then I tried to convince Neil in Amsterdam and he convinced me it didn't :-)

Johannes Hölzl (Jan 23 2019 at 21:38):

@Chris Hughes I don't know how these proofs work in general. But maybe you need to write more infrastructure around extensions. First, instead of defining it as a set a Type may be more helpful. You need to add a partial_order type class on it, then use zorn_partial_order. Also provide a local discrete_field (field_of_extension ...) instance. Then at least the type class instances shouldn't be a problem. In the end the work is the same, but it might be clearer to see what is required

Chris Hughes (Jan 24 2019 at 18:18):

I thought about this, and I've realised it would be easy if we had direct limit.

Kenny Lau (Jan 24 2019 at 18:18):

no, direct limit is the easiest part

Kenny Lau (Jan 24 2019 at 18:19):

but I might work on direct limit today


Last updated: Dec 20 2023 at 11:08 UTC