Fixpoint pl_path_product (p0 p1 : pl_path) {struct p1} : pl_path :=
match p0, p1 with
| pl_path_nil, pl_path_nil => pl_path_nil
| pl_path_nil, pl_path_cons a b => pl_path_nil
| pl_path_cons a b, pl_path_nil => pl_path_nil
| pl_path_cons a0 b0, pl_path_cons a1 b1 =>
pl_path_cons (iad_conv a0 a1) (pl_path_product b0 b1)
end.

Lemma pl_produit_path_incl_inj :
forall (plp0 plp1 plp2 plp3 : pl_path) (n : nat),
pl_path_length plp0 = n ->
pl_path_length plp1 = n ->
pl_path_length plp2 = n ->
pl_path_length plp3 = n ->
pl_path_product plp0 plp1 = pl_path_product plp2 plp3 ->
plp0 = plp2 /\ plp1 = plp3.