proposition: Lemma mpolyOverP {p} : reflect (forall m, p@_m \in S) (p \in mpolyOver S).
proof: Proof. case: p=> E; rewrite qualifE /=; apply: (iffP allP); last first. by move=> h x /mapP /= [m m_in_E] ->; apply/h. move=> h m; case: (boolP (m \in msupp (MPoly E))). by move=> m_in_E; apply/h/map_f. by rewrite -mcoeff_eq0 => /eqP->; rewrite rpred0. Qed.
imports: HB(structures) mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat seq path) mathcomp(choice fintype tuple finfun bigop finset binomial) mathcomp(order fingroup perm ssralg zmodp poly ssrint) mathcomp(matrix vector) mathcomp(bigenough) ssrcomplements freeg