Automorphism Group

Automorphisms acting on a quantum code are a slight generalization of those which act on the underlying additive stabilizer code. Automorphisms consists of both a permutation action on the columns of a stabilizer code, combined with a monomial action on the individual columns which permute the values.

The automorphism group of a length n additive stabilizer code over F4 is a subgroup of Z3 wreath Sym(n) of order 3 * n!. However the automorphism group of the quantum code it generates is a subgroup of Sym(3) wreath Sym(n) of order 3! * n! because of the more general action on the values in the columns.

In Magma automorphisms are returned as permutations, either as length 3n permutations for the full monomial action on a code, or as length n permutations when the automorphism is restricted to only the permutation action on the columns.

AutomorphismGroup(Q) : CodeQuantum -> GrpPerm
The automorphism group of the quantum code Q. Currently this function only applies to binary quantum codes.
PermutationGroup(Q) : CodeQuantum -> GrpPerm
The subgroup of the automorphism group of the quantum code Q consisting of those automorphisms which permute the coordinates of codewords. Currently this function only applies to binary quantum codes.

Example QECC_QuantumAuto (H167E27)

The full automorphism group and its subgroup of coordinate permutations are calculated for the dodecacode.
> F<w> := GF(4);
> Q := Dodecacode();
> Q;
[[12, 0, 6]] self-dual Quantum code over GF(2^2), stabilised by:
[  1   0   0   0   0   0 w^2 w^2   0   w   1   w]
[  w   0   0   0   0   0   w   0   w   w   w   1]
[  0   1   0   0   0   0   1   0   1 w^2 w^2   1]
[  0   w   0   0   0   0   0   w   1   w   w   w]
[  0   0   1   0   0   0   0   1   1   1 w^2 w^2]
[  0   0   w   0   0   0 w^2   1 w^2   w   w   0]
[  0   0   0   1   0   0   w   w   1   1   0   1]
[  0   0   0   w   0   0   w   1   w w^2 w^2   0]
[  0   0   0   0   1   0   w   w   w   0   1   w]
[  0   0   0   0   w   0 w^2   1   1 w^2   0   w]
[  0   0   0   0   0   1 w^2 w^2 w^2   1   0 w^2]
[  0   0   0   0   0   w   w   1   0   1   w   w]
>
> AutomorphismGroup(Q);
Permutation group acting on a set of cardinality 36
Order = 648 = 2^3 * 3^4
    (1, 4, 32)(2, 5, 33)(3, 6, 31)(7, 13, 29)(8, 14, 30)(9, 15, 28)(10, 35, 22)
        (11, 36, 23)(12, 34, 24)(16, 19, 26)(17, 20, 27)(18, 21, 25)
    (4, 23, 8, 29, 10, 20, 18, 36, 32)(5, 24, 9, 30, 11, 21, 16, 34, 33)
        (6, 22, 7, 28, 12, 19, 17, 35, 31)(13, 14, 15)(25, 27, 26)
    (7, 35)(8, 36)(9, 34)(10, 20)(11, 21)(12, 19)(13, 26)(14, 27)(15, 25)
        (16, 30)(17, 28)(18, 29)(22, 31)(23, 32)(24, 33)
    (4, 29, 18)(5, 30, 16)(6, 28, 17)(7, 19, 31)(8, 20, 32)(9, 21, 33)
        (10, 36, 23)(11, 34, 24)(12, 35, 22)
> PermutationGroup(Q);
Permutation group acting on a set of cardinality 12
    (1, 7, 9, 3, 5, 11)(2, 8, 10, 4, 6, 12)
    (1, 2)(3, 4)(5, 10)(6, 9)(7, 12)(8, 11)
    (2, 4)(5, 9)(6, 12)(7, 11)(8, 10)

Example QECC_QECC-Auto-stabilizer (H167E28)

The automorphism group for a quantum code is larger than that of its stabilizer code. In this example that is shown for the Hexacode.
> F<w> := GF(4);
> Q := Hexacode();
> Q:Minimal;
[[6, 0, 4]] self-dual Quantum code over GF(2^2)
> A_Q := AutomorphismGroup(Q);
> A_Q;
Permutation group A_Q acting on a set of cardinality 18
Order = 2160 = 2^4 * 3^3 * 5
    (1, 4)(2, 6)(3, 5)(7, 8)(10, 12)(13, 14)(17, 18)
    (2, 3)(5, 6)(7, 8)(10, 18)(11, 16)(12, 17)(13, 14)
    (4, 7)(5, 8)(6, 9)(13, 17)(14, 16)(15, 18)
    (7, 13)(8, 14)(9, 15)(10, 17)(11, 16)(12, 18)
    (7, 12)(8, 10)(9, 11)(13, 18)(14, 17)(15, 16)
> S := StabilizerCode(Q);
> A_S := AutomorphismGroup(S);
> A_S;
Permutation group A_S acting on a set of cardinality 18
Order = 180 = 2^2 * 3^2 * 5
    (1, 4)(2, 5)(3, 6)(7, 13)(8, 14)(9, 15)
    (4, 7, 12)(5, 8, 10)(6, 9, 11)(13, 15, 14)(16, 18, 17)
    (4, 6, 5)(7, 14, 11)(8, 15, 12)(9, 13, 10)(16, 18, 17)
> A_S subset A_Q;
true
V2.28, 13 July 2023