(n.-tuple T) (@tuple_eqMixin n T).
End Chapter72.

Module Chapter721.
  Canonical tuple_subType n T := Eval hnf in [subType for (@tval n T)].
  Check tuple_subType.
  Check tval.

  Variables (s : seq nat) (t : 3.-tuple nat).
  Variables size3s : size s == 3.
  Let t1 : 3.-tuple nat := Sub s size3s.
  Let t2 := if insub s is Some t then val (t : 3.-tuple nat) else nil.
  Let t3 := insubd t s. (* 3.-tuple nat *)

  Section SubTypeKit.
    Variables (T : Type) (P : pred T).

    Structure subType : Type := Su