Skip to content

Add preimage and kernel functionality to BQFClassGroupQuotientMorphism - #42676

Open
TheBlupper wants to merge 2 commits into
sagemath:developfrom
TheBlupper:bqf-morphism-kernel
Open

Add preimage and kernel functionality to BQFClassGroupQuotientMorphism#42676
TheBlupper wants to merge 2 commits into
sagemath:developfrom
TheBlupper:bqf-morphism-kernel

Conversation

@TheBlupper

Copy link
Copy Markdown
Contributor

Extend BQFClassGroupQuotientMorphism to now provide a subgroup for the kernel, and to allow finding a preimage of any class in the codomain. The algorithms are somewhat cobbled together from different sources, SCALLOP gives a nice exposition of the kernel structure, but the concrete implementation of it I had to figure out myself.

I have not seen a description of this preimage algorithm elsewhere, which doesn't require the factorization of the index (or relative conductor, don't know which term I like more).

Some previous discussion on this topic #40143 (comment), where the SCALLOP paper was reccomended by @yyyyx4.

A slightly unrelated issue I noticed, that is not yet addressed here, is that sage.rings.number_field.order::quadratic_order_class_number (which is used by BQFClassGroup.order()) is very slow when the fundamental discriminant is very small but the conductor is large. This should not be the case, as the class number h(f^2*D) can be easily computed from h(D) using these kernel formulas.

📝 Checklist

  • The title is concise and informative.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation and checked the documentation preview.

⌛ Dependencies

@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Documentation preview for this PR (built with commit 342883a; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

@cxzhong
cxzhong requested a review from yyyyx4 August 17, 2026 05:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant