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_path_product_n :
forall (n : nat) (p0 p1 : pl_path),
pl_path_length p0 = n ->
pl_path_length p1 = n -> pl_path_length (pl_path_product p0 p1) = n.