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

(* Specifications: *)
Lemma dt_kill_empty_r_0 : dt_kill_empty_def_1 0.
Lemma dt_kill_empty_r_1 : forall (p' : prec_list) (n : nat) (d : preDTA) (p : prec_list) (tl : term_list), dt_kill_empty_def_1 n -> term_high_0 tl <= n -> liste_reconnait (preDTA_kill (dta_non_empty_states d) d) p tl -> prec_list_kill (dta_non_empty_states d) p' = Some p -> liste_reconnait d p' tl.
Lemma dt_kill_empty_r_2 : forall n : nat, dt_kill_empty_def_1 n -> dt_kill_empty_def_1 (S n).
Lemma dt_kill_empty_r_3 : forall n : nat, dt_kill_empty_def_1 n.
Lemma dt_kill_empty_r : forall (d : preDTA) (a : ad) (t : term), reconnaissance (preDTA_kill (dta_non_empty_states d) d) a t -> reconnaissance d a t.
Lemma dt_kill_empty_semantics : forall (d : preDTA) (a : ad) (t : term), reconnaissance d a t <-> reconnaissance (preDTA_kill (dta_non_empty_states d) d) a t.
Lemma dta_kill_empty_states_semantics : forall (d : DTA) (t : term), reconnait d t <-> reconnait (DTA_kill_empty_states d) t.
Lemma dta_kill_empty_states_lazy_semantics : forall (d : DTA) (t : term), reconnait d t <-> reconnait (DTA_kill_empty_states_lazy d) t.
Lemma kill_empty_correct_wrt_sign_invar_0 : forall (p p' : prec_list) (m : Map bool) (n : nat), pl_tl_length p n -> prec_list_kill m p = Some p' -> pl_tl_length p' n.
Lemma kill_empty_correct_wrt_sign_invar_1 : forall (s : state) (sigma : signature) (m : Map bool), state_correct_wrt_sign s sigma -> state_correct_wrt_sign (states_kill_aux m s) sigma.
Lemma kill_empty_correct_wrt_sign_invar : forall (d : preDTA) (sigma : signature) (m : Map bool), predta_correct_wrt_sign d sigma -> predta_correct_wrt_sign (preDTA_kill m d) sigma.
Lemma dt_kill_empty_kill_empty_0 : forall (d : preDTA) (p p' : prec_list), prec_list_kill (dta_non_empty_states d) p = Some p' -> exists plp : pl_path, pl_path_incl plp p'.
Lemma dt_kill_empty_kill_empty_1 : forall (d : preDTA) (plp : pl_path) (tl : term_list), pl_path_recon d tl plp <-> pl_path_recon (preDTA_kill (dta_non_empty_states d) d) tl plp.
Lemma dt_kill_empty_kill_empty_2 : forall (d : preDTA) (p : prec_list) (plp : pl_path), pl_path_incl plp p -> pl_path_true plp (dta_non_empty_states d) -> exists tl : term_list, pl_path_recon d tl plp.
Lemma dt_kill_empty_kill_empty_3 : forall (d : preDTA) (a : ad) (s : state) (sigma : signature), MapGet state (preDTA_kill (dta_non_empty_states d) d) a = Some s -> predta_correct_wrt_sign d sigma -> exists t : term, reconnaissance (preDTA_kill (dta_non_empty_states d) d) a t.
Lemma dt_kill_empty_kill_empty : forall (d : preDTA) (a : ad) (sigma : signature), predta_correct_wrt_sign d sigma -> ((exists s : state, MapGet state (preDTA_kill (dta_non_empty_states d) d) a = Some s) <-> (exists t : term, reconnaissance d a t)).