proposition: Lemma option_beq_correct {A eq_A} (A_bl : forall x y : A, eq_A x y = true -> x = y) (A_lb : forall x y : A, x = y -> eq_A x y = true) {x y : option A} : option_beq eq_A x y = option_eq_dec eq_A A_bl A_lb x y.
proof: Proof. t ltac:(first [ rewrite !(A_lb _ _) by congruence | erewrite (A_bl _ _) by eassumption | rewrite Bool.andb_true_r | rewrite Bool.andb_false_r ]). Qed.
imports: Coq.Lists.List Coq.Lists.SetoidList Coq.Bool.Bool Coq.Arith.PeanoNat Coq.Strings.Ascii Coq.Strings.String Coq.Logic.Eqdep_dec Fiat.Common