program matrix_transposition;
mat := [[1,2,3,4], [5,6,7,8], [9,10,11,12]];
print(mat);
print(' -> ');
print(transpose(mat));
proc transpose(m);
return [[m(y)(x) : y in [1..#m]] : x in [1..#m(1)]];
end proc;
end program;