(* -*- coq-prog-args: ("-emacs" "-compat" "8.4") -*- *)
Goal forall (P : Set) (l : P) (P0 : Set) (w w0 : P0) (T : Type) (a : P * T) (o : P -> option P0),
    (forall (l1 l2 : P) (w1 : P0), o l1 = Some w1 -> o l2 = Some w1 -> l1 = l2) ->
    o l = Some w -> o (fst a) = Some w0 -> {w = w0} + {w <> w0} -> False.
Proof.
  clear; intros ???????? inj H0 H1 H2.
  destruct H2; intuition subst.
  eapply inj in H1; [ | eauto ].
  progress subst. (* should succeed, used to not succeed *)
Abort.
