(* autre correction a verifier : appartenance du dernier etat *)
Definition addr_in_preDTA (d : preDTA) (a : ad) : Prop :=
exists s : state, MapGet state d a = Some s.
Definition DTA_main_state_correct (d : DTA) : Prop :=
match d with
| dta p a => addr_in_preDTA p a
end.
Definition DTA_main_state_correct_check (d : DTA) : bool :=
match d with
| dta p a =>
match MapGet state p a with
| None => false
| Some _ => true
end
end.

(* Specifications: *)
Lemma DTA_main_state_correct_check_correct :
forall d : DTA,
DTA_main_state_correct d -> DTA_main_state_correct_check d = true.
Lemma DTA_main_state_correct_check_complete :
forall d : DTA,
DTA_main_state_correct_check d = true -> DTA_main_state_correct d.