1

I test the following code snippet in GAP:

M:=[[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]], [[0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, 1, 0], [1/4, 1/4, 1/4, 1]], [[-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 1/2, 1/2, 1]], [[0, -1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0], [3/4, 1/4, 3/4, 1]], [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]], [[0, -1, 0, 0], [-1, 0, 0, 0], [0, 0, -1, 0], [1/4, 3/4, 3/4, 1]], [[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 1/2, 1/2, 1]], [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, -1, 0], [3/4, 3/4, 1/4, 1]], [[0, 1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], [0, 0, 0, 1]], [[0, 0, 1, 0], [0, -1, 0, 0], [1, 0, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, -1, 0, 0], [0, 0, -1, 0], [1, 0, 0, 0], [1/2, 0, 1/2, 1]], [[0, 0, -1, 0], [0, 1, 0, 0], [1, 0, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, 1, 0, 0], [0, 0, -1, 0], [-1, 0, 0, 0], [0, 0, 0, 1]], [[0, 0, -1, 0], [0, -1, 0, 0], [-1, 0, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, -1, 0, 0], [0, 0, 1, 0], [-1, 0, 0, 0], [1/2, 0, 1/2, 1]], [[0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1]], [[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, 0, -1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [1/2, 1/2, 0, 1]], [[-1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, 0, 1, 0], [-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 0, 1]], [[-1, 0, 0, 0], [0, 0, -1, 0], [0, -1, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, 0, -1, 0], [1, 0, 0, 0], [0, -1, 0, 0], [1/2, 1/2, 0, 1]], [[1, 0, 0, 0], [0, 0, 1, 0], [0, -1, 0, 0], [3/4, 1/4, 3/4, 1]], [[-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [1/4, 1/4, 1/4, 1]], [[0, -1, 0, 0], [1, 0, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]], [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [1/4, 3/4, 3/4, 1]], [[0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, -1, 0], [1/2, 0, 1/2, 1]], [[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [1/4, 1/4, 1/4, 1]], [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0], [0, 1/2, 1/2, 1]], [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [1/4, 3/4, 3/4, 1]], [[0, -1, 0, 0], [-1, 0, 0, 0], [0, 0, 1, 0], [1/2, 1/2, 0, 1]], [[0, -1, 0, 0], [0, 0, -1, 0], [-1, 0, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, 0, -1, 0], [0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, 0, 1]], [[0, 1, 0, 0], [0, 0, 1, 0], [-1, 0, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, 0, 1, 0], [0, -1, 0, 0], [-1, 0, 0, 0], [1/2, 1/2, 0, 1]], [[0, -1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0], [1/2, 0, 1/2, 1]], [[0, 1, 0, 0], [0, 0, -1, 0], [1, 0, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, 0, -1, 0], [0, -1, 0, 0], [1, 0, 0, 0], [0, 1/2, 1/2, 1]], [[0, 0, -1, 0], [-1, 0, 0, 0], [0, -1, 0, 0], [1/4, 1/4, 1/4, 1]], [[-1, 0, 0, 0], [0, 0, 1, 0], [0, -1, 0, 0], [0, 0, 0, 1]], [[0, 0, 1, 0], [1, 0, 0, 0], [0, -1, 0, 0], [3/4, 3/4, 1/4, 1]], [[1, 0, 0, 0], [0, 0, -1, 0], [0, -1, 0, 0], [0, 1/2, 1/2, 1]], [[0, 0, -1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [1/4, 1/4, 1/4, 1]], [[1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [1/2, 1/2, 0, 1]], [[0, 0, 1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [3/4, 3/4, 1/4, 1]], [[-1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [1/2, 0, 1/2, 1]], [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [1/2, 1/2, 0, 1]], [[0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, 1, 0], [3/4, 3/4, 1/4, 1]], [[-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [1/2, 0, 1/2, 1]], [[0, -1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0], [1/4, 3/4, 3/4, 1]], [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [1/2, 1/2, 0, 1]], [[0, -1, 0, 0], [-1, 0, 0, 0], [0, 0, -1, 0], [3/4, 1/4, 3/4, 1]], [[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [1/2, 0, 1/2, 1]], [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, -1, 0], [1/4, 1/4, 1/4, 1]], [[0, 1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], [1/2, 1/2, 0, 1]], [[0, 0, 1, 0], [0, -1, 0, 0], [1, 0, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, -1, 0, 0], [0, 0, -1, 0], [1, 0, 0, 0], [0, 1/2, 1/2, 1]], [[0, 0, -1, 0], [0, 1, 0, 0], [1, 0, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, 1, 0, 0], [0, 0, -1, 0], [-1, 0, 0, 0], [1/2, 1/2, 0, 1]], [[0, 0, -1, 0], [0, -1, 0, 0], [-1, 0, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, -1, 0, 0], [0, 0, 1, 0], [-1, 0, 0, 0], [0, 1/2, 1/2, 1]], [[0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [1/2, 1/2, 0, 1]], [[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, 0, -1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1]], [[-1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, 0, 1, 0], [-1, 0, 0, 0], [0, -1, 0, 0], [1/2, 1/2, 0, 1]], [[-1, 0, 0, 0], [0, 0, -1, 0], [0, -1, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, 0, -1, 0], [1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 0, 1]], [[1, 0, 0, 0], [0, 0, 1, 0], [0, -1, 0, 0], [1/4, 3/4, 3/4, 1]], [[-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [3/4, 3/4, 1/4, 1]], [[0, -1, 0, 0], [1, 0, 0, 0], [0, 0, -1, 0], [1/2, 1/2, 0, 1]], [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [3/4, 1/4, 3/4, 1]], [[0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, -1, 0], [0, 1/2, 1/2, 1]], [[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [3/4, 3/4, 1/4, 1]], [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0], [1/2, 0, 1/2, 1]], [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [3/4, 1/4, 3/4, 1]], [[0, -1, 0, 0], [-1, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]], [[0, -1, 0, 0], [0, 0, -1, 0], [-1, 0, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, 0, -1, 0], [0, 1, 0, 0], [-1, 0, 0, 0], [1/2, 1/2, 0, 1]], [[0, 1, 0, 0], [0, 0, 1, 0], [-1, 0, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, 0, 1, 0], [0, -1, 0, 0], [-1, 0, 0, 0], [0, 0, 0, 1]], [[0, -1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0], [0, 1/2, 1/2, 1]], [[0, 1, 0, 0], [0, 0, -1, 0], [1, 0, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, 0, -1, 0], [0, -1, 0, 0], [1, 0, 0, 0], [1/2, 0, 1/2, 1]], [[0, 0, -1, 0], [-1, 0, 0, 0], [0, -1, 0, 0], [3/4, 3/4, 1/4, 1]], [[-1, 0, 0, 0], [0, 0, 1, 0], [0, -1, 0, 0], [1/2, 1/2, 0, 1]], [[0, 0, 1, 0], [1, 0, 0, 0], [0, -1, 0, 0], [1/4, 1/4, 1/4, 1]], [[1, 0, 0, 0], [0, 0, -1, 0], [0, -1, 0, 0], [1/2, 0, 1/2, 1]], [[0, 0, -1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [3/4, 3/4, 1/4, 1]], [[1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]], [[0, 0, 1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [1/4, 1/4, 1/4, 1]], [[-1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 1/2, 1/2, 1]], [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [1/2, 0, 1/2, 1]], [[0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, 1, 0], [3/4, 1/4, 3/4, 1]], [[-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [1/2, 1/2, 0, 1]], [[0, -1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0], [1/4, 1/4, 1/4, 1]], [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [1/2, 0, 1/2, 1]], [[0, -1, 0, 0], [-1, 0, 0, 0], [0, 0, -1, 0], [3/4, 3/4, 1/4, 1]], [[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [1/2, 1/2, 0, 1]], [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, -1, 0], [1/4, 3/4, 3/4, 1]], [[0, 1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], [1/2, 0, 1/2, 1]], [[0, 0, 1, 0], [0, -1, 0, 0], [1, 0, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, -1, 0, 0], [0, 0, -1, 0], [1, 0, 0, 0], [0, 0, 0, 1]], [[0, 0, -1, 0], [0, 1, 0, 0], [1, 0, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, 1, 0, 0], [0, 0, -1, 0], [-1, 0, 0, 0], [1/2, 0, 1/2, 1]], [[0, 0, -1, 0], [0, -1, 0, 0], [-1, 0, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, -1, 0, 0], [0, 0, 1, 0], [-1, 0, 0, 0], [0, 0, 0, 1]], [[0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [1/2, 0, 1/2, 1]], [[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, 0, -1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [0, 1/2, 1/2, 1]], [[-1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, 0, 1, 0], [-1, 0, 0, 0], [0, -1, 0, 0], [1/2, 0, 1/2, 1]], [[-1, 0, 0, 0], [0, 0, -1, 0], [0, -1, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, 0, -1, 0], [1, 0, 0, 0], [0, -1, 0, 0], [0, 1/2, 1/2, 1]], [[1, 0, 0, 0], [0, 0, 1, 0], [0, -1, 0, 0], [1/4, 1/4, 1/4, 1]], [[-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [3/4, 1/4, 3/4, 1]], [[0, -1, 0, 0], [1, 0, 0, 0], [0, 0, -1, 0], [1/2, 0, 1/2, 1]], [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [3/4, 3/4, 1/4, 1]], [[0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]], [[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [3/4, 1/4, 3/4, 1]], [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0], [1/2, 1/2, 0, 1]], [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [3/4, 3/4, 1/4, 1]], [[0, -1, 0, 0], [-1, 0, 0, 0], [0, 0, 1, 0], [0, 1/2, 1/2, 1]], [[0, -1, 0, 0], [0, 0, -1, 0], [-1, 0, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, 0, -1, 0], [0, 1, 0, 0], [-1, 0, 0, 0], [1/2, 0, 1/2, 1]], [[0, 1, 0, 0], [0, 0, 1, 0], [-1, 0, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, 0, 1, 0], [0, -1, 0, 0], [-1, 0, 0, 0], [0, 1/2, 1/2, 1]], [[0, -1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1]], [[0, 1, 0, 0], [0, 0, -1, 0], [1, 0, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, 0, -1, 0], [0, -1, 0, 0], [1, 0, 0, 0], [1/2, 1/2, 0, 1]], [[0, 0, -1, 0], [-1, 0, 0, 0], [0, -1, 0, 0], [3/4, 1/4, 3/4, 1]], [[-1, 0, 0, 0], [0, 0, 1, 0], [0, -1, 0, 0], [1/2, 0, 1/2, 1]], [[0, 0, 1, 0], [1, 0, 0, 0], [0, -1, 0, 0], [1/4, 3/4, 3/4, 1]], [[1, 0, 0, 0], [0, 0, -1, 0], [0, -1, 0, 0], [1/2, 1/2, 0, 1]], [[0, 0, -1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [3/4, 1/4, 3/4, 1]], [[1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 1/2, 1/2, 1]], [[0, 0, 1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [1/4, 3/4, 3/4, 1]], [[-1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]], [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 1/2, 1/2, 1]], [[0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, 1, 0], [1/4, 3/4, 3/4, 1]], [[-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]], [[0, -1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0], [3/4, 3/4, 1/4, 1]], [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 1/2, 1/2, 1]], [[0, -1, 0, 0], [-1, 0, 0, 0], [0, 0, -1, 0], [1/4, 1/4, 1/4, 1]], [[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]], [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, -1, 0], [3/4, 1/4, 3/4, 1]], [[0, 1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], [0, 1/2, 1/2, 1]], [[0, 0, 1, 0], [0, -1, 0, 0], [1, 0, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, -1, 0, 0], [0, 0, -1, 0], [1, 0, 0, 0], [1/2, 1/2, 0, 1]], [[0, 0, -1, 0], [0, 1, 0, 0], [1, 0, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, 1, 0, 0], [0, 0, -1, 0], [-1, 0, 0, 0], [0, 1/2, 1/2, 1]], [[0, 0, -1, 0], [0, -1, 0, 0], [-1, 0, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, -1, 0, 0], [0, 0, 1, 0], [-1, 0, 0, 0], [1/2, 1/2, 0, 1]], [[0, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 1/2, 1/2, 1]], [[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, 0, -1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [1/2, 0, 1/2, 1]], [[-1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [1/4, 1/4, 1/4, 1]], [[0, 0, 1, 0], [-1, 0, 0, 0], [0, -1, 0, 0], [0, 1/2, 1/2, 1]], [[-1, 0, 0, 0], [0, 0, -1, 0], [0, -1, 0, 0], [3/4, 1/4, 3/4, 1]], [[0, 0, -1, 0], [1, 0, 0, 0], [0, -1, 0, 0], [1/2, 0, 1/2, 1]], [[1, 0, 0, 0], [0, 0, 1, 0], [0, -1, 0, 0], [3/4, 3/4, 1/4, 1]], [[-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [1/4, 3/4, 3/4, 1]], [[0, -1, 0, 0], [1, 0, 0, 0], [0, 0, -1, 0], [0, 1/2, 1/2, 1]], [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [1/4, 1/4, 1/4, 1]], [[0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, -1, 0], [1/2, 1/2, 0, 1]], [[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [1/4, 3/4, 3/4, 1]], [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]], [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [1/4, 1/4, 1/4, 1]], [[0, -1, 0, 0], [-1, 0, 0, 0], [0, 0, 1, 0], [1/2, 0, 1/2, 1]], [[0, -1, 0, 0], [0, 0, -1, 0], [-1, 0, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, 0, -1, 0], [0, 1, 0, 0], [-1, 0, 0, 0], [0, 1/2, 1/2, 1]], [[0, 1, 0, 0], [0, 0, 1, 0], [-1, 0, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, 0, 1, 0], [0, -1, 0, 0], [-1, 0, 0, 0], [1/2, 0, 1/2, 1]], [[0, -1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], [1/4, 3/4, 3/4, 1]], [[0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0], [1/2, 1/2, 0, 1]], [[0, 1, 0, 0], [0, 0, -1, 0], [1, 0, 0, 0], [3/4, 3/4, 1/4, 1]], [[0, 0, -1, 0], [0, -1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1]], [[0, 0, -1, 0], [-1, 0, 0, 0], [0, -1, 0, 0], [1/4, 3/4, 3/4, 1]], [[-1, 0, 0, 0], [0, 0, 1, 0], [0, -1, 0, 0], [0, 1/2, 1/2, 1]], [[0, 0, 1, 0], [1, 0, 0, 0], [0, -1, 0, 0], [3/4, 1/4, 3/4, 1]], [[1, 0, 0, 0], [0, 0, -1, 0], [0, -1, 0, 0], [0, 0, 0, 1]], [[0, 0, -1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [1/4, 3/4, 3/4, 1]], [[1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [1/2, 0, 1/2, 1]], [[0, 0, 1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [3/4, 1/4, 3/4, 1]], [[-1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [1/2, 1/2, 0, 1]]];

g:=AffineCrystGroup(M); sgs:=SmallGeneratingSet(g); G:=Group(sgs); pg1:=PointGroup(g); pg2:=PointGroup(G);

In the above code snippet, the affine matrix M is obtained from the following cif file:


#(C) 2022 by FIZ Karlsruhe - Leibniz Institute for Information Infrastructure.  All rights reserved.
data_136212-ICSD
_database_code_ICSD 136212
_audit_creation_date 2022-02-01
_chemical_name_common Carbon
_chemical_formula_structural C
_chemical_formula_sum C1
_chemical_name_structure_type Diamond#C(cF8)#α−Sn
_exptl_crystal_density_diffrn 3.51
_citation_title

; Multipole electron densities and structural parameters from synchrotron powder X-ray diffraction data obtained with a MYTHEN detector system (OHGI) ; loop_ citation_id _citation_journal_full _citation_year _citation_journal_volume _citation_page_first _citation_page_last _citation_journal_id_ASTM primary 'Acta Crystallographica, Section A: Foundations and Advances' 2021 77 85 95 ACSAD7 loop citation_author_citation_id _citation_author_name primary 'Svane, Bjarke' primary 'Tolborg, Kasper' primary 'Kato, Kenichi' primary 'Brummerstedt Iversen, Bo' _cell_length_a 3.567286(4) _cell_length_b 3.567286(4) _cell_length_c 3.567286(4) _cell_angle_alpha 90. _cell_angle_beta 90. _cell_angle_gamma 90. _cell_volume 45.4 _cell_formula_units_Z 8 _space_group_name_H-M_alt 'F d -3 m S' _space_group_IT_number 227 loop space_group_symop_id _space_group_symop_operation_xyz 1 'z+1/4, y+1/4, -x+1/4' 2 'y+1/4, x+1/4, -z+1/4' 3 'x+1/4, z+1/4, -y+1/4' 4 'z+1/4, x+1/4, -y+1/4' 5 'y+1/4, z+1/4, -x+1/4' 6 'x+1/4, y+1/4, -z+1/4' 7 'z+1/4, -y+1/4, x+1/4' 8 'y+1/4, -x+1/4, z+1/4' 9 'x+1/4, -z+1/4, y+1/4' 10 'z+1/4, -x+1/4, y+1/4' 11 'y+1/4, -z+1/4, x+1/4' 12 'x+1/4, -y+1/4, z+1/4' 13 '-z+1/4, y+1/4, x+1/4' 14 '-y+1/4, x+1/4, z+1/4' 15 '-x+1/4, z+1/4, y+1/4' 16 '-z+1/4, x+1/4, y+1/4' 17 '-y+1/4, z+1/4, x+1/4' 18 '-x+1/4, y+1/4, z+1/4' 19 '-z+1/4, -y+1/4, -x+1/4' 20 '-y+1/4, -x+1/4, -z+1/4' 21 '-x+1/4, -z+1/4, -y+1/4' 22 '-z+1/4, -x+1/4, -y+1/4' 23 '-y+1/4, -z+1/4, -x+1/4' 24 '-x+1/4, -y+1/4, -z+1/4' 25 '-z, -y, x' 26 '-y, -x, z' 27 '-x, -z, y' 28 '-z, -x, y' 29 '-y, -z, x' 30 '-x, -y, z' 31 '-z, y, -x' 32 '-y, x, -z' 33 '-x, z, -y' 34 '-z, x, -y' 35 '-y, z, -x' 36 '-x, y, -z' 37 'z, -y, -x' 38 'y, -x, -z' 39 'x, -z, -y' 40 'z, -x, -y' 41 'y, -z, -x' 42 'x, -y, -z' 43 'z, y, x' 44 'y, x, z' 45 'x, z, y' 46 'z, x, y' 47 'y, z, x' 48 'x, y, z' 49 'z+1/4, y+3/4, -x+3/4' 50 'y+1/4, x+3/4, -z+3/4' 51 'x+1/4, z+3/4, -y+3/4' 52 'z+1/4, x+3/4, -y+3/4' 53 'y+1/4, z+3/4, -x+3/4' 54 'x+1/4, y+3/4, -z+3/4' 55 'z+1/4, -y+3/4, x+3/4' 56 'y+1/4, -x+3/4, z+3/4' 57 'x+1/4, -z+3/4, y+3/4' 58 'z+1/4, -x+3/4, y+3/4' 59 'y+1/4, -z+3/4, x+3/4' 60 'x+1/4, -y+3/4, z+3/4' 61 '-z+1/4, y+3/4, x+3/4' 62 '-y+1/4, x+3/4, z+3/4' 63 '-x+1/4, z+3/4, y+3/4' 64 '-z+1/4, x+3/4, y+3/4' 65 '-y+1/4, z+3/4, x+3/4' 66 '-x+1/4, y+3/4, z+3/4' 67 '-z+1/4, -y+3/4, -x+3/4' 68 '-y+1/4, -x+3/4, -z+3/4' 69 '-x+1/4, -z+3/4, -y+3/4' 70 '-z+1/4, -x+3/4, -y+3/4' 71 '-y+1/4, -z+3/4, -x+3/4' 72 '-x+1/4, -y+3/4, -z+3/4' 73 '-z, -y+1/2, x+1/2' 74 '-y, -x+1/2, z+1/2' 75 '-x, -z+1/2, y+1/2' 76 '-z, -x+1/2, y+1/2' 77 '-y, -z+1/2, x+1/2' 78 '-x, -y+1/2, z+1/2' 79 '-z, y+1/2, -x+1/2' 80 '-y, x+1/2, -z+1/2' 81 '-x, z+1/2, -y+1/2' 82 '-z, x+1/2, -y+1/2' 83 '-y, z+1/2, -x+1/2' 84 '-x, y+1/2, -z+1/2' 85 'z, -y+1/2, -x+1/2' 86 'y, -x+1/2, -z+1/2' 87 'x, -z+1/2, -y+1/2' 88 'z, -x+1/2, -y+1/2' 89 'y, -z+1/2, -x+1/2' 90 'x, -y+1/2, -z+1/2' 91 'z, y+1/2, x+1/2' 92 'y, x+1/2, z+1/2' 93 'x, z+1/2, y+1/2' 94 'z, x+1/2, y+1/2' 95 'y, z+1/2, x+1/2' 96 'x, y+1/2, z+1/2' 97 'z+3/4, y+1/4, -x+3/4' 98 'y+3/4, x+1/4, -z+3/4' 99 'x+3/4, z+1/4, -y+3/4' 100 'z+3/4, x+1/4, -y+3/4' 101 'y+3/4, z+1/4, -x+3/4' 102 'x+3/4, y+1/4, -z+3/4' 103 'z+3/4, -y+1/4, x+3/4' 104 'y+3/4, -x+1/4, z+3/4' 105 'x+3/4, -z+1/4, y+3/4' 106 'z+3/4, -x+1/4, y+3/4' 107 'y+3/4, -z+1/4, x+3/4' 108 'x+3/4, -y+1/4, z+3/4' 109 '-z+3/4, y+1/4, x+3/4' 110 '-y+3/4, x+1/4, z+3/4' 111 '-x+3/4, z+1/4, y+3/4' 112 '-z+3/4, x+1/4, y+3/4' 113 '-y+3/4, z+1/4, x+3/4' 114 '-x+3/4, y+1/4, z+3/4' 115 '-z+3/4, -y+1/4, -x+3/4' 116 '-y+3/4, -x+1/4, -z+3/4' 117 '-x+3/4, -z+1/4, -y+3/4' 118 '-z+3/4, -x+1/4, -y+3/4' 119 '-y+3/4, -z+1/4, -x+3/4' 120 '-x+3/4, -y+1/4, -z+3/4' 121 '-z+1/2, -y, x+1/2' 122 '-y+1/2, -x, z+1/2' 123 '-x+1/2, -z, y+1/2' 124 '-z+1/2, -x, y+1/2' 125 '-y+1/2, -z, x+1/2' 126 '-x+1/2, -y, z+1/2' 127 '-z+1/2, y, -x+1/2' 128 '-y+1/2, x, -z+1/2' 129 '-x+1/2, z, -y+1/2' 130 '-z+1/2, x, -y+1/2' 131 '-y+1/2, z, -x+1/2' 132 '-x+1/2, y, -z+1/2' 133 'z+1/2, -y, -x+1/2' 134 'y+1/2, -x, -z+1/2' 135 'x+1/2, -z, -y+1/2' 136 'z+1/2, -x, -y+1/2' 137 'y+1/2, -z, -x+1/2' 138 'x+1/2, -y, -z+1/2' 139 'z+1/2, y, x+1/2' 140 'y+1/2, x, z+1/2' 141 'x+1/2, z, y+1/2' 142 'z+1/2, x, y+1/2' 143 'y+1/2, z, x+1/2' 144 'x+1/2, y, z+1/2' 145 'z+3/4, y+3/4, -x+1/4' 146 'y+3/4, x+3/4, -z+1/4' 147 'x+3/4, z+3/4, -y+1/4' 148 'z+3/4, x+3/4, -y+1/4' 149 'y+3/4, z+3/4, -x+1/4' 150 'x+3/4, y+3/4, -z+1/4' 151 'z+3/4, -y+3/4, x+1/4' 152 'y+3/4, -x+3/4, z+1/4' 153 'x+3/4, -z+3/4, y+1/4' 154 'z+3/4, -x+3/4, y+1/4' 155 'y+3/4, -z+3/4, x+1/4' 156 'x+3/4, -y+3/4, z+1/4' 157 '-z+3/4, y+3/4, x+1/4' 158 '-y+3/4, x+3/4, z+1/4' 159 '-x+3/4, z+3/4, y+1/4' 160 '-z+3/4, x+3/4, y+1/4' 161 '-y+3/4, z+3/4, x+1/4' 162 '-x+3/4, y+3/4, z+1/4' 163 '-z+3/4, -y+3/4, -x+1/4' 164 '-y+3/4, -x+3/4, -z+1/4' 165 '-x+3/4, -z+3/4, -y+1/4' 166 '-z+3/4, -x+3/4, -y+1/4' 167 '-y+3/4, -z+3/4, -x+1/4' 168 '-x+3/4, -y+3/4, -z+1/4' 169 '-z+1/2, -y+1/2, x' 170 '-y+1/2, -x+1/2, z' 171 '-x+1/2, -z+1/2, y' 172 '-z+1/2, -x+1/2, y' 173 '-y+1/2, -z+1/2, x' 174 '-x+1/2, -y+1/2, z' 175 '-z+1/2, y+1/2, -x' 176 '-y+1/2, x+1/2, -z' 177 '-x+1/2, z+1/2, -y' 178 '-z+1/2, x+1/2, -y' 179 '-y+1/2, z+1/2, -x' 180 '-x+1/2, y+1/2, -z' 181 'z+1/2, -y+1/2, -x' 182 'y+1/2, -x+1/2, -z' 183 'x+1/2, -z+1/2, -y' 184 'z+1/2, -x+1/2, -y' 185 'y+1/2, -z+1/2, -x' 186 'x+1/2, -y+1/2, -z' 187 'z+1/2, y+1/2, x' 188 'y+1/2, x+1/2, z' 189 'x+1/2, z+1/2, y' 190 'z+1/2, x+1/2, y' 191 'y+1/2, z+1/2, x' 192 'x+1/2, y+1/2, z' loop atom_type_symbol _atom_type_oxidation_number C0+ 0 loop _atom_site_label _atom_site_type_symbol _atom_site_symmetry_multiplicity _atom_site_Wyckoff_symbol _atom_site_fract_x _atom_site_fract_y _atom_site_fract_z _atom_site_U_iso_or_equiv _atom_site_occupancy C1 C0+ 8 a 0 0 0 0.01831(16) 1 #End of TTdata_136212-ICSD

The following error will be triggered by the above GAP code snippet:

brk_13> pg1:=PointGroup(g);
<matrix group of size 48 with 47 generators>
brk_13> pg2:=PointGroup(G);
Syntax warning: Unbound global variable in *errin*:2
pg2:=PointGroup(G);
^^^
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `IsAffineCrystGroupOnLeftOrRight' on 1 arguments at /home/werner/Public/repo/github.com/gap-system/gap.git/lib/methsel2.g:249 called from
<<compiled GAP code>> from GAPROOT/lib/oper1.g:736 in function PointGroup default method requiring categories and checking properties called from
ErrorNoReturn( no_method_found ); at /home/werner/Public/repo/github.com/gap-system/gap.git/lib/methsel2.g:249 called from
<<compiled GAP code>> from GAPROOT/lib/oper1.g:736 in function PointGroup default method requiring categories and checking properties called from
ErrorNoReturn( no_method_found ); at /home/werner/Public/repo/github.com/gap-system/gap.git/lib/methsel2.g:249 called from
<<compiled GAP code>> from GAPROOT/lib/oper1.g:736 in function PointGroup default method requiring categories and checking properties called from
...  at *errin*:2
type 'quit;' to quit to outer loop

As you can see, the PointGroup command doesn't work for a group created with the SmallGeneratingSet of an AffineCrystGroup.

OTOH, the SmallGeneratingSet is rather time-cosuming in this case. Are there any tricks to improve the efficiency?

Any hints for these problems will be highly appreciated.


Update (after Max Horn's answer below):

Dear Max Horn, thank you very much for your trick and explanation. I re-checked your method as follows:

gap> g:=AffineCrystGroup(M);
<matrix group with 192 generators>
gap> iso:=IsomorphismFpGroup(g);;
gap> srcgen := MappingGeneratorsImages(iso)[1];
[ [ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ -3/4, 1/4, -3/4, 1 ] ], 
  [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, -1, 0, 0 ], [ -1/4, 3/4, -3/4, 1 ] ], 
  [ [ 0, 1, 0, 0 ], [ 0, 0, -1, 0 ], [ -1, 0, 0, 0 ], [ 1, -1/2, -1/2, 1 ] ], 
  [ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 0, 0, 1 ] ], 
  [ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1/2, -1/2, 1 ] ], 
  [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/2, 0, 1/2, 1 ] ], 
  [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1/2, 1/2, 1 ] ], 
  [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 1, 1 ] ] ]
gap> h := AffineCrystGroup(srcgen);
<matrix group with 8 generators>
gap> Pg:=PointGroup(g);
<matrix group of size 48 with 47 generators>
gap> Ph:=PointGroup(h);
<matrix group of size 48 with 5 generators>
gap> Pg=Ph;
true

Regarding your confusion and inquiry, I provide the following supplements:

  1. About the "small generating set", my method is based on the following description in this book:

enter image description here

My mistake is that the above method is for finite groups, but here I'm dealing with an infinite group, so it doesn't work.

  1. About the brk_13> prompt: it's caused by some of previous abnormally terminated jobs or errors which don't affect the current disussion. Because it takes many keystrokes to jump out of these loops, I didn't do so before I perform the test discussed here.

Regards, HZ

  • 1
    This is normal. PointGroup requires some additional knowledge about the group, which is known after it was created by AffineCrystGroup. Creating an isomorphic group by SmallGeneratingSet you erased that additional information. Someone may write a longer version of this as a proper answer - for now, perhaps you can find some explanation for this in The GAP 4 Type System Organising Algebraic Algorithms by Thomas Breuer and Steve Linton. – Olexandr Konovalov May 17 '22 at 07:34
  • You really need to jump out of break loops, you may see a different scope if you continue inside a break loop. To construct a small example to fit in a comment, call e.g. a:=42;List([1..10],a->Length(a)); and then when an error happen type a after the brk> prompt. Now, is it still equal to 42? – Olexandr Konovalov May 17 '22 at 08:51
  • Really. gap> a:=42;List([1..10],a->Length(a)); 42 brk> a; 1 Why does it behave like this? Are there neat tricks to jump out the very deep loop levels quickly? – Hongyi Zhao May 17 '22 at 08:58
  • Because the break loop happened in the context of Length call, so you can inspect values of variables there. I really suggest to check https://www.gap-system.org/Manuals/doc/ref/chap6.html#X8593B49F8705B486 as Max suggested. – Olexandr Konovalov May 17 '22 at 09:01
  • As the manual explain, you can press Ctrl-D to leave the break loop. – Max Horn May 17 '22 at 09:02
  • Got it. Continuous hitting of Ctrl-D does the trick. – Hongyi Zhao May 17 '22 at 09:30
  • @OlexandrKonovalov What's your method of adding the light gray separating line immediately above the Update (after Max Horn's answer below):? – Hongyi Zhao May 17 '22 at 09:33
  • You can click on Edit to see the question source - there you will find out that I've put a line ___ – Olexandr Konovalov May 17 '22 at 09:35

1 Answers1

3

The second group $G$ that you generate from a bunch of matrices is created as a plain matrix group, not a crystallographic group. As such, it knows nothing about things specific to crystallographic groups, such as the "point group".

You don't say why you even want a "small generating set", and you didn't ask about this, but I'll mention anyway that in this particular case the following trick gives a fairly small generating set:

gap> iso:=IsomorphismFpGroup(g);;
gap> sgs := MappingGeneratorsImages(iso)[1];
[ [ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ -3/4, 1/4, -3/4, 1 ] ],
  [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, -1, 0, 0 ], [ -1/4, 3/4, -3/4, 1 ] ],
  [ [ 0, 1, 0, 0 ], [ 0, 0, -1, 0 ], [ -1, 0, 0, 0 ], [ 1, -1/2, -1/2, 1 ] ],
  [ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 0, 0, 1 ] ],
  [ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1/2, -1/2, 1 ] ],
  [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/2, 0, 1/2, 1 ] ],
  [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1/2, 1/2, 1 ] ],
  [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 1, 1 ] ] ]
gap> h := AffineCrystGroup(sgs);
<matrix group with 8 generators>
gap> PointGroup(g);
<matrix group of size 48 with 47 generators>
gap> PointGroup(h);
<matrix group of size 48 with 5 generators>

PS: your prompt is brk_13> which indicates you are 13 levels down in "break loops". I recommend reading the section in the GAP reference manual on break loops.

Max Horn
  • 1,832
  • Thank you for your tricks! I give corresponding explanations and comments to your reply and inquiring in the OP. – Hongyi Zhao May 17 '22 at 08:10
  • @HongyiZhao you don't really have to duplicate Max's code in your question, if it works for you without modifications. Otherwise, a reader is just puzzled (is it the same code? Or different? Where it comes from?). If you want to add some update to your question, which does not fit into comment, then at least indicate clearly the part which comes after and may be skipped in a first reading - I've just made an edit to your question to more visibly separate the initial question and a comment added already after the answer. – Olexandr Konovalov May 17 '22 at 09:00
  • I renamed some variables to make it more consistent with the descriptions of the used commands there. – Hongyi Zhao May 17 '22 at 09:39