Skip to content

[Merged by Bors] - refactor(NumberTheory.NumberField.CanonicalEmbedding): make the canonical embedding canonical#5518

Closed
xroblot wants to merge 20 commits intomasterfrom
xfr-refactor_canonical_embedding
Closed

[Merged by Bors] - refactor(NumberTheory.NumberField.CanonicalEmbedding): make the canonical embedding canonical#5518
xroblot wants to merge 20 commits intomasterfrom
xfr-refactor_canonical_embedding

Conversation

@xroblot
Copy link
Copy Markdown
Collaborator

@xroblot xroblot commented Jun 27, 2023

It was observed by @kbuzzard, and rightly so, that in the first version of this file the canonical_embedding was not so canonical. This refactor fixes that by replacing it with a truly canonical embedding.

More precisely, in the old version, the canonical embedding was defined as the ring homomorphism
K →+* ℝ^r₁ × ℂ^r₂ that sends x ∈ K to (φ_₁(x),...,φ_r₁(x)) × (ψ_₁(x),..., ψ_r₂(x)) where
φ_₁,...,φ_r₁ are its real embeddings and ψ_₁,..., ψ_r₂ are its complex embeddings (up to
complex conjugation). This is not canonical since it depends upon the choice of the ψ's.

In the new version, the canonical embedding is defined as the ring homomorphism K →+* ℂ^n that sends x ∈ K to (φ_₁(x),...,φ_n(x)) where the φ_i's are the complex embeddings of K.

The new version is easier to compute with since one does not have to distinguish between real and complex embeddings as in the first version. It also enables to prove the following result: the image of the ring of integers by canonicalEmbedding is a full ℤ-lattice (see latticeBasis) that will be useful in #5650.

Note that the original version of the canonical embedding will reappear in #5650 (as mixedEmbedding) since it allows for easier volume computation.


Open in Gitpod

@xroblot xroblot added the WIP Work in progress label Jun 27, 2023
@xroblot xroblot added awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. and removed WIP Work in progress labels Jul 1, 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 1, 2023
@xroblot xroblot changed the title refactor: make the canonical embedding canonical refactor (NumberTheory.NumberField.CanonicalEmbedding): make the canonical embedding canonical Jul 2, 2023
@kim-em
Copy link
Copy Markdown
Contributor

kim-em commented Jul 8, 2023

Please remember to add the label awaiting-review when this is ready for review. (Alternatively PRs that refactor files that were ported from mathlib3 should be labelled after-port.)

@xroblot xroblot added the t-number-theory Number theory (also use t-algebra or t-analysis to specialize) label Jul 16, 2023
@xroblot xroblot added WIP Work in progress and removed after-port labels Jul 24, 2023
@xroblot xroblot added awaiting-review and removed WIP Work in progress labels Jul 28, 2023
@ghost ghost added blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) labels Jul 28, 2023
@ghost ghost removed the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Aug 3, 2023
@ghost
Copy link
Copy Markdown

ghost commented Aug 3, 2023

@xroblot xroblot added the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Aug 3, 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 3, 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 Aug 3, 2023
@xroblot xroblot added the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Aug 3, 2023
@xroblot xroblot requested a review from kbuzzard August 3, 2023 23:55
@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 Aug 4, 2023
@kim-em kim-em changed the title refactor (NumberTheory.NumberField.CanonicalEmbedding): make the canonical embedding canonical refactor(NumberTheory.NumberField.CanonicalEmbedding): make the canonical embedding canonical Aug 6, 2023
@ericrbg
Copy link
Copy Markdown
Contributor

ericrbg commented Aug 10, 2023

sorry, can you briefly explain what is the issue with the original one and how this fixes this?

@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 10, 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 10, 2023
@xroblot
Copy link
Copy Markdown
Collaborator Author

xroblot commented Aug 11, 2023

sorry, can you briefly explain what is the issue with the original one and how this fixes this?

Thanks for the suggestion. I have expanded the PR description with more details on the refactor.

Copy link
Copy Markdown
Member

@kbuzzard kbuzzard left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't reviewed most of the later proofs, but I do think that this is the way to do it. The "canonical" R-vector space is the Galois-invariant subset of the C-vector-space. I have expressed my distaste for is-R-or-C before -- PRs like this are somehow doing things in a slightly more invariant way -- you get more theorems about complex conjugation for free if you consider it as an action of Z/2 on the RBarification rather than choosing an orientation (i.e. choosing I as a basis vector) and then having to start fussing about "CM types" or whatever they're called in the CM theory of abelian varieties.

Copy link
Copy Markdown
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks 🎉

bors merge

@ghost ghost added ready-to-merge This PR has been sent to bors. and removed awaiting-review labels Aug 19, 2023
bors bot pushed a commit that referenced this pull request Aug 19, 2023
…ical embedding canonical (#5518)

It was observed by @kbuzzard, and rightly so, that in the first version of this file the `canonical_embedding` was not so canonical. This refactor fixes that by replacing it with a truly canonical embedding. 

More precisely, in the old version, the canonical embedding was defined as the ring homomorphism
 `K →+* ℝ^r₁ × ℂ^r₂` that sends `x ∈ K` to `(φ_₁(x),...,φ_r₁(x)) × (ψ_₁(x),..., ψ_r₂(x))` where
 `φ_₁,...,φ_r₁` are its real embeddings and `ψ_₁,..., ψ_r₂` are its complex embeddings (up to
 complex conjugation). This is not canonical since it depends upon the choice of the `ψ`'s. 

In the new version, the canonical embedding is defined as the ring homomorphism `K →+* ℂ^n` that sends `x ∈ K` to `(φ_₁(x),...,φ_n(x))` where the `φ_i`'s are the complex embeddings of `K`.

The new version is easier to compute with since one does not have to distinguish between real and complex embeddings as in the first version. It also enables to prove the following result: the image of the ring of integers by `canonicalEmbedding` is a full ℤ-lattice (see `latticeBasis`) that will be useful in #5650.

Note that the original version of the canonical embedding will reappear in #5650 (as `mixedEmbedding`) since it allows for easier volume computation.
@bors
Copy link
Copy Markdown

bors bot commented Aug 19, 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(NumberTheory.NumberField.CanonicalEmbedding): make the canonical embedding canonical [Merged by Bors] - refactor(NumberTheory.NumberField.CanonicalEmbedding): make the canonical embedding canonical Aug 19, 2023
@bors bors bot closed this Aug 19, 2023
@bors bors bot deleted the xfr-refactor_canonical_embedding branch August 19, 2023 10:07
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-number-theory Number theory (also use t-algebra or t-analysis to specialize)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants