Skip to content

feat: predicates for extensions of complex embeddings#24877

Closed
smmercuri wants to merge 1 commit intomasterfrom
smmercuri/ComplexEmbeddingExtension
Closed

feat: predicates for extensions of complex embeddings#24877
smmercuri wants to merge 1 commit intomasterfrom
smmercuri/ComplexEmbeddingExtension

Conversation

@smmercuri
Copy link
Copy Markdown
Collaborator

If L/K, ψ : K →+* ℂ, φ : L →+* ℂ we define three predicates asserting ways that φ can extend ψ.

  • IsExtension ψ φ : the restriction of φ to K is ψ.
  • IsMixedExtension ψ φ : the restriction of φ to K is ψ, ψ has real image while φ has complex image.
  • IsUnmixedExtension ψ φ: the restriction of φ to K is ψ, ψ has real image if and only if φ has real image.

IsMixedExtension and IsUnmixedExtension are the ComplexEmbedding analogues to ramified and unramified infinite places.


Open in Gitpod

@github-actions github-actions bot added the t-number-theory Number theory (also use t-algebra or t-analysis to specialize) label May 14, 2025
@github-actions
Copy link
Copy Markdown

PR summary 1e5008c035

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ IsExtension
+ IsExtension.ne
+ IsExtension.not_isExtension_conjugate
+ IsExtension.not_isReal_of_not_isReal
+ IsMixedExtension
+ IsUnmixedExtension
+ IsUnmixedExtension.isReal_of_isReal
+ conjugate_comp
+ isExtension
+ isExtensionEquivSum
+ isReal
+ not_isReal

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for script/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@xroblot
Copy link
Copy Markdown
Collaborator

xroblot commented May 20, 2025

I think something like that it's definitely a good idea, but I'd like to have a better understanding of how this is going to combine with what's already there for infinite places. In particular, I have the feeling there is a risk for code duplication. Maybe ramification of complex embeddings should follow from ramification of infinite places or the other way around, but I don't think that having two definitions of ramifications and then prove that there are consistent is the way to go. I could be wrong though so I am ready to hear counterargument.

@smmercuri
Copy link
Copy Markdown
Collaborator Author

One of the main results of these series of PRs is ∑ (v | w), w.ramificationIdx K = Module.finrank K L, whose proof basically goes #UnramifiedExtension + 2*#RamifiedExtension = #ComplexExtensions = #(L →ₐ[K] ℂ) = Module.finrank K L. So I need some way of talking about extensions of complex embeddings. I think these differ somewhat from ramification of infinite places, since if v | w then we are not guaranteed that w.embedding extends v.embedding. Indeed in the ramified case there is a two-to-one map from infinite place extensions to complex extensions (see one of the dependent PRs). Because of this difference, I feel the content of this PR does not quite risk duplication, and I think it's just a question of whether these predicates are worth giving explicit names to or not, which I think they are.

Your point about duplication is valid though, particularly to the dependent PR #24882 where, for example, I define UnramifiedExtension as

{ w : InfinitePlace L // w.comap (algebraMap K L) = v ∧ w.IsUnramified K }

but it could be replaced with

{ w : InfinitePlace L // ∃ ψ, w = mk ψ ∧ IsUnmixedExtension v.embedding ψ }

or possibly removed altogether.

Overall, I still feel these are different enough to have as separate defs, but if we do want to reduce them then I think we should do it via the ComplexEmbedding -> InfinitePlace way around, which would affect #24882 rather than this PR.

variable (φ ψ)

/--
If `L/K` and `ψ : K →+* ℂ`, `φ : L →+* ℂ`, then `φ` is a _mixed extension_ of `ψ` if the
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I am not sure about calling it a mixed extension but since I cannot think of anything better, I can guess it's fine. We could call it ComplexEmbedding.RamifiedExtension, I guess, but it might get too confusing

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I am also unsure of the naming, so I'm open to other suggestions, but I do think we should avoid using ramified for complex embeddings as it would be a bit confusing.

@leanprover-community-bot-assistant
Copy link
Copy Markdown
Collaborator

This pull request has conflicts, please merge master and resolve them.

@leanprover-community-bot-assistant leanprover-community-bot-assistant added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Jun 4, 2025
@smmercuri
Copy link
Copy Markdown
Collaborator Author

This PR has been migrated to a fork-based workflow: #27977

@smmercuri smmercuri closed this Aug 5, 2025
@YaelDillies YaelDillies deleted the smmercuri/ComplexEmbeddingExtension branch August 18, 2025 07:25
mathlib-bors bot pushed a commit that referenced this pull request Sep 19, 2025
If `L/K` and  `ψ : K →+* ℂ`, we define the subtype `ComplexExtension L ψ` of `L →+* ℂ` that extend `ψ` to `L`. Also define two predicates asserting ways that `φ` can extend `ψ`.
- `φ.IsMixed` : `ψ` has real image while `φ` has complex image.
- `φ.IsUnmixed`: the negation of `IsMixed` -- `ψ` has real image if and only if `φ` has real image.

`ComplexExtension.IsMixed` and `ComplexExtension.IsUnmixed` are the `ComplexEmbedding` analogues to ramified and unramified infinite places, which is a two-to-one isomorphism in the former and a one-to-one isomorphism in the latter, hence the slightly different terminology.

This PR continues the work from #24877.

Original PR: #24877
joelriou pushed a commit to joelriou/mathlib4 that referenced this pull request Oct 2, 2025
…munity#27977)

If `L/K` and  `ψ : K →+* ℂ`, we define the subtype `ComplexExtension L ψ` of `L →+* ℂ` that extend `ψ` to `L`. Also define two predicates asserting ways that `φ` can extend `ψ`.
- `φ.IsMixed` : `ψ` has real image while `φ` has complex image.
- `φ.IsUnmixed`: the negation of `IsMixed` -- `ψ` has real image if and only if `φ` has real image.

`ComplexExtension.IsMixed` and `ComplexExtension.IsUnmixed` are the `ComplexEmbedding` analogues to ramified and unramified infinite places, which is a two-to-one isomorphism in the former and a one-to-one isomorphism in the latter, hence the slightly different terminology.

This PR continues the work from leanprover-community#24877.

Original PR: leanprover-community#24877
zhuyizheng pushed a commit to zhuyizheng/mathlib4 that referenced this pull request Oct 2, 2025
…munity#27977)

If `L/K` and  `ψ : K →+* ℂ`, we define the subtype `ComplexExtension L ψ` of `L →+* ℂ` that extend `ψ` to `L`. Also define two predicates asserting ways that `φ` can extend `ψ`.
- `φ.IsMixed` : `ψ` has real image while `φ` has complex image.
- `φ.IsUnmixed`: the negation of `IsMixed` -- `ψ` has real image if and only if `φ` has real image.

`ComplexExtension.IsMixed` and `ComplexExtension.IsUnmixed` are the `ComplexEmbedding` analogues to ramified and unramified infinite places, which is a two-to-one isomorphism in the former and a one-to-one isomorphism in the latter, hence the slightly different terminology.

This PR continues the work from leanprover-community#24877.

Original PR: leanprover-community#24877
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) migrated-to-fork 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.

3 participants