proposition: Lemma disjoint_bl {A eq_A} (lb : forall x y : A, x = y -> eq_A x y = true) ls1 ls2 (H : disjoint eq_A ls1 ls2 = true) : forall x, List.In x ls1 -> List.In x ls2 -> False.
proof: Proof. unfold disjoint in *. induction ls1; simpl in *; trivial. apply Bool.andb_true_iff in H. destruct H as [H0 H1]. specialize (IHls1 H1). intros x [H'|H']; eauto; subst. apply Bool.negb_true_iff, Bool.not_true_iff_false in H0. specialize (fun k => H0 (list_in_lb lb k)); assumption. Defined.
imports: Coq.Lists.List Fiat.Common.BoolFacts Fiat.Common.Equality