Skip to content

[Merged by Bors] - refactor(FieldTheory/NormalClosure): change definition and add API#6163

Closed
tb65536 wants to merge 30 commits intomasterfrom
tb_normal_closure
Closed

[Merged by Bors] - refactor(FieldTheory/NormalClosure): change definition and add API#6163
tb65536 wants to merge 30 commits intomasterfrom
tb_normal_closure

Conversation

@tb65536
Copy link
Copy Markdown
Contributor

@tb65536 tb65536 commented Jul 26, 2023

This PR adds API and changes the definition of the normal closure of $F\leq K\leq L$ to be an intermediate field of L/F, rather than an intermediate field of L/K. For example, I think it would be more common to say that the normal closure of $\mathbb{Q}(\sqrt[3]{2})/\mathbb{Q}$ is $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}$ rather than $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}(\sqrt[3]{2})$. This change also means that the normal closure goes from being a dependent function (K : Type) → IntermediateField K L to being a non-dependent function Type → IntermediateField F L, making it easier to compare across the Galois corespondence.

Supersedes leanprover-community/mathlib3#18971


Open in Gitpod

@tb65536 tb65536 added awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. and removed awaiting-review labels Jul 26, 2023
@riccardobrasca riccardobrasca self-assigned this Jul 26, 2023
@riccardobrasca
Copy link
Copy Markdown
Member

I am not sure I understand the point of the new definition, since as you said normalClosure is already an IntermediateField.

@tb65536
Copy link
Copy Markdown
Contributor Author

tb65536 commented Jul 26, 2023

I am not sure I understand the point of the new definition, since as you said normalClosure is already an IntermediateField.

Yes sorry, I got myself confused. The difference is that if you apply the old definition to an intermediate field, then you have to restrict scalars to get back to the same intermediate field type. It's more convenient in this case to have a function K : IntermediateField F L → normalClosure K : IntermediateField F L, rather than a dependent function K : IntermediateField F L → normalClosure K : IntermediateField K L.

@tb65536
Copy link
Copy Markdown
Contributor Author

tb65536 commented Jul 26, 2023

I especially have in mind the Galois correspondence, where normalClosure : IntermediateField F L → IntermediateField F L corresponds to normalCore : Subgroup G → Subgroup G.

@riccardobrasca
Copy link
Copy Markdown
Member

I especially have in mind the Galois correspondence, where normalClosure : IntermediateField F L → IntermediateField F L corresponds to normalCore : Subgroup G → Subgroup G.

Ah, so the point is if normalClosure K should be an IntermediateField K L (as the current definition) or an IntermediateField F L. I agree that your definition seems more reasonable, but I am not 100% sure. But having both seems a little strange.

@tb65536
Copy link
Copy Markdown
Contributor Author

tb65536 commented Jul 26, 2023

Yeah, having both does seems strange. I'll look into refactoring the current definition to be IntermediateField F L, and see how it feels.

@riccardobrasca
Copy link
Copy Markdown
Member

One problem with your definition is that normalClosure K is not a K-algebra automatically, so in some sense you loose information.

@github-actions github-actions bot removed the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Jul 26, 2023
@tb65536
Copy link
Copy Markdown
Contributor Author

tb65536 commented Jul 27, 2023

The refactor seemed to go through smoothly, and I've added back the lost instances.

@tb65536 tb65536 added awaiting-review awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. labels Jul 27, 2023
@github-actions github-actions bot removed the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Jul 27, 2023
@eric-wieser
Copy link
Copy Markdown
Member

eric-wieser commented Aug 14, 2023

This change also means that the normal closure goes from being a dependent function (K : IntermediateField F L) -> (IntermediateField K L) to being a non-dependent function IntermediateField F L -> IntermediateField F L, making it easier to compare across the Galois corespondence.

This comment is a bit misleading, the normalClosure does not have the signature that you claim it does in the PR description; it is actually (K : Type) -> (IntermediateField K L).

@tb65536
Copy link
Copy Markdown
Contributor Author

tb65536 commented Aug 14, 2023

This comment is a bit misleading, the normalClosure does not have the signature that you claim it does in the PR description; it is actually (K : Type) -> (IntermediateField K L).

Good point. I've updated the PR description.

@eric-wieser
Copy link
Copy Markdown
Member

eric-wieser commented Aug 14, 2023

I made another edit, your spelling looked like it was describing k : K.

@eric-wieser
Copy link
Copy Markdown
Member

@jcommelin, I'd argue that a TFAE is worse because:

  • In this particular case the overall proof is longer
  • It's harder to use, because you have to remember the indices of the statement you want
  • It's harder to find, because you can't just guess the name of the sub-statements any more
  • It's totally reasonable to expect someone to navigate the API by going via the "hub and spoke" model where Normal is the canonical spelling and all the other are consequences. In my opinion, TFAEs are most useful where there is no canonical spelling (or as an implementation detail to reduce the proof burden when building the API).

This came up when definig Algebra.ModEq, where we realized that a canonical spelling was more useful than a large TFAE.

@kbuzzard
Copy link
Copy Markdown
Member

This looks great to me. Can you show it's a ClosureOperator?

@eric-wieser
Copy link
Copy Markdown
Member

I think @YaelDillies concluded that ClosureOperator was poorly designed and not worth trying to use; I think a galois connection would be more sensible?

@tb65536
Copy link
Copy Markdown
Contributor Author

tb65536 commented Aug 23, 2023

Wouldn't defining a Galois connection require defining a type of normal intermediate fields? Is that something that we want to do?

@ghost ghost added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Aug 23, 2023
@ghost ghost removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Aug 23, 2023
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@YaelDillies
Copy link
Copy Markdown
Contributor

You can try using ClosureOperator because it's the right situation in theory: You have a Galois correspondence between an order and a suborder of it, and you don't want to define that suborder as a separate type. But don't expect too much of it, as Eric said I dislike my own API here.

@jcommelin
Copy link
Copy Markdown
Member

Thanks 🎉

bors merge

@github-actions github-actions bot added ready-to-merge This PR has been sent to bors. and removed awaiting-review labels Sep 6, 2023
bors bot pushed a commit that referenced this pull request Sep 6, 2023
…6163)

This PR adds API and changes the definition of the normal closure of $F\leq K\leq L$ to be an intermediate field of L/F, rather than an intermediate field of L/K. For example, I think it would be more common to say that the normal closure of $\mathbb{Q}(\sqrt[3]{2})/\mathbb{Q}$ is $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}$ rather than $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}(\sqrt[3]{2})$. This change also means that the normal closure goes from being a dependent function `(K : Type) → IntermediateField K L` to being a non-dependent function `Type → IntermediateField F L`, making it easier to compare across the Galois corespondence.

Supersedes leanprover-community/mathlib3#18971



Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Thomas Browning <tb65536@users.noreply.github.com>
@bors
Copy link
Copy Markdown

bors bot commented Sep 6, 2023

This PR was included in a batch that was canceled, it will be automatically retried

bors bot pushed a commit that referenced this pull request Sep 7, 2023
…6163)

This PR adds API and changes the definition of the normal closure of $F\leq K\leq L$ to be an intermediate field of L/F, rather than an intermediate field of L/K. For example, I think it would be more common to say that the normal closure of $\mathbb{Q}(\sqrt[3]{2})/\mathbb{Q}$ is $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}$ rather than $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}(\sqrt[3]{2})$. This change also means that the normal closure goes from being a dependent function `(K : Type) → IntermediateField K L` to being a non-dependent function `Type → IntermediateField F L`, making it easier to compare across the Galois corespondence.

Supersedes leanprover-community/mathlib3#18971



Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Thomas Browning <tb65536@users.noreply.github.com>
@bors
Copy link
Copy Markdown

bors bot commented Sep 7, 2023

Pull request successfully merged into master.

Build succeeded!

The publicly hosted instance of bors-ng is deprecated and will go away soon.

If you want to self-host your own instance, instructions are here.
For more help, visit the forum.

If you want to switch to GitHub's built-in merge queue, visit their help page.

@bors bors bot changed the title refactor(FieldTheory/NormalClosure): change definition and add API [Merged by Bors] - refactor(FieldTheory/NormalClosure): change definition and add API Sep 7, 2023
@bors bors bot closed this Sep 7, 2023
ebab pushed a commit that referenced this pull request Sep 11, 2023
…6163)

This PR adds API and changes the definition of the normal closure of $F\leq K\leq L$ to be an intermediate field of L/F, rather than an intermediate field of L/K. For example, I think it would be more common to say that the normal closure of $\mathbb{Q}(\sqrt[3]{2})/\mathbb{Q}$ is $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}$ rather than $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}(\sqrt[3]{2})$. This change also means that the normal closure goes from being a dependent function `(K : Type) → IntermediateField K L` to being a non-dependent function `Type → IntermediateField F L`, making it easier to compare across the Galois corespondence.

Supersedes leanprover-community/mathlib3#18971



Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Thomas Browning <tb65536@users.noreply.github.com>
kodyvajjha pushed a commit that referenced this pull request Sep 22, 2023
…6163)

This PR adds API and changes the definition of the normal closure of $F\leq K\leq L$ to be an intermediate field of L/F, rather than an intermediate field of L/K. For example, I think it would be more common to say that the normal closure of $\mathbb{Q}(\sqrt[3]{2})/\mathbb{Q}$ is $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}$ rather than $\mathbb{Q}(\sqrt[3]{2},\zeta_3)/\mathbb{Q}(\sqrt[3]{2})$. This change also means that the normal closure goes from being a dependent function `(K : Type) → IntermediateField K L` to being a non-dependent function `Type → IntermediateField F L`, making it easier to compare across the Galois corespondence.

Supersedes leanprover-community/mathlib3#18971



Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Thomas Browning <tb65536@users.noreply.github.com>
@tb65536 tb65536 deleted the tb_normal_closure branch December 31, 2024 03:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge This PR has been sent to bors. t-algebra Algebra (groups, rings, fields, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants