-
Notifications
You must be signed in to change notification settings - Fork 260
Add subgroups and submodules #2852
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
jamesmckinna
left a comment
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.
This all looks great (esp. following our discussion this morning).
My only (cosmetic) hesitation is/would be over the field name Sub in each case, but in truth I don't have an improvement over it.
Cut! Print!
|
I agree with @JacquesCarette that It occurs to me that, in one sense, the name cannot matter, as we could insist that it only ever be accessed as the underlying (computed) ... I've argued, persuasively or not, for 'canonicalising' the name
I realise this is a vexed topic, and I want to stress the last two are not intended vexatiously (nor facetiously); we need a name for a thing which shouldn't really ever be referred to directly outwith the Avoiding prior convention, Freyd/Sčedrov in their Categories/Allegories book, used prefix and suffix 'box' on (names of arrows) to denote 'domain' and 'codomain' (with moreover the advantage of being minimum-ink), so Early morning thoughts of a chronic insomniac! |
|
Another suggestion: |
OK, good to maybe achieve some convergence on this?
yes, that would be very much in the spirit of old-school typographical convention in mathematics, (sidebar: did we actually get this from mathematicians, or from the extraordinarily gifted typesetters/printers at, particularly, Oxford University Press, Springer, and Van Nostrand Reinhold, who left such a mark on published Anglophone/German mathematics in the pre-digital, pre- frantic M&A consolidation years ie up to about 1980?) but as @JacquesCarette often points out, we need to move past such orthodoxies, and if we're going to keep the same name for the monomorphism, then we need to keep the same name for its domain? (eyes on a generative solution downstream, cf. #2287 etc.) |
|
I've changed the name from |
|
This may be the sweet spot... the internal module names are |
|
What's the reason for not including the versions also for |
The principle of "only adding only what I need immediately". I worry that if this becomes the "add every possible sub-whatever" PR it'll take about a month to get done |
Absolutely fair enough. I was only surpised that given you did have working code for the other case, it might have been easier to leave it in. Definitely not asking for the full tapestry of subXYZmodules! |
|
Happy to merge now, but I'd be happier still if the module imports/private blocks were tidied up in the spirit of the style-guide... but I think we can nitpick all of that downstream in round (n+1) of library refactoring... |
|
I'd rather fix the style points before this gets merged. I should be able to do that today |
| private | ||
| module G = Group G | ||
|
|
||
| open import Algebra.Structures using (IsGroup) | ||
| open import Algebra.Morphism.Structures using (IsGroupMonomorphism) | ||
| import Algebra.Morphism.GroupMonomorphism as GroupMonomorphism | ||
| open import Level using (suc; _⊔_) |
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.
| private | |
| module G = Group G | |
| open import Algebra.Structures using (IsGroup) | |
| open import Algebra.Morphism.Structures using (IsGroupMonomorphism) | |
| import Algebra.Morphism.GroupMonomorphism as GroupMonomorphism | |
| open import Level using (suc; _⊔_) | |
| open import Algebra.Structures using (IsGroup) | |
| open import Algebra.Morphism.Structures using (IsGroupMonomorphism) | |
| import Algebra.Morphism.GroupMonomorphism as GroupMonomorphism | |
| open import Level using (suc; _⊔_) | |
| private | |
| module G = Group G |
| open import Algebra.Bundles using (Ring) | ||
| open import Algebra.Module.Bundles using (Bimodule; RawBimodule) | ||
|
|
||
| module Algebra.Module.Construct.Sub.Bimodule {cr ℓr cs ℓs cm ℓm} {R : Ring cr ℓr} {S : Ring cs ℓs} (M : Bimodule R S cm ℓm) where |
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.
| module Algebra.Module.Construct.Sub.Bimodule {cr ℓr cs ℓs cm ℓm} {R : Ring cr ℓr} {S : Ring cs ℓs} (M : Bimodule R S cm ℓm) where | |
| module Algebra.Module.Construct.Sub.Bimodule | |
| {cr ℓr cs ℓs cm ℓm} {R : Ring cr ℓr} {S : Ring cs ℓs} (M : Bimodule R S cm ℓm) where |
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.
Styleguide says if you're splitting the module declaration, where should be on its own line
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.
touch'e!
| private | ||
| module R = Ring R | ||
| module S = Ring S | ||
| module M = Bimodule M | ||
|
|
||
| open import Algebra.Construct.Sub.Group M.+ᴹ-group | ||
| open import Algebra.Module.Structures using (IsBimodule) | ||
| open import Algebra.Module.Morphism.Structures using (IsBimoduleMonomorphism) | ||
| import Algebra.Module.Morphism.BimoduleMonomorphism as BimoduleMonomorphism | ||
| open import Level using (suc; _⊔_) |
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.
| private | |
| module R = Ring R | |
| module S = Ring S | |
| module M = Bimodule M | |
| open import Algebra.Construct.Sub.Group M.+ᴹ-group | |
| open import Algebra.Module.Structures using (IsBimodule) | |
| open import Algebra.Module.Morphism.Structures using (IsBimoduleMonomorphism) | |
| import Algebra.Module.Morphism.BimoduleMonomorphism as BimoduleMonomorphism | |
| open import Level using (suc; _⊔_) | |
| open import Algebra.Module.Structures using (IsBimodule) | |
| open import Algebra.Module.Morphism.Structures using (IsBimoduleMonomorphism) | |
| import Algebra.Module.Morphism.BimoduleMonomorphism as BimoduleMonomorphism | |
| open import Level using (suc; _⊔_) | |
| private | |
| module R = Ring R | |
| module S = Ring S | |
| module M = Bimodule M | |
| open import Algebra.Construct.Sub.Group M.+ᴹ-group |
|
|
||
| module ι = IsBimoduleMonomorphism ι-monomorphism | ||
|
|
||
| isBimodule : IsBimodule R S N._≈ᴹ_ N._+ᴹ_ N.0ᴹ N.-ᴹ_ N._*ₗ_ N._*ᵣ_ |
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.
Comment (no action required):
if I ever get my way with #2252 then this would simplify to
isBimodule : IsBimodule R S domainwhich... I would see as a win ;-)
|
I (still; further) don't want to get in the way of this PR, but I think that given that the
Accordingly, it's tempting to suggest adding |
JacquesCarette
left a comment
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.
still looking good to me.
|
Still looking good, and it would be good to merge, but what's happening with the cosmetic fix-ups @Taneb ? |
Pulled out of work on #2729 that can be merged straight away hopefully