-
Notifications
You must be signed in to change notification settings - Fork 56
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
More general columnwise multiplication action #756
More general columnwise multiplication action #756
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #756 +/- ##
=======================================
Coverage 96.38% 96.38%
=======================================
Files 123 123
Lines 11438 11438
=======================================
Hits 11025 11025
Misses 413 413 ☔ View full report in Codecov by Sentry. |
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.
Thanks, I think this is a good idea.
One thing I'm unsure about at the moment is that it also makes sense for SE(n) to be able to act through ColumnwiseMultiplicationAction
but not in a straightforward way and we can't make special Euclidean a subtype of AbstractMatrixGroup
. So maybe ColumnwiseMultiplicationAction
should be even more general and allow for arbitrary On
, and some groups would have to specialize apply
for this action.
Co-authored-by: Mateusz Baran <[email protected]>
Yes, that's a good point, I agree with that. Maybe something else is required for that: a diagonal action, that is, when you have an action of Then the columnwise action on That would solve the issue in the most general way, I believe? So a rough sketch of how it would look like is: struct ColumnwiseMultiplicationAction{
TA<:AbstractGroupAction{TAD}
} <: AbstractGroupAction{TAD}
action::TA
end
function apply(A::ColumnwiseMultiplicationAction, a, p)
return apply(DiagonalAction(A.action, size(p,2)), a, p) # but DiagonalAction doesn't exist yet (and not sure if `p` or `eachcol(p)`)
end |
Just a first super small remark. In edit: there is also no need to hurry, in the current speed and with just me writing on Lie groups. I would like to finish most groups and their operations first, so until I come to concrete actions in that speed, is probably still quite a few weeks to go. |
Good idea, I will think about it.
At the moment it's not entirely clear what that abstract type would exactly mean. I think we can implement the key idea here without that type anyway, so maybe there is no need to think about implementing it in LieGroups.jl. |
Yes, I suppose it could make sense for But I'm not 100% sure that this is the correct way to handle the issue in this case, since, as @mateuszbaran observed, multicolumn action should also be available for direct and semidirect product, and the current solution doesn't address these cases. I honestly don't know what the best solution would be. |
Sure, taking this as a bit of a playground and experiment sounds good. I feel it might be nicer to introduce an |
I've switched |
Yes, I think that will do, thank you. |
This makes
ColumnwiseMultiplicationAction
more general, as it works now with any subtype ofAbstractMatrixGroup
, a new abstract type aboveGeneralLinear
andGeneralUnitary
.Feel free to change the new name if you don't like it!
Maybe other groups could be subgroups of this new abstract type?
I also think more actions could be defined with respect to that abstract type instead of
GeneralUnitary
.What do you think?