Definition PcanFinMixin g fK := FinMixin (@pcan_enumP g fK).Definition CanFinMixin g (fK : cancel f g) := PcanFinMixin (can_pcan fK).Structure subFinType := SubFinType {
  subFin_sort :> subType P;
  _ : mixin_of (sub_eqType subFin_sort)
}.Structure subFinType := SubFinType {
  subFin_sort :> subType P;
  _ : mixin_of (sub_eqType subFin_sort)
}.Structure subFinType := SubFinType {
  subFin_sort :> subType P;
  _ : mixin_of (sub_eqType subFin_sort)
}.Local Notation sT := (seq_sub s).Coercion subFinType_subCountType sT := @SubCountType _ _ sT (subFin_mixin sT).Coercion subFinType_finType sT :=
  Pack (@Class sT (sub_choiceClass sT) (subFin_mixin sT)).Definition sub_enum : seq sT := pmap insub (enumF T).

(* Specifications: *)
Lemma sub_enum_uniq : uniq sub_enum.
Lemma val_sub_enum : map val sub_enum = enum P.