(* sens direct : induction sur la hauteur *)

Definition dt_kill_empty_def_0 (n : nat) : Prop :=
  forall (d : preDTA) (a : ad) (t : term),
  term_high t <= n ->
  reconnaissance d a t ->
  reconnaissance (preDTA_kill (dta_non_empty_states d) d) a t.

(* Specifications: *)
Lemma dt_kill_empty_d_0 : dt_kill_empty_def_0 0.
Lemma dt_kill_empty_d_1 : forall (n : nat) (d : preDTA) (p : prec_list) (tl : term_list), dt_kill_empty_def_0 n -> term_high_0 tl <= n -> liste_reconnait d p tl -> exists p' : prec_list, prec_list_kill (dta_non_empty_states d) p = Some p' /\ liste_reconnait (preDTA_kill (dta_non_empty_states d) d) p' tl.
Lemma dt_kill_empty_d_2 : forall n : nat, dt_kill_empty_def_0 n -> dt_kill_empty_def_0 (S n).
Lemma dt_kill_empty_d_3 : forall n : nat, dt_kill_empty_def_0 n.
Lemma dt_kill_empty_d : forall (d : preDTA) (a : ad) (t : term), reconnaissance d a t -> reconnaissance (preDTA_kill (dta_non_empty_states d) d) a t.