Definition pl_path_incl_length_def (plp : pl_path) 
  (pl : prec_list) : Prop :=
  forall n : nat,
  pl_path_incl plp pl -> pl_tl_length pl n -> pl_path_length plp = n.

(* Specifications: *)
Lemma pl_path_incl_length_0 : pl_path_incl_length_def pl_path_nil prec_empty.
Lemma pl_path_incl_length_1 : forall (plp : pl_path) (a : ad) (la ls : prec_list), pl_path_incl plp la -> pl_path_incl_length_def plp la -> pl_path_incl_length_def (pl_path_cons a plp) (prec_cons a la ls).
Lemma pl_path_incl_length_2 : forall (plp : pl_path) (a : ad) (la ls : prec_list), pl_path_incl plp ls -> pl_path_incl_length_def plp ls -> plp <> pl_path_nil -> pl_path_incl_length_def plp (prec_cons a la ls).
Lemma pl_path_incl_length_3 : forall (p : pl_path) (p0 : prec_list), pl_path_incl p p0 -> pl_path_incl_length_def p p0.
Lemma pl_path_incl_length : forall (plp : pl_path) (pl : prec_list) (n : nat), pl_path_incl plp pl -> pl_tl_length pl n -> pl_path_length plp = n.
Lemma forall_incl_length : forall (pl : prec_list) (n : nat), (forall p : pl_path, pl_path_incl p pl -> pl_path_length p = n) -> pl_tl_length pl n.