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: Self-Dual Code (ex-a18e45)

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

Run in calculator (opens in a new tab)

Example: Self-Orthogonal Code (ex-f19a8e)

Run in calculator (opens in a new tab)

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

Run in calculator (opens in a new tab)