fact: Definition primitive_poly (p: {poly F}) := let v := #|{poly %/ p}|.-1 in [&& p \is monic, irreducibleb p, p %| 'X^v - 1 & [forall n : 'I_v, (p %| 'X^n - 1) ==> (n == 0%N :> nat)]].
imports: HB(structures) mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat seq choice fintype tuple) mathcomp(div bigop binomial finset finfun ssralg countalg finalg) mathcomp(poly polydiv qpoly perm fingroup falgebra fieldext finfield galois) mathcomp(finalg zmodp matrix vector)