Is this possible to do constructively? The only sources that I have for the possibility of this construction is an exercise in Lang's Algebra (on p. 598, I believe) which states that one can be constructed, and then a construction given in Milnor and Hussemoller's book which only applies in the case that the elementary divisors are all 1.


In my case, I have a rank 4 lattice of with a symplectic form of type (1, n), and I have some elements which span an index n sublattice. I would like to somehow relate them to a symplectic basis on the whole lattice, but it seems to me that I would need to have a constructive method for creating such a basis for this to be of any use whatsoever.



How do you construct a symplectic basis on a lattice?
Here is an algorithm, it may not be a good one. I will only explain how to find a basis $e\_i$, $f\_i$ such that $\langle e\_i, e\_j \rangle = \langle f\_i, f\_j \rangle =0$ and $\langle e\_i, f\_j \rangle = c\_i \delta\_{ij}$ for some constants $c\_i$. I will punt on explaining how to make sure that $c\_1$ divides $c\_2$ which divides $c\_3$ and so forth. This presentation is closely based on the algorithm in Wikipedia for computing [Smith normal form](http://en.wikipedia.org/wiki/Smith_normal_form#Algorithm). 


Find $e$ and $f$ so that $\langle e,f \rangle \neq 0$ **(EDIT)** and such that the lattice spanned by $e$ and $f$ is the intersection of the whole lattice with the vector space spanned by $e$ and $f$. 


Set $d := \langle e,f \rangle$. Complete $(e,f)$ to a basis $(e,f,g\_1, g\_2, \ldots, g\_{2n})$ of our lattice.


**Case 1:** We have $\langle e,g\_i \rangle = \langle f, g\_i \rangle =0$ for all $i$. Take $e\_1=e$, $f\_1=f$ and apply our algorithm recursively to the sublattice spanned by the $g\_i$.


**Case 2:** For all $i$, the integer $d$ divides $\langle e,g\_i \rangle$ and $\langle f, g\_i \rangle =0$. Replace $g\_i$ by 
$$g\_i - \frac{1}{d}\langle g\_i, f \rangle e- \frac{1}{d}\langle e, g\_i \rangle f.$$
We have now reduced to Case 1.


**Case 3:** There is some $g\_i$ so that $k:=\langle e, g\_i \rangle$ is not divisible by $d$. Then, for some $q$, we have $0 < k-qd < d$. Set $f'=g\_i-kf$ and $g'\_i=f$. Then $(e,f',g\_1,g\_2,\ldots, g'\_i, \ldots, g\_n)$ is a basis, and $\langle e, f' \rangle$ is less than $d$. Return to the beginning with this new basis.


**Case 4:** There is some $g\_i$ so that $k:=\langle f, g\_i \rangle$ is not divisible by $d$. Just like Case 3, with the roles of $e$ and $f$ switched.


Since $d$ decreases at every step, eventually we will hit Case 1 and be able to reduce the dimension.


