Can I test that a Cayley table represents a group?
Or can I test that the operation satisfies the axioms one at a time?
Asked: 2016-08-11 19:04:56 +0200
Seen: 389 times
Last updated: Aug 11 '16
You could probably do it, in the sense that you could make a loop that checks every single triple of elements (say) satisfies transitivity (by which I mean associativity) ... I'm not sure how one would do this automatically in any easier way, perhaps you have an example in mind that is more specific? (You should be able to edit your post to do so.)
You're right of course. But I could do that in Python (say). I'm actually asking for something like a test that you would apply to a single number to know whether it's prime: isPrime(7). I'm new to sage, I admit. _To me_ it seems reasonable to be able to pass a table to a constructor and then ask when it satisfies the group axioms. But I would also admit that this doesn't seem to be the way sage is intended to work.
Sure, you could make a function that did that. My point is that I don't think anyone has done so, nor that what they implemented would (or could!) necessarily be any faster than checking every single possibility. Maybe there is a result that not every one would have to be checked. If you create such a function, you could consider submitting it to be added to Sage!
As mentioned here, there is a probabilistic algorithm which has running time close to $O(n^2)$. I wonder if there is a deterministic algorithm with running time less than $O(n^3)$.
I just read what appears to be theanswer on http://quora.com: https://www.quora.com/How-do-you-know-if-a-Cayley-table-define-a-group-operation/answer/Justin-Rising?srid=uDgC (Justin Rising's answer). (Always check wikipedia first.)
The problem with Light's algorithm is that one needs to find generators before applying it, otherwise it would be more expensive than usual exhaustive search (from a memory point of view). That being said, I think it worth to implement those tests in sage. I might write a function in python which performs two tests based on arguments given.