Linear Codes over Finite Fields
- Introduction
- Construction of Codes
- Construction of General Linear Codes
- Some Trivial Linear Codes
ZeroCode(R, n): FldFin, RngIntElt → Code
RepetitionCode(R, n): FldFin, RngIntElt → Code
ZeroSumCode(R, n): FldFin, RngIntElt → Code
UniverseCode(R, n): FldFin, RngIntElt → Code
EvenWeightCode(n): RngIntElt → Code
EvenWeightSubcode(C): Code → Code
RandomLinearCode(K, n, k): FldFin, RngIntElt, RngIntElt → Code
CordaroWagnerCode(n): RngIntElt → Code
Example: Simple Code Chain
- Some Basic Families of Codes
- Invariants of a Code
- Operations on Codewords
- Construction of a Codeword
- Arithmetic Operations on Codewords
- Distance and Weight
- Vector Space and Related Operations
(u, v): ModTupRngElt, ModTupRngElt → RngElt
InnerProduct(u, v): ModTupRngElt, ModTupRngElt → RngElt
Support(w): ModTupRngElt → { RngIntElt }
Coordinates(C, u): Code, ModTupRngElt → [ RngFinElt ]
Parent(w): ModTupRngElt → ModTupRng
Rotate(u, k): ModTupRngElt, RngIntElt → ModTupRngElt
Rotate(~u, k): ModTupRngElt, RngIntElt
Trace(u, S): ModTupFldElt, FldFin → ModTupFldElt
Trace(u): ModTupFldElt → ModTupFldElt
Example: Coordinates
- Predicates for Codewords
- Accessing Components of a Codeword
- Coset Leaders
- Subcodes
- The Subcode Constructor
sub<C | L>: Code, List → Code
Subcode(C, k): Code, RngIntElt → Code
Subcode(C, S): Code, { RngIntElt } → Code
SubcodeBetweenCode(C1, C2, k): Code, Code, RngIntElt → Code
SubcodeWordsOfWeight(C, S): Code, { RngIntElt } → Code
Example: Subcode Between Code
- Sum, Intersection, Duals and Hulls
- Membership and Equality
- Properties of Codes
- The Weight Distribution
- The Minimum Weight
MinimumWeight(C: parameters): Code → RngIntElt
MinimumDistance(C: parameters): Code → RngIntElt
MinimumWeightBounds(C): Code → RngIntElt, RngIntElt
ResetMinimumWeightBounds(C): Code
VerifyMinimumDistanceLowerBound(C, d): Code, RngIntElt → BoolElt, RngIntElt, BoolElt
VerifyMinimumDistanceUpperBound(C, d): Code, RngIntElt → BoolElt, RngIntElt, BoolElt
VerifyMinimumWeightUpperBound(C, d: parameters): Code, RngIntElt → BoolElt, RngIntElt, BoolElt
MinimumWord(C): Code → ModTupFldElt
MinimumWords(C): Code → { ModTupFldElt }
Example: Verify Lower
IncludeAutomorphism(~C, p): Code, GrpPermElt
IncludeAutomorphism(~C, G): Code, GrpPerm
KnownAutomorphismSubgroup(C): Code → GrpPerm
- The Weight Distribution
- The Weight Enumerator
- The MacWilliams Transform
MacWilliamsTransform(n, k, q, W): RngIntElt, RngIntElt, RngIntElt, [ <RngIntElt, RngIntElt> ] → [ <RngIntElt, RngIntElt> ]
MacWilliamsTransform(n, k, K, W): RngIntElt, RngIntElt, FldFin, RngMPol → RngMPol
Example: Mac Williams
- Words
Words(C, w: parameters): Code, RngIntElt → { ModTupFldElt }
NumberOfWords(C, w): Code, RngIntElt → RngIntElt
WordsOfBoundedWeight(C, l, u: parameters): Code, RngIntElt, RngIntElt → { ModTupFldElt }
ConstantWords(C, i): Code, RngIntElt → { ModTupFldElt }
NumberOfConstantWords(C, i): Code, RngIntElt → RngIntElt
Example: Words
- Covering Radius and Diameter
- Families of Linear Codes
- Cyclic and Quasicyclic Codes
CyclicCode(u): ModTupRngElt → Code
CyclicCode(n, T, K): RngIntElt, [ FldFinElt ], FldFin → Code
CyclicCode(n, T, K): RngIntElt, { FldFinElt }, FldFin → Code
QuasiCyclicCode(n, Gen): RngIntElt, [ RngUPolElt ] → Code
QuasiCyclicCode(Gen): [ ModTupRngElt ] → Code
QuasiCyclicCode(n, Gen, h): RngIntElt, [ RngUPolElt ], RngIntElt → Code
QuasiCyclicCode(Gen, h): [ModTupRngElt], RngIntElt → Code
ConstaCyclicCode(n, f, alpha): RngIntElt, RngUPolElt, FldFinElt → Code
QuasiTwistedCyclicCode(n, Gen, alpha): RngIntElt, [RngUPolElt], FldFinElt → Code
QuasiTwistedCyclicCode(Gen, alpha): [ModTupRngElt], FldFinElt → Code
QuasiTwistedCyclicCode(n, Gen, alpha, h): RngIntElt, [RngUPolElt], FldFinElt, RngIntElt → Code
QuasiTwistedCyclicCode(Gen, alpha, h): [ModTupRngElt], FldFinElt, RngIntElt → Code
Example: Chain Cyclic
Example: Constacyclic
- BCH Codes and their Generalizations
BCHCode(K, n, d, b): FldFin, RngIntElt, RngIntElt, RngIntElt → Code
BCHCode(K, n, d): FldFin, RngIntElt, RngIntElt → Code
Example: BCH Code
GoppaCode(L, G): [ FldFinElt ], RngUPolElt → Code
Example: Goppa Code
ChienChoyCode(P, G, n, S): RngUPolElt, RngUPolElt, RngIntElt, FldFin → Code
AlternantCode(A, Y, r, S): [ FldFinElt ], [ FldFinElt ], RngIntElt, FldFin → Code
AlternantCode(A, Y, r): [ FldFinElt ], [ FldFinElt ], RngIntElt → Code
Example: Alternant Code
NonPrimitiveAlternantCode(n, m, r): RngIntElt, RngIntElt, RngIntElt → Code
FireCode(h, s, n): RngUPolElt, RngIntElt, RngIntElt → Code
GabidulinCode(A, W, Z, t): [ FldFinElt ], [ FldFinElt ], [ FldFinElt ], RngIntElt → Code
SrivastavaCode(A, W, mu, S): [ FldFinElt ], [ FldFinElt ], RngIntElt, FldFin → Code
GeneralizedSrivastavaCode(A, W, Z, t, S): [ FldFinElt ], [ FldFinElt ], [ FldFinElt ], RngIntElt, FldFin → Code
- Quadratic Residue Codes and their Generalizations
QRCode(K, n): FldFin, RngIntElt → Code
GolayCode(K, ext): FldFin, BoolElt → Code
DoublyCirculantQRCode(p): RngIntElt → Code
DoublyCirculantQRCodeGF4(m, a): RngIntElt, RngElt → Code
BorderedDoublyCirculantQRCode(p, a, b): RngIntElt, RngElt, RngElt → Code
TwistedQRCode(l, m): RngIntElt, RngIntElt → Code
PowerResidueCode(K, n, p): FldFin, RngIntElt, RngIntElt → Code
Example: Quadratic Residue Code
- Reed–Solomon and Justesen Codes
ReedSolomonCode(K, d, b): FldFin, RngIntElt, RngIntElt → Code
ReedSolomonCode(K, d): FldFin, RngIntElt → Code
ReedSolomonCode(n, d): RngIntElt, RngIntElt → Code
ReedSolomonCode(n, d, b): RngIntElt, RngIntElt, RngIntElt → Code
GRSCode(A, V, k): [ FldFinElt ], [ FldFinElt ], RngIntElt → Code
JustesenCode(N, K): Code, FldFinElt, RngIntElt → Code
Example: GRS Code
- Maximum Distance Separable Codes
- New Codes from Existing
- Standard Constructions
AugmentCode(C): Code → Code
CodeComplement(C, C1): Code, Code → Code
DirectSum(C, D): Code, Code → Code
DirectSum(Q): [Code] → Code
DirectProduct(C, D): Code, Code → Code
ProductCode(C, D): Code, Code → Code
ExtendCode(C): Code → Code
ExtendCode(C, n): Code, RngIntElt → Code
PadCode(C, n): Code, RngIntElt → Code
ExpurgateCode(C): Code → Code
ExpurgateCode(C, L): Code, [ModTupFldElt] → Code
ExpurgateWeightCode(C, w): Code, RngIntElt → Code
LengthenCode(C): Code → Code
PlotkinSum(C1, C2): Code, Code → Code
PlotkinSum(C1, C2, C3: parameters): Code, Code, Code → Code
PunctureCode(C, i): Code, RngIntElt → Code
PunctureCode(C, S): Code, { RngIntElt } → Code
ShortenCode(C, i): Code, RngIntElt → Code
ShortenCode(C, S): Code, { RngIntElt } → Code
Example: Make12 8 4Code
- Changing the Alphabet of a Code
ExtendField(C, L): Code, FldFin → Code, Map
LinearCode(C, S): Code, FldFin → Code, Map
SubfieldRepresentationCode(C, K): Code, FldFin → Code
SubfieldRepresentationParityCode(C, K): Code, FldFin → Code
SubfieldSubcode(C, S): Code, FldFin → Code, Map
RestrictField(C, S): Code, FldFin → Code, Map
SubfieldSubcode(C): Code → Code, Map
RestrictField(C): Code → Code, Map
SubfieldCode(C, S): Code, FldFin → Code
Trace(C, F): Code, FldFin → Code
Trace(C): Code → Code
- Combining Codes
C1 cat C2: Code, Code → Code
Juxtaposition(C1, C2): Code, Code → Code
ConcatenatedCode(O, I): Code, Code → Code
Example: Concatenated Code
ConstructionX(C1, C2, C3): Code, Code, Code → Code
ConstructionXChain(S, C): [Code], Code → [Code]
Example: construction X
ConstructionX3(C1, C2, C3, D1, D2): Code, Code, Code, Code, Code → Code, Map
ConstructionX3u(C1, C2, C3, D1, D2): Code, Code, Code, Code, Code → Code, Code
Example: X3
ConstructionXX(C1, C2, C3, D2, D3): Code, Code, Code, Code, Code → Code
Example: XX
ZinovievCode(I, O): [Code], [Code] → Code
Example: Zinoviev
ConstructionY1(C): Code → Code
ConstructionY1(C, w): Code, RngIntElt → Code
- Coding Theory and Cryptography
- Standard Attacks
McEliecesAttack(C, v, e): Code, ModTupFldElt, RngIntElt → ModTupFldElt
LeeBrickellsAttack(C, v, e, p): Code, ModTupFldElt, RngIntElt, RngIntElt → ModTupFldElt
LeonsAttack(C, v, e, p, l): Code, ModTupFldElt, RngIntElt, RngIntElt, RngIntElt → ModTupFldElt
SternsAttack(C, v, e, p, l): Code, ModTupFldElt, RngIntElt, RngIntElt, RngIntElt → ModTupFldElt
CanteautChabaudsAttack(C, v, e, p, l): Code, ModTupFldElt, RngIntElt, RngIntElt, RngIntElt → ModTupFldElt
- Generalized Attacks
- Bounds
- Best Known Bounds for Linear Codes
BKLCLowerBound(F, n, k): FldFin, RngIntElt, RngIntElt → RngIntElt
BKLCUpperBound(F, n, k): FldFin, RngIntElt, RngIntElt → RngIntElt
BLLCLowerBound(F, k, d): FldFin, RngIntElt, RngIntElt → RngIntElt
BLLCUpperBound(F, k, d): FldFin, RngIntElt, RngIntElt → RngIntElt
BDLCLowerBound(F, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
BDLCUpperBound(F, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
- Bounds on the Cardinality of a Largest Code
EliasBound(K, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
GriesmerBound(K, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
JohnsonBound(n, d): RngIntElt, RngIntElt → RngIntElt
LevenshteinBound(K, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
PlotkinBound(K, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
SingletonBound(K, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
SpherePackingBound(K, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
GilbertVarshamovBound(K, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
GilbertVarshamovLinearBound(K, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
VanLintBound(K, n, d): FldFin, RngIntElt, RngIntElt → RngIntElt
Example: Card Best Comparison
- Bounds on the Minimum Distance
- Asymptotic Bounds on the Information Rate
- Other Bounds
- Best Known Linear Codes
BKLC(K, n, k): FldFin, RngIntElt, RngIntElt → Code, BoolElt
BestKnownLinearCode(K, n, k): FldFin, RngIntElt, RngIntElt → Code, BoolElt
BLLC(K, k, d): FldFin, RngIntElt, RngIntElt → Code, BoolElt
BestLengthLinearCode(K, k, d): FldFin, RngIntElt, RngIntElt → Code, BoolElt
BDLC(K, n, d): FldFin, RngIntElt, RngIntElt → Code, BoolElt
BestDimensionLinearCode(K, n, d): FldFin, RngIntElt, RngIntElt → Code
Example: BKLC GF2
Example: BKLC GF4
Example: BestLength GF2
Example: BDLC GF4
Example: Verbose Best Code
- Decoding
- Syndrome Decoding
- Euclidean Decoding
- Permutation Decoding
IsPermutationDecodeSet(C, I, S, s): CodeLinFld, [RngIntElt], [AlgMatElt], RngIntElt → BoolElt
IsPermutationDecodeSet(C, I, S, s): CodeLinFld, [RngIntElt], [GrpPermElt], RngIntElt → BoolElt
PermutationDecode(C, I, S, s, u): CodeLinFld, [RngIntElt], [AlgMatElt], RngIntElt, ModTupFldElt → BoolElt, ModTupFldElt
PermutationDecode(C, I, S, s, u): CodeLinFld, [RngIntElt], [GrpPermElt], RngIntElt, ModTupFldElt → BoolElt, ModTupFldElt
PermutationDecode(C, I, S, s, Q): CodeLinFld, [RngIntElt], [AlgMatElt], RngIntElt, [ModTupFldElt] → [BoolElt], [ModTupFldElt]
PermutationDecode(C, I, S, s, Q): CodeLinFld, [RngIntElt], [GrpPermElt], RngIntElt, [ModTupFldElt] → [BoolElt], [ModTupFldElt]
PDSetSimplexCode(K, m): FldFin, RngIntElt → SeqEnum, SeqEnum, SeqEnum
PDSetHadamardCode(m): RngIntElt → SeqEnum, SeqEnum, SeqEnum
Example: Spain Decode 1
Example: Spain Decode 2
- Transforms
- Mattson–Solomon Transforms
- Krawchouk Polynomials
KrawchoukPolynomial(K, n, k): FldFin, RngIntElt, RngIntElt → RngUPolElt
KrawchoukTransform(f, K, n): RngUPolElt, FldFin, RngIntElt → RngUPolElt
InverseKrawchouk(A, K, n): RngUPolElt, FldFin, RngIntElt → RngUPolElt
- Automorphism Groups
- Introduction
- Group Actions
v ^ x: ModTupFldElt, GrpPermElt → ModTupFldElt
v ^ G: ModTupFldElt, GrpPerm → GSet{ ModTupFldElt }
C ^ x: Code, GrpPermElt → Code
C ^ G: Code, GrpPerm → GSet{ Code }
S ^ x: [ModTupFldElt], GrpPermElt → [ModTupFldElt]
S ^ x: { ModTupFldElt }, GrpPermElt → { ModTupFldElt }
S ^ x: [Code], GrpPermElt → [Code]
S ^ x: { Code }, GrpPermElt → { Code }
Fix(C, G): Code, GrpPerm → Code
- Automorphism Group
AutomorphismGroup(C: parameters): Code → GrpPerm, PowMap, Map
MonomialGroup(C: parameters): Code → GrpPerm, PowMap, Map
PermutationGroup(C): Code → GrpPerm, PowMap, Map
AutomorphismSubgroup(C): Code → GrpPerm, PowMap, Map
MonomialSubgroup(C): Code → GrpPerm, PowMap, Map
AutomorphismGroupStabilizer(C, k): Code, RngIntElt → GrpPerm, PowMap, Map
MonomialGroupStabilizer(C, k): Code, RngIntElt → GrpPerm, PowMap, Map
Aut(C): Code → Pow, Map
Aut(C, T): Code, MonStgElt → Pow, Map
Example: Automorphism Group
Example: Auto Morphism Group With Weight
- Equivalence and Isomorphism of Codes