# let [MULTISAME_REFL;MULTISAME_SYM;MULTISAME_TRANS] = (CONJUNCTS o prove)
     (`(!l:(A)list. multisame l l) /\
       (!l l':(A)list. multisame l l' <=> multisame l' l) /\
       (!l1 l2 l3:(A)list.
            multisame l1 l2 /\ multisame l2 l3 ==> multisame l1 l3)`,
      REWRITE_TAC[multisame] THEN MESON_TAC[]);;
  # let [MULTIPLICITY_MUNION;MUNION_ASSOC] =
        map (lift_theorem (multiset_abs,multiset_rep)
                          (MULTISAME_REFL,MULTISAME_SYM,MULTISAME_TRANS)
                          [multiplicity_th; munion_th])
            [LISTMULT_APPEND; MULTISAME_APPEND_ASSOC];;
  val ( MULTIPLICITY_MUNION ) : thm =
    |- !a l m.
           multiplicity a (munion l m) = multiplicity a l + multiplicity a m
  val ( MUNION_ASSOC ) : thm =
    |- !l m n. munion l (munion m n) = munion (munion l m) n