Skip to content

Conversation

@Taneb
Copy link
Member

@Taneb Taneb commented Oct 31, 2025

Builds off #2852, continuing towards #2729 in bitesize chunks.

@Taneb Taneb marked this pull request as draft October 31, 2025 06:42
Copy link
Contributor

@jamesmckinna jamesmckinna left a comment

Choose a reason for hiding this comment

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

This all looks great. I've made suggestions, but nothing is a deal-breaker.

Comment on lines +22 to +23
Normal : ∀ {c′ ℓ′} → Subgroup c′ ℓ′ → Set (c ⊔ ℓ ⊔ c′)
Normal subgroup = ∀ n g → ∃[ n′ ] ι n′ G.∙ g G.≈ g G.∙ ι n
Copy link
Contributor

Choose a reason for hiding this comment

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

On the Structures/Bundles convention, should we call this IsNormal?

Normal subgroup = ∀ n g → ∃[ n′ ] ι n′ G.∙ g G.≈ g G.∙ ι n
where open Subgroup subgroup

record NormalSubgroup c′ ℓ′ : Set (c ⊔ ℓ ⊔ suc (c′ ⊔ ℓ′)) where
Copy link
Contributor

Choose a reason for hiding this comment

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

And hence this becomes (simply?) Normal, as the Bundled version of IsNormal?

record NormalSubgroup c′ ℓ′ : Set (c ⊔ ℓ ⊔ suc (c′ ⊔ ℓ′)) where
field
subgroup : Subgroup c′ ℓ′
normal : Normal subgroup
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
normal : Normal subgroup
isNormal : IsNormal subgroup

?


open Subgroup subgroup public

abelian⇒subgroup-normal : ∀ {c′ ℓ′} → Commutative G._≈_ G._∙_ → (subgroup : Subgroup c′ ℓ′) → Normal subgroup
Copy link
Contributor

Choose a reason for hiding this comment

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

Again

Suggested change
abelian⇒subgroup-normal : {c′ ℓ′} Commutative G._≈_ G._∙_ (subgroup : Subgroup c′ ℓ′) Normal subgroup
abelian⇒subgroup-normal : {c′ ℓ′} Commutative G._≈_ G._∙_ (subgroup : Subgroup c′ ℓ′) IsNormal subgroup

quotientGroup : Group c (c ⊔ ℓ ⊔ c′)
quotientGroup = record { isGroup = quotientIsGroup }

project : Group.Carrier G → Group.Carrier quotientGroup
Copy link
Contributor

Choose a reason for hiding this comment

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

My personal preference is for π (for projection), echoing ι (for inclusion), but I won't fight for it...
... maybe I should?

Copy link
Member Author

Choose a reason for hiding this comment

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

I've got no strong feeling here

Taneb added 3 commits October 31, 2025 10:02
I noted that every time I used normal it was under sym

This felt like a good reason to reverse it
Comment on lines +35 to +36
data _≋_ (x y : Carrier) : Set (c ⊔ ℓ ⊔ c′) where
_by_ : ∀ g → ι g ∙ x ≈ y → x ≋ y
Copy link
Contributor

Choose a reason for hiding this comment

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

Are you sticking with this version, or the symmetric one which multiplies on each side of the equation?

Suggested change
data _≋_ (x y : Carrier) : Set (c ⊔ ℓ ⊔ c′) where
_by_ : g ι g ∙ x ≈ y x ≋ y
data _≋_ (x y : Carrier) : Set (c ⊔ ℓ ⊔ c′) where
by: g h ι g ∙ x ≈ ι h ∙ y x ≋ y

plus some smart constructors/pattern synonyms to achieve the various properties?

Copy link
Member Author

Choose a reason for hiding this comment

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

I want to experiment with the symmetric version more, but:

  • it means we need to carry around more data, operationally (minor issue)
  • I think it works out pretty close to being equivalent to this construction on the Grothendieck group for a cancellative monoid, and if that's the case I'd rather have that in two steps explicitly


-- every element of the subgroup commutes in G
Normal : ∀ {c′ ℓ′} → Subgroup c′ ℓ′ → Set (c ⊔ ℓ ⊔ c′)
Normal subgroup = ∀ n g → ∃[ n′ ] ι n′ G.∙ g G.≈ g G.∙ ι n
Copy link
Contributor

Choose a reason for hiding this comment

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

How does flipping the old definition improve matters?
Curious...

Copy link
Member Author

Choose a reason for hiding this comment

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

If you look at the diff of the commit that flipped this (e3baf59#diff-4b2ec40733e56b6ad2e835149fee88672cc51d5ec131be90521ea0098f4813cc) in the quotient groups module, previously every time I was using normal I had to sym it, this way I can use it directly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants