Ltac bool :=
repeat match goal with
| [ H : ?P && ?Q = true |- _ ] =>
apply andb_true_iff in H; destruct H
| |- ?P && ?Q = true =>
apply <- andb_true_iff; split
end.
Arguments decide P /H.
#[export]
Hint Extern 5 => progress bool : core.
Ltac define t x H :=
set (x := t) in *; assert (H : t = x) by reflexivity; clearbody x.

Lemma Decidable_complete : forall P (H : Decidable P),
P -> decide P = true.