Fixpoint state_ref_ok_check (s : state) : preDTA -> bool :=
  fun d : preDTA =>
  match s with
  | M0 => true
  | M1 a p => prec_list_ref_ok_check p d
  | M2 x y => state_ref_ok_check x d && state_ref_ok_check y d
  end.

(* Specifications: *)
Lemma state_ref_ok_check_correct : forall (s : state) (d : preDTA), state_ref_ok s d -> state_ref_ok_check s d = true.
Lemma state_ref_ok_check_complete : forall (s : state) (d : preDTA), state_ref_ok_check s d = true -> state_ref_ok s d.