(* procédure destinée à tester la propriété wrt *)

Fixpoint pl_compat_check (p : prec_list) : option nat :=
  match p with
  | prec_empty => Some 0
  | prec_cons a la ls =>
      match ls with
      | prec_empty =>
          match pl_compat_check la with
          | None => None
          | Some n => Some (S n)
          end
      | prec_cons _ _ _ =>
          match pl_compat_check la, pl_compat_check ls with
          | None, _ => None
          | _, None => None
          | Some n, Some m =>
              if beq_nat (S n) m then Some m else None
          end
      end
  end.

(* Specifications: *)
Lemma pl_compat_check_correct : forall (p : prec_list) (n : nat), pl_tl_length p n -> pl_compat_check p = Some n.
Lemma pl_compat_check_complete : forall (p : prec_list) (n : nat), pl_compat_check p = Some n -> pl_tl_length p n.