(* 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.