Documentation

TauCeti.InformationTheory.Coding.Binary.Operations

Operations on even and doubly-even binary codes #

Evenness and double evenness are preserved by direct sums and by monomial equivalence, hence also by coordinate permutations. Over the binary field every unit is one and the only field automorphism is the identity, so semilinear, monomial, and permutation equivalence all agree, by TauCeti.isSemilinearEquivalent_iff_isMonomialEquivalent and TauCeti.isMonomialEquivalent_iff_isPermutationEquivalent; in particular both properties are also invariant under semilinear equivalence.

These results provide the closure properties used to build larger self-orthogonal binary codes from smaller ones without changing the divisibility conditions on their Hamming weights.

The conventions follow Huffman and Pless, Fundamentals of Error-Correcting Codes, Chapters 1 and 9.

Direct sums #

@[simp]
theorem TauCeti.BinaryCode.isEven_directSum_iff {ι : Type u_1} {κ : Type u_2} {C : LinearCode (ZMod 2) ι} {D : LinearCode (ZMod 2) κ} [Fintype ι] [Fintype κ] :

A direct sum of binary codes is even exactly when both summands are even.

theorem TauCeti.BinaryCode.IsEven.directSum {ι : Type u_1} {κ : Type u_2} {C : LinearCode (ZMod 2) ι} {D : LinearCode (ZMod 2) κ} [Fintype ι] [Fintype κ] (hC : IsEven C) (hD : IsEven D) :

The direct sum of two even binary codes is even.

@[simp]

A direct sum of binary codes is doubly even exactly when both summands are doubly even.

theorem TauCeti.BinaryCode.IsDoublyEven.directSum {ι : Type u_1} {κ : Type u_2} {C : LinearCode (ZMod 2) ι} {D : LinearCode (ZMod 2) κ} [Fintype ι] [Fintype κ] (hC : IsDoublyEven C) (hD : IsDoublyEven D) :

The direct sum of two doubly-even binary codes is doubly even.

Equivalence invariance #

theorem TauCeti.BinaryCode.isEven_iff_of_isMonomialEquivalent {ι : Type u_1} {κ : Type u_2} {C : LinearCode (ZMod 2) ι} {D : LinearCode (ZMod 2) κ} [Fintype ι] [Fintype κ] (h : IsMonomialEquivalent C D) :

Evenness of binary codes is invariant under monomial equivalence.

theorem TauCeti.BinaryCode.IsEven.of_isMonomialEquivalent {ι : Type u_1} {κ : Type u_2} {C : LinearCode (ZMod 2) ι} {D : LinearCode (ZMod 2) κ} [Fintype ι] [Fintype κ] (hC : IsEven C) (h : IsMonomialEquivalent C D) :

Monomial equivalence preserves evenness of binary codes.

Evenness of binary codes is invariant under permutation equivalence.

theorem TauCeti.BinaryCode.IsEven.of_isPermutationEquivalent {ι : Type u_1} {κ : Type u_2} {C : LinearCode (ZMod 2) ι} {D : LinearCode (ZMod 2) κ} [Fintype ι] [Fintype κ] (hC : IsEven C) (h : IsPermutationEquivalent C D) :

Permutation equivalence preserves evenness of binary codes.

Double evenness of binary codes is invariant under monomial equivalence.

Monomial equivalence preserves double evenness of binary codes.

Double evenness of binary codes is invariant under permutation equivalence.

Permutation equivalence preserves double evenness of binary codes.

Evenness of binary codes is invariant under semilinear equivalence.

theorem TauCeti.BinaryCode.IsEven.of_isSemilinearEquivalent {ι : Type u_1} {κ : Type u_2} {C : LinearCode (ZMod 2) ι} {D : LinearCode (ZMod 2) κ} [Fintype ι] [Fintype κ] (hC : IsEven C) (h : IsSemilinearEquivalent C D) :

Semilinear equivalence preserves evenness of binary codes.

Double evenness of binary codes is invariant under semilinear equivalence.

Semilinear equivalence preserves double evenness of binary codes.