Documentation

TauCeti.InformationTheory.Coding.Duality

Euclidean duals of derived codes #

This file computes the Euclidean dual of the codes obtained from a linear code by the elementary constructions: puncturing, shortening, direct sums, reindexing, and linear (in particular monomial) equivalences of the coordinate space, and compares the automorphism groups of a code and of its dual.

For a set s of retained coordinates, puncturing and shortening are exchanged by duality: (puncture C s)^⊥ = shorten C^⊥ s and (shorten C s)^⊥ = puncture C^⊥ s. The dual of a direct sum is the direct sum of the duals. A linear equivalence of the coordinate space acts on the dual through its contragredient for the dot product. The contragredient of a monomial transformation which rescales coordinates by units u rescales by the inverse units u⁻¹ and relabels the coordinates in the same way; in particular, monomially (respectively permutation) equivalent codes have monomially (respectively permutation) equivalent duals, and a coordinate permutation preserves self-orthogonality and self-duality. A direct sum is self-orthogonal (respectively self-dual) exactly when both summands are.

Taking contragredients carries the monomial automorphisms of a code to those of its dual, and fixes every coordinate permutation. Over a field, where the dual of the dual is the code itself, a code and its dual therefore have the same permutation automorphism group and isomorphic monomial automorphism groups.

Main statements #

References #

@[simp]
theorem Submodule.euclideanDual_directSum {R : Type u_1} {ι : Type u_2} {κ : Type u_3} [CommSemiring R] [Fintype ι] [Fintype κ] (C : Submodule R (ι → R)) (D : Submodule R (κ → R)) :

The Euclidean dual of a direct sum is the direct sum of the Euclidean duals.

@[simp]
theorem Submodule.isSelfOrthogonal_directSum_iff {R : Type u_1} {ι : Type u_2} {κ : Type u_3} [CommSemiring R] [Fintype ι] [Fintype κ] {C : Submodule R (ι → R)} {D : Submodule R (κ → R)} :

A direct sum is self-orthogonal exactly when both summands are.

@[simp]
theorem Submodule.isSelfDual_directSum_iff {R : Type u_1} {ι : Type u_2} {κ : Type u_3} [CommSemiring R] [Fintype ι] [Fintype κ] {C : Submodule R (ι → R)} {D : Submodule R (κ → R)} :

A direct sum is self-dual exactly when both summands are.

@[simp]
theorem Submodule.euclideanDual_map_linearEquiv {R : Type u_1} {ι : Type u_2} {κ : Type u_3} [CommSemiring R] [Fintype ι] [Fintype κ] [DecidableEq ι] [DecidableEq κ] (C : Submodule R (ι → R)) (f : (ι → R) ≃ₗ[R] κ → R) :

The Euclidean dual of the image of a code under a linear equivalence is the image of the dual under the contragredient equivalence.

@[simp]
theorem TauCeti.euclideanDual_puncture {F : Type u_1} {ι : Type u_2} [Field F] [Fintype ι] (s : Set ι) [Fintype ↑s] (C : LinearCode F ι) :

The Euclidean dual of a punctured code is the shortened Euclidean dual, with the same retained coordinates.

@[simp]
theorem TauCeti.euclideanDual_shorten {F : Type u_1} {ι : Type u_2} [Field F] [Fintype ι] (s : Set ι) [Fintype ↑s] (C : LinearCode F ι) :

The Euclidean dual of a shortened code is the punctured Euclidean dual, with the same retained coordinates.

@[simp]

The Euclidean dual of the code punctured at i is the dual shortened at i.

@[simp]

The Euclidean dual of the code shortened at i is the dual punctured at i.

theorem TauCeti.monomialEquiv_dotProduct {ι : Type u_2} {κ : Type u_3} {R : Type u_4} [CommSemiring R] [Fintype ι] [Fintype κ] (u : ι → Rˣ) (e : ι ≃ κ) (x : ι → R) (y : κ → R) :

A monomial transformation is adjoint, for the dot product, to the inverse of the transformation with inverse scalars and the same relabelling.

@[simp]
theorem TauCeti.dotProductContragredient_monomialEquiv {ι : Type u_2} {κ : Type u_3} {R : Type u_4} [CommSemiring R] [Fintype ι] [Fintype κ] [DecidableEq ι] [DecidableEq κ] (u : ι → Rˣ) (e : ι ≃ κ) :

The contragredient of a monomial transformation is the monomial transformation with the inverse scalars and the same relabelling.

theorem TauCeti.euclideanDual_map_monomialEquiv {ι : Type u_2} {κ : Type u_3} {R : Type u_4} [CommSemiring R] [Fintype ι] [Fintype κ] (u : ι → Rˣ) (e : ι ≃ κ) (C : Submodule R (ι → R)) :

The Euclidean dual of the image of a code under a monomial transformation is the image of the dual under the contragredient transformation, with inverse scalars.

theorem TauCeti.IsMonomialEquivalent.euclideanDual {ι : Type u_2} {κ : Type u_3} {R : Type u_4} [CommSemiring R] [Fintype ι] [Fintype κ] {C : Submodule R (ι → R)} {D : Submodule R (κ → R)} (h : IsMonomialEquivalent C D) :

Monomially equivalent codes have monomially equivalent Euclidean duals.

theorem TauCeti.IsPermutationEquivalent.euclideanDual {ι : Type u_2} {κ : Type u_3} {R : Type u_4} [CommSemiring R] [Fintype ι] [Fintype κ] {C : Submodule R (ι → R)} {D : Submodule R (κ → R)} (h : IsPermutationEquivalent C D) :

Permutation-equivalent codes have permutation-equivalent Euclidean duals.

theorem TauCeti.IsPermutationEquivalent.isSelfOrthogonal_iff {ι : Type u_2} {κ : Type u_3} {R : Type u_4} [CommSemiring R] [Fintype ι] [Fintype κ] {C : Submodule R (ι → R)} {D : Submodule R (κ → R)} (h : IsPermutationEquivalent C D) :

Permutation equivalence preserves self-orthogonality.

theorem TauCeti.IsPermutationEquivalent.isSelfDual_iff {ι : Type u_2} {κ : Type u_3} {R : Type u_4} [CommSemiring R] [Fintype ι] [Fintype κ] {C : Submodule R (ι → R)} {D : Submodule R (κ → R)} (h : IsPermutationEquivalent C D) :

Permutation equivalence preserves self-duality.

Automorphism groups of the Euclidean dual #

The contragredient of a coordinate permutation is the permutation itself.

The contragredient of a linear automorphism is monomial exactly when the automorphism is.

The contragredient of a monomial automorphism of a code is a monomial automorphism of its Euclidean dual.

A permutation automorphism of a code is a permutation automorphism of its Euclidean dual.

@[simp]

A linear code and its Euclidean dual have the same permutation automorphisms.

theorem TauCeti.mem_monomialAut_euclideanDual_iff {ι : Type u_2} {K : Type u_4} [Field K] [Fintype ι] [DecidableEq ι] {C : Submodule K (ι → K)} {f : (ι → K) ≃ₗ[K] ι → K} :

A linear automorphism is a monomial automorphism of the Euclidean dual of a linear code exactly when its contragredient is a monomial automorphism of the code.

def TauCeti.monomialAutEquivEuclideanDual {ι : Type u_2} {K : Type u_4} [Field K] [Fintype ι] [DecidableEq ι] (C : Submodule K (ι → K)) :

The monomial automorphism groups of a linear code and of its Euclidean dual are isomorphic, by taking contragredients.

Instances For
    @[simp]
    theorem TauCeti.coe_monomialAutEquivEuclideanDual_apply {ι : Type u_2} {K : Type u_4} [Field K] [Fintype ι] [DecidableEq ι] (C : Submodule K (ι → K)) (f : ↥(monomialAut C)) :
    @[simp]
    theorem TauCeti.euclideanDual_reindex {F : Type u_1} {ι : Type u_2} {κ : Type u_3} [Field F] [Fintype ι] [Fintype κ] (C : LinearCode F ι) (e : κ ≃ ι) :

    Euclidean duality commutes with a change of coordinates.