Why does the following code
boundaries = SparseArray /@ {{{1,4}->0}, {{4,6}->0}, {{6,4}->0}, {{4,1}->0}};
MatrixForm /@ boundaries
boundaries[[3]]
boundaries[[3,6,4]]
boundaries[[3,6,4]] += 100;
return an error
"Part 6 of boundaries[[3,6,4]] does not exist."?
The program is able to read the 6,4-th entry in the third matrix, yet it is unable to change it. How so? But it is able to read and change the 4,4th entry in the third matrix, which boggles me...
Also, is there a package for Mathematica, that can compute the Smith normal form (actually just the diagonals, i.e. invariant factors) of a sparse array? If not, what are other (highly effective) software systems that could do that. I don't think GAP can handle SNF of sparse matrices. Chomp and RedHom only work on simplicial/cubical complexes. I'm not sure about LinBox.