import hit.type_quotient

open type_quotient eq sum

  constants {A : Type} (R : A → A → Type)

  local abbreviation C := type_quotient R

  definition f [unfold-c 2] (a : A) (x : unit) : C :=
  !class_of a

  inductive S : C → C → Type :=
  | Rmk {} : Π(a : A) (x : unit), S (f a x) (!class_of a)

  set_option pp.notation false
  set_option pp.beta false

  definition rec {P : type_quotient S → Type} (x : type_quotient S) : P x :=
  begin
    induction x with c c c' H,
    { induction c with b b b' H,
      { apply sorry},
      { apply sorry}},
    { cases H, esimp, induction x,
      { state, esimp, state, esimp, state, apply sorry}},
  end