fact: Definition Jordan_form m (A : 'M[R]_m.+1) := let sp := root_seq_poly (invariant_factors A) in let sizes := [seq (x.2).-1 | x <- sp] in let blocks n i := Jordan_block (nth (0,0%N) sp i).1 n.+1 in diag_block_mx sizes blocks.
imports: mathcomp(all_ssreflect) mathcomp(all_algebra) mathcomp(all_fingroup) mathcomp(all_real_closed) CoqEAL(binetcauchy ssrcomplements mxstructure minor) CoqEAL(smith dvdring polydvd) CoqEAL(similar perm_eq_image companion closed_poly smith_complements) CoqEAL(frobenius_form)