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 \({\mathbb{F}}_4\) is a subgroup of \(Z_3 \wr Sym(n)\) of order \(3*n!\). However the automorphism group of the quantum code it generates is a subgroup of \(Sym(3) \wr 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: Quantum Auto (ex-9f0d8a)#
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 Auto Stabilizer (ex-320db8)#
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