Zulip Chat Archive

Stream: maths

Topic: Little lemma about subfields


Patrick Lutz (Aug 19 2020 at 07:26):

Is the following lemma in mathlib already in some form? If not, should I make a PR to add it?

import field_theory.subfield algebra.group_with_zero_power

lemma is_subfield.pow_mem {K : Type*} [field K] {a : K} {n : } {s : set K} [is_subfield s] (h : a  s) : a ^ n  s :=
begin
    by_cases hn : n  0,
    {   lift n to  using hn,
        exact is_submonoid.pow_mem h, },
    {   rw [(show n = (-1)*(-n), by ring), fpow_mul, fpow_neg a, fpow_one],
        lift -n to  using (show -n  0, by linarith),
        exact is_submonoid.pow_mem (is_subfield.inv_mem h), },
end

Patrick Lutz (Aug 19 2020 at 07:27):

Also is this the right stream in which to ask this kind of question?

Kenny Lau (Aug 19 2020 at 07:27):

I think we should bundle is_subfield

Kenny Lau (Aug 19 2020 at 07:28):

also, we use 2 spaces for indent

Patrick Lutz (Aug 19 2020 at 07:29):

Kenny Lau said:

also, we use 2 spaces for indent

Yeah, I know, but I'm too lazy to change it for zulip.

Patrick Lutz (Aug 19 2020 at 07:30):

Kenny Lau said:

I think we should bundle is_subfield

Yeah, Kevin Buzzard mentioned this in the Berkeley stream. But I want to have something like this in mathlib because we used it in proving the primitive element theorem and I don't want to wait to see if is_subfield gets bundled

Johan Commelin (Aug 19 2020 at 07:32):

@Patrick Lutz Small remark about the name, this should be fpow_mem

Johan Commelin (Aug 19 2020 at 07:33):

Also, it's true for subgroup_with_zero, but I'm scared of thinking that such an object will be brought into existence :see_no_evil:

Kenny Lau (Aug 19 2020 at 07:45):

Patrick Lutz said:

Kenny Lau said:

also, we use 2 spaces for indent

Yeah, I know, but I'm too lazy to change it for zulip.

you can edit the default setting

Kenny Lau (Aug 19 2020 at 07:46):

@Gabriel Ebner is the default setting 4 spaces for indent? if so, could you change it to 2 spaces?

Mario Carneiro (Aug 19 2020 at 07:47):

https://github.com/leanprover-community/mathlib/blob/master/.vscode/settings.json#L3

Kenny Lau (Aug 19 2020 at 07:48):

@Mario Carneiro then why do I still see people typing with 4 spaces?

Kenny Lau (Aug 19 2020 at 07:49):

maybe they're not on vscode...?

Patrick Lutz (Aug 19 2020 at 07:50):

Kenny Lau said:

maybe they're not on vscode...?

For reference I am using vscode and as far as I know I have never changed the indentation settings

Mario Carneiro (Aug 19 2020 at 07:50):

what are your indentation settings, according to vscode?

Mario Carneiro (Aug 19 2020 at 07:50):

ctrl-comma, type "indent" and see what is set for "user" and "workspace"

Mario Carneiro (Aug 19 2020 at 07:52):

the indentation setting is also visible in the bottom right on the status bar

Patrick Lutz (Aug 19 2020 at 07:52):

Default tab size is 4 and detect indentation is also on

Johan Commelin (Aug 19 2020 at 07:52):

Maybe they're working on another project?

Johan Commelin (Aug 19 2020 at 07:52):

Are you editing mathlib, or something that depends on mathlib?

Patrick Lutz (Aug 19 2020 at 07:52):

Johan Commelin said:

Maybe they're working on another project?

Yeah, I'm not on a branch of mathlib

Mario Carneiro (Aug 19 2020 at 07:52):

if it detects your indentation style, then that's a self fulfilling prophecy

Patrick Lutz (Aug 19 2020 at 07:53):

lol

Patrick Lutz (Aug 19 2020 at 07:53):

It's also a project with some other people at Berkeley so I'm not sure whether the indentation in this particular file originated with me or someone else

Johan Commelin (Aug 19 2020 at 07:54):

I suggest you copy that file that Mario linked to

Mario Carneiro (Aug 19 2020 at 07:54):

you should set the indent to 2 space in "workspace" and put the file in your project

Johan Commelin (Aug 19 2020 at 07:54):

It will encourage everyone to follow mathlib's style

Mario Carneiro (Aug 19 2020 at 07:54):

which is equivalent to johan's suggestion

Patrick Lutz (Aug 19 2020 at 07:54):

Johan Commelin said:

Also, it's true for subgroup_with_zero, but I'm scared of thinking that such an object will be brought into existence :see_no_evil:

Should I make a PR with this version?

Johan Commelin (Aug 19 2020 at 07:55):

I really don't know if we should start thinking about bundled subgroups with zero

Johan Commelin (Aug 19 2020 at 07:55):

It sounds "off-topic"...

Johan Commelin (Aug 19 2020 at 07:55):

And because of bundling, subfields will not be subgroup_with_zero automatically

Patrick Lutz (Aug 19 2020 at 07:57):

So should I make a PR with the original version? Or wait for is_subfield to be bundled? Or something else?

Johan Commelin (Aug 19 2020 at 08:07):

@Kenny Lau I think you have a better feeling for how you want to proceed with field theory

Kenny Lau (Aug 19 2020 at 08:08):

as of now, is_subfield is only used in 5 files, so I don't really know what we should do

Johan Commelin (Aug 19 2020 at 08:31):

Sure, but we haven't started doing Galois theory in mathlib yet...

Johan Commelin (Aug 19 2020 at 08:32):

I guess that once we have Galois groups, we'll want to start using fixed_field quite a bit.

Johan Commelin (Aug 19 2020 at 08:33):

And if it is just a type, instead of a subfield, then fpow_mem will be painful

Johan Commelin (Aug 19 2020 at 08:33):

So there is a case for using substructures

Johan Commelin (Aug 19 2020 at 08:34):

Maybe we can do a typeclass predicate on bundled subrings? I guess that is very evil mixing of design choices.

Kevin Buzzard (Aug 19 2020 at 08:46):

Bundled subrings are essentially done in the bundled-subrings branch by the way, thanks to @Ashvni Narayanan There's just one non-mathlib-looking proof in there right now.

Ashvni Narayanan (Aug 19 2020 at 15:26):

Yeah, I am working on converting it into a term mode proof.

Patrick Massot (Aug 19 2020 at 15:32):

Why do you insist on having a proof term instead of a tactic proof?

Ashvni Narayanan (Aug 19 2020 at 15:36):

I am very happy to provide a tactic mode proof, if it is accepted.

Patrick Massot (Aug 19 2020 at 15:44):

Why wouldn't it be accepted? mathlib is full of tactics!

Ashvni Narayanan (Aug 19 2020 at 16:03):

The proof is quite long and winding. I thought term mode might be a more efficient way of doing it. However, I am finding it quite non-trivial to transform my proof.


Last updated: Dec 20 2023 at 11:08 UTC