Properties of Codes

For the following operators, C and D are codes defined as a subset (or subspace) of the vector space V.

IsCyclic(C) : Code -> BoolElt
Return true if and only if the linear code C is a cyclic code.
IsSelfDual(C) : Code -> BoolElt
Return true if and only if the linear code C is self-dual. (i.e. C equals the dual of C).
IsSelfOrthogonal(C) : Code -> BoolElt
Return true if and only if the linear code C is self-orthogonal (i.e., C is contained in the dual of C).
IsHermitianSelfDual(C) : CodeLinFld -> BoolElt
Return true if and only if the linear code C equals the Hermitian dual of C.
IsHermitianSelfOrthogonal(C) : CodeLinFld -> BoolElt
Return true if and only if the linear code C is contained in the Hermitian dual of C.
IsMaximumDistanceSeparable(C) : Code -> BoolElt
IsMDS(C) : Code -> BoolElt
Returns true if and only if the linear code C is maximum-distance separable; that is, has parameters [n, k, n - k + 1].
IsEquidistant(C) : Code -> BoolElt
Returns true if and only if the linear code C is equidistant.
IsPerfect(C) : Code -> BoolElt
Returns true if and only if the linear code C is perfect; that is, if and only if the cardinality of C is equal to the size of the sphere packing bound of C.
IsNearlyPerfect(C) : Code -> BoolElt
Returns true if and only if the binary linear code C is nearly perfect.
IsEven(C) : Code -> BoolElt
Returns true if and only if C is an even linear binary code, (i.e., all codewords have even weight). If true, then Magma will adjust the upper and lower minimum weight bounds of C if possible.
IsDoublyEven(C) : Code -> BoolElt
Returns true if and only if C is a doubly even linear binary code, (i.e., all codewords have weight divisible by 4). If true, then Magma will adjust the upper and lower minimum weight bounds of C if possible.
IsProjective(C) : Code -> BoolElt
Returns true if and only if the (non-quantum) code C is projective.

Example CodeFld_SelfDual (H161E17)

We look at an extended quadratic residue code over GF(2) which is self-dual, and then confirm it manually.
> C := ExtendCode( QRCode(GF(2),23) );
> C:Minimal;
[24, 12, 8] Linear Code over GF(2)
> IsSelfDual(C);
true
> D := Dual(C);
> D: Minimal;
[24, 12, 8] Linear Code over GF(2)
> C eq D;
true

Example CodeFld_SelfOrthogonal (H161E18)

We look at the CordaroWagnerCode of length 6, which is self-orthogonal, and then confirm it manually.
> C := CordaroWagnerCode(6);
> C;
[6, 2, 4] Linear Code over GF(2)
Generator matrix:
[1 1 0 0 1 1]
[0 0 1 1 1 1]
> IsSelfOrthogonal(C);
true
> D := Dual(C);
> D;
[6, 4, 2] Linear Code over GF(2)
Generator matrix:
[1 0 0 1 0 1]
[0 1 0 1 0 1]
[0 0 1 1 0 0]
[0 0 0 0 1 1]
> C subset D;
true
V2.28, 13 July 2023