sig
  module type T0 =
    sig
      type named
      type t
      val typename_of_named : Std_internal.Typerep.Named.T0.named Typename.t
      val typename_of_t : Std_internal.Typerep.Named.T0.t Typename.t
      val witness :
        (Std_internal.Typerep.Named.T0.t,
         Std_internal.Typerep.Named.T0.named)
        Type_equal.t
    end
  module type T1 =
    sig
      type 'a named
      type a
      val a : Std_internal.Typerep.Named.T1.a Std_internal.Typerep.t
      type t
      val typename_of_named :
        'Typename.t -> 'Std_internal.Typerep.Named.T1.named Typename.t
      val typename_of_t : Std_internal.Typerep.Named.T1.t Typename.t
      val witness :
        (Std_internal.Typerep.Named.T1.t,
         Std_internal.Typerep.Named.T1.a Std_internal.Typerep.Named.T1.named)
        Type_equal.t
    end
  module type T2 =
    sig
      type ('a, 'b) named
      type a
      val a : Std_internal.Typerep.Named.T2.a Std_internal.Typerep.t
      type b
      val b : Std_internal.Typerep.Named.T2.b Std_internal.Typerep.t
      type t
      val typename_of_named :
        'Typename.t ->
        'Typename.t ->
        ('a, 'b) Std_internal.Typerep.Named.T2.named Typename.t
      val typename_of_t : Std_internal.Typerep.Named.T2.t Typename.t
      val witness :
        (Std_internal.Typerep.Named.T2.t,
         (Std_internal.Typerep.Named.T2.a, Std_internal.Typerep.Named.T2.b)
         Std_internal.Typerep.Named.T2.named)
        Type_equal.t
    end
  module type T3 =
    sig
      type ('a, 'b, 'c) named
      type a
      val a : Std_internal.Typerep.Named.T3.a Std_internal.Typerep.t
      type b
      val b : Std_internal.Typerep.Named.T3.b Std_internal.Typerep.t
      type c
      val c : Std_internal.Typerep.Named.T3.c Std_internal.Typerep.t
      type t
      val typename_of_named :
        'Typename.t ->
        'Typename.t ->
        'Typename.t ->
        ('a, 'b, 'c) Std_internal.Typerep.Named.T3.named Typename.t
      val typename_of_t : Std_internal.Typerep.Named.T3.t Typename.t
      val witness :
        (Std_internal.Typerep.Named.T3.t,
         (Std_internal.Typerep.Named.T3.a, Std_internal.Typerep.Named.T3.b,
          Std_internal.Typerep.Named.T3.c)
         Std_internal.Typerep.Named.T3.named)
        Type_equal.t
    end
  module type T4 =
    sig
      type ('a, 'b, 'c, 'd) named
      type a
      val a : Std_internal.Typerep.Named.T4.a Std_internal.Typerep.t
      type b
      val b : Std_internal.Typerep.Named.T4.b Std_internal.Typerep.t
      type c
      val c : Std_internal.Typerep.Named.T4.c Std_internal.Typerep.t
      type d
      val d : Std_internal.Typerep.Named.T4.d Std_internal.Typerep.t
      type t
      val typename_of_named :
        'Typename.t ->
        'Typename.t ->
        'Typename.t ->
        'Typename.t ->
        ('a, 'b, 'c, 'd) Std_internal.Typerep.Named.T4.named Typename.t
      val typename_of_t : Std_internal.Typerep.Named.T4.t Typename.t
      val witness :
        (Std_internal.Typerep.Named.T4.t,
         (Std_internal.Typerep.Named.T4.a, Std_internal.Typerep.Named.T4.b,
          Std_internal.Typerep.Named.T4.c, Std_internal.Typerep.Named.T4.d)
         Std_internal.Typerep.Named.T4.named)
        Type_equal.t
    end
  module type T5 =
    sig
      type ('a, 'b, 'c, 'd, 'e) named
      type a
      val a : Std_internal.Typerep.Named.T5.a Std_internal.Typerep.t
      type b
      val b : Std_internal.Typerep.Named.T5.b Std_internal.Typerep.t
      type c
      val c : Std_internal.Typerep.Named.T5.c Std_internal.Typerep.t
      type d
      val d : Std_internal.Typerep.Named.T5.d Std_internal.Typerep.t
      type e
      val e : Std_internal.Typerep.Named.T5.e Std_internal.Typerep.t
      type t
      val typename_of_named :
        'Typename.t ->
        'Typename.t ->
        'Typename.t ->
        'Typename.t ->
        'Typename.t ->
        ('a, 'b, 'c, 'd, 'e) Std_internal.Typerep.Named.T5.named Typename.t
      val typename_of_t : Std_internal.Typerep.Named.T5.t Typename.t
      val witness :
        (Std_internal.Typerep.Named.T5.t,
         (Std_internal.Typerep.Named.T5.a, Std_internal.Typerep.Named.T5.b,
          Std_internal.Typerep.Named.T5.c, Std_internal.Typerep.Named.T5.d,
          Std_internal.Typerep.Named.T5.e)
         Std_internal.Typerep.Named.T5.named)
        Type_equal.t
    end
  type 'a t =
      T0 of (module Std_internal.Typerep.Named.T0 with type t = 'a)
    | T1 of (module Std_internal.Typerep.Named.T1 with type t = 'a)
    | T2 of (module Std_internal.Typerep.Named.T2 with type t = 'a)
    | T3 of (module Std_internal.Typerep.Named.T3 with type t = 'a)
    | T4 of (module Std_internal.Typerep.Named.T4 with type t = 'a)
    | T5 of (module Std_internal.Typerep.Named.T5 with type t = 'a)
  val arity : 'Std_internal.Typerep.Named.t -> int
  val typename_of_t : 'Std_internal.Typerep.Named.t -> 'Typename.t
  val name : 'Std_internal.Typerep.Named.t -> string
end