  Quantum error-correcting codes can be used to protect qubits involved in
quantum computation. This requires that logical operators acting on protected
qubits be translated to physical operators (circuits) acting on physical
quantum states. We propose a mathematical framework for synthesizing physical
circuits that implement logical Clifford operators for stabilizer codes.
Circuit synthesis is enabled by representing the desired physical Clifford
operator in $\mathbb{C}^{N \times N}$ as a partial $2m \times 2m$ binary
symplectic matrix, where $N = 2^m$. We state and prove two theorems that use
symplectic transvections to efficiently enumerate all symplectic matrices that
satisfy a system of linear equations. As an important corollary of these
results, we prove that for an $[\![ m,m-k ]\!]$ stabilizer code every logical
Clifford operator has $2^{k(k+1)/2}$ symplectic solutions. The desired physical
circuits are then obtained by decomposing each solution as a product of
elementary symplectic matrices. Our assembly of the possible physical
realizations enables optimization over them with respect to a suitable metric.
Furthermore, we show that any circuit that normalizes the stabilizer of the
code can be transformed into a circuit that centralizes the stabilizer, while
realizing the same logical operation. Our method of circuit synthesis can be
applied to any stabilizer code, and this paper provides a proof of concept
synthesis of universal Clifford gates for the $[\![ 6,4,2 ]\!]$ CSS code. We
conclude with a classical coding-theoretic perspective for constructing logical
Pauli operators for CSS codes. Since our circuit synthesis algorithm builds on
the logical Pauli operators for the code, this paper provides a complete
framework for constructing all logical Clifford operators for CSS codes.
Programs implementing our algorithms can be found at
https://github.com/nrenga/symplectic-arxiv18a
