-
Notifications
You must be signed in to change notification settings - Fork 249
[Add] Consequences of associativity for Semigroup
s
#2688
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
For others: the names are taken from the combinators in |
With an explicit callback/reference to #2288 ? This PR alone doesn't 'fix' that issue, but contributes a piece of the jigsaw to such a 'fix'. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lots of comments, I'm requesting changes based on a single one, but can be summarised as:
- please give lemmas names that can be remembered without needing a lookup table or other instruction manual to explain what they are/how they behave!
- no need for a new module, we already have the
Algebra.Properties.*
sub-hierarchy...
Co-authored-by: jamesmckinna <[email protected]>
OK... thanks for the recent commits, but I'm going to carry on nitpicking:
|
Also:
As with previous comments, we don't need a new module (even if it's moved location), these could all go in |
I moved everything into Semigroups and made the variables explicit. I tried to address all the comments, but I probably missed some. Sorry for not taking these changes into account earlier |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Last round of changes, I hope, because I've looked at this to many times now... law of diminishing returns...
NB if you adopt my suggestions, there will no doubt be knock-on consequences (wrt parametrisation) which you should fix before committing... for the sake of any other reviewers!
UPDATED: and you still have a 4-space indentation for all the definitions, instead of the mandated 2... PLEASE FIX, along with the CHANGELOG
formatting, which has now broken.
Co-authored-by: jamesmckinna <[email protected]>
Co-authored-by: jamesmckinna <[email protected]>
Co-authored-by: jamesmckinna <[email protected]>
Co-authored-by: jamesmckinna <[email protected]>
Co-authored-by: jamesmckinna <[email protected]>
Co-authored-by: jamesmckinna <[email protected]>
Co-authored-by: jamesmckinna <[email protected]>
As I've indicated, I'm not a big fan of push/pull because they are not very mnemomic; the superscripts don't help either. Indeed, if one looks at module Pulls (x∙y≈z : x ∙ y ≈ z) where
x∙y≈z⇒[w∙x]∙y≈w∙z : (w ∙ x) ∙ y ≈ w ∙ z what it really does is
So that's what I'd like the naming to reflect. Now, I quite like the 'synonym'
Note that these are meant to have the 3 variables be implicit, on purpose: if they cannot be figured out by Agda, then it's probably better to use the 'long form' of the reasoning (i.e. explicit calls to |
OK, I guess it is/was good to see how far apart the various contributors are on how to think about these naming issues, and their intended semantic underpinnings. But I have to say that I find the gap between the symbolic names you propose ((NB in my Firefox font for GitHub, your symbol In the face of this, I am going to suggest
Barn-burning. |
My firefox displays them all just fine! I would be fine with a name that involves Your mixfix suggestion might have legs. In fact, by eliding the common prefix entirely, using it as a purely prefix operation might result in a name that's close to readable. If my mnemonic symbology is not acceptable, I would think a text-based name based around 'refocus' is probably better than other unicode soup. |
Conclusion: accept but note that there should be better solution |
Introduce a new module for equational reasoning in semigroups, providing utilities for associativity reasoning and operations.