Skip to content

Names and definitions in the +-IsAbelianGroup instance of IsRing #2247

Closed
@jamesmckinna

Description

@jamesmckinna

Hi Three Two issues arising around (Is)Ring (and friends):

    ; inverse                 to -‿inverse
    ; inverseˡ                to -‿inverseˡ
    ; inverseʳ                to -‿inverseʳ

in the +-IsAbelianGroup instance of IsRing. Why not more simply +-inverse etc.?

Originally posted by @jamesmckinna in #2195 (comment)

UPDATED: so far, the use of these things is almost completely confined to 'internal' definitions in Algebra.{Module.}Structures and Algebra.{Module.}Construct, so I'll leave well alone for now...

  • should we enrich the manifest signature of IsAbelianGroup with an explicit subtraction operator?
    UPDATED: this already happens in IsGroup, though I might have expected the Group operation to admit two forms, and only collapse to 'subtraction' in the IsAbelianGroup case... (?):
infixl 6 _-_
_-_ : Op₂ A
x - y = x ∙ (y ⁻¹)

UPDATED though if I were to, I'd define, in IsGroup see #2251 (and UPDATED to reflect the discussion there):

infixl 6 _//_
infixr 6 _\\_
_//_ : Op₂ A
x // y = x ∙ (y ⁻¹)
_\\_ : Op₂ A
x \\  y = (x ⁻¹) ∙ y

and rename the first into _-_ in IsAbelianGroup and prove the two operations extensionally equal in Algebra.Properties.AbelianGroup (or somewhere else?)). Not sure about the infix/associativity declarations, though!
Tempting instead, perhaps though, to define the Mal'cev operation and specialise it appropriately...

Activity

JacquesCarette

JacquesCarette commented on Jan 4, 2024

@JacquesCarette
Contributor

I agree that -‿inverse feels like overkill and that +-inverse would be more appropriate.

I also agree that doing the obvious conservative extension of defining subtraction is worthwhile. People can always choose to redefine and/or hide it if they have a more efficient version for their own instance.

jamesmckinna

jamesmckinna commented on Jan 5, 2024

@jamesmckinna
ContributorAuthor

Question (perhaps for the agda-categoriesmaintainer(s)): what is / would be the relationship between IsEquivalence and a hypothetical definition of IsGroupoid in stdlib?

JacquesCarette

JacquesCarette commented on Jan 19, 2024

@JacquesCarette
Contributor

The relationship is non-trivial because IsGroupoid is mostly about sym since the 'rest' is in Category already. And there's the issue that IsEquivalence does not talk about equivalences-of-equivalences but E-Groupoids do. So IsEquivalence is a non-trivial truncation of Groupoid.

Whether this means that StrictGroupoid is the better thing to look at (I doubt it) or 0-Groupoids (most likely) is probably the right question to ask.

jamesmckinna

jamesmckinna commented on Jan 20, 2024

@jamesmckinna
ContributorAuthor

OK, thanks for the steer towards a more refined analysis/understanding. I'm not about to propose adding *Groupoid to stdlib right now (I though that the agda-categories gang might do that... ;-)), but good to see how the more 'humble' (because truncated) IsEquivalence/Setoid fits into a bigger picture...

jamesmckinna

jamesmckinna commented on Feb 9, 2024

@jamesmckinna
ContributorAuthor

Of the three points raised here, happy to close this with a successful merge of #2251 ...

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @JacquesCarette@jamesmckinna

      Issue actions

        Names and definitions in the `+-IsAbelianGroup` instance of `IsRing` · Issue #2247 · agda/agda-stdlib