Section IDomainPseudoDivision.
Variable R : idomainType.
Implicit Type p q r d m n : {poly R}.
Hint Resolve divp0 divp1 mod0p modp0 modp1 : core.
Hint Resolve dvdp0 : core.
Hint Resolve dvdpp : core.
Hint Resolve eqpxx : core.
suff Hmn m n: m %= n -> (m %| p) -> (n %| p).
by move=> ?; apply/idP/idP; apply: Hmn; rewrite // eqp_sym.
by rewrite /eqp; case/andP=> dd' d'd dp; apply: (dvdp_trans d'd).
Qed.

Lemma eqp_root p q : p %= q -> root p =1 root q.