fact: Definition Frobenius_form_CF n (A : 'M[R]_n) := let fm f s := flatten (map f s) in let sp := invariant_factors A in let l p := linear_factor_seq p in let sc p := [seq (size q).-2 | q : {poly R} <- l p] in let size := flatten (map sc sp) in let blocks m i := companion_mxn m.+1 (fm l sp)`_i in diag_block_mx size 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)