Documentation

MerLeanBpqc.Definitions.Def_16_DualCode

Definition 16: Dual Code #

Given a classical [n, k, d]-code L โІ ๐”ฝโ‚‚^n (Def_3), the dual code is LโŠฅ = {w โˆˆ ๐”ฝโ‚‚^n : โŸจw, cโŸฉ = 0 for all c โˆˆ L}, where โŸจw, cโŸฉ = ฮฃแตข wแตขcแตข is the standard ๐”ฝโ‚‚-dot product.

Main Results #

Dual Code Definition #

noncomputable def ClassicalCode.dualCode {n : โ„•} (๐’ž : ClassicalCode n) :

The dual code LโŠฅ = {w โˆˆ ๐”ฝโ‚‚^n : โŸจw, cโŸฉ = 0 for all c โˆˆ L}, where โŸจw, cโŸฉ = ฮฃแตข wแตข cแตข is the standard ๐”ฝโ‚‚-inner product. This is defined as the pullback of the dual annihilator L.code.dualAnnihilator โІ Dual(๐”ฝโ‚‚^n) through the canonical isomorphism dotProductEquiv : ๐”ฝโ‚‚^n โ‰ƒโ‚— Dual(๐”ฝโ‚‚^n) given by v โ†ฆ (w โ†ฆ v โฌแตฅ w).

Equations
Instances For

    Membership Characterization #

    theorem ClassicalCode.mem_dualCode_iff {n : โ„•} (๐’ž : ClassicalCode n) (w : Fin n โ†’ ๐”ฝโ‚‚) :
    w โˆˆ ๐’ž.dualCode.code โ†” โˆ€ c โˆˆ ๐’ž.code, w โฌแตฅ c = 0

    Membership in the dual code: w โˆˆ LโŠฅ iff w โฌแตฅ c = 0 for all c โˆˆ L.

    theorem ClassicalCode.mem_dualCode_iff' {n : โ„•} (๐’ž : ClassicalCode n) (w : Fin n โ†’ ๐”ฝโ‚‚) :
    w โˆˆ ๐’ž.dualCode.code โ†” โˆ€ c โˆˆ ๐’ž.code, c โฌแตฅ w = 0

    The dual code is symmetric: w โˆˆ LโŠฅ iff c โฌแตฅ w = 0 for all c โˆˆ L. Over ๐”ฝโ‚‚, w โฌแตฅ c = c โฌแตฅ w since ๐”ฝโ‚‚ is commutative.

    Equivalence with Dual Annihilator #

    noncomputable def ClassicalCode.dualCodeEquivDualAnnihilator {n : โ„•} (๐’ž : ClassicalCode n) :

    The linear equivalence between โ†ฅ(dualCode ๐’ž).code and โ†ฅ(๐’ž.code.dualAnnihilator), obtained from dotProductEquiv. Since dualCode.code = dualAnnihilator.comap (dotProductEquiv), the restriction of dotProductEquiv gives the equivalence.

    Equations
    Instances For

      Dimension Formula #

      The dimension of the dual code: dim LโŠฅ = n - dim L. This follows from the dual annihilator dimension formula dim L + dim L.dualAnnihilator = dim ๐”ฝโ‚‚^n = n and the fact that dotProductEquiv preserves dimension.

      Dual Code is an [n, n-k, d_{LโŠฅ}]-code #

      The dual code is an [n, n-k, d_{LโŠฅ}]-code, where k = dim L and d_{LโŠฅ} is the minimum distance of the dual code.