proposition: Lemma mleadrect (P : {mpoly R[n]} -> Type) : (forall p, (forall q, (mlead q < mlead p)%O -> P q) -> P p) -> forall p, P p.
proof: Proof. move=> ih p; move: {2}(mlead p) (lexx (mlead p))=> m. elim/(ltmwf (n := n)): m p=> m1 wih p lt_pm1; apply/ih=> q lt_pq. by apply/(wih (mlead q)); first exact: lt_le_trans lt_pq _. 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