sig
  module T :
    sig
      type 'a spine =
          Con : 'a -> 'a Generic_view_spine.T.spine
        | App : ('a -> 'b) Generic_view_spine.T.spine *
            'a Generic_core.Ty.T.ty * 'a -> 'b Generic_view_spine.T.spine
    end
  type 'a t = 'a Generic_view_spine.T.spine
  val spine : 'a Generic_core.Ty.T.ty -> 'a -> 'a Generic_view_spine.T.spine
  val view : 'a Generic_core.Ty.T.ty -> 'a -> 'a Generic_view_spine.T.spine
  val rebuild : 'a Generic_view_spine.T.spine -> 'a
end