\documentclass[12pt,titlepage]{article} \usepackage{amsmath} \usepackage{mathrsfs} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsthm} \usepackage{mathtools} \usepackage{graphicx} \usepackage{color} \usepackage{ucs} \usepackage[utf8x]{inputenc} \usepackage{xparse} \usepackage{hyperref} %----Macros---------- % % Unresolved issues: % % \righttoleftarrow % \lefttorightarrow % % \color{} with HTML colorspec % \bgcolor % \array with options (without options, it's equivalent to the matrix environment) % Of the standard HTML named colors, white, black, red, green, blue and yellow % are predefined in the color package. Here are the rest. \definecolor{aqua}{rgb}{0, 1.0, 1.0} \definecolor{fuschia}{rgb}{1.0, 0, 1.0} \definecolor{gray}{rgb}{0.502, 0.502, 0.502} \definecolor{lime}{rgb}{0, 1.0, 0} \definecolor{maroon}{rgb}{0.502, 0, 0} \definecolor{navy}{rgb}{0, 0, 0.502} \definecolor{olive}{rgb}{0.502, 0.502, 0} \definecolor{purple}{rgb}{0.502, 0, 0.502} \definecolor{silver}{rgb}{0.753, 0.753, 0.753} \definecolor{teal}{rgb}{0, 0.502, 0.502} % Because of conflicts, \space and \mathop are converted to % \itexspace and \operatorname during preprocessing. % itex: \space{ht}{dp}{wd} % % Height and baseline depth measurements are in units of tenths of an ex while % the width is measured in tenths of an em. \makeatletter \newdimen\itex@wd% \newdimen\itex@dp% \newdimen\itex@thd% \def\itexspace#1#2#3{\itex@wd=#3em% \itex@wd=0.1\itex@wd% \itex@dp=#2ex% \itex@dp=0.1\itex@dp% \itex@thd=#1ex% \itex@thd=0.1\itex@thd% \advance\itex@thd\the\itex@dp% \makebox[\the\itex@wd]{\rule[-\the\itex@dp]{0cm}{\the\itex@thd}}} \makeatother % \tensor and \multiscript \makeatletter \newif\if@sup \newtoks\@sups \def\append@sup#1{\edef\act{\noexpand\@sups={\the\@sups #1}}\act}% \def\reset@sup{\@supfalse\@sups={}}% \def\mk@scripts#1#2{\if #2/ \if@sup ^{\the\@sups}\fi \else% \ifx #1_ \if@sup ^{\the\@sups}\reset@sup \fi {}_{#2}% \else \append@sup#2 \@suptrue \fi% \expandafter\mk@scripts\fi} \def\tensor#1#2{\reset@sup#1\mk@scripts#2_/} \def\multiscripts#1#2#3{\reset@sup{}\mk@scripts#1_/#2% \reset@sup\mk@scripts#3_/} \makeatother % \slash \makeatletter \newbox\slashbox \setbox\slashbox=\hbox{$/$} \def\itex@pslash#1{\setbox\@tempboxa=\hbox{$#1$} \@tempdima=0.5\wd\slashbox \advance\@tempdima 0.5\wd\@tempboxa \copy\slashbox \kern-\@tempdima \box\@tempboxa} \def\slash{\protect\itex@pslash} \makeatother % math-mode versions of \rlap, etc % from Alexander Perlis, "A complement to \smash, \llap, and lap" % http://math.arizona.edu/~aprl/publications/mathclap/ \def\clap#1{\hbox to 0pt{\hss#1\hss}} \def\mathllap{\mathpalette\mathllapinternal} \def\mathrlap{\mathpalette\mathrlapinternal} \def\mathclap{\mathpalette\mathclapinternal} \def\mathllapinternal#1#2{\llap{$\mathsurround=0pt#1{#2}$}} \def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}} \def\mathclapinternal#1#2{\clap{$\mathsurround=0pt#1{#2}$}} % Renames \sqrt as \oldsqrt and redefine root to result in \sqrt[#1]{#2} \let\oldroot\root \def\root#1#2{\oldroot #1 \of{#2}} \renewcommand{\sqrt}[2][]{\oldroot #1 \of{#2}} % Manually declare the txfonts symbolsC font \DeclareSymbolFont{symbolsC}{U}{txsyc}{m}{n} \SetSymbolFont{symbolsC}{bold}{U}{txsyc}{bx}{n} \DeclareFontSubstitution{U}{txsyc}{m}{n} % Manually declare the stmaryrd font \DeclareSymbolFont{stmry}{U}{stmry}{m}{n} \SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n} % Manually declare the MnSymbolE font \DeclareFontFamily{OMX}{MnSymbolE}{} \DeclareSymbolFont{mnomx}{OMX}{MnSymbolE}{m}{n} \SetSymbolFont{mnomx}{bold}{OMX}{MnSymbolE}{b}{n} \DeclareFontShape{OMX}{MnSymbolE}{m}{n}{ <-6> MnSymbolE5 <6-7> MnSymbolE6 <7-8> MnSymbolE7 <8-9> MnSymbolE8 <9-10> MnSymbolE9 <10-12> MnSymbolE10 <12-> MnSymbolE12}{} % Declare specific arrows from txfonts without loading the full package \makeatletter \def\re@DeclareMathSymbol#1#2#3#4{% \let#1=\undefined \DeclareMathSymbol{#1}{#2}{#3}{#4}} \re@DeclareMathSymbol{\neArrow}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\neArr}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\seArrow}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\seArr}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\nwArrow}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\nwArr}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\swArrow}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\swArr}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\nequiv}{\mathrel}{symbolsC}{46} \re@DeclareMathSymbol{\Perp}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\Vbar}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\sslash}{\mathrel}{stmry}{12} \re@DeclareMathSymbol{\bigsqcap}{\mathop}{stmry}{"64} \re@DeclareMathSymbol{\biginterleave}{\mathop}{stmry}{"6} \re@DeclareMathSymbol{\invamp}{\mathrel}{symbolsC}{77} \re@DeclareMathSymbol{\parr}{\mathrel}{symbolsC}{77} \makeatother % \llangle, \rrangle, \lmoustache and \rmoustache from MnSymbolE \makeatletter \def\Decl@Mn@Delim#1#2#3#4{% \if\relax\noexpand#1% \let#1\undefined \fi \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#3}{#4}} \def\Decl@Mn@Open#1#2#3{\Decl@Mn@Delim{#1}{\mathopen}{#2}{#3}} \def\Decl@Mn@Close#1#2#3{\Decl@Mn@Delim{#1}{\mathclose}{#2}{#3}} \Decl@Mn@Open{\llangle}{mnomx}{'164} \Decl@Mn@Close{\rrangle}{mnomx}{'171} \Decl@Mn@Open{\lmoustache}{mnomx}{'245} \Decl@Mn@Close{\rmoustache}{mnomx}{'244} \makeatother % Widecheck \makeatletter \DeclareRobustCommand\widecheck[1]{{\mathpalette\@widecheck{#1}}} \def\@widecheck#1#2{% \setbox\z@\hbox{\m@th$#1#2$}% \setbox\tw@\hbox{\m@th$#1% \widehat{% \vrule\@width\z@\@height\ht\z@ \vrule\@height\z@\@width\wd\z@}$}% \dp\tw@-\ht\z@ \@tempdima\ht\z@ \advance\@tempdima2\ht\tw@ \divide\@tempdima\thr@@ \setbox\tw@\hbox{% \raise\@tempdima\hbox{\scalebox{1}[-1]{\lower\@tempdima\box \tw@}}}% {\ooalign{\box\tw@ \cr \box\z@}}} \makeatother % \mathraisebox{voffset}[height][depth]{something} \makeatletter \NewDocumentCommand\mathraisebox{moom}{% \IfNoValueTF{#2}{\def\@temp##1##2{\raisebox{#1}{$\m@th##1##2$}}}{% \IfNoValueTF{#3}{\def\@temp##1##2{\raisebox{#1}[#2]{$\m@th##1##2$}}% }{\def\@temp##1##2{\raisebox{#1}[#2][#3]{$\m@th##1##2$}}}}% \mathpalette\@temp{#4}} \makeatletter % udots (taken from yhmath) \makeatletter \def\udots{\mathinner{\mkern2mu\raise\p@\hbox{.} \mkern2mu\raise4\p@\hbox{.}\mkern1mu \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern1mu}} \makeatother %% Fix array \newcommand{\itexarray}[1]{\begin{matrix}#1\end{matrix}} %% \itexnum is a noop \newcommand{\itexnum}[1]{#1} %% Renaming existing commands \newcommand{\underoverset}[3]{\underset{#1}{\overset{#2}{#3}}} \newcommand{\widevec}{\overrightarrow} \newcommand{\darr}{\downarrow} \newcommand{\nearr}{\nearrow} \newcommand{\nwarr}{\nwarrow} \newcommand{\searr}{\searrow} \newcommand{\swarr}{\swarrow} \newcommand{\curvearrowbotright}{\curvearrowright} \newcommand{\uparr}{\uparrow} \newcommand{\downuparrow}{\updownarrow} \newcommand{\duparr}{\updownarrow} \newcommand{\updarr}{\updownarrow} \newcommand{\gt}{>} \newcommand{\lt}{<} \newcommand{\map}{\mapsto} \newcommand{\embedsin}{\hookrightarrow} \newcommand{\Alpha}{A} \newcommand{\Beta}{B} \newcommand{\Zeta}{Z} \newcommand{\Eta}{H} \newcommand{\Iota}{I} \newcommand{\Kappa}{K} \newcommand{\Mu}{M} \newcommand{\Nu}{N} \newcommand{\Rho}{P} \newcommand{\Tau}{T} \newcommand{\Upsi}{\Upsilon} \newcommand{\omicron}{o} \newcommand{\lang}{\langle} \newcommand{\rang}{\rangle} \newcommand{\Union}{\bigcup} \newcommand{\Intersection}{\bigcap} \newcommand{\Oplus}{\bigoplus} \newcommand{\Otimes}{\bigotimes} \newcommand{\Wedge}{\bigwedge} \newcommand{\Vee}{\bigvee} \newcommand{\coproduct}{\coprod} \newcommand{\product}{\prod} \newcommand{\closure}{\overline} \newcommand{\integral}{\int} \newcommand{\doubleintegral}{\iint} \newcommand{\tripleintegral}{\iiint} \newcommand{\quadrupleintegral}{\iiiint} \newcommand{\conint}{\oint} \newcommand{\contourintegral}{\oint} \newcommand{\infinity}{\infty} \newcommand{\bottom}{\bot} \newcommand{\minusb}{\boxminus} \newcommand{\plusb}{\boxplus} \newcommand{\timesb}{\boxtimes} \newcommand{\intersection}{\cap} \newcommand{\union}{\cup} \newcommand{\Del}{\nabla} \newcommand{\odash}{\circleddash} \newcommand{\negspace}{\!} \newcommand{\widebar}{\overline} \newcommand{\textsize}{\normalsize} \renewcommand{\scriptsize}{\scriptstyle} \newcommand{\scriptscriptsize}{\scriptscriptstyle} \newcommand{\mathfr}{\mathfrak} \newcommand{\statusline}[2]{#2} \newcommand{\tooltip}[2]{#2} \newcommand{\toggle}[2]{#2} % Theorem Environments \theoremstyle{plain} \newtheorem{theorem}{Theorem} \newtheorem{lemma}{Lemma} \newtheorem{prop}{Proposition} \newtheorem{cor}{Corollary} \newtheorem*{utheorem}{Theorem} \newtheorem*{ulemma}{Lemma} \newtheorem*{uprop}{Proposition} \newtheorem*{ucor}{Corollary} \theoremstyle{definition} \newtheorem{defn}{Definition} \newtheorem{example}{Example} \newtheorem*{udefn}{Definition} \newtheorem*{uexample}{Example} \theoremstyle{remark} \newtheorem{remark}{Remark} \newtheorem{note}{Note} \newtheorem*{uremark}{Remark} \newtheorem*{unote}{Note} %------------------------------------------------------------------- \begin{document} %------------------------------------------------------------------- \section*{binary linear code} \hypertarget{contents}{}\section*{{Contents}}\label{contents} \noindent\hyperlink{definitions_and_framework}{Definitions and framework}\dotfill \pageref*{definitions_and_framework} \linebreak \noindent\hyperlink{linear_codes}{Linear codes}\dotfill \pageref*{linear_codes} \linebreak \noindent\hyperlink{binary_linear_codes}{Binary linear codes}\dotfill \pageref*{binary_linear_codes} \linebreak \noindent\hyperlink{examples}{Examples}\dotfill \pageref*{examples} \linebreak \noindent\hyperlink{related_entries}{Related entries}\dotfill \pageref*{related_entries} \linebreak \noindent\hyperlink{references}{References}\dotfill \pageref*{references} \linebreak \hypertarget{definitions_and_framework}{}\subsection*{{Definitions and framework}}\label{definitions_and_framework} \hypertarget{linear_codes}{}\subsubsection*{{Linear codes}}\label{linear_codes} A ($q$-ary) \textbf{linear code} of length $n$ and rank $k$ is a $k$-dimensional subspace of the $n$-dimensional vector space $\mathbb{F}_q^n$ over a [[finite set|finite]] [[field]] $\mathbb{F}_q$ with $q$ elements, or of any $n$-dimensional space over $\mathbb{F}_q$ that comes equipped with a ``standard'' basis. A principal application is in the construction of [[error-correcting code]]s. There is a [[species|Joyal species]] $Code_{q, k}: Core(FinSet) \to Set$ of $q$-ary linear codes of rank $k$, which assigns to a finite set $\Omega$ the set of $k$-dimensional subspaces of the free $\mathbb{F}_q$-vector space generated by $\Omega$ as basis. The corresponding [[groupoid]] of $q$-linear codes is the [[category of elements]] of $Code_{q, k}$. This gives one notion of [[isomorphism]] of linear codes, where an isomorphism $(S, V \subseteq \mathbb{F}_q S) \to (T, W \subseteq \mathbb{F}_q T)$ is a bijection $\phi: S \to T$ such that the linear map $\mathbb{F}_q \phi$ carries $V$ onto $W$. Thus, [[isomorphisms]] in this sense are given by [[permutation matrices]]. An alternative notion that recurs in coding theory is that an isomorphism (often called an \emph{equivalence}) of codes consists of a [[monomial matrix]] which, when interpreted as a linear isomorphism using the assigned linear bases, carries $V$ onto $W$. Each assigned basis $\{e_1, \ldots, e_n\}$ of a vector space $U$ can be construed as a self-dual basis with respect to a bilinear form, so that $\langle e_i, e_j \rangle = \delta_{i j}$. In terms of coordinates with respect to the chosen basis, this bilinear form is the usual dot product \begin{displaymath} (\vec{x}, \vec{y}) \mapsto x_1 y_1 + \ldots + x_n y_n \end{displaymath} and this bilinear form is used to define the notion of \emph{dual code} (see below). \hypertarget{binary_linear_codes}{}\subsubsection*{{Binary linear codes}}\label{binary_linear_codes} The following is largely adapted from \hyperlink{FLM}{Frankel, Lepowsky, Meurman}. A \textbf{(binary linear) code} is a $q$-ary code with $q = 2$. In this case, isomorphisms defined by permutation matrices are the same as isomorphisms defined by monomial matrices. As a combinatorial structure on a finite set $\Omega$, a binary linear code is typically construed as a subspace of a finite power set $P(\Omega)$, considered as an $\mathbb{F}_2$-space whose addition is given by taking the symmetric difference of sets, and with standard basis given by the [[atoms]]. In that case, the standard dot product can be identified with the nondegenerate symmetric $\mathbb{F}_2$-bilinear pairing on the Boolean ring $P(\Omega)$ given by \begin{displaymath} P(\Omega) \times P(\Omega) \stackrel{\langle -, - \rangle}{\to} \mathbb{F}_2 \end{displaymath} \begin{displaymath} \, \end{displaymath} \begin{displaymath} (S, T) \mapsto {|S \cap T|} \pmod 2 \end{displaymath} where ${|C|}$ is the [[cardinality]] of a set $C$. In the sequel, we let $n = {|\Omega|} = \dim(P(\Omega))$. To each code $\mathbf{C} \subset P(\Omega)$ there is a \textbf{dual code} $\mathbf{C}^\perp$: \begin{displaymath} \mathbf{C}^\perp = \{S \in P(\Omega): \forall T \in \mathbf{C} \; \langle S, T \rangle = 0\}. \end{displaymath} Notice that $\dim(\mathbf{C}^\perp) = n - \dim(\mathbf{C})$. A code $\mathbf{C}$ is \textbf{self-dual} if $\mathbf{C} = \mathbf{C}^\perp$. In this case $n$ is even and $\dim(\mathbf{C}) = n/2$. Now suppose $\Omega$ is a set with an even number $n$ of elements. The collection $E(\Omega)$ of subsets of even cardinality is a vector subspace of $P(\Omega)$ of dimension $n-1$, and we have \begin{displaymath} E(\Omega) = 1^\perp, \end{displaymath} where $1$ is the multiplicative unit of $P(\Omega)$ (the subset $\Omega$), under the assumption $n$ is even. On $E(\Omega)$ we may define a quadratic form \begin{displaymath} q: E(\Omega) \to \mathbb{F}_2 \end{displaymath} taking $S \in E(\Omega)$ to $\frac{{|S|}}{2} \pmod 2$; this $q$ gives rise to the bilinear form $\langle -, - \rangle$ on $E(\Omega)$ via \begin{displaymath} \langle S, T \rangle = q(S + T) - q(S) - q(T). \end{displaymath} A code $\mathbf{C} \subset P(\Omega)$ is of \textbf{type II} if \begin{itemize}% \item $4$ divides ${|C|}$ for every $C \in \mathbf{C}$ and $\Omega \in \mathbf{C}$, \end{itemize} and of \textbf{type I} if \begin{itemize}% \item $\mathbf{C} \subset E(\Omega)$ and $\Omega \in \mathbf{C}$, but $\mathbf{C}$ is not of type II. \end{itemize} Notice that the quadratic form (hence the bilinear form) vanishes on a type II code $\mathbf{C}$, so that we have $\mathbf{C} \subset \mathbf{C}^\perp$ (i.e., $\mathbf{C}$ is isotropic). If $\mathbf{C}$ is maximal isotropic -- has half the dimension of $P(\Omega)$ -- then it follows that $\mathbf{C}$ is self-dual. \hypertarget{examples}{}\subsection*{{Examples}}\label{examples} \begin{example} \label{}\hypertarget{}{} \textbf{(Hamming $(8, 4)$ code)} Up to isomorphism, there is a unique type II self-dual code $\mathbf{C} \subset P(\Omega)$ where $\Omega$ is an 8-element set. Such a code may be constructed as follows: let $\Omega$ be the projective line $\mathbb{P}^1 \mathbb{F}_7$, so as a set $\Omega = \{0, 1, 2, 3, 4, 5, 6, \infty\}$. Let $Q$ be the set of squares $0, 1, 2, 4$ and let $N$ be its complement in $\Omega$. The span of the set of elements $\{N + i: i \in \mathbb{F}_7\}$ (where $\infty + i = \infty$ for each $i$) is a 4-dimensional space consisting of 16 elements: \begin{displaymath} \itexarray{ \emptyset, & \{3, 5, 6, \infty\}, & \{0, 4, 6, \infty\}, & \{0, 1, 5, \infty\} \\ \{1, 2, 6, \infty\}, & \{0, 2, 3, \infty\}, & \{1, 3, 4, \infty\}, & \{2, 4, 5, \infty\} \\ \{0, 3, 4, 5\}, & \{1, 4, 5, 6\}, & \{0, 2, 5, 6\}, & \{0, 1, 3, 6\} \\ \{0, 1, 2, 4\}, & \{1, 2, 3, 5\}, & \{2, 3, 4, 6\}, & \Omega. } \end{displaymath} For this subspace $\mathbf{C} \subset P(\Omega)$, every element is a set that is of cardinality $0$, $4$, or $8$. It is clearly of type II, and self-dual because it is maximal isotropic. There is a second Hamming code $\mathbf{C}'$ (isomorphic to $\mathbf{C}$) that is spanned by the elements $\{-N - i: i \in \mathbb{F}_7\}$. This is ``complementary'' to the first in an appropriate sense: we have \begin{displaymath} \mathbf{C} + \mathbf{C}' = E(\Omega), \qquad \mathbf{C} \cap \mathbf{C}' = \mathbb{F}_2 \Omega, \end{displaymath} so that $\mathbf{C}/\mathbb{F}_2 \Omega$ is complementary to $\mathbf{C}'/\mathbb{F}_2 \Omega$ in the 6-dimensional space $E(\Omega)/\mathbb{F}_2 \Omega$. \end{example} In the theory of error-correcting codes, this is related to the Hamming $(7, 4)$ code, but with an extra parity bit. The Hamming $(7, 4)$ code is one of an infinite family of Hamming codes of type $(2^r - 1, 2^r - r - 1)$. \begin{example} \label{}\hypertarget{}{} (The [[binary Golay code]].) Up to isomorphism, there is a unique self-dual code of type II on a 24-element set with no elements of weight (= cardinality) 4. Indeed, let $3 \Omega$ denote the disjoint union of three copies of $\Omega$. Construct a code $\mathbf{D} \subset P(3\Omega)$ that is spanned by elements of the form \begin{displaymath} S \sqcup S \sqcup \emptyset, \qquad S \sqcup \emptyset \sqcup S, \qquad T \sqcup T \sqcup T \end{displaymath} where $S$ ranges over elements of the Hamming code $\mathbf{C}$ and $T$ ranges over elements of the Hamming code $\mathbf{C}'$. Any three elements $S \sqcup S \sqcup \emptyset$, $S' \sqcup \emptyset \sqcup S'$, and $T \sqcup T \sqcup T$ are mutually orthogonal in $P(\Omega)$, so evidently $\mathbf{D}$ is an orthogonal direct sum of three 4-dimensional isotropic spaces, making $\mathbf{D}$ an isotropic subspace of dimension 12, hence maximal isotropic. Each element of $\mathbf{D}$ has cardinality a multiple of $4$, making it self-dual type II. To see that $\mathbf{D}$ has no elements of weight 4, argue as follows. Note that combinations $(S \sqcup S \sqcup \emptyset) + (S' \sqcup \emptyset \sqcup S')$ are of the form $S_1 \sqcup S_2 \sqcup S_3$ such that $S_1 + S_2 + S_3 = 0$. Now suppose we had \begin{displaymath} {|S_1 + T|} + {|S_2 + T|} + {|S_3 + T|} = 4. \end{displaymath} Since all the summands are even, one must be zero, so say $S_3 + T = 0$. Since $\mathbf{C} \cap \mathbf{C}' = \mathbb{F}_2 \Omega$, we must have $T \in \mathbb{F}_2 \Omega$. But then ${|S_1 + T|}$ and ${|S_2 + T|}$ are multiples of $4$, and therefore one is zero, so say $S_2 + T = 0$. But now we have \begin{displaymath} S_1 = S_1 - 2 T = S_1 + S_2 + S_3 = 0 \end{displaymath} whence we infer that ${|S_1 + T|}$ is a multiple of $8$, and we have reached a contradiction. \end{example} \hypertarget{related_entries}{}\subsection*{{Related entries}}\label{related_entries} \begin{itemize}% \item [[coding theory]] \item [[binary Golay code]] \item [[combinatorial design]] \item [[Leech lattice]] \item [[adinkra]] \end{itemize} \hypertarget{references}{}\subsection*{{References}}\label{references} \begin{itemize}% \item Igor Frankel, James Lepowsky, Arne Meurman, \emph{Vertex Operator Algebras and the Monster}, Academic Press 1988. \end{itemize} \begin{itemize}% \item Patrick J. Morandi, \emph{Error Correcting Codes and Algebraic Curves} , lecture notes New Mexico State University 2001. (\href{http://www.math.nmsu.edu/~pmorandi/math601f01/LectureNotes.pdf}{pdf}) \item Jay A. Wood, \emph{Spinor groups and algebraic coding theory} , J.Combinatorial Th. Series A \textbf{51} (1989) pp.277-313. (available online) \end{itemize} category: combinatorics [[!redirects binary linear codes]] [[!redirects binary code]] \end{document}