PAutHadamardCodeZ4(δ, m) : RngIntElt, RngIntElt -> GrpPerm, Mtrx
Given an integer m≥1 and an integer δ such that
1≤δ ≤⌊(m + 1)/2 ⌋, this function returns the permutation group G
of a Hadamard code over Z4 of length 2m - 1 and type 2γ 4δ, where
γ=m + 1 - 2δ. The group G contains all permutations of the coordinates which
preserve the code. Thus only permutation of coordinates is allowed, and the degree of G
is always 2m - 1. Moreover, the generator matrix with γ + δ rows used to
generate the code is returned. This matrix is constructed in a recursive way using the
Plotkin and BQPlotkin constructions defined in Section New Codes from Old.
PAutHadamardCodeZ4Order(δ, m) : RngIntElt, RngIntElt -> RngIntElt
Given an integer m≥1 and an integer δ such that
1≤δ ≤⌊(m + 1)/2 ⌋, return the order of the permutation group
G of a Hadamard code over Z4 of length 2m - 1 and type 2γ 4δ,
where γ=m + 1 - 2δ. The group G contains all permutations of the
coordinates which preserve the code.
PAutExtendedPerfectCodeZ4(δ, m) : RngIntElt, RngIntElt -> GrpPerm, Mtrx
Given an integer m≥2 and an integer δ such that
1≤δ ≤⌊(m + 1)/2 ⌋, return the permutation group G of an extended
perfect code over Z4 of length 2m - 1, such that its dual code is of type
2γ 4δ, where γ=m + 1 - 2δ.
The group G contains all permutations of the coordinates which preserve the code.
Thus only permutation of coordinates is allowed, and the degree of G is always 2m - 1.
Moreover, the generator matrix with γ + δ rows used to generate the code is
returned. This matrix is constructed in a recursive way using the Plotkin and BQPlotkin
constructions defined in Section New Codes from Old.
PAutExtendedPerfectCodeZ4Order(δ, m) : RngIntElt, RngIntElt -> RngIntElt
Given an integer m≥2 and an integer δ such that
1≤δ ≤⌊(m + 1)/2 ⌋, return the order of the permutation group
G of an extended perfect code over Z4 of length 2m - 1, such that its dual
code is of type 2γ 4δ, where γ=m + 1 - 2δ.
The group G contains all permutations of the coordinates which preserve the code.
> C := HadamardCodeZ4(2,4);
> PAut := PAutHadamardCodeZ4(2,4);
> PAut;
Permutation group PAut acting on a set of cardinality 8
(1, 2)(3, 4)(5, 6)(7, 8)
(2, 4)(6, 8)
(5, 7)(6, 8)
(1, 5)(3, 7)
> {p : p in Sym(8) | C^p eq C} eq Set(PAut);
true
> #PAut eq PAutHadamardCodeZ4Order(2,4);
true
> d := 2; m := 4; g := m+1-2*d;
> PAutHadamardCodeZ4Order(d, m) eq
> #GL(d-1,Integers(4))*#GL(g,Integers(2))*2^g*4^((g+1)*(d-1));
true
> d := 4; m := 8; g := m+1-2*d;
> PAutHadamardCodeZ4Order(d, m) eq
> #GL(d-1,Integers(4))*#GL(g,Integers(2))*2^g*4^((g+1)*(d-1));
true
> PAutHadamardCodeZ4(2,4) eq PAutExtendedPerfectCodeZ4(2,4);
true
The permutation group G of the linear code C of length n over the ring R, where G is the group of all permutation-action permutations which preserve the code. Thus only permutation of coordinates is allowed, and the degree of G is always n.
Given a code C over Z4 of length n, return the permutation group Gbin of Cbin=Φ(C), where Gbin is the group of all permutation-action permutations which preserve the binary code Cbin of length 2n and Φ is the Gray map. Thus only permutation of coordinates is allowed, and the degree of Gbin is always 2n.
> C := HadamardCodeZ4(2,4);
> PAutC := PermutationGroup(C);
> PAutC eq PAutHadamardCodeZ4(2,4);
true
> #PAutC eq PAutHadamardCodeZ4Order(2,4);
true
> {p : p in Sym(8) | C^p eq C} eq Set(PAutC);
true
> Cbin := GrayMapImage(C);
> PAutCbin := PermutationGroupGrayMapImage(C);
> {p : p in PAutCbin | Set(Cbin)^p eq Set(Cbin)} eq Set(PAutCbin);
true
V2.28, 13 July 2023