Definition pl_produit_path_incl_def_2 (pl0 pl1 : prec_list) :=
  forall (n m : nat) (plp : pl_path) (a : ad) (l : prec_list),
  pl_path_incl plp (pl_produit_0 a pl0 pl1 m l) ->
  pl_tl_length pl0 n ->
  pl_tl_length pl1 (S n) ->
  pl_essence pl0 pl1 <= m ->
  (exists plp0 : pl_path,
     (exists plp1 : pl_path,
        plp = pl_path_product plp0 plp1 /\
        pl_path_incl plp0 (prec_cons a pl0 prec_empty) /\
        pl_path_incl plp1 pl1)) \/ pl_path_incl plp l.Definition pl_produit_path_incl_def_3 (pl0 pl1 : prec_list) :=
  forall (n m : nat) (plp : pl_path),
  pl_path_incl plp (pl_produit_1 pl0 m pl1) ->
  pl_tl_length pl0 n ->
  pl_tl_length pl1 n ->
  pl_essence pl0 pl1 <= m ->
  exists plp0 : pl_path,
    (exists plp1 : pl_path,
       plp = pl_path_product plp0 plp1 /\
       pl_path_incl plp0 pl0 /\ pl_path_incl plp1 pl1).

Lemma pl_produit_path_incl_3_3 : forall (a : ad) (la ls p : prec_list), pl_produit_path_incl_def_2 p ls -> pl_produit_path_incl_def_3 p la -> pl_produit_path_incl_def_2 p (prec_cons a la ls).