Require Import TestSuite.admit.
(* File reduced by coq-bug-finder from original input, then from 6746 lines to 4190 lines, then from 29 lines to 18 lines, then fro\
m 30 lines to 19 lines *)
(* coqc version trunk (October 2014) compiled on Oct 7 2014 12:42:41 with OCaml 4.01.0
   coqtop version cagnode16:/afs/csail.mit.edu/u/j/jgross/coq-trunk,trunk (2313bde0116a5916912bebbaca77d291f7b2760a) *)
Record PreCategory := { identity : forall x, x -> x }.
Definition set_cat : PreCategory := @Build_PreCategory (fun T x => x).
Module UnKeyed.
  Global Unset Keyed Unification.
  Goal forall (T : Type) (g0 g1 : T) (k : T) (H' : forall x : T, k = @identity set_cat T x),
         ((fun x : T => x) g0) = ((fun x : T => x) g1).
    intros T g0 g1 k H'.
    change (identity _ _) with (fun y : T => y) in H';
      rewrite <- H' || fail "too early".
    Undo.
    rewrite <- H'.
    admit.
  Defined.
End UnKeyed.
Module Keyed.
  Global Set Keyed Unification.
  Declare Equivalent Keys (fun x => _) identity.
  Goal forall (T : Type) (g0 g1 : T) (k : T) (H' : forall x : T, k = @identity set_cat T x),
         ((fun x : T => x) g0) = ((fun x : T => x) g1).
    intros T g0 g1 k H'.
    change (identity _ _) with (fun y : T => y) in H';
      rewrite <- H' || fail "too early".
    Undo.
    rewrite <- H'.
    admit.
  Defined.
End Keyed.