Ltac bool_eq_refl_case :=
match goal with
| [ |- true = true ] => reflexivity
| [ |- proj_sumbool _ = true ] => apply proj_sumbool_is_true
| [ |- _ && _ = true ] => apply andb_true_iff; split; bool_eq_refl_case
| _ => auto
end.
Ltac bool_eq_refl :=
let H := fresh "Hrec" in let x := fresh "x" in
fix H 1; intros x; destruct x; simpl; bool_eq_refl_case.

Lemma false_not_true:
forall (P: Prop), false = true -> P.