Goppa code

From HandWiki

In mathematics, an algebraic geometric code (AG-code), otherwise known as a Goppa code, is a general type of linear code constructed by using an algebraic curve X over a finite field 𝔽q. Such codes were introduced by Valerii Denisovich Goppa. In particular cases, they can have interesting extremal properties, making them useful for a variety of error detection and correction problems.[1]

They should not be confused with binary Goppa codes that are used, for instance, in the McEliece cryptosystem.

Construction

Traditionally, an AG-code is constructed from a non-singular projective curve X over a finite field 𝔽q by using a number of fixed distinct 𝔽q-rational points on 𝐗:

𝒫:={P1,…,Pn}⊂𝐗(𝔽q).

Let G be a divisor on X, with a support that consists of only rational points and that is disjoint from the Pi (i.e., 𝒫∩supp⁡(G)=∅).

By the Riemann–Roch theorem, there is a unique finite-dimensional vector space, L(G), with respect to the divisor G. The vector space is a subspace of the function field of X.

There are two main types of AG-codes that can be constructed using the above information.

Function code

The function code (or dual code) with respect to a curve X, a divisor G and the set 𝒫 is constructed as follows.

Let D=P1+⋯+Pn, be a divisor, with the Pi defined as above. We usually denote a Goppa code by C(D,G). We now know all we need to define the Goppa code:

C(D,G)={(f(P1),…,f(Pn)) : f∈L(G)}⊂𝔽qn

For a fixed basis f1,…,fk for L(G) over 𝔽q, the corresponding Goppa code in 𝔽qn is spanned over 𝔽q by the vectors

(fi(P1),…,fi(Pn))

Therefore,

[f1(P1)⋯f1(Pn)⋮⋮fk(P1)⋯fk(Pn)]

is a generator matrix for C(D,G).

Equivalently, it is defined as the image of

{α:L(G)→𝔽nf↦(f(P1),…,f(Pn))

The following shows how the parameters of the code relate to classical parameters of linear systems of divisors D on C (cf. Riemann–Roch theorem for more). The notation ℓ(D) means the dimension of L(D).

Proposition A. The dimension of the Goppa code C(D,G) is k=ℓ(G)−ℓ(G−D).

Proof. Since C(D,G)≅L(G)/ker⁡(α), we must show that

ker⁡(α)=L(G−D).

Let f∈ker⁡(α) then f(P1)=⋯=f(Pn)=0 so div⁡(f)>D. Thus, f∈L(G−D). Conversely, suppose f∈L(G−D), then div⁡(f)>D since

Pi<G,i=1,…,n.

(G doesn't “fix” the problems with the −D, so f must do that instead.) It follows that f(P1)=⋯=f(Pn)=0.

Proposition B. The minimal distance between two code words is d⩾n−deg⁡(G).

Proof. Suppose the Hamming weight of α(f) is d. That means that for n−d indices i1,…,in−d we havef(Pik)=0 for k∈{1,…,n−d}. Then f∈L(G−Pi1−⋯−Pin−d), and

div⁡(f)+G−Pi1−⋯−Pin−d>0.

Taking degrees on both sides and noting that

deg⁡(div⁡(f))=0,

we get

deg⁡(G)−(n−d)⩾0.

so

d≥n−deg⁡(G).

Residue code

The residue code can be defined as the dual of the function code, or as the residue of some functions at the Pi's.

References

  • Key One Chung, Goppa Codes, December 2004, Department of Mathematics, Iowa State University.