Definition irreducible (Q : list (poly A0 eqA ltM)) 
  (p : list (Term A n)) := forall q : list (Term A n), ~ reduce Q p q.

Theorem irreducible_eqp_com : forall (Q : list (poly A0 eqA ltM)) (p q : list (Term A n)), irreducible Q p -> canonical A0 eqA ltM p -> eqP A eqA n p q -> irreducible Q q.