Notation union_map_class := type.Notation UMCMixin := Mixin.Notation UMC T m := (@pack _ _ T _  m).Notation "[ 'umcMixin' 'of' T ]" := (mixin (class _ _ _ : class_of T))
  (at level 0, format "[ 'umcMixin'  'of'  T ]") : form_scope.Notation "[ 'um_class' 'of' T 'for' C ]" := (@clone _ _ T C _ id)
  (at level 0, format "[ 'um_class'  'of'  T  'for'  C ]") : form_scope.Notation "[ 'um_class' 'of' T ]" := (@clone _ _ T _ _ id)
  (at level 0, format "[ 'um_class'  'of'  T ]") : form_scope.Notation cond := cond.Notation um_undef := um_undef.Notation upd := upd.Notation dom := dom.Notation dom_eq := dom_eq.Notation free := free.Notation find := find.Notation um_filter := um_filter.Notation empb := empb.Notation undefb := undefb.Notation pts := pts.Definition umEX := 
  (ftE, tfE, eqE, undefE, defE, emptyE, updE, domE, dom_eqE, 
   freeE, findE, unionE, um_filterE, empbE, undefbE, ptsE, UM.umapE).Implicit Type f : U.Local Notation "f1 \+ f2" := (@UMC.union _ _ _ f1 f2) 
  (at level 43, left associativity).Local Notation valid := (@UMC.defined _ _ U).Local Notation unit := (@UMC.empty _ _ U).

Lemma validU : valid unit.