proposition: Lemma eval_ModsAux e p q n k k' : (forall sp, qf_eval e (k sp) = k' (map (eval_poly e) sp)) -> qf_eval e (ModsAux p q n k) = k' (mods_aux (eval_poly e p) (eval_poly e q) n).
proof: Proof. elim: n p q k k'=> [|n ihn] p q k k' Pk; first by rewrite /= Pk. rewrite /= eval_Isnull; have [|ep_neq0] := altP (_ =P _); first by rewrite Pk. set q' := eval_poly e q; set p' := eval_poly e p. rewrite (eval_NextMod (fun npq => k' (p' :: mods_aux q' npq n))) => // npq. by rewrite (ihn _ _ _ (fun ps => k' (p' :: ps))) => // ps; rewrite Pk. Qed.
imports: mathcomp.ssreflect.ssreflect mathcomp(ssrfun ssrbool eqtype ssrnat seq choice fintype) mathcomp(finfun path matrix) mathcomp(bigop order ssralg poly polydiv ssrnum zmodp div ssrint) mathcomp(polyorder polyrcf interval polyXY) mathcomp(qe_rcf_th ordered_qelim mxtens)