Skip to content

feat(GroupExtension/Abelian): define conjClassesEquivH1#26670

Open
yu-yama wants to merge 6 commits intoleanprover-community:masterfrom
yu-yama:yu-yama/GroupExtension-Abelian-H1
Open

feat(GroupExtension/Abelian): define conjClassesEquivH1#26670
yu-yama wants to merge 6 commits intoleanprover-community:masterfrom
yu-yama:yu-yama/GroupExtension-Abelian-H1

Conversation

@yu-yama
Copy link
Copy Markdown
Collaborator

@yu-yama yu-yama commented Jul 3, 2025

This PR continues the work from #21837.

Original PR: #21837

chore: use existing `groupCohomology.cocyclesOfIsMulCocycle₁` def
lint: suppress `linter.directoryDependency` error
chore: add simps lemmas
chore: add ext lemmas to `GroupExtension.{Section,Splitting}`
@yu-yama
Copy link
Copy Markdown
Collaborator Author

yu-yama commented Jul 3, 2025

Comments from Original PR #21837

This section contains 3 comment(s) from the original PR, excluding bot comments.


@erdOne (2025-06-26 19:51 UTC):
@yu-yama Hi! Are you still planning to work on getting this into mathlib? The results here (along with the correspondence for H2) would be really valuable for Class field theory and related areas. Your work already looks great, and it seems only a few minor adjustments are needed to align it with mathlib’s style. @YaelDillies mentioned they’d be happy to help take over if you’re unable to continue, but of course, it would be wonderful if you could complete it yourself.


@erdOne (2025-06-27 10:59 UTC):
@YaelDillies Could you please not touch other people's branch without their permission? Thanks a lot. As I said, I would strongly prefer if @yu-yama could push this PR through the review process themselves, both because this is their work and they might have better ideas about how to fix certain things, and that the review process would be useful to them to learn about mathlib styles as well.


@YaelDillies (2025-06-27 12:31 UTC):
Apologies, I got interrupted before I could explain what I was doing.

Yesterday, Edison spent an hour updating this file to v4.19.0. I didn't want his work to be lost, so I rebased this branch and moved over his changes (as well as the ones necessary to go from v4.19.0 to v4.21.0-rc3).

That's all. I didn't intend to act on your review, and haven't done so.

@github-actions github-actions bot added the t-algebra Algebra (groups, rings, fields, etc) label Jul 3, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Jul 3, 2025

PR summary 5beabdc14e

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.GroupTheory.GroupExtension.Abelian (new file) 1917

Declarations diff

+ conjClassesEquivH1
+ equivCocycles₁
+ ofCocycles₁
+ toCocycles₁
+ toCocycles₁_apply
+ toRep
+ toRep_ρ_apply_apply
++ ext

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).

Copy link
Copy Markdown
Member

@erdOne erdOne left a comment

Choose a reason for hiding this comment

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

Why was this lemma removed?

theorem isConj_iff_sub_mem_oneCoboundaries (s₁ s₂ : (toGroupExtension φ).Splitting) :
    (toGroupExtension φ).IsConj s₁ s₂ ↔
    ⇑s₁.toCocycles₁ - s₂.toCocycles₁ ∈ groupCohomology.coboundaries₁ (toRep φ) := by
  rw [sub_mem_comm_iff]
  apply Additive.ofMul.exists_congr
  intro n
  rw [funext_iff, funext_iff]
  apply forall_congr'
  intro g
  trans (s₁ g).left = n * (s₂ g).left * (φ g n)⁻¹
  · simp [toGroupExtension_inl, SemidirectProduct.ext_iff, right_splitting]
  rw [eq_mul_inv_iff_mul_eq, mul_comm, ← eq_mul_inv_iff_mul_eq, mul_assoc, mul_comm,
    ← mul_inv_eq_iff_eq_mul]
  simp only [← div_eq_mul_inv, Splitting.toCocycles₁, Pi.sub_apply]
  rfl

I think you should still show equiv to H1 instead of that thing, and the proof is something like (with the lemma above)

def conjClassesEquivH1' : (toGroupExtension φ).ConjClasses ≃ groupCohomology.H1 (toRep φ) := by
  refine .ofBijective (Quotient.lift (H1π _ ∘ Splitting.equivCocycles₁) ?_) ⟨?_, ?_⟩
  · intro a b H
    exact (groupCohomology.H1π_eq_iff _ _).mpr <| (isConj_iff_sub_mem_oneCoboundaries ..).mp H
  · exact Quotient.ind₂ fun a b H ↦ Quotient.sound <|
      (isConj_iff_sub_mem_oneCoboundaries ..).mpr <| (groupCohomology.H1π_eq_iff _ _).mp H
  · exact Quotient.lift_surjective _ _ (((ModuleCat.epi_iff_surjective ..).mp inferInstance).comp
      Splitting.equivCocycles₁.surjective)

@mathlib4-merge-conflict-bot mathlib4-merge-conflict-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 Aug 21, 2025
@mathlib4-merge-conflict-bot
Copy link
Copy Markdown
Collaborator

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

@erdOne erdOne added the awaiting-author A reviewer has asked the author a question or requested changes. label Sep 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-author A reviewer has asked the author a question or requested changes. merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) t-algebra Algebra (groups, rings, fields, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants