(* Tested against coq ee596bc *)

Set Nonrecursive Elimination Schemes.
Set Primitive Projections.
Set Universe Polymorphism.

Record setoid := { base : Type }.

Definition catdata (Obj Arr : Type) : Type := nat.
  (* [nat] can be replaced by any other type, it seems,
     without changing the error *)

Record cat : Type :=
  {
    obj : setoid;
    arr : Type;
    dta : catdata (base obj) arr
  }.

Definition bcwa (C:cat) (B:setoid) :Type := nat.
  (* As above, nothing special about [nat] here. *)

Record temp {C}{B} (e:bcwa C B) :=
  { fld : base (obj C) }.

Print temp_rect.
