thetensor-space / TameGenus

Algorithms for isomorphism testing of groups with small genus
MIT License
1 stars 0 forks source link

Indecomposables #17

Closed joshmaglione closed 4 years ago

joshmaglione commented 5 years ago

Issues #10 and #12 are fundamentally about the same thing: we cannot handle (directly) decomposable groups or tensors.

How are we going to fix this? There seems to be two directions.

  1. Everywhere we need the group or tensor to be indecomposable, we append Indecomposable to the intrinsic name.
  2. Do nothing to the code and make this issue more transparent and obvious in the documentation.

I'm open to different suggestions @algeboy @galois60.

eamonnaobrien commented 4 years ago

Hi Josh, Are you able to test quickly if input is good? If not, does the code deduce that you're in the decomposable case rapidly? Best wishes, Eamonn

algeboy commented 4 years ago

Generally it is easy to detect this and it is a by-product of the current computation. (Compute the centroid, compute its quotient by the Jacobson radical. Ask if that is a field.) I think it best to name the functions after what they do rather than have a user struggling to make it do what it cannot. So I would favor adding names like TGID

eamonnaobrien commented 4 years ago

Fine. But will you still not need to detect that the input is of the appropriate type? And declare it invalid or return false or something else? Changing the name will not resolve that, nor is it obvious that a user who generates input will know whether it's valid or not. How about adding an intrinsic to check if group or tensor is indecomposable, so allowing user to check before calling?

algeboy commented 4 years ago

Yeah, we can test this and IsIndecomposable or TGIsIndecomposable while it will take the time that it takes to compute centroids, no further calculuation will avoid that anyway. This gets stored as an atribute so a user calling this as a check before using TG stuff wont experience a duplicate calculuation. In the future that condition should be removed.

eamonnaobrien commented 4 years ago

Sorry I don't really understand your answer. Are you saying that you will have "IsIndecomposable" which will tell if input is suitable? If so, good. When you write "In the future that condition should be removed", do you mean that you want to remove the indecomposable requirement for TG... functions?

algeboy commented 4 years ago

Oh, yes, I mean to say the typical use case could be as follows If IsIndecomposable(G) then TGSignature(G) and so on. In the future the restriction of indecomposablity should be removed as in theory it is not needed, but its implementation in general would take more work.

eamonnaobrien commented 4 years ago

Fine. Then just make IsIndecomposable a requirement for the various intrisinics TG ... printing out a message saying input must be indecomposable. I would simply add this requirement to the signature of the function and leave names of TG intrinsics as they are ...

joshmaglione commented 4 years ago

Thanks @algeboy and @eobr007. This can be done.

joshmaglione commented 4 years ago

@algeboy you said the following, which is true for tensors but not groups currently.

This gets stored as an attribute so a user calling this as a check before using TG stuff wont experience a duplicate calculation.

Maybe we should create an attribute groups groups that will store the various tensors associated to a group? This way the computation really can be stored on the group level and not just with the tensor. Such a change should happen in TensorSpace. I made a request over there: TensorSpace Issue #22

joshmaglione commented 4 years ago

This has now been implemented onto the test branch.