Does Maxima have an algorithm for "Smith Normal Form" ? Does it exist in any contributed libraries? Thanks.