Skip to content

feat(RingTheory/ClassGroup): prove mulEquiv#35535

Open
mariainesdff wants to merge 12 commits intomasterfrom
class_group_equiv
Open

feat(RingTheory/ClassGroup): prove mulEquiv#35535
mariainesdff wants to merge 12 commits intomasterfrom
class_group_equiv

Conversation

@mariainesdff
Copy link
Copy Markdown
Contributor

We prove that isomorphic rings have isomorphic class groups.

Co-authored by: @xgenereux.


Open in Gitpod

@mariainesdff mariainesdff added the t-ring-theory Ring theory label Feb 19, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 19, 2026

PR summary f318334181

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ ClassGroup.mulEquiv
+ FractionalIdeal.map_ringEquivOfRingEquiv_toPrincipalIdeal
+ _root_.IsFractional.map'
+ ringEquivOfRingEquiv
+ ringEquivOfRingEquiv_apply
+ ringEquivOfRingEquiv_apply_val
+ ringEquivOfRingEquiv_comp
+ ringEquivOfRingEquiv_refl
+ ringEquivOfRingEquiv_spanSingleton
+ ringEquivOfRingEquiv_symm_eq
+ ringEquivOfRingEquiv_trans
+ ringEquivOfRingEquiv_trans_apply
+ semilinearEquivOfRingEquiv
+ semilinearEquivOfRingEquiv_algebraMap
+ semilinearEquivOfRingEquiv_apply
+ semilinearEquivOfRingEquiv_comp
+ semilinearEquivOfRingEquiv_symm_apply

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

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

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


Increase in tech debt: (relative, absolute) = (4.00, 0.00)
Current number Change Type
10036 4 backward.isDefEq

Current commit dc8a439359
Reference commit f318334181

You can run this locally as

./scripts/reporting/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).

rfl

/-- A ring isomorphism `P ≃+* P'` induces an isomorphism on their class groups. -/
noncomputable def RingEquiv.classGroupEquiv {P P' : Type*} [CommRing P] [IsDomain P] [CommRing P']
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

To match QuotientGroup.congr this should perhaps be ClassGroup.congr

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I could change it, but why not rename QuotientGroup.congr to QuotientGroup.mulEquiv instead (and this to ClassGroup.mulEquiv? That seems more discoverable to me than congr.

← FractionalIdeal.ringEquivOfRingEquiv_symm_eq, hu]
rfl

/-- A ring isomorphism `P ≃+* P'` induces an isomorphism on their class groups. -/
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can you characterize via a lemma what this isomorphism does to ClassGroup.mk?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I don't think there is a nice formula for this.

@mariainesdff mariainesdff added the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Feb 23, 2026
@mathlib-merge-conflicts mathlib-merge-conflicts bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Feb 25, 2026
@mathlib-merge-conflicts
Copy link
Copy Markdown

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

@github-actions github-actions bot removed merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. labels Feb 25, 2026
Comment on lines +1008 to +1015
have : RingHomCompTriple f (g : S →+* T) (f.trans g : R →+* T) := ⟨rfl⟩
apply RingHom.ext
intro I
rw [Subtype.ext_iff]
simp only [ringHomOfRingEquiv, RingEquiv.coe_ringHom_trans, val_eq_coe, RingHom.coe_mk,
MonoidHom.coe_mk, OneHom.coe_mk, coe_mk, RingHom.coe_comp, Function.comp_apply]
rw [← Submodule.map_comp, IsFractionRing.semilinearEquivOfRingEquiv_comp K L f M]
rfl
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
have : RingHomCompTriple f (g : S →+* T) (f.trans g : R →+* T) := ⟨rfl⟩
apply RingHom.ext
intro I
rw [Subtype.ext_iff]
simp only [ringHomOfRingEquiv, RingEquiv.coe_ringHom_trans, val_eq_coe, RingHom.coe_mk,
MonoidHom.coe_mk, OneHom.coe_mk, coe_mk, RingHom.coe_comp, Function.comp_apply]
rw [← Submodule.map_comp, IsFractionRing.semilinearEquivOfRingEquiv_comp K L f M]
rfl
ext1 I
simp [FractionalIdeal.coe_ext_iff, LinearEquiv.coe_trans,
IsFractionRing.semilinearEquivOfRingEquiv_comp (K := K) (L := L), Submodule.map_comp]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This did not work.

Comment on lines +1030 to +1035
rw [Subtype.ext_iff]
simp only [ringHomOfRingEquiv_apply, RingEquiv.coe_ringHom_refl, RingEquiv.symm_refl, val_eq_coe,
coe_mk, RingHom.id_apply]
convert Submodule.map_id _
ext x
simp [IsFractionRing.semilinearEquivOfRingEquiv]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can you add a ringHomOfRingEquiv_refl lemma to make this proof simp [FractionalIdeal.coe_ext_iff]? Thanks.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

What do you mean?

@erdOne erdOne added the awaiting-author A reviewer has asked the author a question or requested changes. label Feb 28, 2026
@mariainesdff mariainesdff removed the awaiting-author A reviewer has asked the author a question or requested changes. label Mar 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-ring-theory Ring theory

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants