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

(* Specifications: *)
Lemma pl_produit_path_incl_1_0 : forall p : prec_list, pl_produit_path_incl_def_0 p prec_empty.
Lemma pl_produit_path_incl_1_1 : forall p : prec_list, pl_produit_path_incl_def_1 p prec_empty.
Lemma pl_produit_path_incl_1_2 : forall p : prec_list, pl_produit_path_incl_def_1 prec_empty p.
Lemma pl_produit_path_incl_1_3 : forall (a : ad) (la ls p : prec_list), pl_produit_path_incl_def_0 p ls -> pl_produit_path_incl_def_1 p la -> pl_produit_path_incl_def_0 p (prec_cons a la ls).
Lemma pl_produit_path_incl_1_4 : forall (a : ad) (la ls p : prec_list), pl_produit_path_incl_def_0 la p -> pl_produit_path_incl_def_1 ls p -> pl_produit_path_incl_def_1 (prec_cons a la ls) p.
Lemma pl_produit_path_incl_1_5 : forall p p' : prec_list, pl_produit_path_incl_def_0 p p' /\ pl_produit_path_incl_def_1 p p'.
Lemma pl_produit_path_incl_1 : forall (pl0 pl1 : prec_list) (n m : nat) (plp0 plp1 : pl_path), pl_path_incl plp0 pl0 -> pl_tl_length pl0 n -> pl_path_incl plp1 pl1 -> pl_tl_length pl1 n -> pl_essence pl0 pl1 <= m -> pl_path_incl (pl_path_product plp0 plp1) (pl_produit_1 pl0 m pl1).
Lemma pl_produit_path_incl_2 : forall (pl0 pl1 : prec_list) (n : nat) (plp0 plp1 : pl_path), pl_path_incl plp0 pl0 -> pl_tl_length pl0 n -> pl_path_incl plp1 pl1 -> pl_tl_length pl1 n -> pl_path_incl (pl_path_product plp0 plp1) (pl_produit pl0 pl1).