End FinMapKeyType.
Module Import FinmapInE.
Definition inE := (inE, mem_codomf, mem_catf, mem_remfF,
mem_filterf, mem_reducef, mem_restrictf,
mem_remf, mem_remf1, mem_setf).
End FinmapInE.
Section FsfunDef.
Variables (K : choiceType) (V : eqType) (default : K -> V).
Record fsfun := Fsfun {
fmap_of_fsfun : {fmap K -> V};
_ : [forall k : domf fmap_of_fsfun,
fmap_of_fsfun k != default (val k)]
}.
Canonical fsfun_subType := Eval hnf in [subType for fmap_of_fsfun].
Definition fsfun_eqMixin := [eqMixin of fsfun by <:].
Canonical  fsfun_eqType := EqType fsfun fsfun_eqMixin.
Fact fsfun_subproof (f : fsfun) :
forall (k : K) (kf : k \in fmap_of_fsfun f),
(fmap_of_fsfun f).[kf]%fmap != default k.
Definition fun_of_fsfun (f : fsfun) (k : K) :=
odflt (default k) (fmap_of_fsfun f).[? k]%fmap.
End FsfunDef.
Coercion fun_of_fsfun : fsfun >-> Funclass.
Module Type FinSuppSig.

(* Specifications: *)
Axiom fs : forall (K : choiceType) (V : eqType) (default : K -> V),
fsfun default -> {fset K}.
Axiom E : fs = (fun K V d f => domf (@fmap_of_fsfun K V d f)).
End FinSuppSig.