intros Q a b c nZb nZc p q r r1 s1 H'0 H'1 H'2; inversion_clear H'0.
apply H.
rewrite sp_rew with (1 := cs) (a := a) (b := b) (nZ2 := nZb); auto.
rewrite sp_rew with (1 := cs) (a := a) (b := c) (nZ2 := nZc); auto.
Qed.

(* Specifications: *)
Theorem Conf_trans :
forall (Q : list (poly A0 eqA ltM)) (a b c d : Term A n)
(p0 q r t : list (Term A n)),
Reducep Q (pX a p0) (pX c r) (pX d t) ->
Reducep Q (pX a p0) (pX d t) (pX b q) ->
Confluent Q (pX a p0) (pX c r) (pX d t) ->
Confluent Q (pX a p0) (pX d t) (pX b q) ->
canonical A0 eqA ltM (pX a p0) ->
canonical A0 eqA ltM (pX d t) -> Confluent Q (pX a p0) (pX c r) (pX b q).