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

(* Specifications: *)
Lemma irreducible_inv_px_l : forall (Q : list (poly A0 eqA ltM)) (a : Term A n) (p : list (Term A n)), canonical A0 eqA ltM (pX a p) -> irreducible Q (pX a p) -> irreducible Q (pX a (pO A n)).
Lemma pO_irreducible : forall Q : list (poly A0 eqA ltM), irreducible Q (pO A n).
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.