proposition: Theorem reduceplus_skip : forall (Q : list (poly A0 eqA ltM)) (a b : Term A n) (p q : list (Term A n)), reduceplus Q p q -> canonical A0 eqA ltM (pX a p) -> eqTerm (A:=A) eqA (n:=n) a b -> reduceplus Q (pX a p) (pX b q).
proof: Proof. Proof using plusA os cs. intros Q a b p q H'; generalize a b; clear a b; elim H'; auto. intros x y z H'0 H'1 H'2 a b H'3 H'4. apply Rstar_n with (y := pX b y); auto. apply H'2; auto. apply ltP_pX_canonical; auto. apply canonical_reduce with (1 := cs) (3 := H'0); auto. apply canonical_imp_canonical with (a := a); auto. apply canonical_nzeroP with (ltM := ltM) (p := x); auto. apply eqp_imp_canonical with (1 := cs) (p := pX a x); auto. apply ltP_trans with (y := x); auto. apply ltP_reduce with (1 := cs) (3 := H'0); auto. apply canonical_imp_canonical with (a := a); auto. apply (canonical_pX_ltP A A0 eqA); auto. apply eqp_imp_canonical with (1 := cs) (p := pX a x); auto. Qed.