# Goppa code

Let $g(z)$ be a monic polynomial over the finite field $\mathbf{F}_{q^m}$ and let $L = \{\gamma_0,\ldots,\gamma_{n-1} \}$ be a set of $n$ elements of $\mathbf{F}_{q^m}$ such that $g(\gamma_i) \ne 0$ for $0 \le i < n$. The classical Goppa code $\Gamma(L,g)$ with Goppa polynomial $g(z)$ is the set of all words $(c_0,\ldots,c_{n-1})$ in $\mathbf{F}_q^n$ for which $\sum_{i=0}^{n-1} (z-\gamma_i)^{-1} c_i = 0 \pmod {g(z)}$. Here $(z-\gamma)^{-1}$ is to be interpreted as $-g(\gamma)^{-1} f(z)$ where $f(z)$ is the unique polynomial of degree ${}< \deg g(z)$ such that $(z-\gamma) f(z) \equiv 1 \pmod{g(z)}$.
The basic idea of this construction can be generalized as follows. Let $X$ be a non-singular projective curve (in the sense of algebraic geometry) defined over the finite field $\mathbf{F}_q$. Let $\{P_1,\ldots,P_n\}$ be a set of rational points of $X$. Let $D$ be the divisor $P_1+\cdots+ P_n$. Let $G$ be another divisor with support disjoint from $D$. Let $L(G)$ be the linear system associated to the divisor $G$, i.e. $L(G) = \{ f \in f(X)^* : D+(f) \ge 0 \}$, where $k(X)^*$ is the set of non-zero rational functions on $X$ and $(f)$ is the divisor of zeros and poles defined by $f \in k(X)^*$. The geometric Goppa code $C(D,G)$ of length $n$ associated to the pair $(D,G)$ is the image of the linear mapping $\alpha : L(G) \rightarrow \mathbf{F}_q^n$ defined by $\alpha : f \mapsto \left({ f(P_1),\ldots,f(P_n) }\right)$. If the supports of $D$ and $G$ are not disjoint, there is still a code associated to the pair $(D,G)$, but not a canonical one; however, all the codes so obtained are equivalent in a suitable sense. A second code associated to the pair $(D,G)$ is the following. Let $\Omega(D)$ be the vector space of rational differential forms $\omega$ on $X$ with $(\omega) + D \ge 0$, together with the zero form. The second linear code $C^*(D,G)$ associated to the pair $(D,G)$ is the image of the linear mapping $\alpha^* : \Omega(G-D) \rightarrow \mathbf{F}_q^n$ defined by $\alpha^* : \omega \mapsto \left({ \mathrm{res}_{P_1}(\omega),\ldots,\mathrm{res}_{P_n}(\omega) }\right)$. This is the construction which more directly generalizes the classical Goppa codes mentioned above. The codes $C(D,G)$ and $C^*(D,G)$ are dual to each other. For fixed $D$ and varying $G$ the codes $C(D,G)$ and $C^*(D,G)$ yield the same family.
At present (1989) one approach to finding good codes is to find curves with large numbers of rational points compared to their genus. This brings in advanced algebraic geometry. Using Shimura curves (modular curves) one now can find a sequence of codes which beats the Gilbert–Varshamov bound for $q\ge49$. For more details cf. [a4], [a7][a9].