proposition: Theorem reducestar_inv : forall (Q : list (poly A0 eqA ltM)) (p q : list (Term A n)), reducestar Q p q -> canonical A0 eqA ltM p -> eqP A eqA n p q /\ irreducible A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q p \/ (exists r : list (Term A n), reduce A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q p r /\ reducestar Q r q).
proof: Proof. Proof using plusA os cs. intros Q p q H'; elim H'. intros p0 q0 H'0; inversion H'0. intros H'1 H'2; left; split; auto. apply irreducible_eqp_com with (1 := cs) (p := q0); auto. apply eqp_imp_canonical with (p := p0) (1 := cs); auto. apply (eqp_sym _ _ _ _ _ _ _ _ _ cs n); auto. intros H'1 H'2; right; exists y; split; auto. apply reducestar0; auto. Qed.