Module Exports.
Section Exports.
Variables (K : ordType) (V : Type) (U : union_map_class K V).
Definition union_map_classCPCMMix := CPCMMixin (@joinKf K V U).
Canonical union_map_classCPCM := Eval hnf in CPCM U union_map_classCPCMMix.
End Exports.
End Exports.
End UnionMapClassCPCM.
Export UnionMapClassCPCM.Exports.
(*********************************************************)
(* if V is an equality type, then union_map_class is too *)
(*********************************************************)
Module UnionMapEq.
Section UnionMapEq.
Variables (K : ordType) (V : eqType) (p : pred K).
Variables (T : Type) (m : @UMC.mixin_of K V p T).
Definition unionmap_eq (f1 f2 : UMC T m) :=
match (UMC.from f1), (UMC.from f2) with
| UM.Undef, UM.Undef => true
| UM.Def f1' pf1, UM.Def f2' pf2 => f1' == f2'
| _, _ => false
end.

(* Specifications: *)
Lemma unionmap_eqP : Equality.axiom unionmap_eq.
End UnionMapEq.